Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 1 Seminar "Component and Aspect Engineering" Thema dieses Vortrages: Composition.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Objektorientierte Programmierung
Inhalt Saarbrücken,.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Frame-Logik Eine Einführung Andreas Glausch.
DI Christian Donner cd (at) donners.com
Finale Semantik und beobachtbares Verhalten
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Hauptseminar Modellüberprüfung Kathrin Ott
Unter- und Oberklassen: Beispiel
Design Patterns- Entwurfsmuster
Seminar Software-Engineering für softwareintensive Systeme
Sequenzdiagramm.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Programmieren mit JAVA
Programmieren mit JAVA
Seminar: Architekturbeschreibungssprachen
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 1 Seminar Component and Aspect Engineering im WS03/04 FlexiBeans / FreEvolve von.
Universität Bonn, Seminar Component and Aspect Engineering WS 2003/2004, Dirk Schiele 1 Aspekt-Interferenzen Seminar Component and Aspect Engineering Uni.
AspectJ – Eine Aspektorientierte Programmiersprache
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
RDF-Schema Seminar: „Semantic Web“ André Rosin,
Folie 1 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: DECORATOR.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Kollektionstypen (1) Es sind polymorphe Typkonstruktoren, jeweils als Sorten- und als Klassenkonstruktor (t,v beliebige Typen): –set, Set :Ungeordnete.
Klassen und Schnittstellen Klasse: Definiert Zustandsraum ihrer Instanzen vollständig (Implementierung der Struktur, soweit Voraussetzung für die Methoden-
1 Klassen (1) Eine Klasse beschreibt eine Menge von Objekten mit gemeinsamer Struktur gemeinsamem Verhalten gemeinsamen Beziehungen gemeinsamer Semantik.
Access & Assign Methoden in Visual FoxPro Zuweisungs- und Zugriffs-Methoden.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Einführung in die Programmierung
Sequenzdiagramme (1) Festlegen des Inter-Objekt-Verhaltens (Interaktionsstruktur, Verantwortlichkeiten) Sequenzdiagramm ist temporal orientiert zeigt.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Proseminar an der TU München Martin Levihn
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Beschreiben Sie das Szenario wenn ein ORB einen Server aktiviert und eine Objektimplementation aufruft. Activate Server impl_is_ready Activate Object (GetID.
Stellen Sie nochmals statischen und dynamischen Methodenaufruf gegenüber.
Dynamische Datentypen
Paradigmenwechsel in der Unternehmensmodellierung Prof. Dr. Wolfgang Voigt Dipl.-Ing. Päd. Alexander Huwaldt UML Extrakt UML Seminar, Chemnitz
Zustandsübergangsdiagramme (1)
Objectives Verstehen was unterDelegate verstanden wird
EPROG Tutorium #4 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Meta-Modell für Story-Diagramme und Expressions
Robuste Programme durch Ausnahmebehandlung
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
How to Pipelining DEVOP PART I: WINDOWS POWERSHELL.
Die Programmiersprache Ruby Seminarvortrag von Lia Schulze Dephoff 1.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Tutorium Software-Engineering SS14 Florian Manghofer.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
1 Eine Einführung in die objektorientierte Programmierung.
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
Implementieren von Klassen
 Präsentation transkript:

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 1 Seminar "Component and Aspect Engineering" Thema dieses Vortrages: Composition Filters und ComposeJ Bastian Demuth

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 2 Inhaltsübersicht 1. Ansatz, Motivation 2. Das CF Modell im Überblick 3. Filterprozess im Detail 4. Einige Filtertypen 5. Syntax der Filterdefinition 6. Beispiele 7. Superimposition 8. Beispiel zur Superimposition 9. Fragen zur Implementation 10. Stand der Umsetzung 11. Bewertung

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 3 Ansatz bei der Entwicklung von Composition Filters Implementation bestimmter Aspekte in Objekt-Orientierten (OO) Sprachen erfordert oft großen Aufwand Mechanismen des OOP (Vererbung, Aggregation…) wichtig, aber nicht ausreichend Bsp: Zählen von Methodenaufrufen Gesucht: Erweiterung für OOP Sprachen Kontrolle der Kommunikation zwischen Objekten Nachrichtenaustausch als zentrales Paradigma bei OOP Potentiell äußerst mächtiger Ansatzpunkt

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 4 Kontrolle in welcher Form? Ein- und ausgehende Nachrichten werden gefiltert Filter sollen einfach beschreibbar dennoch flexibel kombinierbar (orthogonal aber geordnet) transparent (unsichtbar für darunter liegende Objekte) unabhängig von verwendeter OO-Sprache wiederverwendbar sein Composition Filters seit ca von M. Aksit et al. an der Twente Universität entwickelt syntaktisch aus der Sprache Sina hervorgegangen

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 5 Das Composition Filter Modell im Überblick

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 6 Der Prozess des Filterns im Detail Semantik von accept/reject hängt vom Filtertyp ab!

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 7 Einige Filtertypen Der Error-Filter lässt die Nachricht bei accept durch, bei reject verwirft er sie und erzeugt eine Exception gut zum Abfangen von Nachrichten geeignet Der Dispatch-Filter bei accept wird die Nachricht schließlich an ein Objekt übermittelt jedes input-Filterset sollte am Ende einen Dispatch-Filter haben erreicht eine Nachricht das Ende eines Filtersets: Exception wird ausgelöst beschreibt multiple und konditionale Vererbung! Der Send-Filter output Filter, entspricht dem Dispatch-Filter

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 8 Einige Filtertypen (2) Der Meta-Filter dient u.a. zur Verwaltung von Metainformationen über den Nachrichtenverkehr (z.B. Logging, Zählen von Methodenaufrufen) bei accept wird Nachricht als Parameter an eine spezifizierte Methode übergeben, bei reject einfach weitergeleitet Meta-Methode kann Nachricht registrieren, ändern und reaktivieren Der Wait-Filter bei reject (aufgrund nicht erfüllter Bedingung) werden Nachrichten zurückgehalten (in Queue placiert) werden weitergegeben, sobald die Bedingung den Wahrheitswert True annimmt (wird regelmäßig überprüft)

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 9 Die Syntax der Filterdefinition Eine Filterspezifikation sieht so aus: Dabei hat jedes Filter-Element die Form matching partsubstitution part (anstatt => gibt es auch ~> als komplementären Operator) : = {,,… } => [. ]. Teile der Filterelement-Deklaration können weggelassen werden. (siehe später) substitution: Ziel der Nachricht veränderbar Kritik am substitution part: mehrdeutig

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 10 Beispiel (1) Filterset zum Zählen von Methodenaufrufen Auffällig: Minimalität (Methode count + Mapping) Verwendete, noch nicht besprochene Features: -Bedingungen und => optional -Wildcards (*) -inner Schlüsselwort bezeichnet inneres Objekt der CF-Objektinstanz -Methode, die die Nachricht als Parameter erhält ist für deren Reaktivierung zuständig => Nachricht geht zum nächsten Filter -Dispatch-Filter leitet Nachrichten automatisch an passende Instanzen (Signatur ausschlaggebend!) bookkeeping : Meta = {[*] inner.count}; execute : Dispatch = {[*] inner.*, [*] internalObj.*};

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 11 Beispiel (2) Synchronisation mittels Wait-Filter Verwendete Features: -Bedingungen - Wichtig: Bedingungs-Methoden dürfen keine Seiteneffekte haben! -matching part ist optional, aus substiution part abgeleitet -True Schlüsselwort: Nachrichten matchen unabhängig von Bedingungen Queue : Wait = { True => unlock, Unlocked => * };

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 12 class Employee interface conditions taskLeft(); // true when there is at least one task to do. internals pers : Person; externals methods getTask() returns String putTask(String) returns Nil doTask() returns String inputfilters preCond : Error = {taskLeft~>putTask,!taskLeft~>{getTask,doTask}}; ~>{getTask, putTask} }; inherit : Dispatch = { inner.*, pers.* }; outputfilters end; // class Employee interface Beispiel (3): vollständiges Interface Alle Teile der Interfacedefinition sind optional dynamisches Interface!

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 13 Der Superimposition Mechanismus Dient der Wiederverwendung definierter Filtersets => class crosscutting concerns

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 14 Beispiel zur Superimposition concern Synchronization begin filterinterface synchronize begin conditions Unlocked methods lock() returns Nil inputfilters Queue : Wait = { True => unlock, Unlocked => * }; end filterinterface synchronize; superimposition begin selectors synchronizables = { *= Resource1, *= Resource2 }; filterinterfaces synchronizables <- self::synchronize; end superimposition; end concern Synchronization; Hier wird eine etwas neuere Syntax verwandt, um concerns zu beschreiben. ConcernJ soll später eine ähnliche Syntax unterstützen. Schlüsselwort self

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 15 Fragestellungen zur Implementation Wann passiert das weaving? wäre möglich, dynamisch Filter zur Laufzeit einzufügen dynamisches Hinzufügen von Filtern kann Verständlichkeit und Korrektheit gefährden geschieht teilweise auch aus Effizienzgründen nicht Filter als Objekte in OO Sprachen sinnvoll und logisch durch Vererbung: neue Filtertypen für bisher ungelöste Aspekte · müssen bestimmten Anforderungen genügen (Orthogonalität!) sollten selbst keine Filter haben · schlecht überschaubar, unendliche Rekursion vermeiden

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 16 Stand der Umsetzung Seit 1995: Umsetzungen für C++ und Smalltalk enthalten die meisten der genannten Filtertypen, ohne Superimposition Seit 1999 implementiert und weiterentwickelt: ComposeJ: Parser, der CF-Klassen in Java-Code umwandelt weicht etwas von Standard-CF Syntax ab unterstützt den Superimposition-Mechanismus bislang auch nicht bisher nur Dispatch- und Errorfilter als Inputfilter implementiert Identifikation von Methoden und internal/external Objekten funktioniert über entsprechende Namensgebung zur Kompilierzeit wird Filter-Code in bestehenden Sourcecode eingefügt In der Planungs-/Entwicklungsphase seit 2001: ConcernJ soll Superimposition unterstützen wird wahrscheinlich auf ComposeJ basieren

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 17 Bewertung: Wofür eignen sich CF gut? Beispiele für Paradigmen und Aspekte, die im Zusammenhang mit CF speziell untersucht wurden: Vererbung/Delegation (Dispatch-Filter und server Schlüsselwort) Multiple views/dynamische Interfaces (Error-Filter) Sicherheit (Error-Filter) Echtzeit-Anwendungen (Real-time-Filter) Synchronisation/Locking (Wait und Error Filter) Logging (Meta-Filter)

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 18 Wofür eignen sich CF weniger? performance-bezogene Aspekte starke Kapselung der inneren Objekte Nachrichten müssen oft seriell alle Filter passieren Filter produzieren viel overhead: · Meta-Filter transformieren Nachrichten in Objekte und umgekehrt (reification und dereification) · in der Praxis werden für jeden Filter weitere Hilfsobjekte benötigt (z.B. ca. 14 bei C++/CF)

Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Bastian Demuth 19 Fragen, Diskussion...