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 SemanticWeb 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.
展开▼