Top Banner
Prof. Dr. Ina Schaefer Institut für Softwaretechnik und Fahrzeuginformatik Technische Universität Braunschweig (mit Folien von Prof. B. Rumpe) Software- und Systementwurf - Softwarearchitektur - Software Engineering 1 WS 2012/2013
58

Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Aug 31, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer

Institut für Softwaretechnik und Fahrzeuginformatik

Technische Universität Braunschweig

(mit Folien von Prof. B. Rumpe)

Software- und Systementwurf

- Softwarearchitektur -

Software Engineering 1

WS 2012/2013

Page 2: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 2

Überblick

Softwareentwurf

• Ziele

• Entwurfsprinzipien

Architekturentwurf

Architekturmuster

Service-orientierte Architekturen

Page 3: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 3

Entwurf

Von der Analyse zum Entwurf

Analyse

Anforderungs- Ermittlung

Anforderungs- Spezifikation (Lastenheft)

System- Spezifikation (Pflichtenheft)

System- Modellierung

Page 4: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 4

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

• Baustein für ein Softwaresystem (z.B. Modul, Klasse, Paket)

• benutzt andere Komponenten

• wird von anderen Komponenten benutzt

• kann auch aus Unterkomponenten bestehen

Page 5: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 5

Gliederung des Entwurfsprozesses

Architekturentwurf

Subsystem-Spezifikation

Schnittstellen-Spezifikation

Komponentenentwurf

Datenstrukturentwurf

Algorithmenentwurf

Grobentwurf:

• weitgehend unabhängig von Implementierungssprache

Feinentwurf

• angepasst an die Implementierungssprache und Plattform

Gesamtstruktur des Systems (Grobentwurf)

Detailstruktur des Systems (Feinentwurf)

Page 6: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 6

Arbeitsteilung beim Entwurf

Architekturentwurf

Entwurf Subsystem 1

Entwurf Subsystem 2

Entwurf Subsystem ...

Entwurf der Komponenten

Entwurf Schnittstelle 1 2

Entwurf Schnittstelle 2 ...

Page 7: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 7

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).

Page 8: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 8

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

Page 9: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 9

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

Page 10: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 10

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

Page 11: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 11

Entwurf

Entwurfsschritte

Analyse

Anforderungs- Ermittlung

Anforderungs- Spezifikation (Lastenheft)

System- Spezifikation (Pflichtenheft)

System- Modellierung Architektur-

Spezifikation

Architektur- Entwurf

Klassen- bzw. Modul- Spezifikationen

Detail- Entwurf

Page 12: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 12

Anforderungs-

analyse,

Domänenanalyse

Entwurf der

Softwarearchitektur

Entwurf der

Systemarchitektur,

Auswahl der

Hardware

Feindesign,

Programmierung,

Integration, Testen,

Auslieferung

Architekturentwurf im Kontext der SW-Entwicklung

Page 13: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 13

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, Telekommunikations-

Anlagen etc.), so wird oft bereits dadurch eine physische Architektur

vorgegeben. (Sinnvoll: Architekturskizzen bereits in der Anforderungs-

beschreibung.)

Logische Systemarchitektur und physische Architektur sind nicht

notwendig identisch.

Page 14: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 14

Beispielarchitektur

Page 15: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 15

„4+1 Sichten“-Modell der Softwarearchitektur

Philippe Kruchten, The 4+1 view model of architecture, IEEE Software, November

1995, 12(6), pp. 42-50 (Verwendung im Rational Unified Process - RUP)

Logische Sicht Entwurfssicht

Ablaufsicht Physikalische Sicht

Szenarien

Page 16: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 16

Bestandteile der 4+1 Sichten

Logische Sicht Entwurfssicht

Ablaufsicht Physikalische Sicht

Grobentwurf

Feinentwurf

Szenarien • Use-Cases

• Klassenmodell • Verfeinerung des Analysemodells

• Prozesse • Koordination

• Subsysteme • Schnittstellen

• Komponenten • Hardwaresysteme • Netze

Page 17: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 17

Primäre Zielgruppe und Aufgabe der Sichten

Logische Sicht Entwurfssicht

Ablaufsicht Physikalische Sicht

• Endanwender • Programmierung • Wartung

• System-Integratoren (Performanz, Durchsatz ...)

• Kommunikation • Verteilung • Auslieferung, Installation

Grobentwurf

Feinentwurf

Page 18: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 18

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)

Umfassendes Subsystem

Schnittstelle

