recall |
---|
header |
Analysespezifikation:
- Analyseklassenmodell
- Interaktionsdiagramme
- Zustandsdiagramme
- Dokumentation der Modellverifikation
Aufbereitung und Präzisierung der Anforderungsspezifikation im Hinblick auf Realisierungserfordernisse
- Erweitern des Domänenklassenmodells um Schnittstellen- und Kontrollklassen
- Zuordnung von funktionalen Verantwortlichkeiten zu den Klassen
- Hinzufügen von Operationen
- komplexe Anwendungsfälle in Mechanismen und Interaktionsdiagrammen abbilden
- Zustandsdiagramm erweitern / verfeinern
- Verifikation des Modells auf Konsistenz und Vollständigkeit
Willkürlich für eins, Dokumentiert aber die Entscheidung sowie die Vor- und Nachteile beider Modellierungen, um ggf. später einfach zu wechseln
- Ist die Assoziation an mindestens einem Ende optional, sollten separate Klassen gewählt werden
- Geht eine der beiden Klassen eine Verbindung zu einer Klasse ein, die die andere Klasse nicht interessiert, sollten separate Klassen gewählt werden
Wie wird bei einer assoziierten Klasse, die aufgeteilt werden soll, entscheiden zu welcher neuen Klasse die Assoziation zeigt?
Die alte Assoziation wird so verknüpft, dass eine Änderung der neuen 1:1 Assoziation zwischen der aufgeteilten Klasse möglichst keinen Einfluss auf die alte Assoziation hat
Wie kann entschieden werden, ob zwei ähnliche Klassen von einer Oberklasse erben oder zu einer Klasse zusammengefasst und Objekte nur durch wenige Attribute einem spezielleren Typ des Objekts zugeschrieben werden?
Sind es wenige Attribute und diese können sich dynamisch ändern ist es einfacher unterscheidende Attribute einzuführen. Unterscheiden sich Objekte unterschiedlichen Typs auch in ihrem Verhalten, sind unterschiedliche Klassen vorzuziehen
- Bei gleichwertigen Alternativen, entscheidet man sich für irgendeine (und dokumentiert es)
- Zwei Klassen, wenn eine Assoziation zwischen ihnen an mindestens einem Ende optional ist
- Zwei Klassen, wenn nur eine von ihnen eine Assoziation mit einer dritten eingehen kann
- Beim Aufteilen einer Klasse, werden bestehende Assoziationen so verknüpft, dass die neue 1:1 Assoziation geringsten Einfluss auf sie hat
- Verhaltens- und Attributgleiche Klassen werden zusammengefasst und ggf. durch wenige unterscheidende Attribute "spezialisiert"
- Unterscheiden sich Objekte in mehreren Attributen oder ihrem Verhalten, gehören aber zur gleichen Familie, ist eine Generalisierung angebracht
Analyseklassen | Entwurfsklassen | |
---|---|---|
nicht-funktionale Anforderungen berücksichtigt | ✗ | ✓ |
implementierungssprachenspezifische Typen | ✗ | ✓ |
Navigierbarkeit von Assoziationen | ✗ | ✓ |
Generalisierung zur Redundanzvermeidung | ✗ | ✓ |
Verhalten in texueller Form beschrieben | ✓ | primär in Modellform |
nicht-Standardoperationen | nur wenn nötig | ✓ |
komplexe nicht-Standardoperationen | nur Signatur | ✓ |
- Schnittstellen- (boundary)
- Kontroll- (control)
- Entitäts- (entity)
klassen
- enthalten langlebige Informationen
- repräsentieren Domänenklassen
- repräsentieren Systemklassen, die zur Verwendung nötig sind, aber nicht zur Domäne gehören
- Auswahl von Anwendungsfällen (Menüs)
- Unterstützung der externen Interaktion (Schnittstellen)
- Repräsentation von Daten (Listen, Views)
- Akteur-gesteuerte Modifikation von Daten (Dialoge)
- Umsetzung von Kommunikationsprotokollen (Schnittstellen)
Bietet einem Akteur die ihm zur Verfügung stehenden Anwendungsfälle zur Auswahl an. Im Grunde Toolbar / Menü im Hauptfenster einer Anwendung
Schnittstellenklasse, die einen bestimmten Anwendungsfall gegenüber einem menschlichen Akteur abwickelt (Dialogbox, Wizard)
Implementieren die fachliche Logik (Control) eines Anwendungsfalls, Vermitteln zwischen Entitätsklasse (Model) und Schnittstellenklasse (View)
Die Pakete der Akteure / Anwendungsfälle werden in Schnittstellen- Kontroll- und Entitätspakete untergliedert
Pakete mit Klassen, die nach Funktionalität gruppiert sind und mehreren Akteuren / Anwendugsfällen dienen
komplexe nicht-Standardoperationen werden eingeführt aber erst im Entwurf detailliert
- an Anwendungsfall beteiligte Klassen werden in Mechanismus dargestellt
- in Objektdiagramm dieser Klassen werden Operationsaufrufe eingezeichnet -> Kollaborationsdiagramm
- gefundene, noch nicht vermerkte nicht-Standardoperationen werden in Analyseklassenmodell übernommen
Prüfen eines einzelnen Modells auf Vollständigkeit, Eindeutigkeit und Konsistenz während der Analyse-Phase
Wenn alle Modellelemente die Spezifikationsrichtlinien befolgen
Wenn es nur auf eine Art und Weise interpretiert werden kann
Wenn alle Querbezüge auf existente und richtige Modellelemente verweisen und keine redundanten / widersprüchlichen Spezifikationen auftauchen
Konsistenz zwischen textueller Spezifikation und Diagramm:
- alle «include»-Beziehungen konsistent?
- Erweiterungspunkte für «extend»-Beziehnung beschrieben?
- Alle Assoziationen haben Multiplizitäten
- keine nicht deklarierten ableitbaren Attribute
- keine redundanten Features in Unterklassen
- letzte Unterklasse ist regulär
- Unterklassen abstrakter Klassen implementieren abstrakte Operationen
- alle in Invarianten, Vor- und Nachbedingung vorkommenden nicht-Standardoperationen müssen auch im Klassenmodell vorkommen
- alle Pfeile sind mit Operationsnamen gekennzeichnet
- alle nicht in der ersten Zeile stehenden Objekte werden explizit erzeugt (nur Sequenzdiagramm)
- korrekte Markierung aller Objekte mit {new}, {destroyed} oder {transient} (nur Kollaborationsdiagramme)
Abgleich von Modellen untereinander
- Analyseklassenmodell vs. Anwendungsfallmodell
- Analyseklassenmodell vs. Zustandsdiagramme
- Analyseklassenmodell vs. Interaktionsdiagramme
- (Zustandsdiagramme vs. Interaktionsdiagramme)
Welche drei Kriterien gewährleisten Konsistenz von Analyseklassenmodell gegenüber Anwendungsfallmodell?
- Für jede Aktion in jedem Szenario muss es eine Operation geben, die diese Aktion im Klassenmodell umsetzt
- Jede Operation wird in mindestens einem Szenario "benutzt"
- Operationen eines Szenarios im Klassenmodell stellen die Vor- und Nachbedingungen des Anwendungsfalls sicher
Welche drei Eigenschaften gewährleisten Konsistenz von Analyseklassenmodell gegenüber Zustandsdiagrammen?
- Für jede Aktion eines Zustandsübergangs im Zustandsdiagramm existiert eine entsprechende Operation im Klassenmodell
- Ausgangszustand eines Zustandsübergangs im Zustandsdiagramm erfüllt die Vorbedingung der Operation, die der zum Übergang gehörenden Aktion entspricht
- Nachbedingungen für Attributwerte und Verbindungen ist mit dem Folgezustand (und den enthaltenen Bedingungen) verträglich
Welche drei Eigenschaften gewährleisten Konsistenz von Analyseklassenmodell gegenüber Interaktionsdiagrammen?
- Für jeden Operationsaufruf in Interaktionsdiagrammen existiert eine entsprechende Operation im Klassenmodell
- In Kollaborationsdiagrammen dargestellten Verbindungen ensprechen die Assoziationen im Klassenmodell
- Objekterzeugung und -zerstörung im Fall von Aggregations- und Kompositionsbeziehungen passt zu deren spezieller Semantik
Welche zwei Eigenschaften gewährleisten Konsistenz von Zustandsdiagrammen gegenüber Interaktionsdiagrammen?
- Die Folge der Ereignisse im Zustandsdiagramm korrespondiert mit der Folge der empfangenen Nachrichten (Operationsaufrufe) im Interaktionsdiagramm
- Die Folge der Sendeaktionen im Zustandsdiagramm korrespondiert mit der Folge der gesendeten Nachrichten (Operationsaufrufe) im Interaktionsdiagramm.
«include» und «extend» Beziehungen im Anwendungsfalldiagramm führen zu Assoziationen zwischen AAS-Klassen im Analyseklassenmodell
Wie werden «include» und «extend» Beziehungen im Anwendungsfalldiagramm im Analyseklassenmodell berücksichtigt?
Assoziationen zwischen den entsprechenden AAS Klassen
Drei-Schichten-Modell:
- Externe Schnittstelle
- Anwendungskern
- Datenhaltung
- Komplexitätsbeherrschung: Man muss sich nur auf einen Teilbereich konzentrieren
- Arbeitsteilung: Mehrere Teilbereiche können von mehreren Teams bearbeitet werden
- Spezialisierung: Aufgaben können an Spezialisten übergeben werden
Zerlegung des Anwendungssystems in große Teilsysteme / Komponenten
grundsätzliches Strukturierungsschema einer Software, das große Teile in Schichten aufteilt und Schnittstellen / Kommunikation festlegt
Im Architekturentwurf
- Verwendung von Standards und Konzepten, die in den wichtigsten objektorientierten Sprachen verfügbar sind
- Unabhängigkeit vom speziellen Anwendungsbereich
- Wiederverwendbarkeit von Entwürfen, Entwurf wiederverwendbarer Module
Verteilungsdiagramm (deployment diagram)
- Aufteilung von Aufgaben auf unabhängige Schichten, die nur Funktionen derselben oder der darunterliegenden Schicht aufruft
- Änderungen wirken sich nur schichtlokal aus (feste Schnittstellen zwischen Schichten)
- Interaktion zwischen Anwendungssystem und Akteuren
- GUI
- API
- Fokus auf Gegenstände und Sachverhalte der Domäne
- bildet fachliche Funktionalität ab (Anwendungsfälle)
- stellt Einhaltung der Geschäftsregeln sicher
Realisiert persistente Speicherung
Schicht, die Anwendungsbestandteile mit unterschiedlichen Konzepten verknüpft. Beispiel: Klassen / Objekte mit Relationen und Tupeln
Typisch für Webapplikationen. Die Client-Schicht enthält Komponenten, die für den Browser bestimmt sind (Javascript, CSS etc.)