VI-Objektorientierte-Analyse-mit-UML-Teil-2 - Gruppe ...
VI-Objektorientierte-Analyse-mit-UML-Teil-2 - Gruppe ...
VI-Objektorientierte-Analyse-mit-UML-Teil-2 - Gruppe ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Vorlesung Software Engineering<br />
<strong>VI</strong>. <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong><br />
<strong>UML</strong> – <strong>Teil</strong> 2<br />
Email<br />
Prof. Dr. Jens Grabowski<br />
Tel. 39 14 690<br />
grabowski@cs.uni-goettingen.de<br />
Inhalt<br />
• Produktdatenmodellierung <strong>mit</strong> <strong>UML</strong><br />
Class und Object Diagrammen<br />
• Ablaufmodellierung <strong>mit</strong> <strong>UML</strong> Activity<br />
Charts<br />
• Aufbau und Funktion des<br />
Pflichtenheftes<br />
SoftwEng (SS 05)<br />
<strong>VI</strong>(2)-1<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-2<br />
Produktdatenmodellierung<br />
Tätigkeiten und Produkte in der<br />
Anforderungsanalyse (revisited)<br />
• Aufgabe:<br />
• Ausgehend von den Produktdaten im Lastenheft oder einer Fließtextbeschreibung<br />
des Softwareprodukts und den Anwendungsfällen wird ein konzeptuelles<br />
Datenmodell (Domänenmodell) des Anwendungsbereiches erstellt. Es handelt sich<br />
dabei nicht um das interne Datenmodell des später realisierten Softwareproduktes!<br />
Analytiker<br />
Programmierer<br />
• Vorgehensweise:<br />
• Bestimmung von Objekt- bzw. Klassenkandidaten <strong>mit</strong> verschiedenen Methoden<br />
(Unterstreichungen im Text, CRC-Karten, Akteure, Glossar).<br />
• Bestimmung wichtiger Assoziationen (Beziehungen) und Attribute zuden<br />
identifizierten Klassen.<br />
• Ggf. können zunächst konkrete Objektdiagramme und danach abstrakte<br />
Klassendiagramme erstellt werden.<br />
• Meist werden noch keine Operationen bei Klassen festgelegt.<br />
• Alle gefundenen Klassen (& Beziehungen) sollten auch im Glossar des<br />
Pflichtenheftes aufgeführt werden!<br />
Grundlagen<br />
beschreiben<br />
Systembeschreibung<br />
u.<br />
Begriffsverzeichnis<br />
Akteure Anforderungen Anforderungen<br />
beschreiben finden beschreiben<br />
Aktorliste Anwendungsfall Anwendungsfall<br />
Diagramm Beschreibung<br />
Domäne<br />
modellieren<br />
Domänen<br />
Modell<br />
<strong>Analyse</strong>prototyp<br />
entwickeln<br />
<strong>Analyse</strong><br />
Prototyp<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-3<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-4<br />
Von der realen Welt zum<br />
Klassendiagramm 1(5)<br />
Einschub:<br />
Einfaches <strong>UML</strong>-Klassendiagramm<br />
• Ursprung: Entity-Relationship-Modell<br />
• <strong>UML</strong>-Klassendiagramme legen die Objekt- und Beziehungsarten (Assoziationen)<br />
des Anwendungsbereichs <strong>mit</strong> ihren wichtigsten Attributen fest.<br />
• Klassen werden in dieser Phase (meist) ohne Operationen definiert<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-5<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-6<br />
1
Einschub:<br />
Einfaches <strong>UML</strong>-<br />
Objektdiagramm<br />
• Objektdiagramme dienen zur Modellierung von konkreten Szenarien<br />
<strong>mit</strong> Klasseninstanzen = Objekten und Assoziationsinstanzen = Links.<br />
• Objektdiagramme sind das Gegenstück der Datenmodellierung zu den<br />
funktionalen Anwendungsfällen.<br />
• Objektdiagramme sind manchmal hilfreich für den Übergang von der<br />
realen Welt zu den abstrakten Klassendiagrammen.<br />
Von der realen Welt zum<br />
Klassendiagramm 2(5)<br />
• Kandidaten für Objekte und Klassen:<br />
• alle phyischen, berührbaren Gegenstände (wie Vehicle)<br />
• Personenrollen (wie Clerk, Client)<br />
• Institutionen (wie Company)<br />
• abstrakte Begriffe (wie Address)<br />
• durchzuführende Transaktionen (wie Renting, Payment)<br />
• eintretende Ereignisse (wie Accident)<br />
• …<br />
• Man beachte:<br />
• Nicht nur passive Datenbestände werden als Objekte<br />
modelliert! Auch Operationen, Transaktionen, Ereignisse,<br />
Prozesse, … können sinnvolle Objektkandidaten sein.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-7<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-8<br />
Von der realen Welt zum<br />
Klassendiagramm 3(5)<br />
• Zwei Möglichkeiten:<br />
• Identifikation von Klassenkandidaten im Fliesstext:<br />
• Alle Substantive in einer Softwareproduktbeschreibung<br />
markieren.<br />
• Synonyme identifizieren.<br />
• Irrelevante Klassenkandidaten streichen.<br />
• CRC-Kartenmethode<br />
• Nach: K. Beck, W. Cunningham: A Laboratory For Teaching Object-Oriented<br />
Thinking, in: Proc. OOPSLA’89, SIGPLAN Notices, Vol. 24, No. 10, ACM Press<br />
(1989).<br />
Von der realen Welt zum<br />
Klassendiagramm 4(5)<br />
• Motor Vehicle Reservation System (MVRS)<br />
A rental office lends motor vehicles of different types. The assortment<br />
comprises cars, vans, and trucks. Vans are small trucks, which may be<br />
used with the same driving license as cars. Some client may reserve<br />
motor vehicles of a certain category for a certain period. He or she has<br />
to sign a reservation contract. The rental office guarantees that a<br />
motor vehicle of the desired category will be available for the<br />
requested period. The client may cancel the reservation at any time.<br />
When the client fetches the motor vehicle he or she has to sign a rental<br />
contract and optionally an associated insurance contract. Within the<br />
reserved period, at latest at its end, the client returns the motor vehicle<br />
and pays the bill.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-9<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-10<br />
Von der realen Welt zum<br />
Klassendiagramm 5(5)<br />
• Synonyme<br />
• Types, Assortment, Category<br />
• Irrelevante Substantive (werden keine Objekte)<br />
• Driving Licence<br />
• Category, Assortment, Types<br />
• Period<br />
• …<br />
Die CRC-Kartenmethode<br />
• Problem:<br />
• Auftraggeber (Domain Experts) haben das Wissen über den<br />
Anwendungsbereich, kennen aber nicht Konzepte und Sprachen<br />
der Softwaretechnik.<br />
• Auftragnehmer (Software Experts) sind zwar in der Erstellung von<br />
Modellen geschult, ihnen fehlt aber das Wissen über die<br />
Anwendung.<br />
• Lösung:<br />
• <strong>Gruppe</strong>nsitzung (Workshop) <strong>mit</strong> etwa 5 <strong>Teil</strong>nehmern (sowohl<br />
„Domain Experts” als auch „Software Experts”).<br />
• Beim Durchspielen konkreter Anwendungsfälle werden Klassen <strong>mit</strong><br />
ihren typischen Aufgaben identifiziert.<br />
• Für jede identifizierte Klasse wird eine „echte” Karteikarte angelegt,<br />
die eine bestimmte Person verwaltet (und ihre Rolle spielt).<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-11<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-12<br />
2
Aufbau einer CRC-Karte<br />
• CRC-Karte = Class-Responsibility-Collaboration-Card<br />
• Class Name: ein prägnanter Name für die Klasse<br />
• Responsibilities: die Aufgaben der Klasse, die beim Durchspielen von<br />
Anwendungsfällen identifiziert wurden<br />
• Collaboration: eine Liste anderer Klassen, die für die Erfüllung der Aufgaben<br />
der betrachteten Klassen gebraucht werden<br />
• Achtung:<br />
• In diesem Stadium keine Attribute, sondern Verantwortlichkeiten von Klassen<br />
suchen! Die Bestimmung von Assoziationen, Attributen und Operationen folgt später.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-13<br />
UseCaseals Ausgangspunkt für<br />
CRC-Kartentechnik<br />
Use Case: MakeReservation<br />
Actors: Clerk<br />
Purpose: Fahrzeug der Kategorie C wird für Zeitraum T reserviert.<br />
Entry Cond: Reservierungsfunktion wird aktiviert (geht immer)<br />
Overview: Aufgrund des Telefonanrufes, der schriftlichen Bestellung oder des persönlichen<br />
Erscheinens eines Kunden K (Client) gibt Clerk eine Reservierung <strong>mit</strong> Fahrzeugkategorie<br />
C und Zeitraum T ein. Diese Reservierung wird - soweit möglich - berücksichtigt und es<br />
wird eine Bestätigung dem Kunden zugeschickt.<br />
Exit Cond: gewählte Reservierung in DB oder unveränderte DB<br />
Includes: SendMail (für das Verschicken einer Reservierungsbestätigung)<br />
Special Req: Die Suche nach verfügbaren Fahrzeugen dauert nicht länger als 30 Sekunden.<br />
Category: Sehr hohe Priorität<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-14<br />
CRC-Beispiel: (Reservation)<br />
Contract<br />
Identifikation von Assoziationen<br />
• Assoziationen sind (in aller Regel zweistellige) Relationen<br />
zwischen Klassen. Ihre Instanzen sind Links, die Instanzen der<br />
vorgegebenen Klassen verbinden.<br />
• In erster Linie sind solche Assoziationen aufzuführen, die nicht<br />
nur temporär während der Abarbeitung einer Operation<br />
(Systemfunktion) existieren.<br />
• Kandidaten für Assoziationen:<br />
• A ist ein logischer/physikalischer <strong>Teil</strong> von B (Client - Company)<br />
• A überwacht/besitzt B (RentalOffice - MotorVehicle)<br />
• A benutzt B (Client - MotorVehicle)<br />
• A verweist auf B (InsuranceContract - RentalContract)<br />
• A kommuniziert <strong>mit</strong> B (Client - Clerk)<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-15<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-16<br />
Identifikation von Attributen<br />
• Attribute „speichern“ pri<strong>mit</strong>ive Eigenschaften von<br />
Objekten<br />
• Attributwerte sind Elemente von Attributdatentypen<br />
• Sinnvolle Attributdatentypen sind:<br />
• pri<strong>mit</strong>ive Datentypen wie Integer und String.<br />
• Aufzählungstypen wie Color (Black, White, … ).<br />
• einfache zusammengesetzte Typen wie Address und Date.<br />
• Attribute sind bei der Modellierung nie Zeiger auf andere<br />
„wichtige“ Objekte (dafür gibt es Assoziationen).<br />
Beispiel für Attribute und<br />
Attributtypen<br />
• Vor dem Doppelpunkt steht der Attributname.<br />
• Hinter dem Doppelpunkt der optionale Attributtyp.<br />
• Nach dem Gleichheitszeichen steht ein optionaler Initialwert.<br />
• Achtung:<br />
• Das Beispiel enthält (mindestens) einen Modellierungsfehler.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-17<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-18<br />
3
Klassendiagramm 1(2)<br />
Klassendiagramm 2(2)<br />
• Während früher <strong>Analyse</strong>phasen lässt man gerne die Typen von Attributen weg.<br />
• Über Sichtbarkeiten (in Java: private, protected, … ) soll man sich zu diesem<br />
Zeitpunkt noch keine Gedanken machen.<br />
• Achtung: reservedVehicle ist kein Attribut von Contract!<br />
• System- oder Subsystemgrenze kann durch Schachtelung definiert werden.<br />
• Anzahl erlaubter Objektinstanzen einer Klasse können definiert werden.<br />
• Akteure der realen Welt können ggf. <strong>mit</strong>modelliert werden.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-19<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-20<br />
Inhalt<br />
• Produktdatenmodellierung <strong>mit</strong> <strong>UML</strong> Class und<br />
Object Diagrammen<br />
• Ablaufmodellierung <strong>mit</strong> <strong>UML</strong><br />
Activity Charts<br />
• Aufbau und Funktion des Pflichtenheftes<br />
Ablaufmodellierung <strong>mit</strong><br />
Aktivitätsdiagrammen<br />
• Die Beschreibung von Systemfunktionen beschränkte sich<br />
bislang auf die exemplarische Modellierung einzelner<br />
Geschäftsvorfälle bzw. Szenarien als Anwendungsfälle. Jetzt<br />
werden Aktivitätsdiagramme zur Ablaufmodellierung eingesetzt.<br />
• Mit Aktivitätsdiagrammen (Activity Charts) wird<br />
• der zeitliche Zusammenhang einzelner Geschäftsvorfälle in<br />
Form von Geschäftsprozessen modelliert.<br />
• werden alle Alternativen einer Systemfunktion gleichzeitig<br />
erfasst.<br />
• erstes Augenmerk auf parallel durchführbare Aktionen gerichtet.<br />
• erster Zusammenhang zwischen Objekten und Aktionen<br />
geschaffen.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-21<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-22<br />
Erinnerung:<br />
Anwendungsfall-Diagramme<br />
Vorbemerkungen zu den<br />
Aktivitätsdiagrammen<br />
Owner erbt die<br />
Zugriffsrechte<br />
von Clerk<br />
Clerk<br />
Owner<br />
MVRS_System<br />
MakeReservation<br />
CancelReservation<br />
FetchVehicle<br />
ReturnVehicle<br />
AddVehicle<br />
DeleteVehicle<br />
Fahrzeug wird für einen<br />
bestimmten Zeitraum<br />
reserviert.<br />
Reservierung wird gelöscht.<br />
Fahrzeug wird abgeholt.<br />
Fahrzeug wird<br />
rechtzeitig zurück gebracht.<br />
Neues Fahrzeug wird in den<br />
Fuhrpark aufgenommen.<br />
Fahrzeug wird<br />
ausgemustert.<br />
• Aktivitätsdiagramme sind<br />
• die jüngste Diagrammart der <strong>UML</strong>-Familie<br />
• ein Hybrid aus<br />
• den „alten“ Datenflussdiagrammen<br />
• den bekannten Kontrollflussdiagrammen<br />
• den Zustandsdiagrammen bzw. Automaten<br />
• besitzen noch kein fest etabliertes Einsatzgebiet, sie werden<br />
• sowohl als visuelle Programmiersprache für die Implementierung<br />
einzelner Operationen von Klassen<br />
• als auch zur Modellierung von Geschäftsprozessen eingesetzt<br />
(Zusammenhang von Anwendungsfällen und Detaillierung)<br />
• Bei Aktivitätsdiagrammen handelt sich also um eine prinzipiell<br />
ausführbare Diagrammart.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-23<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-24<br />
4
Modifizierte „Idee“ für die<br />
ReservationContract-Klasse<br />
• Instanz wird erst erzeugt, wenn alle notwendigen Daten er<strong>mit</strong>telt wurden.<br />
Aktivitätsdiagramm für einfachen<br />
Anwendungsfall<br />
• Das Aktivitätsdiagramm für die Erzeugung einer Reservierung besitzt nur einen<br />
möglichen Ablauf und benutzt nur einfache Kontrollflussdiagrammelemente<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-25<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-26<br />
Ergänzung alternativer<br />
Kontrollflüsse (Ausnahmen)<br />
Kommentare zum vorigen<br />
Aktivitätsdiagramm<br />
• Die Erzeugung (CreateReservation) einer Reservierung erfolgt erst, nachdem<br />
alle Daten eingetragen wurden (man könnte auch zuerst die „leere“<br />
Reservierung anlegen und diese nach und nach <strong>mit</strong> Daten füllen).<br />
• Die Erhebung der Reservierungsdaten erfolgt in einer willkürlichen Reihenfolge<br />
• Die Behandlung von Sonderfällen wird in Form von Fallunterscheidungen in den<br />
normalen Ablauf eingebaut.<br />
• Die Beschreibung einzelner Anwendungsfällen <strong>mit</strong> Aktivitätsdiagrammen hat den<br />
Vorteil, dass diese von Werkzeugen ausgeführt werden.<br />
• Hauptsächlich sollte man aber Aktivitätsdiagramme für die Beschreibung des<br />
Zusammenspiels (der zeitlichen Abfolge) einzelner Anwendungsfälle benutzen.<br />
• Die Aktionen (Prozeduren) in den einzelnen Aktivitätsknoten sind noch keinen<br />
Klassen zugeordnet (diese fehlen zum großen <strong>Teil</strong> noch).<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-27<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-28<br />
Modellierung nebenläufiger<br />
Aktivitäten<br />
Auszeichnung von manipulierten<br />
Objekten<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-29<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-30<br />
5
Aktivitätsdiagramm zur Beschreibung<br />
des Gesamtprozesses<br />
Asynchrone Signale statt<br />
synchrone Methodenaufrufe<br />
• Es werden nicht Abläufe einzelner Systemfunktionen beschrieben, sondern es wird<br />
skizziert, wie alle Funktionen des Systems zusammenspielen.<br />
• Übergänge (Transitionen) zwischen Aktivitäten (Zuständen) werden zum großen <strong>Teil</strong><br />
durch externe Ereignisse ausgelöst.<br />
a) „normale“ Anweisungen lesen und erzeugen Signale<br />
b) Symbole aus Konkurrenzmodellierungssprache SDL (Standard der<br />
Telekommunikationsindustrie) werden verwendet<br />
c) Aufschriften auf getrennten Kontrollflusspfeilen (Transitionen)<br />
d) eine Transitionsanschrift: warten, rechnen und Signal senden<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-31<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-32<br />
Aktivitätsdiagramme <strong>mit</strong><br />
„Swimlanes“<br />
Aktivitätsdiagramme =<br />
Kontrollflussdiagramme + Zustandsdiagramme<br />
• Bei „klassischen“ Kontrollflussdiagrammen:<br />
wenn System (Objekt) Aktion1 ausgeführt hat und Bedingung erfüllt ist, dann<br />
wird danach Aktion2 ausgeführt.<br />
• Bei „klassischen“ Zustandsdiagrammen:<br />
• Swimlanes (Kästen) gruppieren Aktivitäten in Zuständigkeitsbereiche (die z.B.<br />
den identifizierten Akteuren entsprechen).<br />
• Swimlanes können auch zur Darstellung von <strong>Teil</strong>systemgrenzen verwendet<br />
werden, also zur Zuordnung von Aktivitäten zu bereits bekannten <strong>Teil</strong>systemen.<br />
wenn Objekt (System) sich im Zustand1 befindet und angegebenes Ereignis<br />
(Signal) eintritt, dann geht Objekt (System) in den Zustand2 über und führt<br />
dabei Aktion aus und verschickt Signal<br />
• Bei den <strong>UML</strong>-Aktivitätsdiagrammen:<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-33<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-34<br />
Aktivitätsdiagramme =<br />
Kontrollflußdiagramme + Datenflußdiagramme<br />
• Beschreibung von Datenfluss durch Parameter (wie bei “klassischen”<br />
Kontrollflussdiagramm):<br />
Weitere Elemente von<br />
Aktivitätsdiagrammen<br />
• Mehrfachreferenzen auf dasselbe Objekt:<br />
Aktion1 und Aktion2 verwenden denselben Parameter x. Aktion1 kann z.B.<br />
Objekt x erzeugen, das von Aktion2 verändert wird.<br />
• Beschreibung von Datenfluss durch Objektangabe (wie <strong>mit</strong> Datenspeichern bei<br />
Datenflussdiagrammen):<br />
• Fallunterscheidungen (<strong>mit</strong> und ohne else-Zweig):<br />
Der Datenfluss wird explizit modelliert, der Kontrollfluss von Aktion1 nach<br />
Aktion2 impliziert. Aktion1 “erzeugt” Objekt der gegebenen Klasse (die Angabe<br />
eines Zustandes Zustand1 ist optional)<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-35<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-36<br />
6
Zusammenfassung<br />
Aktivitätsdiagramme<br />
• Transitionen von einer Aktion zur nächsten erfolgen entweder automatisch<br />
(nach Ende der Startaktion) oder durch Ereignis “getriggert”.<br />
• Transitionen können durch boolesche Bedingungen überwacht werden und<br />
schalten sobald Bedingung erfüllt ist.<br />
• Transitionen dürfen (vermutlich) eine eigene Aktionen auslösen, dieses<br />
Modellierungs<strong>mit</strong>tel wird aber kaum benutzt (hier ist <strong>UML</strong> etwas unklar).<br />
• Es gibt atomare Aktivitäten, die ohne Unterbrechung ausgeführt werden (und<br />
ggf. in „normaler” Programmiersprache definiert werden).<br />
• Es gibt komplexe Aktionen (action states), die durch eigenes<br />
Aktivitätsdiagramm definiert werden und deren Ausführung unterbrechbar ist.<br />
• Bezüglich Nutzen und Einsatzbereiche von Aktivitätsdiagrammen gibt es noch<br />
(immer) keine einhellige Meinung.<br />
Rückblick: Beschreibung des<br />
Gesamtprozesses 1(3)<br />
• Für das Reservierungsbeispiel wurde ein Überblick über das<br />
Gesamtsystem in Form eines Aktivitätsdiagramms gegegeben.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-37<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-38<br />
Rückblick: Beschreibung des<br />
Gesamtprozesses 2(3)<br />
Rückblick: Beschreibung des<br />
Gesamtprozesses 3(3)<br />
• Andere Autoren benutzen<br />
andere Diagrammarten um<br />
einen Überblick über das<br />
gesamte System zu<br />
gewinnen. Z.B.<br />
Klassendiagramme <strong>mit</strong><br />
bestimmen Stereotypen.<br />
(Beispiel aus Zuser, Biffl, Grechenig, Köhle)<br />
• Achtung in diesem<br />
<strong>Analyse</strong>modell wird eine<br />
Systemsicht eingenommen.<br />
Liftknöpfe<br />
Knöpfe im<br />
Stockwerk<br />
Gegensprechanlage<br />
Überwachungsmonitor<br />
Überwachung<br />
Liftinformation<br />
Sensoren<br />
Liftsteuerung<br />
Stockwerk<br />
• Erklärung der Symbole auf der vorigen Folie:<br />
Schnittstelle<br />
• Modelliert die Interaktion zwischen dem System und einem<br />
Aktor (Benutzer oder anderes System).<br />
Controller<br />
• Beinhalten die gesamte dynamische Logik des Systems.<br />
Controller realisieren die notwendige Funktionalität um die<br />
Anwendungsfälle umzusetzen.<br />
Entität<br />
• Speichern alle persistenten Daten, <strong>mit</strong> welchen das System<br />
arbeiten muss. Beinhalten auch jegliches Verhalten zur<br />
Manipulation der verwalteten Daten.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-39<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-40<br />
Inhalt<br />
• Produktdatenmodellierung <strong>mit</strong> <strong>UML</strong> Class und<br />
Object Diagrammen<br />
• Ablaufmodellierung <strong>mit</strong> <strong>UML</strong> Activity Charts<br />
• Aufbau und Funktion des<br />
Pflichtenheftes<br />
Pflichtenheft 1(2)<br />
• Rückblick Definition Lastenheft<br />
(aus: www.net-lexikon.de/Lastenheft.html):<br />
• Ein Lastenheft (auch: Grobkonzept) beschreibt die<br />
un<strong>mit</strong>telbaren Benutzeranforderungen, -erwartungen und -<br />
wünsche an ein geplantes Softwareprogramm in natürlicher<br />
Sprache.<br />
• Im Gegensatz zum Pflichtenheft muss es weder präzise noch<br />
vollständig detailliert sein. Es enthält aber alle wesentlichen<br />
Basisanforderungen. Das Pflichtenheft lässt sich auch als<br />
Präzisierung des Lastenhefts verstehen.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-41<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-42<br />
7
Pflichtenheft 2(2)<br />
• Definition Pflichtenheft (aus: www.net-lexikon.de/Pflichtenheft.html):<br />
• Ein Pflichtenheft ist als <strong>Teil</strong> der Qualitätssicherung ein bei<br />
Entwicklungsprojekten von Software, Hardware oder anderer IT-Projekte<br />
erstelltes Dokument, in dem minutiös festgehalten wird, welche<br />
Eigenschaften das zu entwickelnde Produkt aufweisen soll, wie es zu<br />
bedienen ist und was es leisten können muss.<br />
• Auch wenn es keine juristisch verbindliche Definition dieses Begriffes gibt,<br />
ist es üblich, ein Pflichtenheft als Vertragsgrundlage zu erstellen, wenn<br />
Software- oder andere Projekte vereinbart werden. Auf ihm basiert die<br />
nachfolgende Entwicklungsarbeit und das Design des Produkts. Manchmal<br />
unterscheidet man auch zwischen einem Pflichtenheft, das die<br />
Anforderungen beschreibt, und einem Lastenheft, das die<br />
Produkteigenschaften darstellt.<br />
• Ein Pflichtenheft umfasst normalerweise die Definiton der Aufgabe, legt<br />
Ziele und Inhalt des Projekts fest, stellt einen Kosten- und Terminrahmen<br />
auf und fixiert Abnahme- sowie Bewertungsmethoden und<br />
Gewährleistungregelungen.<br />
Aufbau und Funktion eines<br />
Pflichtenheftes 1(9)<br />
• Der IEEE/ANSI-Standard 830-1993 schlägt (auf 31 Seiten)<br />
in etwa folgenden Aufbau für Pflichtenheft vor:<br />
• Einleitung <strong>mit</strong><br />
• Ziel des Anforderungsdokumentes (purpose)<br />
• Anwendungsbereich des Produkts (scope)<br />
• Definitionen, Akronyme, Abkürzungen (definitions)<br />
• Referenzen auf andere Quellen (references)<br />
• Überblick über Rest des Dokumentes (overview)<br />
• Allgemeine Beschreibung<br />
• Produktionfunktionen, Benutzercharakteristika etc.<br />
• Spezifische Anforderungen<br />
• (nicht-)funktionale Anforderungen, Schnittstellenbeschreibungen etc.<br />
• Anhänge (<strong>mit</strong> Index)<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-43<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-44<br />
Aufbau und Funktion eines<br />
Pflichtenheftes 2(9)<br />
• Aus H. Balzert (Lehrbuch der Software-Technik (Band 1): Software-<br />
Entwicklung, Spektrum Akademischer Verlag, 1996) wird hier ein Vorschlag<br />
für den Aufbau eines Pflichtenheftes vorgestellt, der<br />
• das Pflichtenheft als Erweiterung des Lastenheftes ansieht, also die<br />
Gliederung des Lastenheftes erweitert<br />
• alle wichtigen Punkte der IEEE/ANSI-Norm in etwas anderer Anordnung<br />
übernimmt<br />
• sich auf die Beschreibung der Software eines Gesamtsystems konzentriert<br />
• vorerst die Beschreibung von Testfällen fehlt<br />
• Hier optional um eine Einleitung ergänzt wird (ich orientiere mich hier<br />
an der Vorlesung von Prof. Schürr), die<br />
• die erwartete Leserschaft des Pflichtenheftes festlegt,<br />
• die Versionsgeschichte des Pflichtenheftes erläutert,<br />
• auf andere relevante Dokumente wie das Lastenheft verweist,<br />
• den Aufbau des Pflichtenheftes beschreibt.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-45<br />
Erinnerung: Aufbau und Funktion<br />
eines Lastenheftes<br />
• Nach H. Balzert (Lehrbuch der Software-Technik (Band 1): Software-Entwicklung,<br />
Spektrum Akademischer Verlag, 1996) ist ein Lastenheft folgendermaßen aufgebaut:<br />
1. Zielbestimmung: welche Ziele sollen <strong>mit</strong> dem Software-Produkt erreicht werden.<br />
2. Produkteinsatz: Anwendungsbereiche und Stakeholders werden genannt.<br />
3. Produktfunktionen: Hauptfunktionen werden beschrieben, Stakeholdergruppen<br />
zugeordnet und in 10er-Schritten durchnummeriert (LF nn).<br />
4. Produktdaten: permanent gespeicherte Hauptdaten werden festgelegt und in<br />
10er-Schritten durchnummeriert (LD nn).<br />
5. Produktleistungen: besondere Anforderungen an Hauptfunktionen oder<br />
Hauptdaten (Ausführungszeit, Datenumfang, … ) werden aufgezählt (LL nn).<br />
6. Qualitätsanforderungen: allgemeine Eigenschaften wie gute Zuverlässigkeit,<br />
hervorragende Benutzbarkeit, normale Effizienz, … werden festgelegt.<br />
7. Ergänzungen: alles was nicht in obiges Schema paßt und trotzdem wichtig ist.<br />
8. Glossar: alle in Punkt 1 bis 7 verwendeten wichtigen Begriffe werden erläutert.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-46<br />
Aufbau und Funktion eines<br />
Pflichtenheftes 3(9)<br />
• Einleitung (neues Kapitel, war für „kompaktes“ Lastenheft nicht notwendig)<br />
• … (Inhalt siehe vor-vorige Folie)<br />
• Zielbestimmung (Verfeinerung des entsprechenden Lastenheftkapitels)<br />
Das „Warum“ steht im Vordergrund, es wird in Form der zu erreichenden<br />
Ziele (Kriterien für die Softwarefunktionalität) festgehalten:<br />
• Musskriterien: unbedingt zu erreichende Ziele<br />
• Wunschkriterien: nicht unabdingbare, aber sehr wünschenswerte Ziele<br />
• Abgrenzungskriterien: was soll <strong>mit</strong> der Software nicht erreicht werden<br />
• Produkteinsatz (Verfeinerung des entsprechenden Lastenheftkapitels):<br />
• Anwendungsbereiche: Aufgabenfelder, die unterstützt werden<br />
• Zielgruppen: die „Stakeholders“, die <strong>mit</strong> Softwaresystem umgehen werden<br />
• Betriebsbedingungen: wo und unter welchen Randbedingungen wird die<br />
Software eingesetzt (Büro, mobiler Einsatz, … )<br />
Aufbau und Funktion eines<br />
Pflichtenheftes 4(9)<br />
• Produktübersicht (neuer Abschnitt):<br />
Überblick über das Produkt (Funktionen) sowie seine Rolle in allen<br />
relevanten Geschäftsprozessen (Verarbeitungsprozessen).<br />
Neben Fließtext können folgende <strong>UML</strong>-Diagrammarten eingesetzt<br />
werden:<br />
• Aktivitätsdiagramme für die Beschreibung von Geschäftsprozessen<br />
(Swimlanes werden für die Zuordnung von Aktivitäten/Systemfunktionen<br />
zu Anwendungsbereichen verwendet)<br />
• Anwendungsfall-Paketdiagramme für die Unterteilung von<br />
Produktfunktionen in <strong>Gruppe</strong>n (orientiert an Anwendungsbereichen etc.)<br />
• Anwendungsfall-Diagramme <strong>mit</strong> Hauptfunktionen des Produkts als<br />
„primäre“ Anwendungsfälle und den Zielgruppen als Akteure (plus andere<br />
<strong>Teil</strong>systeme, Sensoren, etc. bei eingebetteten Systemen)<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-47<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-48<br />
8
Aufbau und Funktion eines<br />
Pflichtenheftes 5(9)<br />
• Produktfunktionen (Verfeinerung des entsprechenden Lastenheftkapitels):<br />
Wie im Lastenheft durchnummeriert werden alle Produktfunktionen hier<br />
detaillierter beschrieben (<strong>mit</strong> Verweis auf da<strong>mit</strong> umgesetzte Muss- oder<br />
Wunschkriterien):<br />
• Gliederung (Paketstruktur) wird aus der Produktübersicht übernommen und ggf.<br />
verfeinert.<br />
• Jede Hauptfunktion (primärer Anwendungsfall) wird <strong>mit</strong> Hilfe des Textschemas<br />
(Verweise auf Glossar!) beschrieben.<br />
• Spezialfälle oder oft benötigte Hilfsfunktione werden als „sekundäre“<br />
Anwendungsfälle ausgelagert.<br />
• Der Zusammenhang von primären und sekundären Anwendungsfällen kann durch<br />
weitere Anwendungsfalldiagramme festgehalten werden.<br />
• Für eine präzisere Beschreibung von Anwendungsfällen können in Einzelfällen<br />
Aktivitätsdiagramme eingesetzt werden.<br />
• Ggf. werden statt Aktivitätsdiagrammen hierfür auch Sequenzdiagramme<br />
verwendet (insbesondere wenn zeitliche Aspekte wichtig sind).<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-49<br />
Aufbau und Funktion eines<br />
Pflichtenheftes 6(9)<br />
• Produktdaten (Verfeinerung des entsprechenden Lastenheftkapitels):<br />
Die längerfristig zu speichernden Daten des Systems werden (ggf. wie im<br />
Lastenheft durchnummeriert) aus Anwendersicht beschrieben (konzeptuelles<br />
Datenmodell). Dabei werden die Daten (<strong>mit</strong> Mengenangaben) entweder:<br />
• rein textuell beschrieben wie im Lastenheft (wieder Verweise auf Glossar!),<br />
• oder in Form von <strong>UML</strong>-Klassendiagrammen <strong>mit</strong> zusätzlichen Kommentaren erfasst.<br />
• Achtung: soll ein sogenanntes „ausführbares“ Pflichtenheft <strong>mit</strong> einem „Rapid<br />
Prototyp“ des Softwaresystems erstellt werden, so muss<br />
• ein feineres Klassenmodell erstellt werden,<br />
• ggf. das Zusammenspiel der Operationen verschiedener Klassen durch<br />
Interaktionsdiagramme beschrieben werden,<br />
• zu einigen Klassen eine Beschreibung ihres isolierten Verhaltens durch Statecharts<br />
(Automaten) hinzugefügt werden.<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-50<br />
Aufbau und Funktion eines<br />
Pflichtenheftes 7(9)<br />
• Produktleistungen (Verfeinerung des entsprechenden Lastenheftkapitels):<br />
• Weitere Angaben zu den einzelnen Produktfunktionen oder Produktdaten. Hier<br />
werden oft Leistungsanforderungen bzgl. Zeit und Genauigkeit angegeben.<br />
Verzichtet man auf diesen Abschnitt nicht ganz, dann wird man hier ggf.<br />
Interaktionsdiagramme und Statecharts der <strong>UML</strong> verwenden.<br />
• Qualitätsanforderungen (Verfeinerung des entspr. Lastenheftkapitels):<br />
• Softwarequalitätsmerkmale werden in Matrix-Form angegeben (siehe auch DIN ISO<br />
Norm 9126 zu Qualitätsanforderungen an Software).<br />
• Benutzungsoberfläche (neuer Abschnitt):<br />
• Grundlegende Anforderungen an die Benutzeroberfläche (wie Gestaltungsrichtlinien)<br />
werden hier festgehalten.<br />
• Zu einem ausführbaren Pflichtenheft gehört auch ein „Rapid Prototype“ der<br />
tatsächlichen späteren Benutzeroberfläche.<br />
Aufbau und Funktion eines<br />
Pflichtenheftes 8(9)<br />
• Nichtfunktionale Anforderungen (neuer Abschnitt):<br />
• Alle in den bisherigen Kapiteln nicht unterzubringenden Anforderungen werden hier<br />
aufgeführt (einzuhaltende Gesetze, Normen, Sicherheitsanforderungen, … ).<br />
• Technische Produktumgebung (neuer Abschnitt):<br />
Die Umgebung wird beschrieben, in der das zu erstellende Produkt eingesetzt<br />
wird. Dabei wird wie folgt unterteilt:<br />
• Hardware (auf der Produkt läuft): meist werden zur Beschreibung entweder<br />
Fließtext oder diverse Diagrammarten wie Datenfluss-Diagramme oder <strong>UML</strong>-<br />
Deployment-Diagramme eingesetzt.<br />
• Software (die das Produkt voraussetzt, <strong>mit</strong> Beschreibung von Schnittstellen): meist<br />
werden zur Beschreibung entweder Fließtext oder <strong>UML</strong>-Klassendiagramme<br />
eingesetzt, ggf. auch <strong>UML</strong>-Komponentendiagramme<br />
• Orgware: organisatorische Randbedingungen, die erfüllt sein müssen<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-51<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-52<br />
Aufbau und Funktion eines<br />
Pflichtenheftes 9(9)<br />
• Entwicklungsumgebung (neuer Abschnitt):<br />
• Die Umgebung wird beschrieben, in der das zu erstellende Produkt<br />
entwickelt wird (Entwicklungsplattform). Insbesondere bei eingebetteten<br />
Systemen unterscheidet sich die Entwicklungsplattform sehr deutlich von<br />
der Zielplattform. Das Kapitel ist wie das vorangegangene Kapitel aufgebaut<br />
(d.h. Hardware, Software, Orgware).<br />
• Gliederung in <strong>Teil</strong>produkte (neuer Abschnitt):<br />
• Für die iterative Erstellung des Produktes (Gesamtfunktionalität wird über<br />
mehrere Releases hinweg „stückweise“ zur Verfügung gestellt, Unified<br />
Process) werden die Produktfunktionen einzelnen <strong>Teil</strong>produkten zugeordnet.<br />
Die <strong>Teil</strong>produkte werden gemäß ihrer Wichtigkeit für den Kunden<br />
angeordnet.<br />
• Glossar (das Glossar aus dem Lastenheft wird fortgeschrieben)<br />
SoftwEng (SS 05) <strong>Objektorientierte</strong> <strong>Analyse</strong> <strong>mit</strong> <strong>UML</strong> – <strong>Teil</strong> 2 <strong>VI</strong>(2)-53<br />
9