Subsystem

Page 19: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 19

UML Komponentendiagramme

Das Komponenten-Diagramm stellt die (logischen) Komponenten

des Systems und deren Schnittstellen (Ports) dar.

Architektur: UI Anwendung

Bank

UI = User Interface = Benutzerschnittstelle/ Benutzeroberfläche GUI = Graphical User Interface = grafische Benutzerschnittstelle

Page 20: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 20

Komponenten

optionaler grafischer Stereotyp Name der

Komponente

bereitgestellte Schnittstelle

benötigte Schnittstelle

«component»

WebInterface

Database

Webservice

HTTP

Page 21: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 21

Komposition von Komponenten

Komponente

bereitgestellte Schnittstelle

Zusammengesetzte Komponente

C B

A

D Port

benötigte Schnittstelle

A

C B

D

analoges Blockdiagramm

Page 22: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 22

Konfigurationsdiagramme

Konfigurationsdiagramme sind (noch) nicht Bestandteil von UML!

Konfigurationsdiagramme sind das meistverbreitete Hilfsmittel zur

Beschreibung der physikalischen Verteilung von System-

Komponenten.

Speicherndes System

Lokales Kommunikationsnetz

Datenkommunikations- Netz

Rechner, Knoten

Page 23: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 23

UML: Verteilungsdiagramm

engl.: deployment diagram

zeigt die physische Verteilung von Systemen

<<network>> local network

<<processor>> Client

<<processor>> Server 1

<<processor>> Server 2

A B

Stereotypen kennzeichnen die Arten von Knoten

Komponenten können zugeordnet werden

Node (Knoten)

Page 24: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 24

Physikalische Konfiguration

Blockdiagramm

PC1 ... PCn PDA1 PDAm

Termin- Server

Anzeigetafel- Steuerung

PC Client PDA Client

PDA Sync

Termin-Manager Daten- Export

Termin-Datenbank

Beispiel Terminverwaltung

Page 25: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 25

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

Page 26: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 26

Hohe Kohäsion und Niedrige Kopplung

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.

Subsystem A (z.B. Benutzungs- oberfläche)

Subsystem B (z.B. fachlicher Kern)

Page 27: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 27

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

Page 28: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 28

Architekturmuster für die Entwurfssicht

Struktursicht der Architektur:

• Zerlegung in Subsysteme eigenständiger Funktionalität

• Keine Aussage über physikalische Verteilung

• Darstellung meist durch Blockdiagramme:

Muster (Architekturmuster, Architekturstile):

• Kette (Chain)

• Schichten

• Interpreter

• Model-View-Controller (MVC)

Subsystem Datenfluss-Schnittstelle

Aufrufschnittstelle

Page 29: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 29

Phase 1

Phase 2.1

Phase 3

Architekturmuster „Pipes & Filters“

Deutsch auch „Kette“

Inkrementelle oder phasenweise Verarbeitung

Beispiele:

• UNIX pipes

• Batch-sequentielle Systeme

• Compiler-Grundstruktur

Zwischen- produkt 1.1

Phase 2.2

Zwischen- produkt 1.2

Zwischen- produkt 2.1

Zwischen- produkt 2.2

Page 30: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 30

Beispiel: Compiler-Architektur

Instanz von „Pipes & Filters“: Kombination von Ketten

Scanner Parser Code- Generator

Fehler- Ausgabe

Quell- Programm Tokens Syntaxbaum

Ziel- Programm

Fehler- meldungen

Symbol- tabelle

Fehler- meldungen

Page 31: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 31

Architekturmuster "Schichten"

Jede Schicht bietet Dienste (nach oben) und nutzt Dienste (von unten)

Beispiele:

• Kommunikationsprotokolle

• Datenbanksysteme, Betriebssysteme

Systemkern

Schicht 1

Schicht 2

„Benutzer“

Page 32: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 32

Beispiel: 3-Schichten-Referenzarchitektur

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

Persistenzschicht

Fachlicher Kern

Benutzungsschnittstelle

Page 33: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 33

Variante: 3-Schichten-Referenzarchitektur

Beispiele für Systemfunktionen:

• Verkapselung von plattformspezifischen Funktionen

• Schnittstellen zu Fremdsystemen

Persistenzschicht

Fachlicher Kern

Benutzungsschnittstelle

System- funktionen

Page 34: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 34

Architekturmuster "Interpreter"

Schichtenarchitektur mit Parametrisierung

Beispiele:

