Software Engineering 5. Architektur
Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung Konfigurationsmanagement Testen Abnahme, Einführung, Wartung und Pflege
Ziele der Entwurfs-Phase Entwurf (engl. Design) oder Programmieren im Großen Entwicklung einer software-technischen Lösung im Sinne einer Software-Architektur Umsetzung der Anforderungen aus der Analyse-Phase Jetzt steht nicht mehr das Problem, sondern die Lösung im Vordergrund
Aufgaben der Entwurfsphase Ermitteln und Festlegen der Umgebungs- und Randbedingungen Treffen grundlegender Entwurfsentscheidungen Entwerfen einer Software-Architektur Zerlegung des definierten Systems in Systemkomponenten Strukturierung des Systems durch geeignete Anordnung der Systemkomponenten Beschreibung der Beziehungen zwischen Systemkomponenten Spezifikation des Funktions- und Leistungsumfangs sowie des Verhaltens der Systemkomponenten in informaler, semiformaler oder formaler Weise Festlegung der Schnittstellen, über die die Systemkomponenten miteinander kommunizieren
Wichtige Design-Entscheidungen Design-Entscheidungen Programmierumgebung Architektur Dienste Dritt-Systeme Programmiersprache Komponenten GUI-System Ziel-Plattform Klassenbibliotheken Schnittstellen Datenhaltung Middleware Entwicklungsumgebung Verteilung Benutzer- und Rechteverwaltung Transaktions-Monitoring Einzubindende Fremdsoftware Kommunikation Online-Hilfe
Ergebnis: Produkt-Entwurf Software-Architektur Strukturierte oder hierarchische Anordnung der Systemkomponenten und ihrer Beziehungen untereinander, incl. Netzwerkverteilung Anbindung an Benutzungsoberfläche Anbindung an Datenbank Spezifikation der einzelnen System-Komponente Schnittstellen Funktions- und Leistungsumfang
System-Komponenten Abgegrenzter Teil eines Software-Systems Baustein für die physikalische Struktur einer Anwendung Beispiele: Funktionen / Prozeduren Klassen Abstrakte Datenobjekte, abstrakte Datentypen Beziehungen zwischen System-Komponenten Beschreiben alle möglichen Verbindungen Beziehungen können dynamisch oder statisch sein
Grundlegende Architekturstile Repository Pipe & Filter Objektorientiert Implicit Invocation Layered Interpreter Process Control Client/Server http://www.cs.cmu.edu/afs/cs/project/vit/ftp/pdf/intro_softarch.pdf
Repository Kennzeichen: zentrale Daten
Pipes & Filters Kennzeichen: Lineare sequenzielle Verarbeitung ("Daten wandern durch das System")
Objektorientiert Kennzeichen: Information Hiding (Objektgraph)
Implicit Invocation Kennzeichen: Hollywood-Prinzip Don t call us, we call you
Layered Kennzeichen: Schichten bilden Abstraktionsebenen
Interpreter Kennzeichen: Simulation einer speziellen Hardware
Process Control Kennzeichen: Überwachung durch Rückkopplung
Client/Server Kennzeichen: Verteilung (Daten und Prozesse)
Einflussfaktoren des Entwurfs Einsatzbedingungen aus Produktanforderungen Umgebungsbedingungen Aus Zielplattform(en) Randbedingungen Aus nicht-funktionalen Produktanforderungen und Qualitätsanforderungen
Einsatzbedingungen Sequenzielles / nicht-sequenzielles Produkt Nicht-sequenziell: nebenläufig verteilt in Echtzeit parallel Single User / Multi User Bei der Benutzeroberfläche zu berücksichtigen Multi User erfordert Benutzer- und Zugriffsrechteverwaltung Mandantenfähigkeit ja / nein Bei kaufmännischen Anwendung Für unterschiedliche Firmen können logisch vollständig getrennte Datenbereiche eingerichtet werden.
Umgebungs- und Randbedingungen Zu berücksichtigende Zielplattform(en) ergeben sich aus Einsatzbedingungen Häufig vom Auftraggeber bereits vorgeschrieben Nutzung der im Unternehmen vorhandenen Plattformen Bei Standardprodukten: Typische Plattformen der Zielgruppe Genaue Ausgestaltung (z. B. zu verwendende Versionen) überprüfen Vorhandenen Entscheidungsspielraum ausloten Plattform-Architektur des Zielsystems Grundlage für die zu entwickelnde Software-Architektur (muss passen) Plattform-Architektur beschreibt Schnittstellen, Dienste, Produkte
Nichtfunktionale Produkt- u. Qualitätsanforderungen Nichtfunktionale Anforderungen haben Konsequenzen für die Architektur, z. B.: Internationaler Einsatz Erfordert internationale Zeichensätze, Währungen,... Einsatz auf mehreren Plattformen Nutzung von plattformübergreifenden Werkzeugen (z. B. Virtual Machines oder automatische Erzeugung von Code für verschiedene Zielsysteme) Wiederverwendung mit Hilfe von Klassenbibliotheken Architektur muss Nutzung der entsprechenden Klassen erlauben Qualitäts- und Sicherheitsanforderungen, z. B.: Auswahl eines sicheren Übertragungsprotokolls Sicherungs- und Recovery-Mechanismen Verteilung auf mehrere Server zur Gewährleistung hoher Performance und Verfügbarkeit Mirror-Systeme zur Aufrechterhaltung des Betriebs bei Total-Ausfall
Grundsatz-Entscheidungen Es genügt nicht, die Klassen des Fachkonzepts zu implementieren, um ein komplettes Software-System zu erstellen Es wird eine Reihe von Hilfssystemen benötigt, z. B. Datenhaltung Netzwerkverteilung Benutzerverwaltung Benutzungsoberfläche Hilfesystem Kommunikation mit diesen Hilfssystemen soll über klar definierte Schnittstellen erfolgen Aufgaben: Identifikation der benötigten Hilfesysteme Prüfen, ob vorhandene oder zukaufbare Hilfssysteme genutzt werden können Ggf. Entwurf der selbst zu realisierenden Hilfssysteme Berücksichtigung der Schnittstellen in der Software-Architektur
Drei-Schichten-Architektur Abhängigkeiten Wichtig: Keine zyklischen Abhängigkeiten! Quelle: Kleuker, Grundkurs Software Engineering mit UML. 2. Aufl., Vieweg+Teubner 2011
Beispiel: Projektverwaltungssystem Quelle: Kleuker, Grundkurs Software Engineering mit UML. 2. Aufl., Vieweg+Teubner 2011
Beispiel: Verfeinerung der Paketierung Quelle: Kleuker, Grundkurs Software Engineering mit UML. 2. Aufl., Vieweg+Teubner 2011
Beispiel: Alternative Struktur Weniger Abhängigkeiten Quelle: Kleuker, Grundkurs Software Engineering mit UML. 2. Aufl., Vieweg+Teubner 2011
4+1 Sichten eines Systems Quelle: Kleuker, Grundkurs Software Engineering mit UML. 2. Aufl., Vieweg+Teubner 2011
UML-Sprachelemente der Sichten Quelle: Kleuker, Grundkurs Software Engineering mit UML. 2. Aufl., Vieweg+Teubner 2011