A Formal Contract Language for Plugin-based Software Engineering
Jens B. Dietrich, John Hosking, Jonathan Giles · 2007
Plugin-based application design has become increasingly popular in recent years, and has contributed to the success of a range of very different applications including Mozilla Firefox and the Eclipse development environment. Using plugins is a promising approach to build complex systems that have to be reconfigured at runtime, and several plugin based general purpose runtime environments are currently under development. Plugin-based design is based on the idea that plugins provide additional functionality extending the capabilities of a core product. While this is often understood as providing services by implementing abstract classes or interfaces defined in the core product, modern plugin-based systems like Eclipse use a much wider definition of service. We propose to consider these services as typed resources and introduce a contract language that can be used to define contracts between plugins providing and consuming services. This language is based on the Semantic Web Rule Language (SWRL) that has a well-defined syntax and semantics. These contracts can then be used in order to validate complex, plugin-based applications.