Softwaretechnik Strukturen und Muster

Softwaretechnik – Strukturen und Muster Softwaretechnik – Strukturen und Muster Karsten Weicker, Nicole Weicker HTWK Leipzig, FHTW Berlin Psychiatri...
Author: Hella Lorenz
7 downloads 0 Views 554KB Size
Softwaretechnik – Strukturen und Muster

Softwaretechnik – Strukturen und Muster Karsten Weicker, Nicole Weicker HTWK Leipzig, FHTW Berlin

Psychiatrist: There seems to be a definite pattern emerging. And, of course, this pattern, once isolated, can be coped with. Recognize the problem, and you are halfway on the road to its, uh, its solution. (Harold and Maude, 1971) Karsten Weicker, Nicole Weicker

1/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Muster und Strukturen I

Analysemuster in der Spezifikation ⇒ Schreibweisen f¨ur typische Situationen

Karsten Weicker, Nicole Weicker

2/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Muster und Strukturen I

I

Analysemuster in der Spezifikation ⇒ Schreibweisen f¨ur typische Situationen Architekturprinzipien I Prinzipien/ Gesetze, was gute Architekturen sind

Karsten Weicker, Nicole Weicker

2/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Muster und Strukturen I

I

I

Analysemuster in der Spezifikation ⇒ Schreibweisen f¨ur typische Situationen Architekturprinzipien I Prinzipien/ Gesetze, was gute Architekturen sind Architekturmuster I Entwurfsmuster (Feinentwurf)

Karsten Weicker, Nicole Weicker

2/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Muster und Strukturen I

I

I

I

Analysemuster in der Spezifikation ⇒ Schreibweisen f¨ur typische Situationen Architekturprinzipien I Prinzipien/ Gesetze, was gute Architekturen sind Architekturmuster I Entwurfsmuster (Feinentwurf) Konzepte in Entwurf und Implementation I grundlegende programmiersprachliche Konzepte I Konzepte, um Architekturen umzusetzen I werden in Praxis massiv genutzt I hier nur angerissen

Karsten Weicker, Nicole Weicker

2/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Muster und Strukturen I

I

I

I

I

Analysemuster in der Spezifikation ⇒ Schreibweisen f¨ur typische Situationen Architekturprinzipien I Prinzipien/ Gesetze, was gute Architekturen sind Architekturmuster I Entwurfsmuster (Feinentwurf) Konzepte in Entwurf und Implementation I grundlegende programmiersprachliche Konzepte I Konzepte, um Architekturen umzusetzen I werden in Praxis massiv genutzt I hier nur angerissen Architekturstrukturen I Verfeinerung der Systemstrukturen aus Abschnitt 2

Karsten Weicker, Nicole Weicker

2/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (1) Liste Liste aus mehreren gleichgearteten Elementen, feste Zuordnung

Karsten Weicker, Nicole Weicker

3/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (1) Liste Liste aus mehreren gleichgearteten Elementen, feste Zuordnung

Exemplartyp Oberbegriff f¨ur mehrere Objekte einer Klasse, immer Zurodnung zu einem Oberbegriff

Karsten Weicker, Nicole Weicker

3/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (2) Baugruppe Klasse besteht aus verschiedenen Instanzen einer anderen Klasse, h¨aufig: physische Komponenten

Karsten Weicker, Nicole Weicker

4/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (3) St¨ uckliste Hierarchische Anordnung, in der sich Elemente aus anderen Elementen aufbauen, beliebige Tiefe

Karsten Weicker, Nicole Weicker

5/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (4) Koordinator Klasse stellt semantischen Zusammenhang zwischen zwei Klasen dar, statt einer Assoziationsklasse

Karsten Weicker, Nicole Weicker

6/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (4) Koordinator Klasse stellt semantischen Zusammenhang zwischen zwei Klasen dar, statt einer Assoziationsklasse

Historie Bei mehreren Vorg¨angen zu einer Klasse wird die Zeit mitprotokolliert

Karsten Weicker, Nicole Weicker

6/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (5) Rollen Unterschiedliche Instanzen einer Klassen haben in verschiedenen Funktionen mit einer anderen Klasse zu tun

