42-refinement

Werbung
Objektorientierter Entwurf
(Object-Oriented Design, OOD)
Objektorientierter Entwurf
1) Einführung in die objektorientierte Softwarearchitektur
OOD.2) Anreicherung des Klassenmodells
2) Verfeinerung des Entwurfsmodells zum Implementierungsmodell
(Anreicherung von Klassendiagrammen)
1) Modularität und Geheimnisprinzip
2) Entwurfsmuster für Modularität
3) BCED-Architekturstil (3-tier architectures)
1) Verfeinerung von Operationen
2) Verfeinerung von Assoziationen
3) Verfeinerung von Vererbung
K
abc
xyz
abra
kadabra
3) Verfeinerung von Lebenszyklen
K
abc: T1
xyz: T2
abra (x:T1) T2
kadabra (y: T2): T1
1) Verfeinerung von verschiedenen Steuerungsmaschinen
4) Verfeinerung mit Chicken Fattening
5) Objektorientierte Rahmenwerke (frameworks)
6) Softwarearchitektur mit dem Quasar-Architekturstil
Version 09-0.2,02.01.09
Softwaretechnologie, © Prof. Uwe Aßmann, Prof. Heinrich Hussmann
1
Softwaretechnologie
Verfeinerung von UML von der Analyse
zum Entwurf zur Implementierung
Was bedeutet Verfeinerung?
►
Verfeinerung vom Analysemodell zum Entwurfsmodell
■
Operationen:
.
.
Analyse-Modell
Entwurfs-Modell
Implementierungsmodell
Notation: aUML
Notation: dUML
Notation: jUML (Java)
Objekte: Fachgegenstände
Objekte: Softwareeinheiten
Klassen: Fachbegriffe
Klassen: Schemata
konforme Vererbung
Vererbung: Begriffsstruktur
Vererbung: Programmableitung
Sichtbarkeiten für Geheimnisse
■
■
Annahme perfekter
Technologie
Erfüllung konkreter
Rahmenbedingungen
Verfeinerung von Assoziationen
zu Collections
Funktionale Essenz
Gesamtstruktur des Systems
Völlig projektspezifisch
Ähnlichkeiten zwischen
verwandten Projekten
Einziehen von Rollen und
Schnittstellen
Grobe Strukturskizze
Genaue Strukturdefinition
Mehr Struktur & mehr Details
Softwaretechnologie
2
.
.
■
►
Strukturierung
Detaillierung
Flachklopfen (lowering)
Integration von Unterobjekten
Kriterium hier: Resultat ist noch in UML darstellbar
Verfeinerung vom Entwurfsmodell zur Implementierung
■
■
Gleiche Operationen, aber Sichtbarkeiten
Umorganisieren von nicht-konformer in konforme Vererbung
Auswahl einer Implementierungssprache
Kriterium hier: Resultat ist nicht mehr in UML darstellbar, sondern in der
Programmiersprache, also hier Java
Mehr Struktur & mehr Details
3
Softwaretechnologie
4
Schritte beim Übergang zum
Entwurfsmodell
►
Strukturierung
■
■
■
►
►
Einziehen von Paketen zur Strukturierung
Einschränkung von Sichtbarkeiten, um Wiederverwendung zu erhöhen
Identifikation von abgeleiteten Modellelementen zur Elimination von
Redundanz (Verschlankung)
Detaillierung
■
■
■
■
■
■
■
►
Schritte beim Übergang zum
Implementierungsmodell (Feinentwurf)
Strukturierung
■
■
►
Detaillierung
■
Einziehen von Navigationsrichtungen, um Platz zu sparen
Einziehen von Qualifikationen, um Suchen zu beschleunigen
Einziehen von abgeleiteten Relationen, um Zugriffe, Navigationen und
Abfragen zu beschleunigen (Verfettung)
Annotation von geordneten und sortierten Assoziationen
Verfeinerung der Typisierung
Verfeinerung der Vererbungsrelation zu konformer Vererbung zur
Elimination von Fehlern
Einziehen von Schnittstellen zur Sicherstellung von homogenem
Verhalten
Verwaltungsklassen
5
Softwaretechnologie
Verfeinerung von Klassendiagrammen
Auflösen von Mehrfachvererbung
Paketierung, damit verbunden das Einziehen von Sichtbarkeiten, um die
Datenkapselung und Austauschbarkeit zu erhöen
■
■
■
■
Einziehen von Navigationsrichtungen, um Platz zu sparen
Einziehen von Qualifikationen, um Suchen zu beschleunigen
Annotation von geordneten und sortierten Assoziationen
Verfeinerung der Typisierung
Verfeinerung der Vererbungsrelation zu konformer Vererbung zur
Elimination von Fehlern
6
Softwaretechnologie
Verfeinerung von Operationen
.. durch Anreicherung von Information..
Softwaretechnologie, © Prof. Uwe Aßmann
7
Softwaretechnologie, © Prof. Uwe Aßmann
8
Parameter und Datentypen für
Operationen
►
►
►
Analysephase:
►
■
oft Operationsname ausreichend
■
ggf. Parameternamen ohne weitere Information
– abstimmen()
■
Parameter und Datentypen der Operationen genau festlegen !
■
Statechart, Aktivitätsdiagramm, oder Kollaborationsdiagramm zuordnen
Implementierung:
+ freienRaumSuchen
(plaetze: int, start: Date, dauer: int=60, raum: Besprechungsraum):
Besprechungsraum
– istFrei(beginn: Date, dauer: int):boolean
+ reservieren (für: Termin):boolean;
}
9
Softwaretechnologie
Beispiel Methodenrumpf (2)
– abstimmen()
*
2..*
*
Teammitglied
+terminBestaetigen()
private Teammitglied[] teilnahme; ...
Beispiele (Klasse Besprechungsraum):
teilnahme
teilnahme
class Teambesprechung {
Methodenrumpf schreiben
Teambesprechung
Operationen aus dem Analysemodell müssen in der Implementierung
ausgefüllt werden
Teambesprechung
Entwurfsphase:
■
►
Beispiel OOP: Ausfüllen eines
Methodenrumpfs in Java (1)
2..*
private boolean abstimmen (Hour beginn, int dauer) {
boolean ok = true;
for (int i=0; i<teilnahme.length; i++)
ok = ok &&
teilnahme[i].terminBestaetigen(beginn, dauer);
return ok;
}
10
Softwaretechnologie
Beispiel Methodenrumpf (3)
Teammitglied
Teambesprechung
+terminBestaetigen()
– abstimmen()
teilnahme
*
2..*
Teammitglied
+terminBestaetigen()
class Teammitglied { ...
class Teambesprechung {
private Teambesprechung[] teilnahme;
private Teammitglied[] teilnahme; ...
private boolean abstimmen (Hour beginn, int dauer) ...
public boolean terminBestaetigen (Hour beginn,int dauer){
boolean konflikt = false;
int i = 0;
while (i < teilnahme.length && !konflikt) {
if (teilnahme[i].inKonflikt(beginn, dauer))
konflikt = true;
else
i++;
};
return !konflikt;
} ...
public Teambesprechung
(String titel, Hour beginn, int dauer,
Teammitglied[] teilnehmer) {
... titel, beginn, dauer lokal speichern
this.teilnahme = teilnehmer;
if (! abstimmen(beginn, dauer))
System.out.println("Termin bitte verschieben!");
else ...
} ...
}
}
Softwaretechnologie
11
Softwaretechnologie
12
Qualifizierte Assoziation
Verfeinerung von Assoziationen
►
Definition: Eine Qualifikation (Qualifier) ist ein Attribut für eine
Assoziation zwischen Klassen K1 und K2, durch das die Menge der zu
einem K1-Objekt assoziierten K2-Objekte partitioniert wird.
Zweck der Qualifikation ist direkter Zugriff unter Vermeidung von Suche
(Beschleunigung)
Notation:
K1
0..1
a
K2
statt:
0..*
K1
K2
Hinweis: Qualifizierte Assoziationen werden von vielen UML-Werkzeugen nicht
oder nur schlecht unterstützt.
Bedeutung vor allem im Zusammenhang mit Datenbanken (Indizes),
aber auch mit geeigneten Datenstrukturen nach Java abbildbar.
Softwaretechnologie, © Prof. Uwe Aßmann
13
Qualifizierte Assoziation: Beispiel (1)
Qualifizierte Assoziation: Beispiel (2)
Termin
Termin
titel
beginn
dauer
verschieben() {abstract}
titel
beginn
dauer
verschieben() {abstract}
{abstract}
{abstract}
Teambesprechung
themen
raumFestlegen()
einladen()
absagen()
verschieben()
14
Softwaretechnologie
0..*
Besprechungsraum
raumNr
kapazität
0..1
reservieren()
Veranstalfreigeben()
tungsort
freienRaumSuchen()
istFrei()
Indizierter Zugriff
(Qualifikation)
kleinere
Multiplizität
Teambesprechung
themen
raumFestlegen()
einladen()
absagen()
verschieben()
0..1
0..1 beginn
Veranstaltungsort
Besprechungsraum
raumNr
kapazität
reservieren()
freigeben()
freienRaumSuchen()
istFrei()
wie bisher
Raum12.istFrei(start=04.05.02 10:00, dauer=60);
kann direkt nach Datum abfragen, ob eine Assoziation besteht
Raum12.istFrei(start=04.05.02 10:00, dauer=60);
führt zu einer Suche über alle assoziierten Teambesprechungen !
Softwaretechnologie
15
Softwaretechnologie
16
Realisierung einer qualifizierten
Assoziation
Geordnete und sortierte Assoziation
Teammitglied
beginn
04.05.02 09:00
10.05.02 10:00
10.05.02 11:00
10.05.02 12:00
11.05.02 09:00
12.05.02 15:00
12.05.02 17:00
►
r12: Besprechungsraum
raumNr = "r12"
kapazität = 20
►
TeambesprechungsObjekte
►
• Hashfunktion
(Berechnung des Indexwerts aus
gegebenem Datum)
■
Es besteht eine feste Reihenfolge, in der die assoziierten Objekte
durchlaufen werden können (Sequenz).
■
Mehrfachvorkommen eines Objekts sind verboten
Keine Angabe an einem Assoziationsende:
Die assoziierten Objekte sind als Menge strukturiert.
Spezieller Einschränkungen als Annotationen möglich,
z.B. die Forderung nach Sortierung gemäß bestimmter Attribute:
0..*
Teambesprechung
Besprechungen
Teilnehmer
{sorted}
{sorted}
{key=beginn}
{key=name}
{order=ascending} {order = ascending}
Teammitglied
• Sortierte Baumstruktur
17
Softwaretechnologie
Verwaltungsklassen
(Materialbehälterklassen)
►
Termin
Raumverwaltung
titel
beginn
dauer
verschieben() {abstract}
– einzigeInstanz
{abstract}
themen
raumFestlegen()
einladen()
absagen()
verschieben()
freienRaumSuchen()
►
Definition Ein abgeleitetes Modellelement (z.B. Attribut,
Assoziation) ist ein Modell-Element, das jederzeit aus anderen
(nicht abgeleiteten) Elementen rekonstruiert werden kann.
►
Notation
/ Modellelement
Modellelement {derived}
►
*
*
Leitung
1
/ teilnehmeranzahl
/ leiter
* Teilnahme
1
...
Bestand
{sorted} {key= kapazität}
Besprechungsraum
raumNr
beginn
kapazität
Veranstaltungsort
reservieren()
freigeben()
istFrei()
oder
Beispiele:
Teambesprechung
0..1
freienRaumSuchen()
Softwaretechnologie
18
Softwaretechnologie
1
0..1
0..*
Identifikation von abgeleiteten
(redundanten) Elemente
Hat man eine Menge von Objekten, die verwaltet werden müssen,
kann eine Verwaltungs- oder Materialbehälterklasse identifiziert
werden
Teambesprechung
Teilnahme 0..* Teambesprechung
{ordered}
{ordered} an einem Assoziationsende:
■
Direktzugriff z.B. durch:
0..*
*
Teammitglied
name
2..*
<<derive>>
/ istInKonfl ikt
►
19
Abhängigkeitspfeil mit <<derive>>: Optionale Angabe des
Ursprungselements einer Abhängigkeit anzugeben.
Softwaretechnologie
20
Detailinformation zu abgeleiteten
Elementen
►
Zweck: Durch Ableitung kann Redundanz ausdem Model eliminiert
werden, und das führt zu einer besseren Konsistenz
►
Man kann die Ableitungsregel für abgeleitete Elemente explizit
angeben.
Verfeinerung von Vererbung
(Notation: Object Constraint Language OCL von UML)
Teambesprechung * Leitung
1
/ teilnehmeranzahl
/leiter
* Teilnahme
...
Teammitglied
name
2..*
{leiter = Leitung.name}
{teilnehmeranzahl = Teilnahme->size}
Softwaretechnologie
21
Elimination von nicht-konformer Vererbung
►
►
In Analysemodellen hat die Vererbungsrelation oft mehrere
Bedeutungen
Während das Analysemodell diese Feinheiten nicht unterscheiden
muss, sollte das Entwurfsmodell dies tun
■
Ansonsten kann es zu Laufzeitfehlern kommen
Softwaretechnologie, © Prof. Uwe Aßmann
Wiederh.: Ähnlichkeitsrelationen (Similarity
Relationships)
►
is-a: zeigt Ähnlichkeit an
■
►
►
■
■
■
►
23
is-a ist azyklische Relation, bei einfacher Vererbung baumförmig
is-structured-like: zeigt ähnliche Struktur an (structurelle Ähnlichkeit
oder Gleichheit)
behaves-like: Verhaltensähnlichkeit
■
Softwaretechnologie
22
always-behaves-like: Konformanz (conformance), Ersetzbarkeit
(substitutability)
sometimes-behaves-like: gelegentlich verhaltensgleich
restrictedly-behaves-like: im allgemeinen konformant, aber nicht in
speziellen Situationen (extravagance, restriction inheritance)
Achtung: is-a, is-structured-like, behaves-like werden alle Vererbung
genannt
instance-of: A ist aus einer Schablone B gemacht worden
Softwaretechnologie
24
Konforme Vererbung (Konformität, behaveslike)
Extravaganz (restrictedly-behaves-like)
►
Liskov'sches Substitutionsprinzip (Liskov substitution principle):
Eine Unterklasse U heisst verhaltenskonform wenn jedes Objekt aus
U jedes Objekt aus O ersetzen kann, ohne eine Anwendungsklasse,
die O verwendet, in einen fehlerhaften Zustand zu versetzen
►
Konforme Vererbung stellt sicher,
■
■
dass Ableiten von Unterklassen niemals Fehler in eine Anwendung
einbringt (Robustheit)
dass bei der Unterklassenbildung die Semantik von Oberklassen erhalten
bleibt
►
Eine Unterklasse U heisst extravagant (eingeschränkt) zu einer
Oberklasse O, wenn nicht alle Objekte aus U alle Objekte aus O
ersetzen können, ohne dass in einer Anwendung, die O verwendet,
Fehler auftreten
Aka: Eingeschränkte Vererbung (restriction inheritance)
Frage: Was passiert, wenn ein
emeritierter Professor keine Vorlesungen
mehr anbietet?
Professor
giveLecture()
Antwort: Eine Anwendung der Klasse Professor,
die dies erwartet, endet in einem fehlerhaften
Zustand.
Erklärung: ProfessorEmeritus ist eine extravagante
Unterklasse von Professor
Softwaretechnologie
25
Beispiel: Bibliotheken, Frameworks und
Anwendungen
Leider sind nicht alle Vererbungshierarchien konform, insbesondere
nicht in Analysemodellen
■
■
■
26
Softwaretechnologie
Konformitätsproblem in Analysemodellen
►
Professor
Emeritus
Sowohl in UML als auch in Java drückt die Vererbungsrelation nicht
unbedingt Konformität aus
Man muss jede einzelne Vererbung daraufhin untersuchen :-(
Und im Entwurfsmodell Konformität herstellen
PersonManagement
►
►
►
Bibliotheken, Frameworks
sind vorgefertigte Pakete
mit Vererbungshierarchien
von einem anderen
Hersteller
Anwendungen leiten
speziellere Unterklassen
davon ab
Beispiele:
■
■
Java Development Kit
C++ Standard Template
Library (STL)
StudentManagement
Person
Alumnus
eat()
work()
sleep()
getName()
visitUniversity()
drinkBeer()
Employee
Student
salary
visitLecture()
drinkBeer()
ProfManagement
Professor
Beginner
visitNullCourse()
giveLecture()
Softwaretechnologie
27
Softwaretechnologie
28
Beispiel: Konforme Vererbung von
Bibliotheks- und Frameworkklassen
►
►
Zusammenfassung:
UML-Klassenmodelle in Analyse und Entwurf
Verwendet man beim Entwurf eine zugekaufte Klassenbibliothek,
stelle man sicher, dass man Anwendungsklassen nur mit konformer
Vererbung ableitet
Ansonsten treten Laufzeitfehler in Klassen der Klassenbibliothek auf
■
Deren Fehlermeldungen sind völlig unverständlich, da sie nicht die
eigentlichen Fehlerursache vermitteln können
Analyse-Modell
Skizze: Teilweise unvollständig
in Attributen und Operationen
Datentypen und Parameter
können noch fehlen
Noch kaum Bezug zur
Realisierungssprache
Keine Überlegungen zur
Realisierung von Assoziationen
Softwaretechnologie
29
The End
►
Diese Folien sind eine überarbeitete Version der Vorlesungsfolien zur
Vorlesung Softwaretechnologie von © Prof. H. Hussmann, 2002.
used by permission.
Softwaretechnologie
31
Softwaretechnologie
Entwurfs-Modell
Vollständige Angabe aller
Attribute und Operationen
Vollständige Angabe von
Datentypen und Parametern
Auf Umsetzung in gewählter
Programmiersprache bezogen
Navigationsangaben, Qualifi kation,
Ordnung, Verwaltungsklassen
Entscheidung über Datenstrukturen
Vorbereitung zur Anbindung von
Benutzungsoberfl äche und
Datenhaltung an fachlichen Kern
30
Herunterladen