methodik: objektorientierte analyse statisches modell erstellen

35
Methodik: Objektorientierte Analyse Statisches Modell erstellen

Upload: siemen-raether

Post on 05-Apr-2015

116 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Methodik: Objektorientierte Analyse

Statisches Modell erstellen

Page 2: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Freitag, 10.12.0415.15 Uhr

Hauptgebäude XIa

öffentlicher Vortrag

Claus Huitfeld, University of Bergen, Norway

Markup Languages for Complex Documents

Page 3: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checklisten statisches Modell

Checklisten für:

KlassenAssoziationenAttributeVererbung

Page 4: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Klasse: Identifizierung

1. Durch Dokumentenanalyse (Formularanalyse)

Merkmale:

• Attribute/ Bestandteile der bestehenden Dokumente werden zusammengefasst

• auch zur Identifizierung von Assoziationen geeignet

Page 5: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Klasse

2. Mittels Beschreibungen

• aus Beschreibungen der Use Cases oder allgemeinen Anforderungsbeschreibungen werden Klassen identifiziert

• Klassen sind

- oft Substantive

- manchmal aus Verben ableitbar

- durch Attribute identifizierbar

Page 6: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Klasse

3. Mittels Kategorienbildung

• Personen und deren Rollen (in jeder Rolle anderes Verhalten Rolle = Klasse)

• Datenspeicherung in Folge einer Aktion (Kategorie= Informationen über Aktionen; Bsp.: Bestellung/ Banküberweisung) Aktion = Klasse

• Ort im Sinne funktionaler Trennung (Anmelde-/ Warte-/Abholbereiche Ort = Klasse)

• Organisationen• Ereignisse• Kataloge• Verträge• ....

Page 7: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Klasse

Analytische Schritte: Validieren• Klassenname:

- fachterminologisches, aussagekräftiges Substantiv im Singular

- semantisch klar abgegrenzt von anderen Klassennamen

- die Gesamtheit der Attribute der Klasse ausdrückend

- keine Rollenbeziehung zwischen Klassen wiederspiegelnd

- eindeutig im Paket

Modellverständlichkeit• Kurzbeschreibung der Klasse• Abstraktionsniveau:

- zu hoch = zu wenige Klassen, zu niedrig = zu viele Klassen- Richtwerte: ca. 1 Mitarbeiterjahr 50 - 100 Klassen

10-100 Mitarbeiterjahre 100 - 1000 Klassen

Page 8: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Klasse

Analytische Schritte: Validieren

• Objektverwaltung: keine Klassen modellieren, die Mengen von Objekten verwalten Modellverständlichkeit

• Fehlerquellen:

- Zu wenig komplexe Attribute zu viele Klassen +

Assoziationen

- Jedes konkrete Objekt als Klasse modellieren

- Klasse modelliert Entwurfs- und Implementierungsdetails

Page 9: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste KlasseErgebnisse:

Klassendiagramm Kurzbeschreibung der Klassen

Konstruktive Schritte:• Welche Klassen lassen sich mittels Dokumentanalyse identifizieren?• Welche Klassen lassen sich aus der Beschreibung der

Anwendungsfälle identifizieren?• Sind Klassen aus Kategorien zu modellieren?

Analytische Schritte:• Liegt ein aussagefähiger KIassenname vor?• Ist das gewählte Abstraktionsniveau richtig?

Fehlerquellen:• Zu kleine Klassen (aus jedem Dokument eine Klasse modellieren)• Modellierung von Entwurfs- und Implementierungsdetails

Page 10: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Assoziationen

Zuerst notwendige (nicht unbedingt alle möglichen) Assoziationen ermitteln durch/ aus:

• Dokumentenanalyse• Beschreibungen

2. Schritt: bestimmen von:• Kardinalitäten• Komposition• Aggregation

Page 11: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Assoziationen

Dokumentenanalyse/Beschreibung Use Case

