Dr. Welf Löwe und Markus Noga 1
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 2
Literatur
/ben/papers/unpacked/MetaprogrammingSOP: http://www.research.ibm.com/sop/sophome.htmLambdaN: Dami, Laurent. Software Composition. Dissertation Universität Genf. 1997Mulet, P., Malenfant, J., Cointe, P. Towards a Methodology for Explict Composition of MetaObjects. OOPSLA 98. Aksit, M., Bergmans, L., Vural, S. An object-oriented langauge-database integration model: The composition-filters approach. ECOOP 92. LNCS 615, Springer.Template Metaprogramming:http://home.t-online.de/home/Ulrich.eisenecker/gpref.htmGenVoca: 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 3
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 4
Komposition: Ausdrücke statt Weber
DruckaspektDruckaspekt
PersistenzPersistenzAlgorithmusAlgorithmus
Persistenz-aspektDruckaspekt
OpOp
Druckaspekt
OpOp
OpOp
OpOp
OpOp
OpOp
Dr. Welf Löwe und Markus Noga 5
Systembau als Kompositionsterm
A
B
C
A
B
C
C.p1
A BA.p1 B.p2
C1
A
B
CC1 C1
C2
C2
A.p2
A
C1
AAA.p1 B.p1
A
B
CC1
C2
C3
C.p1
C2
A.p2
A
C1
AAA.p1 B.p1
C.p2
C3
B.p2
Dr. Welf Löwe und Markus Noga 6
Systembau als Kompositionsterm
A
B
CC1
C2
C3
C.p1
C2
A.p2
A
C1
AAA.p1 B.p1
C.p2
C3
B.p2 C.p1
C2
A.p2
A
C1
AAA.p1B.p1
C.p2
C3
B.p2
D=C4
A
B
CC1
C2
C2
D
Dr. Welf Löwe und Markus Noga 7
Voraussetzungen zur Komposition
Flexible Komposition von Code und Daten möglich.
Kompositionsoperatoren (Kompositoren) sind Programmtransformatoren (Codetransformator, Optimierer, Übersetzer, Metaprogramm, Metaoperator)
op: Code Code
code: Code Code Metaprogramm, Metaoperator
Optimierer, Transformator
op: SpracheA SpracheB Übersetzer
Dr. Welf Löwe und Markus Noga 8
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 9
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 10
Beispiel
Ein einfaches SubjektSubject: 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 11
Mischregeln in SOP
Fest vorgegebene Kompositionsoperatoren– Korrespondenzregeln:
• Equate (Zuweisung Methoden-Implementierung = Subjektteil)
• Correspond (Delegation)
– Kombinationsregeln• Replace (Überschreiben)• Join (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 12
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 13
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).
f = lambda a b . let t = a+b in record(t).
Umbenennung (rename)
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).
LambdaN vereinigtedatenunabhängige Slices
Vereinigung (union)
f(x=1,y=2,z=3) f(a=1,b=2)
f(x=1,y=2,z=3,a=1,b=2)
Dr. Welf Löwe und Markus Noga 14
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 15
Beispiel
Class c { Procedure p() { fetch_from_db(self);
print("enter p");
p_counter++;
/* algorithm */
// counting: nothing
print("exit p");
store_to_db(self); }}
c
pAlgorithmus
persistence
verbosity
counting
precode
precode
precode
postcode
postcode
postcodecomposing
Metaobjekt-Klassen Metaobjekt-Methoden
NormaleKlasse
Dr. Welf Löwe und Markus Noga 16
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 17
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 Template-Parametern
(Konfiguration in mehreren Dimensionen)
– Hauptsächlich für innere Anpassung
Dr. Welf Löwe und Markus Noga 18
Beispiel
// Statisch ausgewerteter SWITCH als Typtemplate <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 19
Generische Klassen (templates) und Rahmenwerke (frameworks)
Hookclass
Hookclass
Templateclass
Templateclass
FormaleParameterklasseParameterklasseninstanz
Dr. Welf Löwe und Markus Noga 20
GenVoca: Komposition durch Schachtelung von generischen Klassen
Template T< T1< T2<T3> ,T4<T5> > >
T1
T2 T3
T T4 T5
Alle Ti sind unabhängig voneinander austauschbar, d.h. konfigurierbar! (statische Komposition)
Dr. Welf Löwe und Markus Noga 21
Komponentensicht
T5T5T3T3
T4T2
T1
T
Komponenten werden intern adaptierbar, da innere Einheiten unabhängig von äusseren ausgetauscht werden können
Dr. Welf Löwe und Markus Noga 22
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 23
Implizite Webepunkte
Beispiel: Methodeneintritt/austritt für Umwicklung (wrapping), z.B. zum Umwickeln eines Test-Aspekts
m (){
abc.. cde..
}
Method.entry
Method.exit
Method.entry
Method.exit
Dr. Welf Löwe und Markus Noga 24
Deklarierte Webepunkte
Die Kompositionsschnittstelle einer Komponente besteht aus ihren explizit deklarierten Webepunkten
Deklaration von Webepunkten durch Spracherweiterungen oder z.B.– Standardisierte Namenspräfixe– Vererbungsbeziehungen– Standardisierte Kommentar-Marken
Deklarationen
Dr. Welf Löwe und Markus Noga 25
Webepunkte für Kommunikation (Tore)
m (){
out(d); in(e);
}
Ausgabetor
Eingabetor
m (){ // Aufruf e = p(d);}
m (){ // Ereignis notifyObservers(d); e = listen_to();}
Deklaration durch Aufruf abstrakter Kommunikationsmethoden
Dr. Welf Löwe und Markus Noga 26
Invasive Komposition mit Kompositoren
Kompositoren sind Transformatoren, Optimierer, Übersetzer, Metaoperatoren, Metaprogramme
Kompositor
Kompositor
Erkennen (ungebundener)Webepunkte
Konsistentes Transformieren zu gebundenen Webepunkten
Invasiv transformierter Code
Dr. Welf Löwe und Markus Noga 27
Komposition beseitigt die Kompositionsschnittstellen
Kompositionsschnittstellemit Webepunkten
Funktionale Schnittstelle
InvasiveKomposition
Dr. Welf Löwe und Markus Noga 28
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 29
7.2.2. Geheimnisprinzip der invasiven Komposition
Kompositon nur auf der KompositionsschnittstelleDann kapselt die Schnittstelle die KomponenteAustausch gegen eine Variante wird möglich
Entspricht dem Geheimnisprinzip in– Modulen– Rahmenwerken– Architektursprachen– AOP
Aber wesentlich flexibler
Dr. Welf Löwe und Markus Noga 30
Konstruktionsprozeß mit invasiver Komposition
System mit Komponenten und Webepunkten
Komponiertes, verwebtes System
Deklaration von Webepunkten
InvasiveKomposition
Auswahl von Webepunkten
Altsystem
Dr. Welf Löwe und Markus Noga 31
7.2.3 Invasive Komposition, Code-Vererbung und Delegation
Kunde Buchhandlung
Kunde Buchhandlung
CORBA-Verbindung
Kunde Buchhandlung
DCOM-Verbindung
CORBA-Kompositor DCOM-Kompositor
Dr. Welf Löwe und Markus Noga 32
Beispiel Kunde/Buchhandlung
Kundeimport Buchhandlung;
public class Kunde { public bestelle(String server) { // allocate new server Buchhandlung bh= holeBuchhandlung(server);
// call the services bh.sucheAus();
bh.kaufe(); }}
Buchhandlungpublic class Buchhandlung {
public Buchhandlung() { } public void sucheAus() { System.out.println( "suche aus.." ); } public void kaufe() { System.out.println( "kaufe" ); }}
Dr. Welf Löwe und Markus Noga 33
Invasive Anpassung an CORBA
Kundeimport Buchhandlung;
public class Kunde { public bestelle(String server) { // allocate new server Buchhandlun bh = holeBuchhandlung(server);
// call the services bh.sucheAus();
bh.kaufe(); }}
CORBA Kundeimport 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(); }}Enthaltene
Webepunkte
Dr. Welf Löwe und Markus Noga 34
Vererbung und Delegation sind Kompositoren
Passeinvasiv an
Passeinvasiv an
K
K-privatKK-UnterklasseK
VererbeVererbeDelegiereDelegiere
Dr. Welf Löwe und Markus Noga 35
Erweiterungsoperatoren für Klassen (z.B. SOP) sind Kompositoren
K
K
++
++
K
Jede Komponente behält ihre logische Sicht
Physikalische Sicht als Verschmelzung der logischen Sichten
Dr. Welf Löwe und Markus Noga 36
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 37
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 38
Der Software-Herstellungsprozeß in COMPOST
Komposition/Konfiguration
Übersetzung ÜbersetzerÜbersetzer
Client.coc(Java+Webepunkte)
Client.coc(Java+Webepunkte)
Server.coc(Java+Webepunkte)
Server.coc(Java+Webepunkte)
Client.javaClient.java Server.javaServer.javaGlueCode.javaGlueCode.java
Kompositionsprogramm
in Java und COMPOST
Kompositionsprogramm
in Java und COMPOST
Dr. Welf Löwe und Markus Noga 39
Anbindung an Entwicklungsumgebungen
WerkzeugWerkzeug COMPOSTCOMPOST
Benutzer
Kompositionen
Interaktive Werkzeuge JBuilder, Together
Dr. Welf Löwe und Markus Noga 40
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 41
Unterstützung des Entwurfsprozesses
Unterstützung des Entwurfsprozesses
COMPOST Datenmodell (Metamodell)COMPOST Datenmodell (Metamodell)
Entwebe-operatoren
Entwebe-operatoren
Webe-operatoren
Webe-operatoren
NormalisiererNormalisierer
AdapterAdapter
HilfsschichtHilfsschicht
KontrollflußKontrollfluß
KonnektorenKonnektoren
Aspekt-orientierte Programming
Aspekt-orientierte Programming
Adaptive Programming
Adaptive Programming
Architektur-sprachen
Architektur-sprachen
Synchronisations-sprachen
Synchronisations-sprachen
Sanierung(Reengineering)
Sanierung(Reengineering)
Interaktive Komposition
Interaktive Komposition
Entwebenvon adaptivenProgrammen
Entwebenvon adaptivenProgrammen
Automatisierte Entwurfsmuster
Automatisierte Entwurfsmuster
COMPOST und aufbauende Arbeiten
Dr. Welf Löwe und Markus Noga 42
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 43
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 44
Sprachunabhängige Komposition
Generic AST (DOM)
Java AST C++ AST
Analyzers
Type description
Transformators
Type description
Dr. Welf Löwe und Markus Noga 45
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 46
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 47
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 48
Literatur
Technische BerichteAß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 meta-programming operators. Techn. Bericht 17/97 Fak. InformatikVerwandte Arbeiten am InstitutZimmer, 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 49
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 50
Komposition: Ziele erfüllt?
Erhöhung Wiederverwendung
Produktqualität Qualitätsverbesserung Effektivität durch Konzentration
auf Optimierungen Verlässlichkeit Verlängerung Lebensdauer Flexibilisierung
Verbesserungen am Softwareprozess
Produktivität Schneller Prototypenbau Simulation von Architekturen
Dokumentation Klare Systemstrukturen
Ja, sehr stark ja
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 51
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 52
Komposition: Mechanismen zur Adaptierbarkeit
Externe AdaptionKleistercode 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 53
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 54
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 55
Einordnung der Komponenten- und Kompositionstechniken
AdaptivesProgrammieren
Aspekt-orientiertesProgrammieren
N-Kalkül
Komposition
InvasiveKompositionArchitektur-
sprachen
EJBEJB
SOPSOP
Template MPTemplate MP
CorbaDCOMBeans
CorbaDCOMBeans
Dr. Welf Löwe und Markus Noga 56
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 57
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