07.09.2014 Aufrufe

VI-Objektorientierte-Analyse-mit-UML-Teil-2 - Gruppe ...

VI-Objektorientierte-Analyse-mit-UML-Teil-2 - Gruppe ...

VI-Objektorientierte-Analyse-mit-UML-Teil-2 - Gruppe ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!