Karsten Weicker, Nicole Weicker

7/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (6) wechselnde Rollen Historie einer Rollenverteilung wird gespeichert

Karsten Weicker, Nicole Weicker

8/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (7) Gruppe Eine Gruppe setzt sich aus verschiedenen Mitgliedern zusammen, eher dynamisch

Karsten Weicker, Nicole Weicker

9/ 1

Softwaretechnik – Strukturen und Muster Muster und Strukturen

Schreibweisen im Klassendiagramm (8) Gruppenhistorie Die Zugeh¨origkeit einer Gruppe wird als Historie (¨uber einen Koordinator) gespeichert.

Karsten Weicker, Nicole Weicker

10/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Architekturprinzipien I

I I I

G¨ute einer Architektur ist relativ – abh¨angig von den Anforderungen dennoch: es gibt einige allgemeine Prinzipien diese Prinzipien sollten nur bewusst missachtet werden zwei zentrale Hauptprobleme: I I

Reduktion der Komplexit¨at ¨ Erh¨ohung der Flexibilit¨at bzw. Anderbarkeit

Karsten Weicker, Nicole Weicker

11/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Architekturprinzipien I

I I I

G¨ute einer Architektur ist relativ – abh¨angig von den Anforderungen dennoch: es gibt einige allgemeine Prinzipien diese Prinzipien sollten nur bewusst missachtet werden zwei zentrale Hauptprobleme: I I

Reduktion der Komplexit¨at ¨ Erh¨ohung der Flexibilit¨at bzw. Anderbarkeit

Constantine-Gesetz Eine Struktur ist best¨andig, wenn der Zusammenhang stark und die Koppelung gering ist. (nach Endres & Rombach, 2003) Karsten Weicker, Nicole Weicker

11/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Prinzip der losen Kopplung I I

I

Kopplung ist die Interaktion zw. Bausteinen Arten der Kopplung: I Zugriff auf (private) Daten I Kommunikation in einer globalen Datenstruktur I Methodenaufrufe Lose Kopplung: geringstm¨ogliche Interaktion

Karsten Weicker, Nicole Weicker

12/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Prinzip der losen Kopplung I I

I I

Kopplung ist die Interaktion zw. Bausteinen Arten der Kopplung: I Zugriff auf (private) Daten I Kommunikation in einer globalen Datenstruktur I Methodenaufrufe Lose Kopplung: geringstm¨ogliche Interaktion Zweck: I Komplexit¨ at gering halten I einzelne Bausteine sind leichter verst¨ andlich ¨ I lokale Anderungen sind leichter durchf¨uhrbar

Karsten Weicker, Nicole Weicker

12/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Prinzip der losen Kopplung I I

I I

I

Kopplung ist die Interaktion zw. Bausteinen Arten der Kopplung: I Zugriff auf (private) Daten I Kommunikation in einer globalen Datenstruktur I Methodenaufrufe Lose Kopplung: geringstm¨ogliche Interaktion Zweck: I Komplexit¨ at gering halten I einzelne Bausteine sind leichter verst¨ andlich ¨ I lokale Anderungen sind leichter durchf¨uhrbar Vorsicht: bei zirkul¨aren Abh¨angigkeiten → Don’t call us, we call you!“ (siehe: ” Beobachtermuster sp¨ater)

Karsten Weicker, Nicole Weicker

12/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Prinzip der hohen Koh¨asion I

I

I

Koh¨asion ist die Interaktion innerhalb eines Bausteins Hohe Koh¨asion: bez¨uglich der Interaktion gilt ein enger Zusammenhang aller Bestandteile des Bausteins Zweck: I

I I

alle Teile des Bausteins geh¨oren zusammen

Wechselbeziehung zu loser Kopplung wird erreicht durch: I

Abstraktion, Separation of Concerns, Information Hiding

Karsten Weicker, Nicole Weicker

13/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Prinzip des Entwurfs fu¨r Ver¨anderung

I

¨ Design for Change: vorhersehbare Anderungen architektonisch vorausgeplanen ¨ Erwartbare Anderungen:

I

