Taentzer Einführung in die Softwaretechnik 98
Überblick Wozu modellieren wir in der Softwareentwicklung?
Definition des Modellbegriffs in der Softwareentwicklung
Welche Aspekte eines Softwaresystems werden modelliert?
Was ist objektorientierte Modellierung?
Wie kommen wir von Anforderungsbeschreibungen zu ersten Modellen?
Welche Objektklassen können wir identifizieren? Welche Eigenschaften und Fähigkeiten haben die Objekte? Welche Beziehungen finden wir zwischen Objekten?
Taentzer Einführung in die Softwaretechnik 99
• Menschliche kreative Tätigkeit ist ohne Modelle undenkbar: Die reale Welt steckt voller komplexer Zusammenhänge - ein Modell erlaubt es, verein-fachende, reduzierende Sichten auf einen Teil davon (das "Original") her-zustellen und sich daran zu orientieren.
• Eine komplexe geistige Aufgabe ist nur dann lösbar, wenn man sich nach-einander auf ausgewählte Aspekte konzentrieren kann. Modelle ermöglich-en einen Überblick über sonst unüberschaubare, komplexe Strukturen.
• Anhand von Modellen kann man Informationen und Erfahrungen sammeln, Schlüsse ziehen, Vergleiche anstellen, Alternativen bewerten, Entscheid-ungen treffen, Strategien entwickeln, etc - die für die Bearbeitung des Originals von Nutzen sind und sich an diesem selbst nicht (so leicht) vollziehen lassen.
Warum modellieren?
Taentzer Einführung in die Softwaretechnik 100
Original:
Abbild
Modell:
modellierte Eigenschaften
nicht modellierteEigenschaften
zusätzliche Eigenschaften
Modell: Idealisierte, vereinfachte, in gewisser Hinsicht ähnliche Darstellung eines Gegenstands, Systems oder sonstigen Weltausschnitts mit dem Ziel, daran bestimmte Eigenschaften des Originals besser studieren zu können.
(nach Stachowiak)
Modell und Original
Taentzer Einführung in die Softwaretechnik 101
Ein Modell kann als Vorbild oder Nachbild auftreten – je nachdem, ob es vor oder nach dem Original entsteht. Beispiele für Nachbild-Modelle:
Geographie: Landschaft-Reliefs, Landkarten; Biologie/ Medizin: Körpermodelle; Soziologie: Gruppendynamik-Modelle
Beispiele für Vorbild-Modelle: Architektur: Hausbau; Hardware: Chip-Schaltplan; Verwaltung: Bebauungsplan
In der Software-Entwicklung haben (Anwendungs-) Modelle oft Vor- und Nachbild -Charakter.
Herkunft des Modellbegriffs:modulus (lat): Maß, Regel, Form, Muster, Vorbild
nach
vor
Modellbegriff / Modell als Vor- und Nachbild
Taentzer Einführung in die Softwaretechnik 102
Außerhalb der Informatik: - Land-, See-, Himmelskarten- Blaupausen, Modelle für Gebäude und andere Bauwerke- Mathematische Modelle: Graphen, Verbände, algebraische Strukturen- Physikalische und chemische Modelle: Atomium, Molekularstrukturen,
Molekularbewegung- Biologie: DNS-Struktur, Doppel-Helix- Mode: Ersatzperson- Spielzeug (Eisenbahnen, Autos, Puppenhäuser, ..)Innerhalb der Informatik: - Daten- und Prozessmodelle- Softwarearchitekturmodelle- Analyse- und Entwurfsmuster
Weitere Beispiele von Modellen
Übersicht über Anforderungen:Anwendungsfalldiagramme
Taentzer Einführung in die Softwaretechnik 103
Ausschnitt aus einem Anwendungs-falldiagramm:
Taentzer Einführung in die Softwaretechnik 104
Elemente von Anwendungsfalldiagrammen
Aktor,
Anwendunsgfall mit Bezeichner B,
Systemgrenze (mit Systembezeichner S),
Kommunikationsbeziehung (zwischenAktoren und Anwendungsfällen)
- Beziehung zwischen zwei Anwendungsfällen (s. nächste Folie).
- Vererbung zwischen Anwendungs-fällen oder zwischen Aktoren
B
S
<<extend>>, <<include>>
Taentzer Einführung in die Softwaretechnik 105
Beziehungen zwischen Anwendungsfällen Eine Ausführung von Anwendungsfall A schließt die
Ausführung von Anwendungsfall B ein. Bsp: "Auftrag bearbeiten" schließt "Zahlung veranlassen" ein.
Eine Ausführung von Anwendungsfall A kann (unter bestimmten Bedingungen) durch eine Ausführung von Anwendungsfall B erweitert werden. Bsp: Beim "Auftrag bearbeiten" wird - falls eine Anfrage dafür vorlag - noch ein Katalog versandt.
Anwendungsfall A generalisiert Anwendungsfall B, d.h. B steht für eine Menge von Spezialfällen von A. Bsp: "Auftrag bearbeiten" generalisiert "Kaufauftrag bearbeiten" und "Verkaufsauftrag bearbeiten"
<<extend>>
<<include>>A
B
A
B
A
B
Taentzer Einführung in die Softwaretechnik 106
Operator
Benutzer
Leergut-Automat
Stückzurückgeben
Stamm-daten ändern
Berichterstellen
Beispiel: ein einfaches Anwendungsfalldiagramm
Stück zurückgeben wird durch den Kunden (= Automatenbenutzer) ausgelöst, der eine Menge von Dosen, Flaschen oder Kisten zurückgeben will. Beschreibung des Ablaufs: Mit jedem zurückgegebenen Stück erhöht das System die Anzahl der
registrierten Stücke sowie die Tagesgesamtanzahl für die betreffende Kategorie.
Wenn der Kunde alle Stücke abgeliefert hat, drückt er einen Quittungsknopf und erhält eine Quittung über alle abgelieferten Stücke und deren Gesamtanzahl.
Taentzer Einführung in die Softwaretechnik 107
Verwalter
Benutzer
Vorlesungsverzeichnis
Vorlesungsuchen
Dozenteintragen
Vorlesungeintragen
Beziehungen zwischen Aktoren
Ein Aktor kann von anderen Aktoren seine Anwendungfälle erben.Bsp: „Verwalter" erbt die Anwendungsfälle von „Benutzer“. Er istauch ein Benutzer.
Taentzer Einführung in die Softwaretechnik 108
<<include>>
<<include>>
<<include>>
Weiteres Beispiel: Anwendungsfalldiagramm
Taentzer Einführung in die Softwaretechnik 109
Aspekte der OO-Modellierung
• Objektorientierte Modellierung (OOM) gibt es als Begriff etwa seit dem Aufkommen der OO-Analyse (ca. 1988).
• Hervorstechendes Ziel der OOM: Objektorientierung als durchgängiges Paradigma für die gesamte Softwareentwicklung.
OO-Modellierung hat (mindestens) drei wichtige Aspekte:(a) ontologischer Aspekt: Die Welt wird als zusammengesetzt aus
unterscheidbaren, identifizierbaren und im einzelnen beschreibbaren Objekten aufgefasst.
(b) struktureller Aspekt: Es werden sowohl einfache als auch komplexe Objekte betrachtet. Letztere sind hierarchisch definiert, d.h. zusammen-gesetzt aus kleineren Bestandteilen, die selbst wieder Objekte sein können.
(c) Verhaltensaspekt: Objekte werden sowohl durch statische Merkmale (= Attribute) als auch durch dynamische (= Operationen) beschrieben.
Objektorientierte Modellierung
Taentzer Einführung in die Softwaretechnik 110
Einige Methoden gestatten zusätzlich die Formulierung von Constraints (Bedingungen), die etwa den Integritätsbedingungen bei Datenbanken entsprechen und z.B. die Ausprägungen von Attributen oder die Koexistenz von Beziehungen einschränken und regeln.
Klasse (auch “Objekttyp”): beschreibt die strukturellen und verhaltens-mäßigen Merkmale einer Menge gleichgearteter Objekte. Operationen (Methoden) gehören mit zum Objekt.
“semantische” Standardbeziehungen (auf Klassen und Objekten) wie z.B.
Instanziierung,
Generalisierung/Spezialisierung,
Gruppierung (Aggregation oder Komposition),
Assoziation
Zentrale Konzepte der OO-Modellierung
Taentzer Einführung in die Softwaretechnik 111
Nach OOSE werden parallel zur Bearbeitung der Anwendungsfälle Objektlisten für den Anwendungsbereich und daraus eine erste Version von Klassen- und Objektdiagrammen erstellt.
Diese bilden zusammen mit den Anwendungsfällen das "Analysemodell".
Aus den Objektlisten werden Klassenkandidaten ausgewählt und verschiedenen Klassenarten zugeordnet.
Pro Klasse werden aus den Anwendungsfallbeschreibungen und Objekt-listen Attribute, Operationen und Klassenbeziehungenbestimmt.
Klassen, Attribute, Operationen und Beziehungen werden in Form von UML-Klassendiagrammen dargestellt.
Von den Anforderungen zum OO-Modell
Taentzer Einführung in die Softwaretechnik 112
Objektklassen im Analysemodell
Identifizierung von Objekten: beteiligte Personen bzw. deren Rollen: Verkäufer, Ehefrau Objekte, welche Zustände eines Prozesses wiedergeben: Reparatur,
Abfahrt, Vorstellung Objekte, die wichtige Sachgegenstände für den Prozess beschreiben:
Vertrag, Rechnung, Fahrkarte Objekte des Alltags des Fachgebiets: Film, Zug, Hotel Objekte, die Infrastruktur beschreiben: Raum, Datum, Abteilung
Analyse der Substantive in Anforderungsbeschreibungen Ähnliche Objekte werden in Klassen zusammengefasst. Ähnliche Klassen können zu gemeinsamen Oberklassen generalisiert
werden.
Taentzer Einführung in die Softwaretechnik 113
Anwendungsfall “Bestellung annehmen”
• Das Zentrum empfängt Bestellungen der Einzelhändlertelefonisch von 9 bis 17 Uhr (S7).
• Die eingehenden Bestellungen der Kunden werden vom Sachbearbeiter in Bestellformularen erfasst (S8).
• Eine Kundenbestellung kann aus mehreren Bestellpostenbestehen. Diese beziehen sich auf einzelne Produkte (S9).
• Jeder Bestellposten wird auf dem Formular in einer Zeile notiert (S10).
Klassen-Kandidaten
wird (hier) nicht als Klasse modelliert (Unikat)
Synonyme (müssen als solche erkannt werden!)
nicht im Kernmodell - ist erst für E/A wichtig
wird im Klassenmodell nicht benötigt (Akteur)
generalisieren?
Analyse der Anwendungsfälle (1)
Taentzer Einführung in die Softwaretechnik 114
Anwendungsfall “Bestellung bearbeiten”
• Der Anwendungsfall “Lagerbestand ermitteln” wird benutzt, um für jeden Posten der gerade bearbeiteten Kundenbestellung den aktuellen Lagerbestand des zugehörigen Produktes zu ermitteln (S11).
• Wenn das Zentrum eine Bestellung entgegennimmt, wird jeder Bestellposten in eine der beiden folgenden Karteieneingeordnet: (a) Lieferkartei, (b) Wartekartei (S13).
• Falls für einen Bestellposten genügend Waren auf Lager sind, dann wird dieser in die Lieferkartei eingetragen und der Lagerbestand entsprechend korrigiert (S14). Anderenfalls wird der Bestellposten in die Wartekarteieingetragen (S15).
Syno-nym
(weitere) Klassen-
Kandidaten
Kandidat für Generali-sierung?
siehe oben!
Syno-nym ?
Analyse der Anwendungsfälle (2)
Taentzer Einführung in die Softwaretechnik 115
Beziehungen zwischen Objektklassen
Datenabhängigkeiten zwischen Objekten: Ein Objekt stellt Informationen für ein Anderes zur Verfügung. Ein Objekt ist Teil eines anderen Objekts: Jedes Attribut, das mehr
als einen Wert speichern soll (Listen, Mengen, etc.) wird als Assoziation modelliert.
Funktionaler Zusammenhang: Ein Objekt benötigt eine bestimmte Funktion eines anderen Objekts.
spezielle Assoziationen: Ganzes-Teil-Beziehungen Aggregation: Teile können auch ohne das Ganze existieren. Komposition: Teile können nicht ohne das Ganze existieren.
Analyse der Beziehungen in Anforderungsbeschreibungen.
Taentzer Einführung in die Softwaretechnik 116
Anwendungsfall “Bestellung annehmen”
• Das Zentrum empfängt Bestellungen der Einzelhändler telefonisch von 9 bis 17 Uhr (S7).
• Die eingehenden Bestellungen der Kunden werden vom Sachbearbeiter in Bestellformularen erfasst (S8).
• Eine Kundenbestellung kann aus mehreren Bestellposten bestehen. Diese beziehen sich auf einzelne Produkte (S9).
• Jeder Bestellposten wird auf dem Formular in einer Zeile notiert (S10).
Enthaltenseins-beziehung: Bestellung -
Posten
Beziehung Bestellposten -Produkt
Analyse der Anwendungsfälle (3)
Taentzer Einführung in die Softwaretechnik 117
Anwendungsfall “Bestellung bearbeiten”
• Der Anwendungsfall “Lagerbestand ermitteln” wird benutzt, um für jeden Posten der gerade bearbeiteten Kundenbestellung den aktuellen Lagerbestand des zugehörigen Produktes zu ermitteln (S11).
• Wenn das Zentrum eine Bestellung entgegennimmt, wirdjeder Bestellposten in eine der beiden folgenden Karteien eingeordnet: (a) Lieferkartei, (b) Wartekartei (S13).
• Falls für einen Bestellposten genügend Waren auf Lager sind, dann wird dieser in die Lieferkartei eingetragen und der Lagerbestand entsprechend korrigiert (S14). Anderenfalls wird der Bestellposten in die Wartekartei eingetragen (S15).
Beziehung Lagerbestand-
Produkt
Beziehung Kartei -
Bestellung
Analyse der Anwendungsfälle (4)
Taentzer Einführung in die Softwaretechnik 119
• In der UML werden verschiedene Arten von Beziehungen explizit unterschieden. Diese sind:
Generalisierung / Spezialisierung, auch Vererbung genannt
Assoziation (evtl. als Aggregation oder Komposition, s. unten)
gerichtete Assoziation,
Abhängigkeit
Es lassen sich verschiedene Arten von Abhängigkeiten unterscheiden, die durch Stereotypen kenntlich gemacht werden:
<< benutzt >> << erweitert >> << implementiert >>
Beziehungen zwischen Objektklassen
Taentzer Einführung in die Softwaretechnik 120
Attribute und Operationen in Objektklassen
Attribute als das Gedächtnis von Objekten: Summe der Attributwerte bilden den Zustand eines Objekts
Operationen definieren die Fähigkeiten der Objekte: Objekte erzeugen und zerstören Speichern und Laden eines aktuellen Objektzustands Zustandsänderungen (Attributänderungen) Berechnungen, die auf dem aktuellen Zustand basieren
Taentzer Einführung in die Softwaretechnik 121
Klassen und Attribute Klassen sind Mengen von Objekten mit
gleichen Strukturmerkmalen (Attributen) gleichen Verhaltensmerkmalen (Operationen) gleichen Beziehungen zu anderen Objekten
Person
name: Stringvorname: Stringgeburtstag: Datumadresse: String
alterBerechnen()adresseDrucken()
Maier: Person
name = Maiervorname = Thomasgeburtstag = 31.12.1975 adresse = Krummbogen 29, 35037 Marburg
Klasse:Objekt:
Taentzer Einführung in die Softwaretechnik 122
• Der Attributtyp ist in der UML nicht weiter spezifiziert. Er kann z.B. ein Klassenbezeichner, ein primitiver Datentyp, ein Typ einer Implementierungssprache oder ein zusammengesetzter Typ sein.
• Attribute können (vor dem Attribut-bezeichner) bzgl. ihrer Sichtbarkeitgekennzeichnet werden.
Attributbezeichner : Attributtyp
Kennzeichner für Sichtbarkeit:+ öffentlich sichtbar# geschützt~ paketweit- nur privat sichtbar
Syntax:
Klassen und Attribute
Person
- name: String- vorname: String- geburtstag: Datum- adresse: Adresse
Taentzer Einführung in die Softwaretechnik 123
Operationen
Syntax: [Sichtbarkeit] Name ( Parameterliste ) : Typ Parameter:
Syntax: Richtung Name : Typ mögliche Richtungen: in, out, inout
Wie kommt man zu Operationen? Auf welche Fragen soll das Objekt
antworten können? Welche Aktionen soll es ausführen
können?
Person
+ alterBerechnen(): int+ datenDrucken(in d: Datei): void
Taentzer Einführung in die Softwaretechnik 124
Bestellformular für EinzelhändlerDatum: _____________Bestell-Nr: R _____________Einzelhändler: _______________________________Adresse: _______________________________Telefon: _____________Lfd-Nr. Produkt Menge______ _________ ______________ _________ ______________ _________ ________
Bestellformular für ProduzentenDatum: ___________Bestell-Nr: W ___________Produzent: ____________________________Adresse: ____________________________Telefon: ___________Lfd-Nr. Produkt Menge______ _________ ______________ _________ ______________ _________ ________
Beispiel: Bestellformulare
Taentzer Einführung in die Softwaretechnik 126
Zusammenfassung In der Softwareentwicklung werden Modelle zur Abbildung
eines Weltausschnitts (Analyse) und zum Entwurf eines Softwaresystems (Design) verwendet.
Einen Überblick über die funktionalen Anforderungen geben Anwendungsfalldiagramme.
Außerdem werden Datenstrukturen, Zugriffsmöglichkeiten, Abläufe und Architekturen von Softwaresystemen modelliert.
Zur Erstellung eines ersten Klassenmodells wird die Anforderungsbeschreibung hinsichtlich Objektklassen, ihren Attributen und ihren Beziehungen untersucht.