• Dokumente/ Use Cases, die auch bei Klassenidentifizierung genutzt werden

• Direkte Assoziationen und Assoziationen als assoziative Klassen identifizieren

Page 12: Methodik: Objektorientierte Analyse Statisches Modell erstellen

2

• Kardinalitäten, Aggregation und Komposition bestimmen - Gibt die Beschreibung Aufschluss über Objektmengen? - Wie und wann werden Objekte der Klassen erzeugt? - Können beteiligte Objekte gelöscht werden und mit welcher Konsequenz? - Ist ein Objekt der Klasse X Teil von Y ? whole-part- Beziehung * Multiplizität der Agregatklasse <=1 Komposition * wird das Ganze gelöscht, so werden auch alle Teile gelöscht Komposition Im Zweifelsfall gilt: einfache Assoziation verwenden! - lassen sich über die Natur des Objekts feste Grenzen ableiten? ( z.B.: ein Schachspiel hat zu jeder Zeit höchstens 32 und mindestens 2 Figuren)

Checkliste Assoziationen Analytische Schritte: Validieren

Page 13: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Assoziationen Analytische Schritte: Validieren

• mögliche Einschränkungen (constraints) identifizieren

2

3

Page 14: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste AssoziationenAnalytische Schritte: Validieren

• Rollennamen erhöhen die Verständlichkeit (Welche Rolle spielt die Klasse?)

• Assoziationsnamen: Läßt sich mit den beteiligten Klassen und dem gewählten Assoziationsnamen ein Satz bilden?

• Gibt es mehrere unterschiedliche Assoziationen zwischen zwei Klassen?

* unterschiedliche Bedeutungen einer Assoziation * unterschiedliche Kardinalitäten

Page 15: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste AssoziationenAnalytische Schritte: Validieren

• Nach abgeleitete Assoziationen überprüfen

Eintragung empfiehlt sich

- bei existierenden Systemen, um vorhandene Redundanzen zu dokumentieren

- evtl. um bessere Übersichtlichkeit zu gewährleisten

Page 16: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Assoziationen

Ergebnis: Klassendiagramm um Assoziationen erweitertKonstruktive Schritte:• Welche Assoziationen lassen sich mittels Dokumentanalyse

oder Beschreibungen ableiten?Analytische Schritte:• Ist eine Benennung oder Rollenangabe notwendig oder

sinnvoll?• Existieren zwischen zwei Klassen mehrere Assoziationen?• Sind abgeleitete Assoziationen notwendig?• Soll eine assoziative Klasse oder eine eigenständige Klasse

modelliert werden?Fehlerquelle:• Verwechseln von Assoziation mit Vererbung.

Page 17: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste AttributeZiel:

Vervollständigen der Klassenspezifikation

Konstruktive Schritte:

- Ableiten aus Dokumentenanalyse oder Beschreibungen

der Anforderungen/ Anwendungsfälle

- In Beschreibungen oft Substantive- Wird das identifizierte Attribute wirklich benötigt (wird es im

Laufe seines Lebens einen Wert annehmen)?- Welche Daten werden zur Ausführung aller Use Cases

benötigt?

Page 18: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Attribute

Analytische Schritte: Validieren

• Attributname: kurzes, eindeutiges verständliches Substantiv (Welche Daten repräsentiert das Attribut?)

• Lassen sich Attribute zu Datenstrukturen zusammenfassen?

• Gehört ein Attribut zu einer Klasse oder zu einer Assoziation? Muß das Attribut auch dann zu jedem Objekt der Klasse gehören, wenn die betreffende Klasse isoliert von allen anderen Klassen betrachtet wird? ja= Attribut gehört zur Klasse

Page 19: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Attribute

Validieren

• Auf Klassenattribute prüfen- Wert gilt für alle Objekte der Klasse --> Bsp.: fixe Stundenlöhne für alle Personen der Kategorie XY,

