9. Design-Phase Software Engineering Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 1. Dezember 2005
Einordnung in den Kontext der Vorlesung 1. Einführung 2. Projektmodell 3. Vorgehensmodelle 4./5. Unified Modeling Language (UML) 6. Analyse-Phase: Geschäftsprozesse 7. Analyse-Phase: Datenmodellierung 9. Design-Phase 10. Design-Phase: Architektur im Großen 11. Programmierungs-Phase 12. Test- / Integrations-Phase, Einführung 13. Projektmanagement 14. Qualitätsmanagement 8. Analyse-Phase: Dialoge 1.12.2005, Seite 2
Agenda Agenda Übersicht Komponenten Schnittstellen IT-Architektur im Großen Kontrollfragen 1.12.2005, Seite 3
Übersicht Design: Die Königsdisziplin des Software Engineering Analyse WAS Design WIE 1.12.2005, Seite 4
Übersicht Grundprobleme des Design Wie setzt das System am besten insbes. Nicht-funktionale Anforderungen um? Wie kann das System beschrieben werden, damit es alle Stakeholder verstehen? System Wie kommuniziert das System am besten mit seiner Umwelt? Wie wird das System am besten in im Team implementierbare Komponenten zerlegt? 1.12.2005, Seite 5
Übersicht Wichtigste Aufgaben der Design-Phase Fachliche (Anwendungs-)Konstruktion Zerlegung (Dekomposition) des Systems in Komponenten (z.b. in Vertragsverwaltung, Kundenverwaltung ) Festlegung der Außenschnittstellen Technische Konstruktion (parallel zur Spez. durchführbar) Festlegung der technischen Infrastruktur (GUI-Toolkit, Datenbanksystem, App. Server, Frameworks, Hardware, ) Festlegung der Entwicklungsumgebung (SEU) (Programmiersprache, Umgebung, Build-Tool, Bugtracker, ) Festlegung der Grobstruktur des Systems (Schichten, Tiers, Standard-Architektur, ) Festlegung der (Programmier-)richtlinien (Coding Conventions, Verzeichnisstruktur, Nutzungskonzepte für Tools, ) Stadtplan MVV + Strom + Wassernetze + 1.12.2005, Seite 6
Übersicht Abhängigkeitsgraph im OO-Betriebssystem Taligent Wo ist hier die Architektur? Erich Gamma, "100 OO Frameworks, Pitfalls and Lessons Learned", 1997 1.12.2005, Seite 7
Agenda Agenda Übersicht Komponenten Schnittstellen IT-Architektur im Großen Kontrollfragen 1.12.2005, Seite 8
Komponenten Komponenten: die wesentlichen Einheiten des Design und der Implementierung 1.12.2005, Seite 9
Komponenten Finden von Komponenten Idee: Partitionierung des Datenmodells Planung Materialverleih Teilnehmerverwaltung Skilehrerverwaltung Idee: Entitätstypen zusammenstellen, die fachlich zusammenpassen Häufig gemeinsam verwendet werden Hilfsmittel Anwendungsfälle Dialoge prüfen Ziel: möglichst wenig und selten verwendete Verbindungen zwischen Komponenten 1.12.2005, Seite 10
Komponenten Beispiel für die Entwurfsregel D.L. Parnas We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such decision from the others. D.L Parnas: On the Criteria to be Used in Decomposing Systems into Modules, CACM 1972 1.12.2005, Seite 11
Komponenten Schneide Komponenten so, dass gilt: Strong Cohesion Loose Coupling Hohe Kohäsion Kohäsion = Zusammenhalt Inhaltlich zusammengehörende Elemente kommen in eine Komponente/Modul/Subsystem Klar definierter, präziser Zuständigkeitsbereich Lose Koppelung Koppelung = Abhängigkeiten Inhaltlich unabhängige Einheiten möglichst stark entkoppelt Je weniger Abhängigkeit desto besser (z.b. durch Schmale Schnittstellen, Wenig Imports, ) Ed Yourdon 1.12.2005, Seite 12
Komponenten Regeln zum Finden von Komponenten Schneide die Applikation nach den Abteilungsgrenzen (für jede Abteilung ein Subsystem, z.b. Rechnungswesen vs. Inkasso) Verleiher Ski- Verleih Skikursbetrieb Skischule und -verleih Skilehrer nach Grenzen von Geschäftsprozessen nach Änderungshäufigkeit 1.12.2005, Seite 13
Agenda Agenda Übersicht Komponenten Schnittstellen IT-Architektur im Großen Kontrollfragen 1.12.2005, Seite 14
Schnittstellen Schnittstellen (Interfaces) beschreiben Eigenschaften von Komponenten IPatient Katze IHaustier class Katze implements IPatient, IHaustier { } Meine Katze ist auch objektorientiert [Roger King] 1.12.2005, Seite 15
Schnittstellen Schnittstellen verbinden Komponenten Beispiel: Mehrere Datenquellen für die Bildverarbeitung Bildquellen Bildverarbeitung Problem: Verschiedene (Bild-) Datenformate Verantwortlichkeit: Bilddaten erzeugen Verantwortlichkeit: Bilder darstellen und verarbeiten Hohes Änderungsrisiko 1.12.2005, Seite 16
Schnittstellen Schlechtes Design: Der Monolith Verantwortlichkeit: Siemens, GE, HP + Bildverarbeitung Daten im Siemens Format Bildquellen Bildverarbeitung Siemens Daten Import GE-Daten Import HP-Daten Import Effekt: Bei jeder Änderung einer Bildquelle, z.b. neuer UltraSchall, MR, CT, Änderung der Bildverarbeitung!!! Daten im GE Format 1.12.2005, Seite 17
Gutes Design: Verantwortlichkeiten trennen und Schnittstellen spezifizieren Schnittstellen Bildverarbeitung Verantwortlichkeit: Daten von Siemens auf allg. Format konvertieren IBildquelle Siemens- MR-Treiber Siemens- CT-Treiber Bildquellen + open() + getbild() + close() Verantwortlichkeit: Bilder darstellen und verarbeiten GE- Treiber 1.12.2005, Seite 18
Schnittstellen Allgemeine Regeln KISS = Keep it simple and stupid (If you can t explain it in five minutes, ether you don t understand it or it doesn t work) Entwerfe nach Verantwortlichkeiten / Zuständigkeiten Mehr als eine Zuständigkeit ist schlecht Vermeide verteilte Zuständigkeiten Dokumentiere Zuständigkeiten (Was ist das Geheimnis?) Denken in Schnittstellen Erst / Nur Schnittstelle entwerfen und dokumentieren (!) Diese exakt spezifizieren: Syntax, (Verhalten), (Fehlerverhalten) Danach ggf. das Innenleben 1.12.2005, Seite 19
Agenda Agenda Übersicht Komponenten Schnittstellen IT-Architektur im im Großen Kontrollfragen 1.12.2005, Seite 20
Anwendungslandschaften gestalten heißt: Komplexität beherrschen 1.12.2005, Seite 21
Agenda Agenda Übersicht Komponenten Schnittstellen IT-Architektur im Großen Kontrollfragen 1.12.2005, Seite 22
Kontrollfragen Kontrollfragen Wie unterscheiden sich die Phasen Analyse und Design? Was sind die wichtigsten Aufgaben der Design-Phase? Was sind Komponenten? Nennen Sie Beispiele Wie findet man Komponenten? Was ist eine Schnittstelle? 1.12.2005, Seite 23