Software-Design • Definition • Der Prozess • Prinzipien • Strategien und Methoden • Notationen • Aufgabe Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Definition Design Definition Prozess Prinzipien Methoden SADT OOD Jackson Notationen Design ist • der Prozess zum Definieren – der Architektur, – der Komponenten, – der Schnittstellen und – anderer Charakteristika (Datenstrukturen, Algorithmen etc.) eines Systems oder einer Komponente sowie • das Ergebnis dieses Prozesses. Aufgabe Quelle: IEEE Std 610.12-1990. IEEE Standard Glossary of Software Engineering Terminology Folie 1 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Partner-Diskussion: Design-Begriffe Design Definition Prozess Prinzipien Methoden • Klären Sie mit einem Partner die folgenden Begriffe aus der vorherigen Definition: – – – – Architektur Komponente Schnittstelle System SADT OOD Jackson Notieren Sie schriftlich Ihre "Definitionen" (keine perfekte Formulierung notwendig) sowie mindestens ein Beispiel pro Begriff! Notationen Aufgabe • Dauer: 5 Minuten Folie 2 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Vorgehen und Ergebnis Design Definition Prozess Prinzipien Methoden SADT • Anforderungen werden analysiert, um eine Beschreibung der – internen Struktur und – Organisation eines Systems zu erstellen, die als Basis der Konstruktion (Implementierung) dient OOD Jackson Notationen Aufgabe • Das Ergebnis beschreibt die Architektur des Systems, das heißt – wie das System aus Komponenten aufgebaut ist und – die Schnittstellen/Beziehungen zwischen diesen Komponenten • Ziel: Das Ergebnis muss eindeutig (genug) sein, damit es bei der Implementierung keine Abstimmungsprobleme gibt! Folie 3 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Der Entwurfsprozess Dokumentierte Anforderungen Design Definition Prozess Prinzipien Methoden SADT Architekturentwurf Abstrakte Spezifikation Schnittstellenentwurf Komponentenentwurf Entwurf der Datenstrukturen Algorithmenentwurf OOD Jackson Systemarchitektur Notationen Aufgabe Folie 4 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Der Entwurfsprozess Dokumentierte Anforderungen Design Definition Prozess Prinzipien Methoden Abstrakte Spezifikation Schnittstellenentwurf Komponentenentwurf Entwurf der Datenstrukturen Algorithmenentwurf Notationen Softwarespezifikation Schnittstellenspezifikation Komponentenspezifikation Spezifikation der Datenstrukturen Algorithmenspezifikation Aufgabe Begründung Begründung Begründung Begründung Begründung Begründung SADT Architekturentwurf OOD Jackson Systemarchitektur Architektur-Design Detail-Design Folie 5 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Design als kreativer Prozess Design Definition Prozess • Lösen schwieriger Probleme – Probleme, die keine eindeutige Lösung besitzen (daher müssen Begründungen dokumentiert werden!) Prinzipien Methoden SADT OOD Jackson Notationen Aufgabe Zugehörige Konzepte • Ziele • Einschränkungen / Beschränkungen (Constraints) • Alternativen • Darstellungen • Lösungen Folie 6 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Design-Ebenen Design Definition Prozess • Architektur-Design (Top-Level-Design) – Top-Level-Struktur – Komponenten, Beziehungen zwischen Komponenten Prinzipien Methoden SADT • Detail-Design – Genaue Beschreibung jeder Komponente für die Implementierung OOD Jackson Notationen Aufgabe Folie 7 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Design-Prinzipien (enabling techniques) 1/2 Design Definition Prozess Prinzipien Methoden SADT OOD Jackson Notationen • Abstraktion – der Prozess, Information zu vergessen – Abstraktion durch Parametrisierung, durch Spezifikation – Prozedurale Abstraktion, Datenabstraktion, Kontrollabstraktion • Coupling and Cohesion – Zusammenhang zwischen Komponenten – Zusammenhang (innerhalb) der Komponenten • Dekomposition und Modularisierung – Zerlegen eines großen Systems in kleinere, beherrschbare Einheiten – Verteilen von Funktionalität auf Komponenten Aufgabe Folie 9 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Design-Prinzipien (enabling techniques) 2/2 Design Definition Prozess Prinzipien Methoden SADT OOD Jackson • Kapselung, Information Hiding – Verbergen der Details einer Komponente – Unzugänglich machen der Details • Trennen von Schnittstelle und Implementierung – Komponenten durch ihre Schnittstellen spezifizieren • Vollständigkeit und Primitivität – Komponenten enthalten alles, was zu einer Abstraktion gehört, aber nicht mehr Notationen Aufgabe Folie 10 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Partner-Interview: Design-Prinzipien Design Definition Prozess Prinzipien Methoden SADT OOD Jackson • Erklären Sie abwechselnd mit Ihrem Partner die folgenden Begriffe – – – – – – Abstraktion Coupling and Cohesion Dekomposition und Modularisierung Kapselung, Information Hiding Trennen von Schnittstelle und Implementierung Vollständigkeit und Primitivität Geben Sie für jeden Begriff mindestens ein Beispiel an! Notationen Aufgabe • Dauer: 6 Minuten Folie 11 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Design Definition Prozess Prinzipien Methoden SADT OOD Jackson Notationen Aufgabe Folie 12 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Design-Strategien und -Methoden Design Definition Prozess Prinzipien • Allgemeine, methoden-übergreifende Strategien – Divide and Conquer – Stepwise Refinement – Top-Down <-> Bottom-Up Methoden SADT OOD Jackson Notationen Aufgabe • Spezielle Vorgehensweisen / Methoden – – – – – Funktions-orientiertes (Strukturiertes) Design Objekt-orientiertes Design Datenstruktur-orientiertes Design Formale Methoden Transformationsmethoden → Beispiel: Model-Driven Architecture (MDA) Folie 13 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Strukturiertes Design Design Definition Prozess Prinzipien Methoden SADT OOD • Meist anschließend an eine Strukturierte Analyse • Prinzip – Identifikation der Haupt-Funktionalität – Top-Down-Verfeinerung Eingabe (Daten) • Ergebnisse – Datenfluss-Diagramme – Prozessbeschreibungen Jackson Prozedur Notationen Aufgabe • Eine mögliche Notation für Strukturierte Analyse und Design: SADT = Structured Analysis and Design Technique Ausgabe (Daten) Folie 14 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim SADT-Diagramm: Beispiel "Formulare bearbeiten", A-0 Kontroll-Information (wird benutzt, nicht verändert) Design Definition Vorschriften Prozess Prinzipien Ausgabedaten Methoden SADT OOD Leere Formulare, Daten Formulare bearbeiten Bescheide Jackson Notationen Aufgabe Eingabedaten Antragsteller, Prüfer, Entscheidungsinstanz Folie 15 Vorlesung Software Engineering Mechanismus (Benutzer, Prozessor, ...) Aktivität Datenfluss © Prof. Dr. Peter Knauber HS Mannheim SADT-Diagramm: Beispiel "Formulare bearbeiten", A0 Design Definition Prozess Prinzipien Methoden SADT OOD Jackson Notationen Aufgabe Folie 16 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim SADT-Konzepte Design Definition Prozess Prinzipien Methoden SADT OOD • Systembeschreibung jeweils von einem Standpunkt aus; unter Umständen mehrere Standpunkte nacheinander, Beispiel: Benutzer und Verwaltung einer Bibliothek • Beschreibung beginnt auf der höchsten Abstraktionsebene; Verfeinerungen führen zu hierarchischer Zerlegung des Systems • Zerlegung in Teilsysteme derart, das jedes Teilsystem unabhängig von den anderen Teilen der gleichen Ebene verfeinert werden kann • Keine Darstellungsmöglichkeiten für den Kontrollfluss (Bedingungen etc.) Jackson Notationen Aufgabe Folie 17 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Objektorientiertes Design Design Definition Prozess Prinzipien Methoden SADT OOD Jackson Notationen Aufgabe • Prinzip Jedes Objekt/Ding (jede "Art" von Objekten) in der Realität wird durch ein Objekt (eine Klasse von Objekten) im Modell repräsentiert • Konzepte – Klassen, Objekte – Vererbung, Polymorphismus – Komponenten Nachrichten • Ursprung: Daten-Abstraktion • "Standard"-Notation: UML (Unified Modeling Language) Folie 18 Vorlesung Software Engineering Objekt (Daten) Nachrichten © Prof. Dr. Peter Knauber HS Mannheim Objektorientierter Entwurf: Heuristische Vorgehensweise [Booch] Design Definition Prozess Prinzipien Methoden SADT OOD Jackson Notationen Aufgabe 1. Identifiziere Klassen und Attribute anhand der Substantive aus der Anforderungsbeschreibung 2. Identifiziere Methoden (für die Klassen) anhand der Verben aus der Anforderungsbeschreibung 3. Definiere, welche Objekte welche andere sehen (müssen): Beziehungen (inklusive Vererbung) zwischen Klassen 3. Definiere die Schnittstelle (Interfaces) der Klassen: Festlegen von Parameterlisten, Ergebnistypen für die Methoden 4. Implementiere die Klassen, Attribute und Methoden: Wahl einer geeigneten Repräsentation in der Programmiersprache Folie 19 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Klassendiagramm: Beispiel "Produkte in einem Lager" Design buys Customer Definition Prozess Product 1..* 1 stock_level ID stores Database 1 Print_out_Detail 1 name cost 0..* Prinzipien {disjoint, incomplete} {disjoint, complete} Methoden SADT OOD Jackson Discrete_Product Non_Discrete_Product price_per_item price_per_gram Notationen Aufgabe 0..* 1 Perishable_Product sell_by_date 0..* identifies weighs grams 0..1 0..1 activates is_warned_about Scales Laser Reader Beeper 0..1 0..* 1 Central Control Point 0..1 activates Folie 20 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Vorgehen beim OOD Design Definition Prozess Anleitung Prinzipien Methoden SADT OOD Jackson Notationen Aufgabe Aufgabe • Auf der Vorlesungs-Homepage finden Sie zwei Implementierungen von Parkscheinautomaten: Wählen Sie einen davon aus, bringen Sie diesen zur nächsten Stunde mit • Dokumentieren Sie Szenarien / Use Cases, die von dem gewählten Automaten unterstützt werden • Entwickeln Sie nach dem Muster der SIB / withdraw ein Design mit den notwendigen Abläufen und Klassen Folie 21 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Datenstruktur-orientiertes Design Design Definition Prozess Prinzipien Methoden SADT • Prinzip – Ausgangsbasis: Struktur von Ein- und Ausgabedaten – Kontrollstrukturen werden so definiert, dass sie Eingabedaten in Ausgabedaten transformieren können • Beispiel-Notation: Jackson Structure Diagrams (Michael A. Jackson) OOD Jackson Notationen Aufgabe • Beispiel "Bestandsführung": Es soll ein wöchentlicher Bericht über Bestandsänderungen in einem Lager generiert werden, sortiert nach Warentypen – 1. Schritt: Datenstruktur der Ein- und Ausgabedaten festlegen – 2. Schritt: passende Transformationen entwerfen Folie 22 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Jackson Struktur-Diagramm: Beispiel "Bestandsführung", Datenstruktur Input Design Definition Output 1 Liste aller Transaktionen Prozess Sequenz Wöchentlicher Bericht Prinzipien Methoden SADT OOD Liste von Transaktionen eines Warentyps Berichtskopf Berichtsrumpf Zusammenfassung Jackson 2 Notationen Transaktion Aufgabe * Zeile pro Warentyp o T_in Iteration o T_out * Alternative Folie 23 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Jackson Struktur-Diagramm: Beispiel "Bestandsführung", Programmstruktur Design Definition für 1 - erfasse Liste aller Transaktionen - erstelle wöchentlichen Bericht Prozess Prinzipien Methoden SADT erstelle Berichtskopf erstelle Berichtsrumpf erstelle Zusammenfassung OOD Jacksonfür 2 - erfasse alle Transaktionen eines Typs - erstelle eine Zeile pro Typ Notationen Aufgabe * erfasse Transaktion Folie 24 erfasse T_in Vorlesung Software Engineering o erfasse T_out o © Prof. Dr. Peter Knauber HS Mannheim Design Definition Prozess Prinzipien Methoden SADT OOD Jackson Notationen Aufgabe Folie 25 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Design-Notationen Design Definition Prozess Prinzipien Methoden SADT OOD Jackson Notationen Aufgabe Aufgaben • Beschreibung der Struktur – – – – Beschreibung der Komponenten Beschreibung der Beziehungen zwischen Komponenten Statische Sicht Überwiegend graphische Darstellung • Beschreibung des (dynamischen) Verhaltens – Überwiegend für das Detail-Design genutzt – Dynamische Sicht – Graphische oder textuelle Darstellung Folie 26 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Design-Notationen zur Strukturbeschreibung Design Definition Prozess Prinzipien Methoden SADT OOD Jackson • Architektur-Beschreibungssprachen (ADL) – Komponenten und Konnektoren • Klassen- und Objektdiagramme – Klassen und ihre Beziehungen • Entity-Relationship-Diagramme (ER) – Konzeptionelle Datenmodelle (für Datenbanken) • Schnittstellen-Beschreibungssprachen (IDL) – Name und Typen von Operationen von Komponentenschnittstellen Notationen Aufgabe • Jackson-Structure-Diagrams – Datenstrukturen mittels Sequenz, Alternative, Iteration • Structure Charts – Aufrufstruktur von Unterprogrammen/Modulen Folie 27 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim Design-Notationen zur Verhaltensbeschreibung Design Definition Prozess Prinzipien Methoden SADT OOD Jackson Notationen Aufgabe • Aktivitätsdiagramme, Flussdiagramme – Kontrollfluss zwischen Aktivitäten • Kollaborationsdiagramme, Sequenzdiagramme – Interaktion zwischen Objekten – Fokus auf ausgetauschten Nachrichten / auf deren zeitlichen Abfolge • Datenflussdiagramme – Datenfluss zwischen Prozessen • Entscheidungstabellen und –Diagramme – Darstellung komplexer Aktionen unter komplexen Bedingungen • Formale Spezifikationssprachen – Mathematisch basiert, oft durch Vor- und Nachbedingungen von Aktivitäten • Pseudo-Code – Detaillierte Verhaltensbeschreibung • Zustandsübergangstabellen und –Diagramme – Zustandsänderungen durch Aktivitäten Folie 28 Vorlesung Software Engineering © Prof. Dr. Peter Knauber HS Mannheim