Related Work
Research from several communities has similarities to this work, and this work is heavily influenced by a wide range of work in programming languages and semantics (see the extensive bibliography of the aforementioned dissertation for details). In its most simplified form, straightforward structural subtyping can be used as a theoretical framework for semantic composition, especially in strongly typed languages. An example is found in Muckelbauer’s work in distributed object-based systems [23]. The problem with this approach is that only renaming and reordering operations are possible, and little theoretical infrastructure supports reasoning about the full semantics of components. Stronger theoretical formalisms exists for specifying and reasoning about such compositional systems. Some of the earilest and most influential work is from Goguen [14], as it formalized and popularized the notion of parametric modules as a means of reuse. The recent work of Molina-Bravo and Pimentel shows promise as well. This latter work is far from being practically applicable in the near future as there is no strong connection with real programming languages, software engineering methods, and no tool support. Other expressive formalisms for compositionality exist, primarily in the category theoretic domain. Feature logic has also been used to specify component properties and detect mismatches during composition. Unsurprisingly, the composition properties in Fiadeiro’s work match those of kind theory due to the latter’s categorical basis. Feature logic is a submodel of kind theory—use a first-order foundation, eliminate beliefs, and map subkinding to subsumption. Work at CMU by Yellin and Strom, inspired by the problems with the Aesop system, has covered this territory before in the context of object protocols and weak, non-formal, semi-automatic adapter construction. The work has a very ad hoc feel, even after the development of a formal model for such architectures [2]. In a Java context, Wang et al proposed an service-event model with an ontology of ports and links, extending the JavaBeans descriptor model [30]. Other related work comes from the areas of: domain-specific languages, especially for component specification and reuse [5, 26]; the automatic programming community, e.g, early work by Barstow [3, 4] and Cleveland [8]; conceptual reuse such as Castano and De Antonellis [6]; and last but certainly not least, the software transformation systems community, including the voluminous works of Biggerstaff and Batory. Much of this work is reviewed nicely in [9, 25, 27]. The primary difference between all of these formalisms and systems and ours is that our system has a broad, firm theoretic foundation. That foundation, kind theory, was specifically designed to reason about reusable assets in an open collaborative context. Thus, our work is not tied to a specific language or realization, integrates the domains of reuse, knowledge representation, automatic programming, and program transformation, and does so in a theoretical and systematic framework that supports global collaboration among many participants.
|