Softwaretechnologie, © Prof. Uwe Aßmann
Technische Universität Dresden, Fakultät Informatik 1
44) Querschneidende Verfeinerung durch Unterobjekt-Integration
(Object Fattening)
Prof. Dr. rer. nat. Uwe Aßmann Institut für Software- und
Multimediatechnik Lehrstuhl Softwaretechnologie
Fakultät für Informatik TU Dresden Version 11-0.1, 10.07.11
1) Object und Platform Fattening
1) Plattformobjekte- und konnektoren
2) Abbildung der Integrates-Relation 3) Gesamtbild der
Verfeinerung
Prof. U. Aßmann, Softwaretechnologie 2
Objektorientierter Entwurf
(Object-Oriented Design, OOD)
1) Einführung in die objektorientierte Softwarearchitektur 1) Modularität und Geheimnisprinzip
2) Entwurfsmuster für Modularität
3) BCED-Architekturstil (3-tier architectures)
2) Verfeinerung des Entwurfsmodells zum Implementierungsmodell 1) Anreicherung von Klassendiagrammen
2) Verfeinerung von Lebenszyklen
3) Querschneidende Verfeinerung mit Object Fattening 3) Objektorientierte Rahmenwerke (frameworks) 4) Softwarearchitektur mit dem Quasar-Architekturstil
Prof. U. Aßmann, Softwaretechnologie 3
Obligatorische Literatur
►
OSGI Technical White Paper. www.osgi.org
Softwaretechnologie, © Prof. Uwe Aßmann
Technische Universität Dresden, Fakultät Informatik 4
44.1 Object Fattening und Platform Fattening (Querschneidende
Verfeinerung für Plattformen)
.. Verfeinerung durch Integration von Unterobjekten..
Prof. U. Aßmann, Softwaretechnologie 5
Object Fattening (Wdh.)
►
Unterobjekt-Anreicherung (Object fattening) ist ein
Verfeinerungsprozess zur Entwurfszeit, der an ein Kernobjekt aus dem Domänenmodell Unterobjekte anlagert (Domänenobjekt- Verfeinerung durch Integration), die
Teile ergänzen (Teile-Verfeinerung)
Rollen ergänzt (Konnektor-Verfeinerung),
Facetten ergänzen
Rollen ergänzen (Konnektor-Verfeinerung), die Beziehungen klären zu
Plattformen (middleware, Sprachen, Komponenten-services)
Komponentenmodellen (durch Adaptergenerierung)
►
Ziel: Entwurfsobjekte, Implementierungsobjekte
Prof. U. Aßmann, Softwaretechnologie 6
Personen-Analysemodell – Wie komme ich bloß dahin?
Child Father
Playable
Player
Eating Eatable
Heart Stomach Person
Person
Ball
Sausage Newspaper
Reading Readable
FatherShip Child
Father Skin
Meat
Skin
Mit Verfeinerung durch Integration von Unterobjekten (Object Fattening)
Person Person
Ball
Newspaper
►
Rohzustand: Identifikation der natürlichen Typen (in dem Domänenmodell)
Sausage
Mit Verfeinerung durch Integration von Unterobjekten (Object Fattening)
Heart Stomach Person
Person
Ball
Sausage Newspaper
►
Schritt 1: Teile-Verfeinerung
MeatSkin
Skin
Prof. U. Aßmann, Softwaretechnologie 9
Mit Verfeinerung durch Integration von Unterobjekten (Object Fattening)
Child Father
Playable
Player
Eating Eatable
Heart Stomach Person
Person
Ball
Sausage Newspaper
Reading Readable
FatherShip Child
Father
►
Schritt 2: Erweiterung durch Konnektoren (Kollaborationen, Teams)
MeatSkin
Skin
Prof. U. Aßmann, Softwaretechnologie 10
Platform Fattening – Weitere Schritte im Entwurf
►
Teile- und Rollenverfeinerung laufen noch im Analysemodell ab.
Ziel in der Analyse: Entwurfsobjekte
Konnektor-Verfeinerung wird durch Szenarienanalyse angeregt
►
Bei Entwurfsobjekten kommen dann noch folgende Schritte hinzu:
Finden von Plattform-Konnektoren (/-team), die plattform-fundierte Unterobjekte anlagern, die das spezifische Verhalten bezüglich eines Plattformobjektes kapseln
Plattformfähigkeiten (platform abilities, platform-founded types) bilden fundierte Typen, die die die Beziehungen zu Plattformen klären
Komponentenadapter (component-model-founded adapters) klären die Beziehung zu Komponentenmodellen
►
Ziel im Entwurf: Implementierungsobjekte ableiten
Rollen ergänzen, die Beziehungen klären zu
Plattformobjekten (middleware, Sprachen, Komponenten-services)
Komponentenmodellen (durch Adaptergenerierung)
Realisierung der Integrationsrelation
►
Einfache Implementierung durch Teams!
Prof. U. Aßmann, Softwaretechnologie 11
Plattformobjekte und -konnektoren
►
Ein Plattformobjekt ist ein Objekt einer Systembibliothek, auf die eine Software angepasst werden muss
Bietet Schnittstelle an bzgl. bestimmter Funktionalität, z.B. abstrakte Maschine (Interpretierer)
Variable: je nach Maschine, Middleware, Betriebssystem, Datenbank, Programmiersprache unterschiedlich ausgeprägt
►
Die Kollaboration mit der Plattform wird durch einen Konnektor zum Plattformobjekt, dem Plattformkonnektor (Plattform-Team), ausgedrückt
►
OSGI: Komponentenplattform www.osgi.org
im Handy, 5er BMW, in Eclipse 3.0, Shell home automation HomeGenie
Ein bundle (Komponente) paketiert verschiedene Klassen
OSGI OSGI platform mapping
starting, stopping
start-stop interface
Analyse-
Objekt
+void install(bundle)+void uninstall(bundle) +void start(bundle) +void stop(bundle) +void update(bundle)
Prof. U. Aßmann, Softwaretechnologie 12
Plattformobjekt OSGI
►
OSGI bietet 5 Schnittstellen (rot)
Klassenlader (für Ersetzung von bundles)
Lebenszyklus (life cycle) von bundles (Paketen von Klassen, mit zip gepackt und verschickt)
Register (service registry): dient zum Registrieren von Bundles und ihren Zuständen
Dienste (services) verschiedener Art
Sicherheitsfunktionalität
►
[OSGI Technical White Paper]
Prof. U. Aßmann, Softwaretechnologie 13
Mit Verfeinerung durch Plattform-Konnektoren (platform fattening)
Eating Eatable
Heart Stomach
Person Person
Ball
Sausage Newspaper
Reading Readable
FatherShip
Child Father
► Plattform-Konnektoren beschreiben die Beziehungen zu Plattformobjekten (gelb; Analyse- Konnektoren: lila)
► Plattformobjekte können als Alternativen existieren (hier OSGI, JDK threads) für die Plattform
“Lebenszyklus”
Meat Skin
Skin
OSGI OSGI platform mapping
starting, stopping
start-stop interface
JDK Threads OSGI platform mapping
starting, stopping
Runnable interface
Player Playing
Playable
Prof. U. Aßmann, Softwaretechnologie 14
Plattform CORBA: CORBA:Object
►
CORBA bildet eine Kompo- nentenplattform für heterogen programmierte Systeme
CORBA:Object get_implementation get_interface is_nil
is_a
is_equivalent create_request duplicate release ....
►
In der Klasse CORBA:Object wird elementare Funktionalität einer CORBA Komponente definiert
heterogen benutzbar über viele Sprachen hinweg
►
CORBA untertützt Reflektion:
get_interface liefert eine Referenz auf ein
“Schnittstellenobjekt”
get_implementation eine Referenz auf eine
“Implementierung”
(Klassenprototyp)
Mit Verfeinerung durch mehrere Plattform- Konnektoren verschiedener Plattformen
Eating Eatable
Heart Stomach
Person Person
Ball
Sausage Newspaper
Reading Readable
FatherShip
Child Father
► Plattform-Verfeinerung kann auf verschiedenen Stufen ablaufen, und somit verschiedene Plattformen behandelt werden
► Plattformkonnektoren werden stufenspezifisch eingesetzt und können gegen Varianten ausgetauscht werden
Meat Skin
Skin
OSGI OSGI platform mapping
starting, stopping
start-stop interface
CORBA CORBA platform mapping
Reflecting Reflection Player Playing
Playable
Plattform 1
Plattform 2
Softwaretechnologie, © Prof. Uwe Aßmann
Technische Universität Dresden, Fakultät Informatik 16
44.2 Abbildung der Integrationsrelation
.. in der Implementierung ..
Prof. U. Aßmann, Softwaretechnologie 17
Wie bilde ich “integrates” ab?
Eating Eatable
Heart Stomach
Person Person
Ball
Sausage Newspaper
Reading Readable
FatherShip
Child Father
► Kollaborationen/Konnektoren und die “integrates”-Relation können verschieden auf eine Programmiersprache abgebildet werden
1) Durch Rollensprachen wie ObjectTeams; dann liegt die Abbildung im Übersetzer
Meat Skin
Skin
OSGI OSGI platform mapping
starting, stopping
start-stop interface
CORBA CORBA platform mapping
Reflecting Reflection Player Playing
Playable
Plattform 1
Plattform 2
Prof. U. Aßmann, Softwaretechnologie 18
b) Wie bilde ich “integrates” durch Delegation ab?
Eating Eatable
Heart Stomach
Person Person
Ball
Sausage Newspaper
Reading Readable
► Ersetze alle “integrates”, “plays”, “mandatory-part”, etc. durch Assoziationen
► Einfach, allerdings splittert man alle logischen komplexen Objekte in unzählige Implementierungsobjekte auf (siehe Vorlesung “Design Patterns and Frameworks”
Meat Skin
Skin
OSGI
CORBA
Plattform 1
Plattform 2
Child Father
Playable Player
starting,
stopping start-stop interface
Reflecting Reflection
Prof. U. Aßmann, Softwaretechnologie 19
c) Wie bilde ich “integrates” durch Vererbung ab?
Eating Eatable
Heart Stomach
Person Person
Ball
Sausage Newspaper
Reading Readable
► Ersetze alle “integrates”, “plays”, “mandatory-part”, etc. durch Vererbung
► Einfach, allerdings braucht man Mehrfachvererbung oder “mixin inheritance”
Meat Skin
Skin
OSGI
CORBA
Plattform 1
Plattform 2
Child Father
Playable Player
starting, stopping
start-stop interface
Reflecting Reflection
Prof. U. Aßmann, Softwaretechnologie 20
d) Wie bilde ich “integrates” durch Implementierungsmuster ab?
Heart Stomach
Person Person
Ball
Sausage Newspaper
FatherShip:Observer
Child Father
Meat Skin
OSGI OSGI mapping:Mediator
starting, stopping
start-stop interface
CORBA CORBA mapping:Mediator
Reflecting Reflection Player Playing:Mediator
Playable
Plattform 1
Plattform 2
Readership:Visitor
Reader Readable
eaters:Observer parts:Composite parts:Composite
► Ersetze alle “integrates”, “plays”, etc. durch Muster wie Observer, Visitor
► Ersetze alle “mandatory-part” durch Muster wie Decorator, Composite
► Weitere Abbildung dann durch Handimplementierung der Muster
Prof. U. Aßmann, Softwaretechnologie 21
d) Wie bilde ich “integrates” durch Transformation ab?
►
Ersetze alle “integrates”, “plays”, etc. durch Transformationsregeln
►
Führt auf Modellgetriebene Architektur (model-driven architecture, MDA)
►
Weiter in der Softwaretechnologie-II
Prof. U. Aßmann, Softwaretechnologie 22
44.3 Gesamtbild der Verfeinerung
Analyse Datengetrieben
Entwurf Verfeinerung Klassendiagramm
Entwurf
Querschneidende Verfeinerung (Object fattening, Plattformkollaboration)