GLoo: An Open-Ended Composition Language |
[Design Rational] [Specifications] [Publications] [Downloads]
|
A successful component-based software development
approach not only needs to provide abstractions to represent
different component models and composition techniques, but it has
to provide also a systematic method for constructing large software
systems. Unfortunately, rather then high-level plugging,
most existing component frameworks offer, in general, only
low-level wiring techniques to combine components. We need,
however, higher-level, scalable, and domain-specific
compositional mechanisms that reflect the characteristics
and constraints of the components being composed. The ability to
define these mechanisms will provide us with more effective means
to do both to reason about the properties of composition and to
enhance program comprehension by reducing the exposure of the
underlying wiring mechanisms to the component engineer.
The design of GLoo targets a problem-oriented software development approach that provides a paradigm for both programming in-the-small and programming in-the-large. More presicely, GLoo aims at a higher-level and scalable programming approach to encapsulate domain expertice that provides support for the definition of domain-specific abstractions enabling the instantiation, coordination, extension, and composition of components. These domain-specific abstractions can be defined in GLoo, Java, or both. The core of GLoo is based on the lF-calculus, which a calculus that combines the concepts of dynamic binding, explicit namespaces, and incremental refinement in one unifying framework. More precisely, the lF-calculus is a substitution-free variant of the l-calculus in which variables are replaced by forms and parameter passing is modeled by means of explicit contexts. Forms are first-class namespaces that provide a high-level and language-neutral abstraction to represent components, component interfaces, and their composition. Explicit contexts, on the other hand, serve as a syntactic representation that mimic l-calculus substitutions, that is, they provide the means for a fine-grained and keyword-based parameter passing mechanism. GLoo specification units add support for basic data types, an import facility, term sequences, a delayed evaluation of terms, computable binders, and a Java gateway mechanism to the core language. These features serve to enrich the versatility of values, but do not change the underlying computational model of the lF-calculus. |
|