Softwarearchitektur - Technische Universität Braunschweig
Transcription
Softwarearchitektur - Technische Universität Braunschweig
Software- und Systementwurf - Softwarearchitektur Software Engineering 1 WS 2011/2011 Dr. Ina Schaefer Software Systems Engineering Technische Universität Braunschweig (Folien von Prof. B. Rumpe) Überblick Softwareentwurf • Ziele • Entwurfsprinzipien Architekturentwurf Architekturmuster Unified Modeling Language (UML) - Überblick Dr. Ina Schaefer Software Engineering 1 Seite 2 Software-Entwurf Ausgangspunkt: • Systemspezifikation (Pflichtenheft) Ziel: • Vom “WAS" zum “WIE": Vorgabe für Implementierung Zentrale Begriffe: • Subsystem • in sich geschlossen • eigenständig funktionsfähig mit definierten Schnittstellen • besteht aus Komponenten • Komponente • • • • Dr. Ina Schaefer Baustein für ein Softwaresystem (z.B. Modul, Klasse, Paket) benutzt andere Komponenten wird von anderen Komponenten benutzt kann auch aus Unterkomponenten bestehen Software Engineering 1 Seite 3 Von der Analyse zum Entwurf Analyse AnforderungsErmittlung AnforderungsSpezifikation (Lastenheft) SystemSpezifikation (Pflichtenheft) SystemModellierung Entwurf Dr. Ina Schaefer Software Engineering 1 Seite 4 Gliederung des Entwurfsprozesses Architekturentwurf Subsystem-Spezifikation Schnittstellen-Spezifikation Gesamtstruktur des Systems (Grobentwurf) Komponentenentwurf Datenstrukturentwurf Algorithmenentwurf Detailstruktur des Systems (Feinentwurf) Grobentwurf: • weitgehend unabhängig von Implementierungssprache Feinentwurf • angepasst an die Implementierungssprache und Plattform Dr. Ina Schaefer Software Engineering 1 Seite 5 Arbeitsteilung beim Entwurf Architekturentwurf Entwurf Subsystem 1 Entwurf Entwurf Schnittstelle Schnittstelle 2 ... 1 2 Entwurf Subsystem 2 Entwurf Subsystem ... Entwurf der Komponenten Dr. Ina Schaefer Software Engineering 1 Seite 6 Kriterien für "guten" Entwurf Korrektheit • Erfüllung der Anforderungen • Wiedergabe aller Funktionen des Systemmodells • Sicherstellung der nichtfunktionalen Anforderungen Verständlichkeit & Präzision • Gute Dokumentation Anpassbarkeit Hohe Kohäsion innerhalb der Komponenten Schwache Kopplung zwischen den Komponenten Wiederverwendung Diese Kriterien gelten auf allen Ebenen des Entwurfs (Architektur, Subsysteme, Komponenten). Dr. Ina Schaefer Software Engineering 1 Seite 7 Kohäsion Kohäsion ist ein Maß für die Zusammengehörigkeit der Bestandteile einer Komponente. Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: • ähnliche Funktionalitäten zusammenfassen • führten nicht unbedingt zu stabiler Systemstruktur Bessere Kohäsion wird erreicht durch: • Prinzipien der Objektorientierung (Datenkapselung) • Einhaltung von Regeln zur Paketbildung • Verwendung geeigneter Muster zu Kopplung und Entkopplung • "Kohärente" Klasse: • Es gibt keine Partitionierung in Untergruppen von zusammengehörigen Operationen und Attributen Dr. Ina Schaefer Software Engineering 1 Seite 8 Kopplung Kopplung ist ein Maß für die Abhängigkeiten zwischen Komponenten. Geringe Kopplung erleichtert die Wartbarkeit und macht Systeme stabiler. Arten der Kopplung: • Datenkopplung (gemeinsame Daten) • Schnittstellenkopplung (gegenseitiger Aufruf) • Strukturkopplung (gemeinsame Strukturelemente) Reduktion der Kopplung: • Kopplung kann nie auf Null reduziert werden! • Schnittstellenkopplung ist akzeptabel, da höhere Flexibilität • Datenkopplung vermeiden! • aber durch Objektorientierung meist gegeben • Strukturkopplung vermeiden! • z.B. keine Vererbung über Paketgrenzen hinweg Entkopplungsbeispiel: getter/setter-Methoden statt direkter Attributzugriff Dr. Ina Schaefer Software Engineering 1 Seite 9 Interne Wiederverwendung Interne Wiederverwendung (reuse) ist ein Maß für die Ausnutzung von Gemeinsamkeiten zwischen Komponenten Reduktion der Redundanz Erhöhung der Stabilität und Ergonomie Hilfsmittel für Wiederverwendung: • im objektorientierten Entwurf: Vererbung, Parametrisierung • im modularen und objektorientierten Entwurf: Module/Objekte mit allgemeinen Schnittstellen (Interfaces) Aber: Wiederverwendung kann die Kopplung erhöhen: • Schnittstellenkopplung und Strukturkopplung Dr. Ina Schaefer Software Engineering 1 Seite 10 Entwurfsschritte Analyse AnforderungsSpezifikation (Lastenheft) AnforderungsErmittlung SystemSpezifikation (Pflichtenheft) SystemModellierung ArchitekturSpezifikation ArchitekturEntwurf Entwurf DetailEntwurf Klassen- bzw. ModulSpezifikationen Dr. Ina Schaefer Software Engineering 1 Seite 11 Architekturentwurf im Kontext der SW-Entwicklung Anforderungsanalyse, Domänenanalyse Entwurf der Softwarearchitektur Entwurf der Systemarchitektur, Auswahl der Hardware Feindesign, Programmierung, Integration, Testen, Auslieferung Dr. Ina Schaefer Software Engineering 1 Seite 12 Softwarearchitektur in der Praxis Architekturspezifikation wird zu oft nicht als separates Dokument gefordert. Häufig wird funktionale Spezifikation und Architekturspezifikation in einem Dokument realisiert. • denn „WAS“ zu spezifizieren, ohne auf grobe Strukturen des „WIE“ einzugehen ist oft nicht möglich. • Dennoch: die grobe Systemarchitektur wird der Entwurfs-Aktivität zugeordnet Ist Hardware involviert (Steuergeräte im Auto, TelekommunikationsAnlagen etc.), so wird oft bereits dadurch eine physische Architektur vorgegeben. (Sinnvoll: Architekturskizzen bereits in der Anforderungsbeschreibung.) Logische Systemarchitektur und physische Architektur sind nicht notwendig identisch. Dr. Ina Schaefer Software Engineering 1 Seite 13 Beispielarchitektur Dr. Ina Schaefer Software Engineering 1 Seite 14 „4+1 Sichten“-Modell der Softwarearchitektur Logische Sicht Struktursicht Szenarien Ablaufsicht Physikalische Sicht Philippe Kruchten, The 4+1 view model of architecture, IEEE Software, November 1995, 12(6), pp. 42-50 (Verwendung im Rational Unified Process - RUP) Dr. Ina Schaefer Software Engineering 1 Seite 15 Bestandteile der 4+1 Sichten Logische Sicht Struktursicht • Klassenmodell • Verfeinerung des Analysemodells • Subsysteme • Schnittstellen Szenarien • Use-Cases Ablaufsicht Grobentwurf Physikalische Sicht • Komponenten • Hardwaresysteme • Netze • Prozesse • Koordination Feinentwurf Dr. Ina Schaefer Software Engineering 1 Seite 16 Primäre Zielgruppe und Aufgabe der Sichten Logische Sicht Struktursicht • Endanwender • Programmierung • Wartung Grobentwurf Ablaufsicht Physikalische Sicht • System-Integratoren (Performanz, Durchsatz ...) • Kommunikation • Verteilung • Auslieferung, Installation Feinentwurf Dr. Ina Schaefer Software Engineering 1 Seite 17 Blockdiagramme Blockdiagramme sind kein Bestandteil von UML! (Gleichwertige Notation in UML: Implementierungsdiagramm) Blockdiagramme sind ein verbreitetes Hilfsmittel zur Skizzierung der logischen Struktur einer Systemarchitektur. • Subsystem umfasst Objekte bestimmter Klassen. • Schnittstelle ist klar definiert. (z.B. Aufrufschnittstelle, Kommunikationsprotokoll) Schnittstelle Subsystem Dr. Ina Schaefer Umfassendes Subsystem Software Engineering 1 Seite 18 UML Komponentendiagramme Das Komponenten-Diagramm stellt die (logischen) Komponenten des Systems und deren Schnittstellen (Ports) dar. Architektur: Anwendung UI Bank UI = User Interface = Benutzerschnittstelle/ Benutzeroberfläche GUI = Graphical User Interface = grafische Benutzerschnittstelle Dr. Ina Schaefer Software Engineering 1 Seite 19 Komponenten optionaler grafischer Stereotyp Name der Komponente «component» WebInterface HTTP Database Webservice benötigte Schnittstelle bereitgestellte Schnittstelle Dr. Ina Schaefer Software Engineering 1 Seite 20 Komposition von Komponenten Zusammengesetzte Komponente Komponente D Port A benötigte Schnittstelle bereitgestellte Schnittstelle B C D A analoges Blockdiagramm Dr. Ina Schaefer Software Engineering 1 B C Seite 21 Konfigurationsdiagramme Konfigurationsdiagramme sind (noch) nicht Bestandteil von UML! Konfigurationsdiagramme sind das meistverbreitete Hilfsmittel zur Beschreibung der physikalischen Verteilung von SystemKomponenten. Rechner, Knoten Lokales Kommunikationsnetz Dr. Ina Schaefer Speicherndes System Software Engineering 1 DatenkommunikationsNetz Seite 22 UML: Verteilungsdiagramm engl.: deployment diagram zeigt die physische Verteilung von Systemen Stereotypen kennzeichnen die Arten von Knoten Node (Knoten) <<processor>> Client <<network>> local network <<processor>> Server 1 <<processor>> Server 2 A Dr. Ina Schaefer Komponenten können zugeordnet werden B Software Engineering 1 Seite 23 Beispiel Terminverwaltung PC1 ... PCn TerminServer PDA1 PDAm Physikalische Konfiguration AnzeigetafelSteuerung PC Client PDA Client PDA Sync Blockdiagramm Termin-Manager DatenExport Termin-Datenbank Dr. Ina Schaefer Software Engineering 1 Seite 24 Kriterien für guten Entwurf Wie bereits diskutiert ist auf Kohäsion und Kopplung zu achten: Hohe Kohäsion: • Kohäsion = "Zusammenhalt" • Die Dinge sollen in Struktureinheiten zusammengefasst werden, die inhaltlich zusammengehören. Niedrige Kopplung: • Kopplung = Abhängigkeiten • Einzelne Struktureinheiten sollen möglichst unabhängig voneinander sein. Daneben allgemeine Eigenschaften, z.B.: Korrektheit, Anpassbarkeit, Verständlichkeit, Ressourcenschonung Dr. Ina Schaefer Software Engineering 1 Seite 25 Hohe Kohäsion und Niedrige Kopplung Subsystem A (z.B. Benutzungsoberfläche) Subsystem B (z.B. fachlicher Kern) Dr. Ina Schaefer Hohe Kohäsion: Subsystem B darf keine Information und Funktionalität enthalten, die zum Zuständigkeitsbereich von A gehört und umgekehrt. Niedrige Kopplung: Es muss möglich sein, Subsystem A weitgehend auszutauschen oder zu verändern, ohne Subsystem B zu verändern. Änderungen von Subsystem B sollten nur möglichst einfache Änderungen in Subsystem A nach sich ziehen. Beispiele zur konkreten technischen Realisierung siehe später (MVC-Architektur, Entwurfsmuster) Software Engineering 1 Seite 26 Qualitätssicherung mittels Szenarien Szenarien (für Anwendungsfälle) sind von zentraler Bedeutung: • Integration der verschiedenen Sichten • Kriterium für Architekturbewertung (Auswahl alternativer Muster) • Qualitätssicherung (Review) Bewertung für Softwarearchitekturen: • Architektur(en) festlegen • Im Architekturentwurf: Alternativen • Bei der abschließenden Qualitätssicherung: gewählte Architektur • Szenarien durchspielen • „Direkte Szenarien“: Auf der Architektur gut realisierbar • „Indirekte Szenarien“: Nur nach Architekturerweiterung realisierbar • Architekturen bewerten nach: • Anzahl der direkten Szenarien • Aufwand zur Modifikation für indirekte Szenarien • Abschätzung der Effizienz Dr. Ina Schaefer Software Engineering 1 Seite 27 Architekturmuster für die Struktursicht Struktursicht der Architektur: • Zerlegung in Subsysteme eigenständiger Funktionalität • Keine Aussage über physikalische Verteilung • Darstellung meist durch Blockdiagramme: Datenfluss-Schnittstelle Subsystem Aufrufschnittstelle Muster (Architekturmuster, Architekturstile): • Kette (Chain) • Schichten • Interpreter Dr. Ina Schaefer Software Engineering 1 Seite 28 Architekturmuster „Pipes & Filters“ Phase 2.1 Phase 1 Phase 3 Phase 2.2 Zwischenprodukt 1.1 Zwischenprodukt 1.2 Zwischenprodukt 2.1 Zwischenprodukt 2.2 Deutsch auch „Kette“ Inkrementelle oder phasenweise Verarbeitung Beispiele: • UNIX pipes • Batch-sequentielle Systeme • Compiler-Grundstruktur Dr. Ina Schaefer Software Engineering 1 Seite 29 Beispiel: Compiler-Architektur QuellProgramm Tokens Scanner Symboltabelle Syntaxbaum Parser Fehlermeldungen ZielProgramm CodeGenerator FehlerAusgabe Fehlermeldungen Kombination von Ketten Dr. Ina Schaefer Software Engineering 1 Seite 30 Architekturmuster "Schichten" „Benutzer“ Schicht 2 Schicht 1 Systemkern Jede Schicht bietet Dienste (nach oben) und nutzt Dienste (von unten) Beispiele: • Kommunikationsprotokolle • Datenbanksysteme, Betriebssysteme Dr. Ina Schaefer Software Engineering 1 Seite 31 Architekturmuster "Interpreter" „Benutzer“ Programm Abstrakte Maschine Basissystem Schichtenarchitektur mit Parametrisierung Beispiele: • Portable Sprachimplementierung (z.B. Java Virtual Machine) • Emulation von Systemarchitekturen (z.B. Soft Windows) Dr. Ina Schaefer Software Engineering 1 Seite 32 Beispiel: 3-Schichten-Referenzarchitektur Benutzungsschnittstelle Fachlicher Kern Persistenzschicht Entwurfsregeln: • Benutzungsschnittstelle greift nie direkt auf Datenhaltung zu. • Persistenzschicht verkapselt Zugriff auf Datenhaltung, ist aber nicht identisch mit dem Mechanismus der Datenhaltung (z.B. Datenbank). • Fachlicher Kern basiert auf dem Analyse-Modell Erlaubt das Aufsetzen von interaktiven, batch, etc. Benutzerschnittstellen und den Austausch von Datenbanken Dr. Ina Schaefer Software Engineering 1 Seite 33 Variante: 3-Schichten-Referenzarchitektur Benutzungsschnittstelle Fachlicher Kern Systemfunktionen Persistenzschicht Beispiele für Systemfunktionen: • Verkapselung von plattformspezifischen Funktionen • Schnittstellen zu Fremdsystemen Dr. Ina Schaefer Software Engineering 1 Seite 34 Architekturmuster für die physikalische Sicht Physikalische Sicht der Architektur: • Aufteilung der Funktionalität auf Knoten (Rechner) eines Netzes • Darstellung meist durch Konfigurationsdiagramme: Knoten Kommunikation Muster (Verteilungsmuster): • Zentrales System • Client/Server: • Two-Tier (Thin-Client, Fat-Client) • Three-Tier (GUI; Applikationskern, Datenhaltung) • Föderation Dr. Ina Schaefer Software Engineering 1 Seite 35 Verteilungsmuster "Zentrales System" "Unintelligentes" Terminal Zentrales System Beispiele: • Klassische Großrechner-("Mainframe"-)Anwendungen • Noch einfachere Variante: Lokale PC-Anwendungen (identifizieren Zentrale und Terminal) Dr. Ina Schaefer Software Engineering 1 Seite 36 Verteilungsmuster "Client/Server" "Intelligenter" Client Server Sogenannte "Two-Tier" Client/server-Architektur Andere Namen: • "Front-end" für "Client", "Back-end" für "Server" Client: • Benutzungsschnittstelle • Einbindung in Geschäftsprozesse • Entkoppelt von Netztechnologie und Datenhaltung Server: • Datenhaltung, evtl. Fachlogik Dr. Ina Schaefer Software Engineering 1 Seite 37 "Thin-Client" und "Fat-Client" Thin-Client: • Nur die Benutzungsschnittstelle auf dem Client-System • Ähnlich zu Zentralem System, aber oft DownloadMechanismen • Anwendungen: • "Screen-Scraping" (Umsetzung traditioneller Benutzungsschnittstellen in moderne Technologie) Fat-Client: • Teile der Fachlogik (oder gesamte Fachlogik) auf dem ClientSystem • Hauptfunktion des Servers: Datenhaltung • Entlastung des Servers • Zusätzliche Anforderungen an Clients (z.B. Installation von Software) Dr. Ina Schaefer Software Engineering 1 Seite 38 Verteilungsmuster "Three-Tier Client/Server" "Intelligenter" Client AnwendungsServer Server Client: • Benutzungsschnittstelle • evtl. Fachlogik Anwendungsserver: • evtl. Fachlogik • Verteilung von Anfragen auf verschiedene Server Server: • Datenhaltung, Rechenleistung etc. Kommunikation unter Servern meist breitbandig. Heute üblich! Dr. Ina Schaefer Software Engineering 1 Seite 39 Verteilungsmuster "Föderation" Knoten 1 Knoten 2 Knoten 3 Knoten 5 Knoten 4 Gleichberechtigte Partner (peer-to-peer) Unabhängigkeit von der Lokation und Plattform von Funktionen Verteilte kommunizierende Objekte Dr. Ina Schaefer Software Engineering 1 Seite 40 Architekturmuster der Ablaufsicht Ablaufsicht der Architektur: • Definition nebenläufiger Systemeinheiten (z.B. Prozesse) • Steuerung der Abfolge von Einzelfunktionen • Synchronisation und Koordination • Reaktion auf externe Ereignisse Darstellung z.B. durch Sequenzdiagramme Muster (Steuerungsmuster): • Zentrale Steuerung • Call-Return • Master-Slave • Ereignis-Steuerung • Selective Broadcast • Interrupt Dr. Ina Schaefer Software Engineering 1 Seite 41 Steuerungsmuster "Call-Return" Hauptprogramm Dr. Ina Schaefer Unterprogramm 1 Unterprogramm 1.1 Software Engineering 1 Unterprogramm 1.2 Seite 42 Steuerungsmuster "Master-Slave" Manager Dr. Ina Schaefer Benutz.oberfläche Sensor Software Engineering 1 Aktuator Seite 43 Steuerungsmuster "Selective Broadcast" Event Handler Subsystem 1 Subsystem 2 Subsystem 3 Ereignis e e e e Ereignis e' e' e' e' Dr. Ina Schaefer Software Engineering 1 Seite 44 Steuerungsmuster "Interrupt" Interrupt Dispatcher Handler 1 Handler 2 e Prozess 2 e’ Prozess 1 Verwendet Interrupt-Vektor Dr. Ina Schaefer Software Engineering 1 Seite 45 Zusammenfassung Architekturmuster Architekturmuster beschreiben erprobte Strukturierungsformen für die Architektur eines Systems Architekturmuster beschreiben: • Struktur • physikalische Verteilung • Zuordnung von Prozessen auf Prozessoren • Kommunikationsformen und –protokolle Schichtenbildung ist ein mächtiges Strukturierungsmittel Dr. Ina Schaefer Software Engineering 1 Seite 46 Unified Modeling Language (UML) graphische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Teilen von Software und anderen Systemen Kombiniert die Modellierung von Strukturen (Architektur, Daten, …), Prozessen, Verhalten und Interaktionen von der Object Management Group (OMG) entwickelt und standardisiert ISO standardisiert (ISO/IEC 19501 für UML 2.1.2) Aktuelle Version: UML 2.3 (Mai 2010) Dr. Ina Schaefer Software Engineering 1 Seite 47 Historische Entwicklung von UML Dr. Ina Schaefer Software Engineering 1 Seite 48 Diagrammtypen der UML Dr. Ina Schaefer Software Engineering 1 Seite 49