Softwarekomposition und Metaprogrammierung

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

Programmieren im Großen von Markus Schmidt und Benno Kröger.
Prüfungspläne Bachelor-Thesis
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Objektorientierte Programmierung
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Designing Software for Ease of Extension and Contraction
Einführung in die Programmierung Zusammenfassung
DI Christian Donner cd (at) donners.com
Basis-Architekturen für Web-Anwendungen
Freie Universität Berlin Institut für Informatik
Christian A. Kopf Institut für Informatik FU Berlin Episode Recognizer Framework - Rahmenwerk zur Episodenerkennung.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Pascal Busch, WWI00B – Vergleich CORBA vs. Web Services hinsichtlich der Applikationsintegration Web Services vs CORBA Web Services vs CORBA Ein Vergleich.
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg1/7 Datenbanken werden als Anhäufung von Werten eines Wertebereiches aufgefasst und Datenbankabfragen.
AGXIS – Ein Konzept für eine generische Schnittstellenbeschreibung Dr.-Ing. Ulrich Hussels, RISA GmbH 07. Juni 2005 Workshop Umweltdatenbanken 2005.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Modularisierungstechniken
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
XDoclet ETIS SS05.
Programmieren mit JAVA
Programmieren mit JAVA
JAVA RMI.
Explizite und editierbare Metainformationen für Software Muster.
Prüfkriterien für objektorientierte Systeme
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
UML Begleitdokumentation des Projekts
Werkzeugunterstützte Softwareadaption mit Inject/J
Forschungszentrum Informatik, Karlsruhe Objektorientierte Systeme unter der Lupe Markus Bauer Oliver Ciupke.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Weitere Vorgehensmodelle Der Rational Unified Process RUP –bei IBM.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Eignung von Grammatik-basiertem Layout für grafische Programmiersprachen Seminar Layout-Algorithmen für Graphen Institut für Informatik Christian-Albrechts.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Architekturen und Techniken für computergestützte Engineering Workbenches.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Welchen Problemen ist man bei heterogener, verteilter Programmierung ausgesetzt? Hardware: nicht einheitliche, inkompatible Systeme, verschiedene Leistungsfähigkeit.
Beschreiben Sie das Szenario wenn ein ORB einen Server aktiviert und eine Objektimplementation aufruft. Activate Server impl_is_ready Activate Object (GetID.
Informatik Objekte und Klassen 1. Objektorientiertes Modellieren und Programmieren 1.1 Objekte und Klassen.
Paradigmenwechsel in der Unternehmensmodellierung Prof. Dr. Wolfgang Voigt Dipl.-Ing. Päd. Alexander Huwaldt UML Extrakt UML Seminar, Chemnitz
Integration existierender digitaler Bibliotheken in Lernumgebungen LEBONED (Learning Environment Based On Non Educational Digital Libraries) Dipl.-Inform.
Arbeitsbereich „Rechnernetze und verteilte Systeme“
Untersuchungen zur Erstellung eines
Klassen und Klassenstruktur
Eike Schallehn, Martin Endig
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Unified Process Historisch-Kulturwissenschaftliche Informationsverarbeitung Übung: Planung von Softwareprojekten Dozent: Christoph Stollwerk WS 2014/2015.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Vortrag - Diplomarbeiten (HS I)
Software aus Komponenten - Systeme, Adaptionen und Probleme
MDA – Model Driven Architecture
Ziel - Konzept - Realisierung 28. August 2003 Ursula Jutzi.
Objektorientierte (OO) Programmierung
Objektorientierte Programmierung Was ist das eigentlich ?
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Entwurf Dr. Wolfgang Wörndl
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Patrick Richterich Lattwein GmbH Web Services Softwareentwicklung mit SOAP.
Seminar Softwareproduktlinien Domänenspezifische Sprachen Sascha Draffehn von.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
Implementieren von Klassen
 Präsentation transkript:

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)

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 langauge-database 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

Problem und Ziel der Komposition 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)

Komposition: Ausdrücke statt Weber Druckaspekt Algorithmus Persistenz Op Op Op Op Op Op Druckaspekt Persistenz- aspekt Druckaspekt

Systembau als Kompositionsterm C1 C1 A A.p1 A A B.p1 A A A A.p1 C3 B.p1 C1 C2 C2 B.p2 C.p2 A A.p1 B B.p2 A.p2 C.p1 A.p2 C.p1 A A A A C2 C2 C C C C C1 C1 C1 B B B B C3

Systembau als Kompositionsterm C1 D=C4 C1 A A.p1 A A B.p1 A A.p1 A A B.p1 C2 C3 C2 C3 A.p2 C.p1 B.p2 C.p2 A.p2 C.p1 B.p2 C.p2 D A A C2 C2 C C C1 C1 B B C3 C2

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 Metaprogramm, Metaoperator code: Code  Code op: SpracheA  SpracheB Übersetzer

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

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

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

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!

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

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 a b . let t = a+b in record(t) . 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(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)

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

