Modern Software is applied to complex application domains (e.g. CAD). Therefore complex operations are applied to extensive domain models. Due to continuous changes of requirements, software is subject to permanent evolutionary changes. To adapt software incrementally to changing requirements, changes to the software have to be performed locally with as little effort as possible. Hence a loose coupling between the building blocks of software is essential.
The classical object-oriented approach results in classes which encapsulate data with all methods manipulating this data. Therefore working on complex domain models consist of complex, obfuscated and errorprone classes. Furthermore the coupling between methods within one class is extremely strong.
The approach provided by ESCAPE is based on the separation of domain data and complex operations. The domain model only contains the mandatory operations for manipulating and traversing the data structure. Therefore the resulting classes are called RISCs (reduced instruction set classes). All other operations are implemented in separate classes, called ASC (application service classes).
Whenever an operation is applied to the domain model, the corresponding ASC is sent to the RISC implementing the domain model. The encapsulated operations are then performed by applying the operations available in the RISC. The interaction between RISC and ASCs is based on a combination and extension of the design patterns Visitor, Command and Subject-Observer.
Using RISCs and ASCs, applications can be built which are easily adaptable to changing requirements. Additionally these applications are extendible by further operations with little effort.
Based on the ESCAPE architecture several prototypical applications in the domains text processing and logic design of digital circuits have been developed.
The domain model for text processing applications consists of two data models: the semantic model, capturing the logical structure of text and the presentation model containing the layout structure of text. Both models include mandatory operations (e.g. next_word, insert) and each model is implemented by a RISC. As each of the two data models describes a different perspective of the same domain model, they have to be synchronized to keep consistence between them. The synchronization mechanism is based upon the Subject-Observer pattern extended by a special protocol mechanism.
For both data models several complex operations were implemented as ASCs, e.g. search/replace, hyphenation, spellchecking working on the semantic model and formatting, navigation and selection working on the presentation model. By combining these operations a variety of different software applications can be build, e.g. text editor, translator, word processor.
The second application family deals with logic design of digital circuits. In this domain a problem typical for CAD software occurs: different operations require specific data representations. Currently two representations are provided: hypercubes, which are well-suited for digital circuit minimization and binary decision diagrams (BDD) which are adequate for logic verification. Each data representation has been implemented by a RISC. Many known algorithms for these representations have been implemented as ASCs. In addition ASCs have been implemented, which can be used to transform hypercubes into binary decision diagrams and vice versa.
The experiences in developing applications based on the ESCAPE architecture have shown that these applications fulfill the requirements for loose coupling between the software building blocks and for modularity of the building blocks. It is possible to adapt existing applications to further requirements by changing or extending current ASCs. Due to the loose coupling of the ASCs changes to one ASC do neither affect other ASCs nor RISCs. In addition existing building blocks can be massively reused for building new or extending existing applications. Therefore ESCAPE features a great potential of reuse.
R. Budde, K. Kantz, K, Kuhlenkamp, H. Züllighoven
Prototyping - An Approach to Evolutionary Software Development
Springer-Verlag, 1992
F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal
Patternoriented Software Achitecture - A System of Patterns
Wiley & Sons, 1996
W. J. Brown, R. C. Malveau, H. W. McCormick, T. J. Mowbray
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis
Wiley & Sons, 1988
W. J. Brown, S. W. Thomas, W. H. McCormick
Antipatterns and Patterns changed with Software Configuration and Management
Wiley & Sons, 1999
J. O. Coplien, D. Schmidt (eds.)
Pattern Languages of Program Design
Addison-Wesley, 1995
J. O. Coplien, J. Vlissides, N. Kerth (eds.)
Pattern Languages of Program Design Vol. 2
Addson-Wesley, 1996
M. Fowler
Analysis Patterns: Reusable Object Models
Addison-Wesley, 1996
E. Gamma, R. Helm, R. Johnson, J. Vlissides
Design Patterns - Elements of Reusable Object-Oriented Software
Addison-Wesley, 1995
R. E. Johnson, B. Foote
Designing Reusable Classes
JOOP, June 1988
R. E. Johnson
Documenting Frameworks using Patterns
Proc of the OOPSLA'92, 1992
G. Kiczales, J. Irwin, J. Lamping, J.-M. Loingtier, C. V. Lopez, C. Maeda, A. Mendhekar
Aspect-Oriented Programming
Proc. of the ECOOP'97, Springer-Verlag, Juni, 1997
E.-A. Karlsson, G.Sindre, T. Stalhane
Techniques for Making More Reusable Components
REBOOT Technical Report #41, June, 1992
S. Leboch, M. Ryba, U. G. Baitinger
Wiederverwendung - Kann der Schaltungsentwurf von der Software-Entwicklung lernen, oder umgekehrt?
Proc. of the 1. GI/ITG Workshop Wiederverwendung im Schaltungsentwurf", Karlsruhe, Semptember, 1979
H. de Man
Evolution Towards Third Generation Custom VLSI Design
Revue de Physique appliquée, Band 22, Heft 1, Seite 31 ff, 1987
B. Meyer
Object-Oriented Software Construction, Second Edition
Prentice-Hall, 1997
R. C. Martin, D. Riehle, F. Buschmann (Hrsg.)
Patternlanguages of Programm Design Vol. 3
Addison-Wesley, 1998
C. Ramming
Proc. of the Conference on Domain-Specific Languages,
Santa Barbara, Oktober, 1997
D. Roberts, R. Johnson
Evolving Frameworks: A Pattern Language for Developing Object-Oriented Frameworks
Pattern Languages of Program Design Vol. 2, 1996
J. Sametinger
Software Engineering with Reusable Components
Springer Verlag, 1997
C. Simonyi
Intentional Programming - Innovation in the Legacy Age
Proc. of the IFIP WG 2.1 Meeting, Juni, 1996
Taligent Inc.
Building Object-Oriented Frameworks
A Taligent White Paper, 1994
W. Tracz
Software reuse myths revisited
Proc. of the 16th International Conference on Software Engineering, Sorento, May 1994, pp. 271-272
H. Züllighoven
Das objektorientierte Konstruktionshandbuch nach dem Werkzeug & Material Ansatz
dpunkt-Verlag, 1998