nicht implementierte Funktionalit¨at Unklarheiten in den Anforderungen ¨ Nicht erwartbare Anderungen:

I

I I

I

I I I

Vorsicht, falls dadurch hoher Ressourcenverbrauch

durch lose Kopplung – besonders an Hot Spots“ ” zuviel voraussehen → ein Monster“ ” Gewichtung: alle Eventualit¨aten oder handhabbar?

Karsten Weicker, Nicole Weicker

14/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Separation-of-Concerns-Prinzip (1) I I I

I I

heißt etwa: Trennung von Aufgabenbereichen Ziel: Hilfestellung f¨ur die Zerlegung in Bausteine Finden von zusammengeh¨origen Teilen der Software: bestimmte Aspekte/ Aufgaben I z.B. Funktionalit¨ at, Wiederverwendung, Performanz, Logging, Sicherheit etc. → Prinzip der Modularisierung Trennung von fachlichen und technischen Teilen

Denert-Gesetz Trennnung von Interessen (separation of concerns) f¨uhrt zu Standardarchitekturen. (nach Endres & Rombach, 2003) Karsten Weicker, Nicole Weicker

15/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Separation-of-Concerns-Prinzip (2) I

I

jedes Subsystem nur eine Aufgaben zur selben Zeit (z.B. Programmlogik, Pr¨asentation, Kommunikation etc.) konsequente Trennung von Interessen → Architekturen auf Standards abbildbar (Beispiel: Dreischichtenarchitektur von Denert (1991)) Nutzerschnittstelle

SW-Schnittstelle

Programmlogik

Datenbank/Dateien Karsten Weicker, Nicole Weicker

16/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Information-Hiding-Prinzip (1) I I

I I

Geheimhalten von Informationen“ ” in der Modularisierung: nur Schnittstelle nach Außen sichtbar Teilaspekt: data hiding in der Software-Architektur: auch f¨ur gr¨oßere Strukturen I z.B. im Fassaden-Entwurfsmuster

Fassade

I I

Schichtenbildung wie in CORBA Black-Box-Prinzip wie in der Schnittstellenabstraktion

Karsten Weicker, Nicole Weicker

17/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Information-Hiding-Prinzip (2) Parnas-Gesetz Nur Verborgenes kann ohne Risiko ver¨andert werden. (nach Endres & Rombach, 2003)

I

I I I

basiert auf Beobachtung von Entwicklern bei Philips (1972) traditioneller Ansatz: jeder → alle Entwurfsinformationen hier: je kleiner die Module, desto besser das Verst¨andnis zus¨atzlich: Zeitersparnis: nur notwendige Information

Karsten Weicker, Nicole Weicker

18/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Abstraktionsprinzip I

I I

wichtige Aspekte identifizieren, unwichtige vernachl¨assigen Spezialfall des Separation of concerns In der Software-Architektur: I explizite Schnittstellen (Bsp: Header-Datei (C++)) I Trennung von Schnittstelle und Implementierung (Bsp: Java-Interfaces, s.a. Entwurfsmuster) I Liskov-Substitions-Prinzip: Vererbungen erhalten Schnittstellen I Schnittstellen-Segregation: keine zu komplexen Schnittstellen → Trennung von Schnittstellen f¨ur verschiedene Zwecke I Design-by-Contract: Vorbedingungen als Vertrag → verpflichtend f¨ur jeden Aufrufer

Karsten Weicker, Nicole Weicker

19/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Modularit¨atsprinzip (1) I

I

Ziel: in sich geschlossene Systembausteine mit einfachen und stabilen architektonischen Beziehungen Kombination von I I I

I

Abstraktion Separation of Concerns und Information Hiding

Mittel zur Umsetzung I I

der losen Kopplung und hohen Koh¨asion

Karsten Weicker, Nicole Weicker

20/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Modularit¨atsprinzip (2) I

Kriterien f¨ur Modularit¨at I

I

I

I

I

