57
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 Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Embed Size (px)

Citation preview

Page 1: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 1

Softwarekomposition und Metaprogrammierung

EinführungAnsä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)

Page 2: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 3: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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)

Page 4: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 4

Komposition: Ausdrücke statt Weber

Druckaspekt

PersistenzAlgorithmus

Persistenz-aspektDruckaspekt

Op

Druckaspekt

OpOp

Op

Op

Op

Page 5: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 6: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 7: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 8: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 8

7.1 Einige Ansätze zur Komposition

Subjekt-orientiertes Programmieren SOPOOP-Erweiterungen (composition filters)Kalküle für Komponentensysteme (N-Kalkül)Metaobjekt-KompositionTemplate Metaprogramming

Page 9: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 10: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 11: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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!

Page 12: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 12

7.1.2 LambdaN-Kalkül (N)

Erster Kalkül zur CodekompositionErweiterung 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

Page 13: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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)

Page 14: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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 MetaebeneDer 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

Page 15: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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-MethodenNormale

Klasse

Page 16: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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 gefiltertBeispiele 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

Page 17: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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 KompositionNachteil: 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

Page 18: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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;};

Page 19: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 19

Generische Klassen (templates) und Rahmenwerke (frameworks)

Hookclass

Templateclass

FormaleParameterklasseParameterklasseninstanz

Page 20: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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)

Page 21: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 21

Komponentensicht

T5

T3

T4T2T1

T

Komponenten werden intern adaptierbar, da innere Einheiten unabhängig von äusseren ausgetauscht werden können

Page 22: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 22

7.2. Invasive Softwarekomposition

Invasive Komposition adaptiert und erweitert Komponenten an Webepunkten durch ProgrammtransformationAllgemeiner 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)

Page 23: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 24: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 25: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 25

Webepunkte für Kommunikation (Tore)

m (){

out(d); in(e);

}

AusgabetorEingabetor

m (){ // Aufruf e = p(d);}

m (){ // Ereignis notifyObservers(d); e = listen_to();}

Deklaration durch Aufruf abstrakter Kommunikationsmethoden

Page 26: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 26

Invasive Komposition mit Kompositoren

Kompositoren sind Transformatoren, Optimierer, Übersetzer, Metaoperatoren, Metaprogramme

Kompositor

Erkennen (ungebundener)Webepunkte

Konsistentes Transformieren zu gebundenen Webepunkten

Invasiv transformierter Code

Page 27: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 27

Komposition beseitigt die Kompositionsschnittstellen

Kompositionsschnittstellemit Webepunkten

Funktionale Schnittstelle

InvasiveKomposition

Page 28: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 29: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 30: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 31: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 32: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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" ); }}

Page 33: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 34: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 34

Vererbung und Delegation sind Kompositoren

Passeinvasiv an

K

K-privatKK-UnterklasseK

VererbeDelegiere

Page 35: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 36: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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)

Page 37: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 37

7.3. Das Kompositionssystem COMPOST

COMPOST ist eine Java-Bibliothek mit ProgrammtransformationenKomponenten bestehen aus Java-Klassen mit Kompositionsschnittstelle (deklarierte Webepunkte)Kompositoren sind herkömmliche Java-MethodenMeta-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)

Page 38: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 38

Der Software-Herstellungsprozeß in COMPOST

Komposition/Konfiguration

Übersetzung Übersetzer

Client.coc(Java+Webepunkte)

Server.coc(Java+Webepunkte)

Client.java Server.javaGlueCode.java

Kompositionsprogramm

in Java und COMPOST

Page 39: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 39

Anbindung an Entwicklungsumgebungen

Werkzeug COMPOST

Benutzer

Kompositionen

Interaktive Werkzeuge JBuilder, Together

Page 40: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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]

Page 41: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 41

Unterstützung des Entwurfsprozesses

COMPOST Datenmodell (Metamodell)

Entwebe-operatoren

Webe-operatoren

Normalisierer

Adapter

Hilfsschicht

Kontrollfluß

Konnektoren

Aspekt-orientierte Programming

Adaptive Programming

Architektur-sprachen

Synchronisations-sprachen

Sanierung(Reengineering)

Interaktive Komposition

Entwebenvon adaptivenProgrammen

Automatisierte Entwurfsmuster

COMPOST und aufbauende Arbeiten

Page 42: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 42

Das COMPOST System

Stellt invasive Kompositoren als Java-Programme darErlaubt stapelverarbeitende und interaktive KompositionMacht Webeschritte durch Kompositoren explizitStellt Aspekt-Weber als Graphersetzungssysteme dar COMPOST wird mit sich selbst komponiert

Page 43: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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 KomponentenAspektkompositionFlexible Anpassung von KomponentenModularer Austausch mit Geheimnisprinzip

Page 44: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 44

Sprachunabhängige Komposition

Generic AST (DOM)

Java AST C++ AST

Analyzers

Type description

Transformators

Type description

Page 45: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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 geeignetEinsatz zur Produktion von ProduktfamilienMethodik liefert die Basis zur Entwicklung abstrakterer und ausdrucksstärkerer Kompositionssprachen– Kompositoren bilden die Maschinensprache der Komposition

Page 46: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 47: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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.

Page 48: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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.

Page 49: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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?

Page 50: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 51: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 52: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 53: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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

Page 54: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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.

Page 55: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 55

Einordnung der Komponenten- und Kompositionstechniken

AdaptivesProgrammieren

Aspekt-orientiertesProgrammieren

N-Kalkül

Komposition

InvasiveKompositionArchitektur-

sprachen

EJB

SOP

Template MP

CorbaDCOMBeans

Page 56: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

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!

Page 57: Dr. Welf Löwe und Markus Noga1 Softwarekomposition und Metaprogrammierung Einführung Ansätze zur Komposition –Subjekt-orientiertes Programmieren SOP –Erweiterungen

Dr. Welf Löwe und Markus Noga 57

Arbeiten in COMPOST

HiWisStudienarbeiten

– 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