• Portable Sprachimplementierung (z.B. Java Virtual Machine)

• Emulation von Systemarchitekturen (z.B. Soft Windows)

Basissystem

Abstrakte Maschine Programm

„Benutzer“

Page 35: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 35

Model-View-Controller

Model (Datenhaltung)

• Benachrichtigt über Änderungen

View (Darstellung der Daten)

• Fordert Update des Models an

• Sendet Nutzereingaben an Controller

Controller (Programmsteuerung)

• Wählt View aus

• Bildet Nutzereingaben auf Modelupdates ab

Page 36: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 36

Architekturmuster für die physikalische Sicht

Physikalische Sicht der Architektur:

• Aufteilung der Funktionalität auf Knoten (Rechner) eines Netzes

• Darstellung meist durch Konfigurationsdiagramme:

Muster (Verteilungsmuster):

• Zentrales System

• Client/Server:

• Two-Tier (Thin-Client, Fat-Client)

• Three-Tier (GUI; Applikationskern, Datenhaltung)

• Föderation

• Cloud Computing

Knoten Kommunikation

Page 37: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 37

Verteilungsmuster "Zentrales System"

Beispiele:

• Klassische Großrechner-("Mainframe"-)Anwendungen

• Noch einfachere Variante: Lokale PC-Anwendungen (identifizieren Zentrale und Terminal)

Zentrales System

"Unintelligentes" Terminal

Page 38: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 38

Verteilungsmuster "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

Server "Intelligenter" Client

Page 39: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 39

"Thin-Client" und "Fat-Client"

Thin-Client:

• Nur die Benutzungsschnittstelle auf dem Client-System

• Ähnlich zu Zentralem System, aber oft Download-Mechanismen

• Anwendungen:

• "Screen-Scraping" (Umsetzung traditioneller Benutzungsschnittstellen in moderne Technologie)

Fat-Client:

• Teile der Fachlogik (oder gesamte Fachlogik) auf dem Client-System

• Hauptfunktion des Servers: Datenhaltung

• Entlastung des Servers

• Zusätzliche Anforderungen an Clients (z.B. Installation von Software)

Page 40: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 40

Verteilungsmuster "Three-Tier Client/Server"

Client:

• Benutzungsschnittstelle

• evtl. Fachlogik

Anwendungsserver:

• evtl. Fachlogik

• Verteilung von Anfragen auf verschiedene Server

Server:

• Datenhaltung, Rechenleistung etc.

Kommunikation unter Servern meist breitbandig.

Anwendungs- Server

"Intelligenter" Client

Server

Page 41: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 41

Verteilungsmuster "Föderation"

Gleichberechtigte Partner (peer-to-peer)

Unabhängigkeit von der Lokation und Plattform von Funktionen

Verteilte kommunizierende Objekte

Knoten 1 Knoten 2

Knoten 5

Knoten 4

Knoten 3

Page 42: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 42

Cloud Computing

Abstraktion von konkreten IT-Resourcen (z. B. Rechenkapazität,

Datenspeicher, Netzwerkkapazitäten oder auch fertige Software)

Resourcen werden dynamisch nach Bedarf zur Verfügung gestellt.

Client Client

Client Client

Dienst Dienst

Dienst

Page 43: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 43

Cloud Computing (2)

Üblicherweise Unterscheidung von 3 Ebenen der Cloud-Dienste:

• Infrastructure as a Service (IaaS):

• Zugang zu virtualisierten Hardware-Ressourcen, wie Rechnern,

Netzwerken und Speicher.

• Platform as a Service (PaaS):

• Zugang zu Programmierungs- oder Laufzeitumgebungen mit

flexiblen, dynamisch anpassbaren Rechen- und

Datenkapazitäten.

• Entwicklung eigener Software-Anwendungen innerhalb einer

Softwareumgebung, die vom Dienstanbieter (Service Provider)

bereitgestellt und unterhalten wird.

• Software as a Service (SaaS) oder Software on demand:

• Zugang zu Software-Bibliotheken und

Anwendungsprogrammen.

Page 44: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 44

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

Page 45: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 45

Steuerungsmuster "Call-Return"

Haupt- programm

Unter- programm 1

Unter- programm 1.1

Unter- programm 1.2

Page 46: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 46

Steuerungsmuster "Master-Slave"

Manager Sensor Benutz.- oberfläche

Aktuator

Page 47: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 47

Steuerungsmuster "Selective Broadcast"

Event Handler

Subsystem 2