modulare Dekomposition des Problems: Zerlegung komplexer Probleme in unabh¨angig benutzbare kleine Bausteine modulare Komposition: Module frei zu anderen Systemen komponierbar modulare Verstehbarkeit: jedes Modul f¨ur sich verst¨andlich ¨ modulare Kontinuit¨at: kleine Anderungen in einer ¨ Anforderungsspezifikation → Anderungen in wenigen Modulen modulare Protektion: Fehler auf das Modul oder benachbarte Bausteine begrenzt

Karsten Weicker, Nicole Weicker

21/ 1

Softwaretechnik – Strukturen und Muster Architekturprinzipien

Zwei Minuten Aufgabe Diskutieren Sie nochmal kurz, welche Prinzipien was bedeuten und wie diese zusammenh¨angen. I Prinzip der losen Koppelung I Prinzip der hohen Koh¨ asion I Prinzip des Entwurfs f¨ ur Ver¨anderung I Separation-of-Concerns-Prinzip I Information-Hiding-Prinzip I Abstraktionsprinzip I Modularit¨ atsprinzip Karsten Weicker, Nicole Weicker

22/ 1

Softwaretechnik – Strukturen und Muster Architekturmuster

Entwurfsmuster Idee: grunds¨atzliche L¨osungsans¨atze in der SW-Architektur f¨ur immer wieder wiederkehrende Probleme dokumentieren. I

bestehen aus I I I I

Mustername Problembeschreibung L¨osungsbeschreibung Konsequenzen

Karsten Weicker, Nicole Weicker

23/ 1

Softwaretechnik – Strukturen und Muster Architekturmuster

Entwurfsmuster Idee: grunds¨atzliche L¨osungsans¨atze in der SW-Architektur f¨ur immer wieder wiederkehrende Probleme dokumentieren. I

bestehen aus I I I I

Mustername Problembeschreibung L¨osungsbeschreibung Konsequenzen

Gamma-Hypothese Wiederverwengung von Entw¨urfen durch Muster f¨uhrt zu einer schnelleren und besseren Wartung. (nach Endres & Rombach, 2003)

Karsten Weicker, Nicole Weicker

23/ 1

Softwaretechnik – Strukturen und Muster Architekturmuster

Entwurfsmuster (2)

I

laut einer Studie (Quelle mir unbekannt) I

I

Muster in Kommentaren dokumentiert ⇒ schnelle Wartung ⇒ korrekte Wartung Nutzung von Mustern → leichte Wartung

Karsten Weicker, Nicole Weicker

24/ 1

Softwaretechnik – Strukturen und Muster Architekturmuster

Beispiel: Observer (Beobachter) Ziel: Lose Kopplung zweier Objekte mit dem Ziel, u¨ber Ver¨anderungen zu informieren L¨osung: Entkoppelung der konkreten Objekte vom Benachrichtigungsmechanismus I einheitliche Schnittstelle f¨ ur Verwaltung der Beobachter I konkretes Daten-Handling in den implementierenden Klassen Konsequenz: Erm¨oglicht Verkn¨upfung verschiedenster Objekte Beispiel: mehrere Darstellungsformen f¨ur dieselben Daten in einer GUI Karsten Weicker, Nicole Weicker

25/ 1

Softwaretechnik – Strukturen und Muster Architekturmuster

Beispiel: Observer (Beobachter) Klassendiagramm

Karsten Weicker, Nicole Weicker

26/ 1

Softwaretechnik – Strukturen und Muster Architekturmuster

Beispiel: Observer (Beobachter) Objektdiagramm

Karsten Weicker, Nicole Weicker

27/ 1

Softwaretechnik – Strukturen und Muster Architekturmuster

Beispiel: Observer (Beobachter) Erstes Sequenzdiagramm Anmelden eines Beobachters beim Subjekt:

Karsten Weicker, Nicole Weicker

28/ 1

Softwaretechnik – Strukturen und Muster Architekturmuster

Beispiel: Observer (Beobachter) Zweites Sequenzdiagramm ¨ Bei Anderung der gespeicherten Daten im Subjekt:

Karsten Weicker, Nicole Weicker

29/ 1

Softwaretechnik – Strukturen und Muster Konzepte in Entwurf und Implementation

Grundlegende programmiersprachliche Konzepte I I I I

beeinflussen Architektur und Implementation hier nur angerissen praxisrelevant ! bekannt: I I

