Softwarekomposition und
Metaprogrammierung
Einführung
Ansätze zur Komposition
– Subjekt-orientiertes Programmieren SOP
– Erweiterungen des objekt-orientierten Paradigmas (composition
filters)
– Kalküle für Komponentensysteme (N-Kalkül)
– Metaobjekt-Komposition
– Template Metaprogramming
Invasive Komposition
– Konzepte: Webepunkte, Kompositionsschnittstelle
– Anwendungsbeispiele
– Werkzeuge und Architekturen (COMPOST)
Dr. Welf Löwe und Markus Noga
1
Literatur
/ben/papers/unpacked/Metaprogramming
SOP: http://www.research.ibm.com/sop/sophome.htm
LambdaN: Dami, Laurent. Software Composition. Dissertation
Universität Genf. 1997
Mulet, P., Malenfant, J., Cointe, P. Towards a Methodology for Explict
Composition of MetaObjects. OOPSLA 98.
Aksit, M., Bergmans, L., Vural, S. An object-oriented langaugedatabase integration model: The composition-filters approach. ECOOP
92. LNCS 615, Springer.
Template Metaprogramming:
http://home.t-online.de/home/Ulrich.eisenecker/gpref.htm
GenVoca: Batory, Don. Subjectivity and GenVoca Generators. In
Sitaraman, M. (ed.). Proceedings of the Fourth Int. Conference on
Software Reuse, April 23-26, 1996, Orlando Florida. IEEE Computer
Society Press, pages 166-175
IPD-Literatur am Ende der Folien
Dr. Welf Löwe und Markus Noga
2
Problem und Ziel der Komposition
Problem
– Nicht alle Systemeigenschaften als separate Komponenten
erfassbar
– Wartbarkeit, Erweiterbarkeit und Wiederverwendbarkeit leiden
Ziel
– Klare Trennung aller Systemeigenschaften in Entwurf und
Umsetzung
– Verwebung in einzelnen Schritten
(im Gegensatz zum monolithischen Weber à la AOP)
Lösung
– Komposition (mit Metaoperatoren)
Dr. Welf Löwe und Markus Noga
3
Komposition: Ausdrücke statt Weber
Druckaspekt
Persistenz
Algorithmus
Op
Op
Op
Op
Op
Op
Druckaspekt
Druckaspekt
Persistenzaspekt
Dr. Welf Löwe und Markus Noga
4
Systembau als Kompositionsterm
C1
C1
A.p1 B.p1
C3
A.p1 B.p1
C1
C2
A
A.p1
B
A
A
C
C1
B
B.p2
C.p2
B
B.p2
A.p2
A
C2
C
C.p1
B
C.p1
A
C2
C1
A.p2
C
C2
C1
B
Dr. Welf Löwe und Markus Noga
C
C3
5
Systembau als Kompositionsterm
C1
D=C4
C1
A.p1 B.p1
C2
A.p2
C3
C.p1 B.p2
A.p1 B.p1
C2
A.p2
C.p2
C3
C.p1 B.p2
C.p2
D
A
A
C2
C1
B
C
C3
C2
C1
B
C
C2
Dr. Welf Löwe und Markus Noga
6
Voraussetzungen zur Komposition
Flexible Komposition von Code und Daten möglich.
Kompositionsoperatoren (Kompositoren) sind
Programmtransformatoren (Codetransformator, Optimierer,
Übersetzer, Metaprogramm, Metaoperator)
op: Code  Code
Optimierer, Transformator
code: Code  Code
Metaprogramm, Metaoperator
op: SpracheA  SpracheB
Übersetzer
Dr. Welf Löwe und Markus Noga
7
7.1 Einige Ansätze zur Komposition
Subjekt-orientiertes Programmieren SOP
OOP-Erweiterungen (composition filters)
Kalküle für Komponentensysteme (N-Kalkül)
Metaobjekt-Komposition
Template Metaprogramming
Dr. Welf Löwe und Markus Noga
8
7.1.1 Subjekt-orientiertes Programmieren
Verfechter: Ossher, Harrision (IBM)
Idee
– Teile von Klassen als Subjekte beschreiben
– Subjekte durch Mischregeln auf Klassen abbilden
Subjekte
– Operationen (generische Methoden)
– Klassen und Instanzvariable
– Umsetzung der Operationen in konkreten Klassen
(Realisierung mittels Generator)
– Beschreibung mit eingebettetem C++
Mischregeln
– Beschreibung mit einfacher Operatorsprache
Dr. Welf Löwe und Markus Noga
9
Beispiel
Ein einfaches Subjekt
Subject: PAYROLL
Operations: print()
Classes
: Employee()
with InstanceVariables: _emplName;
Mapping
: Class Employee, Operation Print()
implemented by
&Employee::Print()
// others...
Mischen nach Regeln
– Zielklassen erhalten Operationen der beteiligten Subjekte
Dr. Welf Löwe und Markus Noga
10
Mischregeln in SOP
Fest vorgegebene Kompositionsoperatoren
– Korrespondenzregeln:
• Equate
Subjektteil)
• Correspond
(Zuweisung Methoden-Implementierung =
(Delegation)
– Kombinationsregeln
• Replace
• Join
(Überschreiben)
(Verbinden von Subjektteilen)
– Korrespondenz- und Kombinationsregeln
• Merge = Join; Equate
• Override
Anwendungen aus C++ leicht erweiterbar
(klar wegen Sichten und Erweiterungsoperatoren)
Mischmodell kaum erweiterbar!
Dr. Welf Löwe und Markus Noga
11
7.1.2 LambdaN-Kalkül (N)
Erster Kalkül zur Codekomposition
Erweiterung des Lambda-Kalküls
– Benannte Argumente
– Namensabhängige Reduktionsregeln
Zweck
– Mehrfachdefinition von Funktionen
– Einfache Vereinigung ihres Codes
Mischregeln
– Umbenennung von Parametern
– Vereinigung von Ausdrücken
Dr. Welf Löwe und Markus Noga
12
Beispiel
f = lambda x y z .
let r = x+z in
let s = y*x in
record(r+s)
.
f = lambda a b .
let x = a+b in
record(x)
.
Umbenennung (rename)
Vereinigung (union)
f = lambda x y z a b .
let r = x+z in
let s = y*x in
let t = a+b in
record(r+s,t)
.
f = lambda a b .
let t = a+b
in
record(t)
.
f(x=1,y=2,z=3)
f(a=1,b=2)
LambdaN vereinigte
datenunabhängige
Slices
f(x=1,y=2,z=3,a=1,b=2)
Dr. Welf Löwe und Markus Noga
13
7.1.3 Metaobjekt-Komposition
Klasseneigenschaften als Metaobjekt darstellen
(tracing, counting, verbose, persistent,..)
Kombination durch Aggregation auf Metaebene
Der eigentliche Code einer Klasse ergibt sich aus
– den Methoden
– dem Code der Metaobjekte
(auf irgendeine Weise komponiert;
de facto beschränkt auf Prozedurein-/ausgang)
Simulation mit LambdaN möglich
Dr. Welf Löwe und Markus Noga
14
Beispiel
Class c {
Procedure p() {
fetch_from_db(self);
MetaobjektMethoden
precode
persistence
postcode
composing
print("enter p");
p_counter++;
Metaobjekt-Klassen
Normale
Klasse
precode
c
verbosity
/* algorithm */
postcode
// counting: nothing
precode
counting
print("exit p");
postcode
store_to_db(self);
}
}
p
Algorithmus
Dr. Welf Löwe und Markus Noga
15
7.1.4 Kompositionsfilter (composition filters)
Älterer Ansatz, ähnelt Metaobjekt-Komposition
(Schachtelung von Code um Objekte und Methoden)
Idee: Botschaften zwischen Objekten werden gefiltert
Beispiele für Filter
–
–
–
–
Botschaften verschlucken
Botschaften delegieren
(Vererbung, Delegation)
Mit anderen Objekten synchronisieren (Synchronisationsprotokolle)
Objekt(e) modifizieren
(Anpassung)
Dynamische Anpassung durch Filtertausch möglich
Sehr mächtiges Konzept, besonders zur Anpassung
Dr. Welf Löwe und Markus Noga
16
7.1.5 Template Metaprogramming/GenVoca
Templates in C++
– Parametrisierte Typausdrücke
– Auswertung bei Übersetzung
Idee:
Nutze Templates zur Komposition
Nachteil: Unlesbare Programme (Zweckentfremdung!)
Umsetzung auch denkbar mit
– statisch ausgewertetem Lambda-Kalkül
– offener Programmiersprache (z.B. OpenC++)
GenVoca (Batory)
– Mehrfach-Parametrisierung mit geschachtelten TemplateParametern
(Konfiguration in mehreren Dimensionen)
– Hauptsächlich für innere Anpassung
Dr. Welf Löwe und Markus Noga
17
Beispiel
// Statisch ausgewerteter SWITCH als Typ
template <int Tag,class aCase> struct SWITCH {
typedef aCase::next nextCase;
// Statische Berechnung in MS VC++ erzwingen
enum { tag
= aCase::tag,
nextTag = nextCase::tag,
found
= (tag == Tag || tag == DEFAULT)
};
// Statische Auswertung bei Übersetzung
typedef IF<(nextTag == intimate::NilValue),
intimate::NilCase,
SWITCH<Tag,nextCase> > ::RET nextSwitch;
typedef IF<(found != 0),
aCase::statement,
nextSwitch::RET>
::RET RET;
};
Dr. Welf Löwe und Markus Noga
18
Generische Klassen (templates) und
Rahmenwerke (frameworks)
Formale
Parameterklasse Parameterklasseninstanz
Template
class
Hook
class
Dr. Welf Löwe und Markus Noga
19
GenVoca: Komposition durch
Schachtelung von generischen Klassen
Template T< T1< T2<T3> ,T4<T5> > >
T
T1
T2
T3
T4
T5
Alle Ti sind unabhängig voneinander austauschbar, d.h. konfigurierbar!
(statische Komposition)
Dr. Welf Löwe und Markus Noga
20
Komponentensicht
T3
T5
T2
T4
T1
T
Komponenten werden intern adaptierbar, da innere Einheiten unabhängig von
äusseren ausgetauscht werden können
Dr. Welf Löwe und Markus Noga
21
7.2. Invasive Softwarekomposition
Invasive Komposition adaptiert und erweitert Komponenten
an Webepunkten durch Programmtransformation
Allgemeiner Mechanismus
Anwendungsgebiete
– Anpassung
– Sichtenorientierte Entwicklung
– Aspektorientierte Entwicklung
Webepunkte sind Ansatzpunkte für Adaption und
Erweiterung
– Implizit (z.B. durch Sprachsyntax definiert)
– Deklariert
(explizit als Kompositionsschnittstelle
ausgewiesen)
Dr. Welf Löwe und Markus Noga
22
Implizite Webepunkte
Beispiel: Methodeneintritt/austritt für Umwicklung
(wrapping), z.B. zum Umwickeln eines Test-Aspekts
m (){
Method.entry
abc..
cde..
Method.exit
Method.entry
Method.exit
}
Dr. Welf Löwe und Markus Noga
23
Deklarierte Webepunkte
Die Kompositionsschnittstelle einer Komponente besteht aus ihren
explizit deklarierten Webepunkten
Deklarationen
Deklaration von Webepunkten durch Spracherweiterungen oder z.B.
– Standardisierte Namenspräfixe
– Vererbungsbeziehungen
– Standardisierte Kommentar-Marken
Dr. Welf Löwe und Markus Noga
24
Webepunkte für Kommunikation (Tore)
Deklaration durch Aufruf abstrakter
Kommunikationsmethoden
m (){
m (){
// Aufruf
e = p(d);
}
out(d);
in(e);
Ausgabetor
Eingabetor
}
m (){
// Ereignis
notifyObservers(d);
e = listen_to();
}
Dr. Welf Löwe und Markus Noga
25
Invasive Komposition mit Kompositoren
Kompositoren sind Transformatoren, Optimierer,
Übersetzer, Metaoperatoren, Metaprogramme
Erkennen (ungebundener)
Webepunkte
Komposito
r
Konsistentes
Transformieren
zu gebundenen
Webepunkten
Invasiv transformierter Code
Dr. Welf Löwe und Markus Noga
26
Komposition beseitigt die
Kompositionsschnittstellen
Funktionale Schnittstelle
Kompositionsschnittstelle
mit Webepunkten
Invasive
Komposition
Dr. Welf Löwe und Markus Noga
27
Einsatz klassischer Übersetzerbautechnik
Programmanalyse zur Prüfung von Vorbedingungen
–
–
–
–
Attributierte Grammatiken
Typprüfungen
Datenflußanalyse
Abstrakte Interpretation
Programmtransformation
– Globale Musterersetzung (Ersetzungssysteme)
– Lokale Musterersetzung
– Elimination
Dr. Welf Löwe und Markus Noga
28
7.2.2. Geheimnisprinzip der invasiven
Komposition
Kompositon nur auf der Kompositionsschnittstelle
Dann kapselt die Schnittstelle die Komponente
Austausch gegen eine Variante wird möglich
Entspricht dem Geheimnisprinzip in
–
–
–
–
Modulen
Rahmenwerken
Architektursprachen
AOP
Aber wesentlich flexibler
Dr. Welf Löwe und Markus Noga
29
Konstruktionsprozeß mit invasiver
Komposition
Altsystem
Auswahl von
Webepunkten
Deklaration von
Webepunkten
Komponiertes,
verwebtes
System
Invasive
Komposition
System mit
Komponenten und
Webepunkten
Dr. Welf Löwe und Markus Noga
30
7.2.3 Invasive Komposition,
Code-Vererbung und Delegation
Kunde
Buchhandlung
CORBA-Kompositor
Kunde
DCOM-Kompositor
Buchhandlung
CORBA-Verbindung
Kunde
Buchhandlung
DCOM-Verbindung
Dr. Welf Löwe und Markus Noga
31
Beispiel Kunde/Buchhandlung
Kunde
import Buchhandlung;
Buchhandlung
public class Buchhandlung {
public class Kunde {
public bestelle(String server)
{
// allocate new server
Buchhandlung bh=
holeBuchhandlung(server);
public Buchhandlung() { }
public void sucheAus() {
System.out.println(
"suche aus.." );
}
public void kaufe() {
System.out.println(
"kaufe" );
}
// call the services
bh.sucheAus();
}
bh.kaufe();
}
}
Dr. Welf Löwe und Markus Noga
32
Invasive Anpassung an CORBA
CORBA Kunde
Kunde
import Buchhandlung;
public class Kunde {
public bestelle(String server)
{
// allocate new server
Buchhandlun bh =
holeBuchhandlung(server);
// call the services
bh.sucheAus();
import org.omg.CORBA.*
import Buchhandlung;
public class Kunde extends
CORBA.client {
public Kunde(String server) {
// Initialisiere CORBA Broker
ORB orb = ORB.init(
args,new Properties());
// Ermittle den Buchhändler
Buchhandlung bh =
orb.string_to_object(server);
// Bestellung
bh.schaueNach();
bh.order();
bh.kaufe();
}
}
Enthaltene
Webepunkte
}
}
Dr. Welf Löwe und Markus Noga
33
Vererbung und Delegation sind Kompositoren
K
Passe
invasiv an
K
Delegiere
Vererbe
K-Unterklasse
K
K-privat
Dr. Welf Löwe und Markus Noga
34
Erweiterungsoperatoren für Klassen
(z.B. SOP) sind Kompositoren
K
Physikalische Sicht als
Verschmelzung der
logischen Sichten
K
+
K
+
Jede Komponente
behält ihre logische
Sicht
Dr. Welf Löwe und Markus Noga
35
Ziele der Modifikation
Vererbung einsetzen für
– seiteneffektfreie konsistente Komposition
Delegation einsetzen für
– dynamischen Austausch
Invasive Komposition einsetzen für
– unvorgesehene Erweiterungen (Sichtenkonzept)
– aspektorientierte Entwicklung
(invasives Einmischen wie in
AOP)
– Anpassung ohne Delegation
(invasive Anpassung)
– transparenten Komponentenwechsel
(erfordert deklarierte
Webepunkte)
Dr. Welf Löwe und Markus Noga
36
7.3. Das Kompositionssystem COMPOST
COMPOST ist eine Java-Bibliothek mit
Programmtransformationen
Komponenten bestehen aus Java-Klassen mit
Kompositionsschnittstelle (deklarierte Webepunkte)
Kompositoren sind herkömmliche Java-Methoden
Meta-Programmierung (Reflektion und Transformation)
dient für Erkennung und Manipulation von Webepunkten
[Aßmann98] [Aßmann/Ludwig99]
– statisch mit einem Metamodell der Programmiersprache
– Komponenten, Kompositoren, Webepunkt existieren als
Metaobjekte (Component, Composer, WeavePoint)
Dr. Welf Löwe und Markus Noga
37
Der Software-Herstellungsprozeß in
COMPOST
Client.coc
(Java+Webepunkte)
Kompositionsprogram
m
in Java und COMPOST
Komposition/
Konfiguration
Client.java
Übersetzung
Server.coc
(Java+Webepunkte)
GlueCode.java
Server.java
Übersetzer
Dr. Welf Löwe und Markus Noga
38
Anbindung an Entwicklungsumgebungen
Benutzer
Kompositionen
Werkzeug
COMPOST
Interaktive Werkzeuge
JBuilder, Together
Dr. Welf Löwe und Markus Noga
39
Spezifikation von Weben durch
Graphersetzungssysteme
Generierung von Webern mit Hilfe des Generators für
Graphersetzungssysteme OPTIMIX (EARS, XGRS) [Aßmann95b, 99]
Dr. Welf Löwe und Markus Noga
40
COMPOST und aufbauende Arbeiten
Unterstützung
des Entwurfsprozesses
Aspekt-orientierte
Programming
Synchronisationssprachen
Sanierung
(Reengineering)
Automatisierte
Entwurfsmuster
Interaktive
Komposition
Adaptive
Programming
Entweben
von adaptiven
Programmen
Architektursprachen
Entwebeoperatoren
Normalisierer
Kontrollfluß
Webeoperatoren
Adapter
Konnektoren
Hilfsschicht
COMPOST Datenmodell (Metamodell)
Dr. Welf Löwe und Markus Noga
41
Das COMPOST System
Stellt invasive Kompositoren als Java-Programme dar
Erlaubt stapelverarbeitende und interaktive Komposition
Macht Webeschritte durch Kompositoren explizit
Stellt Aspekt-Weber als Graphersetzungssysteme dar
COMPOST wird mit sich selbst komponiert
Dr. Welf Löwe und Markus Noga
42
7.4 Fortschritte mit invasiver Komposition
Invasive Komposition adaptiert und erweitert Komponenten
an Webepunkten durch Programmtransformation
Sichtenbasierte Erweiterung von Komponenten
Aspektkomposition
Flexible Anpassung von Komponenten
Modularer Austausch mit Geheimnisprinzip
Dr. Welf Löwe und Markus Noga
43
Sprachunabhängige Komposition
Type description
Generic AST (DOM)
Java AST
Analyzers
Type description
Transformators
C++ AST
Dr. Welf Löwe und Markus Noga
44
Fortschritte
Methodik ist sprachunabhängig
Übertragung der Techniken aus dem Übersetzerbau
– Spezifikationstechniken (Graphersetzung, Termersetzung)
– Analysetechniken
– Generierungstechniken
Methodik zur Aufarbeitung von Altsystemen geeignet
Einsatz zur Produktion von Produktfamilien
Methodik liefert die Basis zur Entwicklung
abstrakterer und ausdrucksstärkerer Kompositionssprachen
– Kompositoren bilden die Maschinensprache der Komposition
Dr. Welf Löwe und Markus Noga
45
Fortschritte gegenüber...
Objektorientierten Systemen
– Kompositoren verallgemeinern Delegation und Vererbung
– Invasive Anpassung entfernt überflüssige Schnittstellen
– Erweiterungsmechanismen ermöglichen Sichtenkonzept
Aspekt-orientiertem Programmieren
– Invasive Komposition benötigt keine Spezialsprachen
– Invasive Komposition systematisiert den Webeprozeß
– Graphersetzungssysteme beschreiben Webevorgänge
Dr. Welf Löwe und Markus Noga
46
Veröffentlichungen
http://i44www.info.uni-karlsruhe.de/~assmann/compost.html
[Alt/Aßmann/vanSomeren94] Alt, M., Aßmann, U., van Someren, H. Cosy compiler phase
embedding with the CoSy compiler system. CC94, LNCS 786
[Aßmann95a] Aßmann, U. On edge eddition rewrite systems and their relevance to
program analysis. Graph-grammar Conference 1994, LNCS 1073
[Aßmann95b] Aßmann, U. Generierung von Programmoptimierungen mit
Graphersetzungssystemen. Dissertation. Universität Karlsruhe, GMD-Berichte 262,
Oldenbourg.
[Aßmann96] Aßmann, U. How To Uniformly Specify Program Analysis and
Transformation. CC96, LNCS 1060
[Goos/Aßmann98] Goos, G., Aßmann, U. Systematic Software Construction. Workshop
Universal Design Theory, Karlsruhe, Shaker Verlag.
[Aßmann98] Aßmann, U.: Meta-programming composers in 2nd generation component
systems. IFIP WG 2.4 Systems Implementation, Feb. 98, Berlin.
[Aßmann99] Aßmann, Ludwig: How to introduce connections into classes with static
metaprogramming. Coordination 99, Amsterdam. LNCS.
[Aßmann99b] Aßmann, U. How to transform and optimize programs with OPTIMIX.
Graph-grammar handbook, Vol. II, ed Rozenberg, Kreowski 1999
[Aßmann99c] Aßmann, U. Graph rewrite systems for program optimization. Under
revision by TOPLAS.
Dr. Welf Löwe und Markus Noga
47
Literatur
Technische Berichte
Aßmann, U., Genssler, T., Bär, H.: Meta-programming grey-box connectors.
Aßmann, U., Heberle, A., Ludwig, A., Löwe, W., Neumann, R.: Design patterns
and language constructs.
Aßmann, U.: Aspect-oriented programming with design patterns as metaprogramming operators. Techn. Bericht 17/97 Fak. Informatik
Verwandte Arbeiten am Institut
Zimmer, W.: Frameworks und Entwurfsmuster. Dissertation. Jan. 1997,
Universität Karlsruhe.
Schulz, B., Genßler, T., Mohr, B., Zimmer, W.: On the Computer Aided
Introduction of Design Patterns into Object-Oriented Systems, Proceedings of
the 27th TOOLS, Sept. 1998, IEEE CS Press.
Ludwig, A. Behandlung von partieller Konformität bei polymorphen
Methodenaufrufen. Diplomarbeit Universität Karlsruhe, 1997.
Frigo, J., Neumann, R., Zimmermann, W. Mechanical Generation of robust
libraries. TOOLS 97.
Dr. Welf Löwe und Markus Noga
48
7.5. Komposition: Was haben wir gelernt?
Was zeichnet Kompositionssysteme als
Komponentensysteme aus?
Wie erfüllen sie unsere Kriterien aus der Einleitung?
Dr. Welf Löwe und Markus Noga
49
Komposition: Ziele erfüllt?
 Erhöhung
Wiederverwendung
 Produktqualität
 Qualitätsverbesserung
 Effektivität durch Konzentration
Ja, sehr stark
 ja

auf Optimierungen
 Verlässlichkeit
 Verlängerung Lebensdauer
 Flexibilisierung
 Verbesserungen am

Softwareprozess
 Produktivität
 Schneller Prototypenbau
 Simulation von Architekturen
 Dokumentation
 Klare Systemstrukturen


ja, einfache Spezifikationen

ja

Ja

ja

ja
ja

ja

ja, weil Aspekte, die Effizienz beeinflussen,
weggelassen werden können

nein
ja

ja
Dr. Welf Löwe und Markus Noga
50
Komposition: Mechanismen zur
Modularisierung
Neue Art von Modul: Aspekte.
 Modularisierung in einer neuen Dimension
 Aspektspezifikationen können alle separat modularisiert
werden
 Saubere Schnittstellen durch Kompositionsschnittstellen mit
Webepunkten
 Die Kompositionsprogramme durchbrechen die
Modularisierung der Aspekte nach wohldefinierten Regeln!
 Daraus ergeben sich effiziente Programme, þüberflüssige
Schnittstellen werden aus dem System entfernt

keine Standards für anwendungsspezifische und
Fachkomponenten
 Modularisierung ist anwendungsspezifisch
Dr. Welf Löwe und Markus Noga

51
Komposition: Mechanismen zur
Adaptierbarkeit

Externe Adaption
Kleistercode möglich

Interne Adaptierbarkeit:
Im invasiven Komponieren, in SOP, GenVoca, LambdaN werden
Schnittstellen durchbrochen und Adaptionscode in die Komponente
eingewebt.
Kompositionsmechanismen sind noch fortschrittlicher als AOP, denn
sie vereinfachen den Einwebevorgang

Dr. Welf Löwe und Markus Noga
52
Mechanismen zur Aspekttrennung

Wie bei AOP, bloss werden oft keine Spezialsprachen
benþötigt. Statt dessen:
 Verwendung von Metaobjekt-Protokollen, Metamodellen,
Metaprogrammierung
Dr. Welf Löwe und Markus Noga
53
Mechanismen zur Transparenz
Wie bei AOP.
 Vorteil:

 Gegenüber allen konventionellen modularen Systemen werden
Komponenten echt komponiert, d.h. Während des Zusammensteckens
verändert.
 Damit können wir Bausteine verwenden, aber behauen und vermörteln
sie automatisch.
Dr. Welf Löwe und Markus Noga
54
Einordnung der Komponenten- und
Kompositionstechniken
Aspekt-orientiertes
Programmieren
EJB
Adaptives
Programmieren
N-Kalkül
Invasive
Komposition
Architektursprachen
Corba
DCOM
Beans
SOP
Template MP
Komposition
Dr. Welf Löwe und Markus Noga
55
Fazit
Softwarekompositionsmechanismen bilden das Rückgrat der
zukünftigen Komponentensysteme der 2. Generation.
 Invasive Komposition ist der allgemeinste Mechanismus und
kann sehr flexibel Komponenten miteinander kombinieren
 Komposition wird Teile des Programmierens ablösen,
insbesondere sobald visuelle Kompositionswerkzeuge
vorhanden sind.

Viel Spass beim Erforschen der weissen Flecken!
Dr. Welf Löwe und Markus Noga
56
Arbeiten in COMPOST
HiWis
Studienarbeiten
–
–
–
Implementierung der SOP Operatoren
Weiterentwicklung eines visuellen Kompositionswerkzeuges
Implementierung von Konnektoren
Diplomarbeiten
–
–
–
–
Reflexive Beschreibung von Workflows in COMPOST
Ein Vererbungskalkül in COMPOST
Reengineering mit Kompositoren
Dynamische Rekonfiguration
Dr. Welf Löwe und Markus Noga
57

folien2000866