- Informationen über die Gesamtheit der Objekte z.B.: Anzahl der Objekte einer Klasse

• abgeleitete Attribute werden dann in die Klasse eingetragen, wenn z.B.

- Ihre Werte für den Benutzer an der Benutzungsoberfläche sichtbar sein sollen Beginn, Ende, /Dauer

- die Lesbarkeit verbessert werden soll

Page 20: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Attribute

Ergebnisse: Klassendiagramm um Attributnamen und -spezifikation erweitert

Konstruktive Schritte:• Welche Attribute lassen sich mittels Dokumentanalyse oder anhand der

Beschreibung von Anforderungen oder Anwendungsfällen identifizieren?• Wird das jeweilige Attribut wirklich benötigt?

Analytische Schritte:• Ist der Attributname geeignet?• Einfache Attribute oder Datenstrukturen? Wurde das richtige

Abstraktionsniveau gewählt?• Gehört das Attribut zu einer Klasse oder einer Assoziation?• Liegen Klassenattribute vor?• Abgeleitete Attribute verwenden?

Page 21: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Vererbung

• Ziel: Zusammenhänge und Unterschiede von Klassen deutlich machen

Konstruktive Schritte• Ermitteln über bottom-up Vergleiche Gibt es genügend Gemeinsamkeiten zwischen Klassen, die zur Bildung

einer gemeinamen Oberklasse berechtigen?• Über top-down Inspektion

- Kann jedes Objekt der Klasse für jedes Attribut einen Wert annehmen? - (Später:) Kann jede Operation auf jedes Obekt der Klasse angewandt werden? Analytische Schritte Benötigt jede Unterklasse alle geerbten Attribute, Operationen und

Assoziationen? Ist die Vererbungshirarchie flach genug?

Page 22: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Vererbung

Page 23: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Checkliste Vererbung

Ergebnis: Klassendiagramm um Vererbungsstrukturen erweitert

Konstruktive Schritte:• Ergibt sich durch Generalisierung eine Vererbung ?• Ergibt sich durch Spezialisierung eine Vererbung?

Analytische Schritte:• Liegt eine »gute« Vererbungsstruktur vor?

Verbesserung des Modells?3-5 Hierarchiestufen?

„Ist-ein“ – Frage stellen

Page 24: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Übung 1

• Ziel: Statisches Modell (Klassendiagramm) aus allgemeiner Beschreibung erstellen.

Für Paletten ist eine Lagerverwaltung zu organisieren, eine Palette kann in einem offenen Lager (z.B. eine große Lagerhalle) stehen. Für jedes offene Lager sind dessen Bezeichnung, der Standort, das Lagerprofil (z.B. Kühlung vorhanden) zu speichern. Eine Palette kann alternativ auf einem Stellplatz in einem Stellplatzlager gelagert werden. Für jeden Stellplatz, der mehrere Paletten aufnehmen kann, sind festzuhalten: Koordinaten und Angabe, ob frei oder belegt ist. Für das Stellplatzlager sind prinzipiell die gleichen Informationen zu speichern wie für das offene Lager, jedoch bezieht sich das Lagerprofil immer auf einzelne Stellplätze. Paletten sollen auch ohne Zuordnung zu einem Lager erfasst werden.

Page 25: Methodik: Objektorientierte Analyse Statisches Modell erstellen

LösungSchritt 1: Klassen und Attribute identifizieren

Klassen und Attribute sind meist Substantive a) Alle Substantive markieren Für Paletten ist eine Lagerverwaltung zu organisieren, eine Palette kann in einem offenen Lager (z.B. eine große Lagerhalle) stehen. Für jedes offene Lager sind dessen Bezeichnung, der Standort, das Lagerprofil (z.B. Kühlung vorhanden) zu speichern. Eine Palette kann alternativ auf einem Stellplatz in einem Stellplatzlager gelagert werden. Für jeden Stellplatz, der mehrere Paletten aufnehmen kann, sind festzuhalten: Koordinaten und Angabe, ob frei oder belegt ist. Für das Stellplatzlager sind prinzipiell die gleichen Informationen zu speichern wie für das offene Lager, jedoch bezieht sich das Lagerprofil immer auf einzelne Stellplätze. Paletten sollen auch ohne Zuordnung zu einem Lager erfasst werden.