prozedurale Ans¨atze Objektorientierung

Karsten Weicker, Nicole Weicker

30/ 1

Softwaretechnik – Strukturen und Muster Konzepte in Entwurf und Implementation

Grundlegende programmiersprachliche Konzepte I I I I

beeinflussen Architektur und Implementation hier nur angerissen praxisrelevant ! bekannt: I I

I

prozedurale Ans¨atze Objektorientierung

weniger bekannt, jedoch aktuell I I I I I

Komponentenorientierung Meta-Architektur/ reflection generative Erzeugung v. Systembausteinen MDSD Aspektorientierung

Karsten Weicker, Nicole Weicker

30/ 1

Softwaretechnik – Strukturen und Muster Konzepte in Entwurf und Implementation

Prozedurale Ans¨atze I

I

I

I

I

Prozedur, Funktion, Unterprogramm, Routine, Operation, statische Methode setzt Separation of Concerns f¨ur wiederverwendbare Teilalgorithmen um Bsp.: Systeme in C oder Cobol, prozedurale verteilte Systeme h¨aufig gemeinsame globale Datenbereiche: ⇒ verletzt Modularisierungsprinzip und Information Hiding Schnittstellenabstraktion u¨ber Bibliotheken

Karsten Weicker, Nicole Weicker

31/ 1

Softwaretechnik – Strukturen und Muster Konzepte in Entwurf und Implementation

Objektorientierung (1) I I

I

I

I I

Objekte bilden Real-World-Konzepte ab Daten mit den bearbeitenden Methoden b¨undeln direkte Umsetzung von Information-Hiding und Modularisierung durch Laufzeit-Polymorphie wird lose Kopplung und Entwurf f¨ur Ver¨anderung erm¨oglicht nicht zwangsl¨aufig: objektorientiert = gut“ ” nur ansatzweise: Wiederverwendung

Karsten Weicker, Nicole Weicker

32/ 1

Softwaretechnik – Strukturen und Muster Konzepte in Entwurf und Implementation

Objektorientierung (2) Boochs zweite Hypothese Objektorientierte Entw¨urfe reduzieren Fehler und f¨ordern die Wiederverwertung. (nach Endres & Rombach, 2003) I I

keine allgemeine Gesetzm¨aßigkeit laut Untersuchungen von Basili und Briand (1998): I I I

tiefe Vererbung f¨uhrt zu mehr Fehlern (sehr stark) viele Unterklassen f¨uhren zu mehr Fehlern (stark) ¨ Uberladen von Methoden f¨uhrt zu mehr Fehlern (stark)

Karsten Weicker, Nicole Weicker

33/ 1

Softwaretechnik – Strukturen und Muster Konzepte in Entwurf und Implementation

Komponentenorientierung I

I I

I

I

Komponenten wiederverwendbare, in sich geschlossene Bausteine (Objekte hierf¨ur meist zu klein) vertraglich spezifizierte Schnittstellen nur explizite Abh¨angigkeiten zum Kontext der Komponente Beispiele: DLLs, JavaBeans, COM+ -Komponenten, CORBA Component Model (CCM) In Server-Komponentenarchitekturen: I Ablaufumgebung: Komponenten-Container I objektorientierte RPC-Middleware

Karsten Weicker, Nicole Weicker

34/ 1

Softwaretechnik – Strukturen und Muster Konzepte in Entwurf und Implementation

Komponentenorientierung I

I I

I

I

I

Komponenten wiederverwendbare, in sich geschlossene Bausteine (Objekte hierf¨ur meist zu klein) vertraglich spezifizierte Schnittstellen nur explizite Abh¨angigkeiten zum Kontext der Komponente Beispiele: DLLs, JavaBeans, COM+ -Komponenten, CORBA Component Model (CCM) In Server-Komponentenarchitekturen: I Ablaufumgebung: Komponenten-Container I objektorientierte RPC-Middleware setzt Modularisierungsprinzip, Separation-of-Concerns und Prinzip des Entwurfs f¨ur Ver¨anderung st¨arker um als Objekte

Karsten Weicker, Nicole Weicker

34/ 1