The COMPOST Composition System
COMPOST, the software COMPOsition SysTem, supports invasive software
composition based on static meta-programming (see also the book [U. Aßmann,
Invasive Software Composition, Springer, 2003]).
Simply spoken,
COMPOST is a Java library that can be used to plug Java components together.With
its static meta-programming facilities, COMPOST also helps to refactor, evolve,
and reengineer software.
In invasive software composition, components are sets of Java program fragments
(fragment components). They composed to applications by composition operators,
composers.
COMPOST can be employed in the following areas of software engineering:
- Program transformations and static meta-programming for Java
- Java parsing, semantic analysis,
cross referencing, and pretty printing: COMPOST's parser and pretty-printer
reproduce Java sources, including comments.
- Refactoring (automation of design patterns) in Java.
COMPOST offers several operators for refactorings, semantics preserving
restructurings of software.
- Component composition and adaptation:
- COMPOST supports invasive composition, a novel technique
for flexible component composition and adaptation.
- Advanced software architecture (frameworks,
connectors,and views). COMPOST's architectural language
is Java, reducing the learning curve and providing the full power of
a standard programming language.
- View-based programming with extension operators on
classes and packages.
- Support for the construction of aspect-oriented weavers.
- Laboratory for language development, for domain-specific
languages, or novel abstract language concepts.
All this is realized in a unified framework. We use this infrastructureas
a research vehicle to explore software composition principles, new architectural
connectors, generation and modification of inheritance hierarchies, extensions
of programming languages and similar high-level program transformations.
Structure of the COMPOST Library
COMPOST consists of several subsystems. The following describes an intermediate
status since at the moment, COMPOST is in a transition phase from a single
system to several subpackages, and this will take several intermediate versions.
- There is an upper layer which provides the component model of
invasive software composition. This layer is hosted in the package
boxology.
- There is a lower layer which provides the basic program
transformation facilities. Such packages are under development for several
different languages:
- For Java transformations, there is recoder. After
COMPOST 0.63, this layer is also available standalone on
recoder.sourceforge.net. The recoder subpackage is the most
stable part of COMPOST, and can be used standalone for Java transformations
and refactorings. It can be copied into the COMPOSTmain directory and used
tegether with the other parts. Please note that a commercial variant is
available in the refactoring browser CodeMorpher of
XPTools
(www.xptools.com).
- For C-based transformations, there is a prototype implementationavailableunder
the package crecoder
- Other transformers are planned for XML dialects, the first
one for X-HTML.
COMPOST is currently under development at University of Linköping,Sweden
and University of Karlsruhe, Germany. Your questions, critics, suggestions,
reports, comments, requests, hints, and ideas go to
compost@ipd.info.uni-karlsruhe.de
The COMPOST Team:
In Linköping:
In Karlsruhe:
Other Contributors and Former Members:
Rainer Neumann [
e-mail ]
The COMPOST Consorium
(c) 1998-2003 Karlsruhe University, IPD Prof. Goos
(c) 1998-2003 A. Ludwig
(c) 2001-2003 U. Assmann
(c) 2001-2003 Linköpings Universitet, IDA, PELAB, RISE