Page 26: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Lösung Hat ein Substantiv nur einen einzelnen Wert und bezieht es sich nicht auf ein zusammengesetztes Objekt, so ist es ein mögliches Attribut b) Klassen und Attributkandidaten identifizieren Für Paletten ist eine Lagerverwaltung zu organisieren, eine Palette kann in einem offenen Lager (z.B. eine große Lagerhalle) stehen. Für jedes offene Lager sind dessen Bezeichnung, der Standort, das Lagerprofil (z.B. Kühlung vorhanden) zu speichern. Eine Palette kann alternativ auf einem Stellplatz in einem Stellplatzlager gelagert werden. Für jeden Stellplatz, der mehrere Paletten aufnehmen kann, sind festzuhalten: Koordinaten und Angabe, ob frei oder belegt ist. Für das Stellplatzlager sind prinzipiell die gleichen Informationen zu speichern wie für das offene Lager, jedoch bezieht sich das Lagerprofil immer auf einzelne Stellplätze. Paletten sollen auch ohne Zuordnung zu einem Lager erfasst werden.

Page 27: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Lösung

c) doppelte Substantive/ Substantive im Plural entfernen Für Paletten ist eine Lagerverwaltung zu organisieren, eine Palette kann in einem offenen Lager (z.B. eine große Lagerhalle) stehen. Für jedes offene Lager sind dessen Bezeichnung, der Standort, das Lagerprofil (z.B. Kühlung vorhanden) zu speichern. Eine Palette kann alternativ auf einem Stellplatz in einem Stellplatzlager gelagert werden. Für jeden Stellplatz, der mehrere Paletten aufnehmen kann, sind festzuhalten: Koordinaten und Angabe, ob frei oder belegt ist. Für das Stellplatzlager sind prinzipiell die gleichen Informationen zu speichern wie für das offene Lager, jedoch bezieht sich das Lagerprofil immer auf einzelne Stellplätze. Paletten sollen auch ohne Zuordnung zu einem Lager erfasst werden.

Page 28: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Lösungd) Substantive, die zum Beschreibungstext gehören, streichen für Paletten ist eine Lagerverwaltung zu organisieren, eine Palette kann in einem offenen Lager (z.B. eine große Lagerhalle) stehen. Für jedes offene Lager sind dessen Bezeichnung, der Standort, das Lagerprofil (z.B. Kühlung vorhanden) zu speichern. Eine Palette kann alternativ auf einem Stellplatz in einem Stellplatzlager gelagert werden. Für jeden Stellplatz, der mehrere Paletten aufnehmen kann, sind festzuhalten: Koordinaten und Angabe, ob frei oder belegt ist. Für das Stellplatzlager sind prinzipiell die gleichen Informationen zu speichern wie für das offene Lager, jedoch bezieht sich das Lagerprofil immer auf einzelne Stellplätze. Paletten sollen auch ohne Zuordnung zu einem Lager erfasst werden.

Page 29: Methodik: Objektorientierte Analyse Statisches Modell erstellen

2. Klassen notieren

Lager

Offenes Lager

Stellplatz-Lager

Palette

Stellplatz

1. „Lagerhalle“ bezeichnet eine Variante eines offenen Lagers; es bleibt daher als Klasse im primären einfachen Analysemodell unberücksichtigt; eine spätere Modellierung als Subklasse von „Offenes Lager“ (Satz: Lagerhaus IST EIN offenes Lager) ist ggf. möglich.

