and its Applications


Today’s large software systems have reached such a level of complexity that a single architectural view is not sufficient anymore to appropriately capture their high-level architecture, detailed design, and low-level realization. If a system is described from a bird’s eye view—using a very high-level architecture description—many important details regarding performance, local extensibility, etc. remain hidden. If, however, one chooses a view revealing much more detail so as to allow the above properties to be evaluated, the complexity will become unwieldy and it is then difficult to see the forest for the trees.

Architecture stratification is an approach that connects multiple views on a single system with refinement translations, so that each view completely describes the whole system on a particular level of abstraction. This way, single levels do not only present an optimal mix of overview and detail for various stakeholders, but they also separate and organize a system’s extension points, patterns, and cross-cutting concerns.

The Figure to the right illustrates the basic idea of Architecture Stratification: A linear hierarchy of connected levels of abstraction. While in principle, both downward- (development) and upward- (re-engineering) generation directions are possible, we currently focus on the downward direction. Note, however, that the vertical dimension does not represent a time line. All levels coexist and are available for inspection concurrently, at any time. Ultimately, our goals are full traceability and both downward and upward propagation of edits at any level, but currently we restrict ourselves to downward propagation of changes.

The prototyp implementation of our vision is called SPin and is available as a plugin for the CASE-Tool Fujaba. It does not only transform models (e.g., class diagrams) but also any associated code (e.g., method implementations). We can therefore refine a very simple—but fully functional—system at the top level, into a complex one that supports more functionality and exhibits more non-functional properties (e.g., distribution). This most detailed system description can then be used to create an executable system by virtue of the Fujaba code generation engine.

To install and use SPin simply follow the instructions on our SPin webpage. You can also take a look at our example of the stratification concept. Note: The example contained in the current plugin release differs from the example here. An updated version will be available, soon.

Publications on Architecture Stratification

Martin Girschick
Implementing Architecture Stratification
Dissertation, Technische Universität Darmstadt, 2010.

Martin Girschick
Integrating Template based Code Generation into Graphical Model Transformation
Thomas Kühne, Wolfgang Reisig, Friedrich Steimann (Hrsg.), Modellierung 2008, Berlin, GI LNI P-127, p. 27-41, March 2008

Martin Girschick, Thomas Kühne, and Felix Klar
Generating Systems from Multiple Levels of Abstraction
Proceedings of TEAA 2006, In LNCS Volume 4473/2007, pp. 127-141, Berlin, Germany, 2007

Thomas Kühne, Martin Girschick, and Felix Klar
"Tool Support for Architecture Stratification"
H.C. Mayr, Ruth Breu (eds), Modellierung 2006, Innsbruck, GI LNI P-82, p.213-222, March 2006

Felix Klar, Thomas Kühne and Martin Girschick
"SPin – A Fujaba Plugin for Architecture Stratification"
Fujaba Days 2005, Paderborn, September 2005

Felix Klar
"SPin – Ein Werkzeug zur Realisierung von Architektur-Stratifikation"
Diplomarbeit, Technische Universität Darmstadt, April 2005

Thomas Kühne
"Automatisierte Softwareentwicklung mit Modellcompilern"
thema Forschung, 1/2003, 116—122, 2003

Colin Atkinson and Thomas Kühne
"Aspect-Oriented Development with Stratified Frameworks"
IEEE Software, Vol. 20, No. 1, 81—89, 2003

Colin Atkinson and Thomas Kühne
"Stratified Component Frameworks"
International journal of Computing Science and Informatics, "Informatica", Vol. 25, No. 3, 393--401, 2001

Colin Atkinson and Thomas Kühne
"Separation of Concerns through Stratified Architectures"
International Workshop on SoC and AOP (in conjunction with ECOOP'2000), Cannes, France, June 2000