Beispiel Metaobjekt- Metaobjekt-Klassen Normale Methoden Klasse Class c { Procedure p() { fetch_from_db(self); print("enter p"); p_counter++; /* algorithm */ // counting: nothing print("exit p"); store_to_db(self); } persistence precode postcode c composing verbosity precode postcode counting precode postcode p Algorithmus

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

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

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;

Generische Klassen (templates) und Rahmenwerke (frameworks) Formale Parameterklasse Parameterklasseninstanz Template class Hook class

GenVoca: Komposition durch Schachtelung von generischen Klassen Template T< T1< T2<T3> ,T4<T5> > > T2 T3 T4 T5 T T1 Alle Ti sind unabhängig voneinander austauschbar, d.h. konfigurierbar! (statische Komposition)

Komponentensicht T3 T5 T2 T4 T1 T Komponenten werden intern adaptierbar, da innere Einheiten unabhängig von äusseren ausgetauscht werden können

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)

Implizite Webepunkte Click to add notes Beispiel: Methodeneintritt/austritt für Umwicklung (wrapping), z.B. zum Umwickeln eines Test-Aspekts m (){ abc.. cde.. } Method.entry Method.entry Method.exit Method.exit Click to add notes

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 Click to add notes

Webepunkte für Kommunikation (Tore) Deklaration durch Aufruf abstrakter Kommunikationsmethoden m (){ // Aufruf e = p(d); } m (){ out(d); in(e); } Ausgabetor Eingabetor m (){ // Ereignis notifyObservers(d); e = listen_to(); } Click to add notes

Invasive Komposition mit Kompositoren Kompositoren sind Transformatoren, Optimierer, Übersetzer, Metaoperatoren, Metaprogramme Erkennen (ungebundener) Webepunkte Konsistentes Transformieren zu gebundenen Webepunkten Kompositor Click to add notes Invasiv transformierter Code

Komposition beseitigt die Kompositionsschnittstellen Funktionale Schnittstelle Kompositionsschnittstelle mit Webepunkten Invasive Komposition

Einsatz klassischer Übersetzerbautechnik Programmanalyse zur Prüfung von Vorbedingungen Attributierte Grammatiken Typprüfungen Datenflußanalyse Abstrakte Interpretation Programmtransformation Globale Musterersetzung (Ersetzungssysteme) Lokale Musterersetzung Elimination

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 Click to add notes

Konstruktionsprozeß mit invasiver Komposition Altsystem Auswahl von Webepunkten Deklaration von Webepunkten Komponiertes, verwebtes System System mit Komponenten und Webepunkten Invasive Komposition Click to add notes

7.2.3 Invasive Komposition, Code-Vererbung und Delegation Kunde Buchhandlung CORBA-Kompositor DCOM-Kompositor Kunde Buchhandlung Kunde Buchhandlung CORBA-Verbindung DCOM-Verbindung

Beispiel Kunde/Buchhandlung import Buchhandlung; public class Kunde { public bestelle(String server) { // allocate new server Buchhandlung bh= holeBuchhandlung(server); // call the services bh.sucheAus(); bh.kaufe(); } Buchhandlung public class Buchhandlung { public Buchhandlung() { } public void sucheAus() { System.out.println( "suche aus.." ); } public void kaufe() { "kaufe" );

Invasive Anpassung an CORBA Kunde import Buchhandlung; public class Kunde { public bestelle(String server) { // allocate new server Buchhandlun bh = holeBuchhandlung(server); // call the services bh.sucheAus(); bh.kaufe(); } CORBA Kunde 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(); } Enthaltene Webepunkte

Vererbung und Delegation sind Kompositoren Passe invasiv an Delegiere Vererbe K K-Unterklasse K K-privat

Erweiterungsoperatoren für Klassen (z.B. SOP) sind Kompositoren Physikalische Sicht als Verschmelzung der logischen Sichten K + K + Jede Komponente behält ihre logische Sicht

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)

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) Click to add notes

Der Software-Herstellungsprozeß in COMPOST Client.coc (Java+Webepunkte) Server.coc (Java+Webepunkte) Kompositionsprogramm in Java und COMPOST Komposition/ Konfiguration Client.java GlueCode.java Server.java Click to add notes Übersetzer Übersetzung

Anbindung an Entwicklungsumgebungen Benutzer Kompositionen COMPOST Werkzeug Interaktive Werkzeuge JBuilder, Together Click to add notes

Spezifikation von Weben durch Graphersetzungssysteme Generierung von Webern mit Hilfe des Generators für Graphersetzungssysteme OPTIMIX (EARS, XGRS) [Aßmann95b, 99]

COMPOST und aufbauende Arbeiten Aspekt-orientierte Programming Unterstützung des Entwurfsprozesses Sanierung (Reengineering) Synchronisations- sprachen Automatisierte Entwurfsmuster Adaptive Programming Entweben von adaptiven Programmen Interaktive Komposition Architektur- sprachen Entwebe- operatoren Normalisierer Kontrollfluß Webe- operatoren Adapter Konnektoren Click to add notes Hilfsschicht COMPOST Datenmodell (Metamodell)

Das COMPOST System Click to add notes 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 Click to add notes

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 Click to add notes

Sprachunabhängige Komposition

Fortschritte Click to add notes 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 Click to add notes

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

Veröffentlichungen Click to add notes 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. Click to add notes

Literatur Click to add notes 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 meta-programming 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. Click to add notes

7.5. Komposition: Was haben wir gelernt? Was zeichnet Kompositionssysteme als Komponentensysteme aus? Wie erfüllen sie unsere Kriterien aus der Einleitung?

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, weil Aspekte, die Effizienz beeinflussen, weggelassen werden können nein

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

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

Mechanismen zur Aspekttrennung Wie bei AOP, bloss werden oft keine Spezialsprachen benþötigt. Statt dessen: Verwendung von Metaobjekt-Protokollen, Metamodellen, Metaprogrammierung

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.

Einordnung der Komponenten- und Kompositionstechniken Aspekt-orientiertes Programmieren EJB Adaptives Programmieren Invasive Komposition Architektur- sprachen Corba DCOM Beans SOP N-Kalkül Template MP Komposition

Fazit Viel Spass beim Erforschen der weissen Flecken! 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!

Arbeiten in COMPOST HiWis Studienarbeiten Diplomarbeiten 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