Page 30: Methodik: Objektorientierte Analyse Statisches Modell erstellen

3. Attribute hinzufügen

Lager

bezeichnungstandort

Palette

Offenes Lager

profil

Stellplatz- Lager

Stellplatzkoordinate

Für das Stellplatzlager sind prinzipiell die gleichen Informationen zu speichern wie für das offene Lager, jedoch bezieht sich das Lagerprofil immer auf einzelne Stellplätze.

profilistFrei Anmerkung: „Kühlung“ ist eine Profilart und bezeichnet zunächst nur einen

möglichen Wert für „Lagerprofil“.

Page 31: Methodik: Objektorientierte Analyse Statisches Modell erstellen

4. Assoziationen hinzufügen

Lager

bezeichnungstandort

Palette

Offenes Lager

profil

Stellplatz- Lager

Stellplatzkoordinate

1. eine Palette kann in einem offenen Lager stehen..

profilistFrei

2. Eine Palette kann alternativ auf einem Stellplatz in einem Stellplatzlager gelagert werden

Page 32: Methodik: Objektorientierte Analyse Statisches Modell erstellen

5. Vererbungsstrukturen identifizieren

Lager

bezeichnungstandort

Palette

Offenes Lager

profil

Stellplatz- Lager

Stellplatzkoordinate

Für das Stellplatzlager sind prinzipiell die gleichen Informationen zu speichern wie für das offene Lager

profilistFrei

Page 33: Methodik: Objektorientierte Analyse Statisches Modell erstellen

6. Assoziationen verfeinern/ Attribute verfeinern

Lager

bezeichnungstandort

Palette

Offenes Lager

profil

Stellplatz- Lager

Stellplatzkoordinate

1. Für jeden Stellplatz, der mehrere Paletten aufnehmen kann,…

profil/istFrei

0..1**

0..11

1..*

2. Eine Palette kann alternativ auf einem Stellplatz in einem Stellplatzlager gelagert werden

{xor}

Page 34: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Übung 2

Ziel: Klassendiagramm systematisch aus Beschreibung erstellen

Erstellt werden soll ein Programm, mit dem Leser und ausleihbare Medien einer Bibliothek verwaltet werden können. Zu einem Leser sollen dessen Name, Vorname, Anschrift und eine Kundennummer gespeichert werden. Verliehen werden Bücher und DVDs. Zu einem Buch werden gespeichert der Name des Autors, der Titel, die ISBN-Nummer, zu einer DVD der Titel und die Spielzeit. Alle Medien enthalten eine eindeutige Mediennummer. Ein Leser kann bis zu 10 Bücher oder DVDs auf einmal ausleihen. Ein Medium ist entweder ausgeliehen oder verfügbar.

Page 35: Methodik: Objektorientierte Analyse Statisches Modell erstellen

Übung 3Lernziel: Assoziationen vollständig spezifizieren können

Modellieren Sie folgende Problemstellungen durch Klassen und Assoziationen:

Auf einer Palette sind mehrere Fässer. Paletten werden im Normalfall komplett geliefert und im Normalfall komplett weiterverkauft. Es können jedoch auch einzelne Fässer verkauft werden. Leere Paletten und einzelne Fässer können nicht vorkommen.

Jedes Projekt hat genau einen Projektleiter, der für mehrere Projekte verantwortlich sein kann. Die meisten Programmierer arbeiten für mehrere Projekte.

Jede Hauptabteilung besteht aus mehreren Abteilungen. Die meisten Abteilungen sind in einer Hauptabteilung eingegliedert, die anderen (z.B. Stabsabteilungen) berichten direkt an die Geschäftsleitung. In einer Abteilung sind mehrere Mitarbeiter tätig. Jeder Mitarbeiter ist genau einer Abteilung zugeordnet.

Ein Lexikon besteht aus mehreren Bänden. Jedes Buch kann Teil einer Buchreihe sein.