Subsystem 1

Subsystem 3

Ereignis e

e e

e

e' e'

Ereignis e'

e'

Page 48: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 48

Steuerungsmuster "Interrupt"

Interrupt Dispatcher

Handler 2

e

Handler 1

Prozess 2

e’

Prozess 1

Verwendet Interrupt-Vektor

Page 49: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 49

Zusammenfassung Architekturmuster

Architekturmuster beschreiben erprobte Strukturierungsformen für

die Architektur eines Systems

Architekturmuster beschreiben:

• Entwurfsstruktur

• physikalische Verteilung

• Kommunikationsformen und –protokolle

Schichtenbildung ist ein mächtiges Strukturierungsmittel

Page 50: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 50

Service-orientierte Architektur

Erleichterung der Entwicklung von großen

Unternehmenssystemen

Orientierung an Geschäftsprozessen

Integration von heterogenen Anwendungen

Bessere Anpassbarkeit, Erweiterbarkeit und Skalierbarkeit

Bessere Weiterentwickelbarkeit und Wartbarkeit

Die Service-orientierte Architektur (SOA) ist ein Architekturparadigma

mit folgenden Zielen:

Page 51: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 51

Begriffsklärung

• “A service oriented architecture is a form of

distributed system architecture. It consists of a set

of components (services) which can be invoked,

and whose interface descriptions can be published

and discovered.”

• “A service is an abstract resource that represents a

capability of performing tasks that form a coherent

functionality from the point of view of provider and

requester entities.”

[nach W3C, 2004]

Page 52: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 52

Services

Ein Service kapselt Zugriff auf die Funktionen und Daten einer

oder mehrerer Applikationen und erbringt bestimmte Leistung

gemäß der Service-Spezifikation.

Service-Spezifikation:

• Servicename und Operationsnamen

• Ein- und Ausgabedaten mit Typen

• Beschreibung der Funktionalität (meist textuell)

• Randbedingungen (Vor- und Nachbedingungen, Invarianten)

• Nicht-funktionale Eigenschaften (z.B. Performance)

• ggf. weitere Informationen (z.B. Release, Herkunft, ...)

Page 53: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 53

Verwendung von Services

Service Provider (Anbieter):

• Bietet die Möglichkeit, Funktionen gemäß Spezifikation zu

nutzen

• Implementierung des Services unter Einhaltung der

Spezifikation austauschbar

Service User (Nutzer):

• Dem Service Provider ggf. unbekannt

• Kann Service auch anders nutzen, als vom Provider

vorgesehen

• Kann Funktion auch im Auftrag weiterer Nutzer ausführen

Page 54: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 54

Service Directory

Aufgaben des Service Directory (Verzeichnis):

• Zentrale Verwaltung von Services

• Publikation von Service-Spezifikationen

• Kategorisierung von Services

• Schnittstellen für Suche nach Services

Page 55: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 55

Referenzarchitektur

Service

Provider Service User

Service

Directory

➊ Spezifikation

publizieren

➋ Service suchen

➌ Spezifikation liefern

➍ Spezifikation abfragen

➎ Service nutzen ➎

“SOA-Dreieck”

Page 56: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 56 5

6

Web Services

Service

Provider

(WDSL)

Service

User

Service

Directory

(UDDI)

SOAP (über HTTP/SMTP)

SOAP = Simple Object Access Protocol

WDSL = Web Service Description Language

UDDI = Universal Description Discovery and Integration

Page 57: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 57 5

7

Designprinzipien

Schnittstellenorientierung:

Spezifikation abstrahiert von Implementierung.

Interoperabilität:

Einheitliche Kommunikationsstandards

Modularität:

Hohe Kohäsion im Service

Niedrige Kopplung zwischen Services

Bedarfsorientierung:

Leistungsumfang entspricht Prozessaktivitäten.

Page 58: Software- und Systementwurf - TU Braunschweig · Hohe Kohäsion einer Komponente erleichtert Verständnis, Wartung und Anpassung. Frühere Ansätze zur Kohäsion wie: •ähnliche

Prof. Dr. Ina Schaefer Software Engineering 1 Seite 58

Zusammenfassung

Softwareentwurf – Ziele und Tätigkeiten

Architekturentwurf

• Prinzipien und Ziele

• 4-Sichten-Modell der Softwarearchitektur

• Architekturmuster für

• Entwurfssicht

• Verteilungssicht

• Ablaufsicht

• Grundbegriffe der Service-orientierten Architekturen