Software- und Systementwurf · PDF file(Gleichwertige Notation in UML:...

49
Dr. Ina Schaefer Software Systems Engineering Technische Universität Braunschweig (Folien von Prof. B. Rumpe) Software- und Systementwurf - Softwarearchitektur - Software Engineering 1 WS 2011/2011

Transcript of Software- und Systementwurf · PDF file(Gleichwertige Notation in UML:...

Dr. Ina Schaefer

Software Systems Engineering

Technische Universität Braunschweig

(Folien von Prof. B. Rumpe)

Software- und Systementwurf

- Softwarearchitektur -

Software Engineering 1

WS 2011/2011

Dr. Ina Schaefer Software Engineering 1 Seite 2

Überblick

Softwareentwurf

• Ziele

• Entwurfsprinzipien

Architekturentwurf

Architekturmuster

Unified Modeling Language (UML) - Überblick

Dr. Ina Schaefer Software Engineering 1 Seite 3

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

Dr. Ina Schaefer Software Engineering 1 Seite 4

Entwurf

Von der Analyse zum Entwurf

Analyse

Anforderungs-Ermittlung

Anforderungs-Spezifikation(Lastenheft)

System-Spezifikation(Pflichtenheft)

System-Modellierung

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

Gesamtstrukturdes Systems(Grobentwurf)

Detailstrukturdes Systems(Feinentwurf)

Dr. Ina Schaefer Software Engineering 1 Seite 6

Arbeitsteilung beim Entwurf

Architekturentwurf

EntwurfSubsystem 1

EntwurfSubsystem 2

EntwurfSubsystem ...

Entwurf der Komponenten

EntwurfSchnittstelle1 2

EntwurfSchnittstelle 2 ...

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

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

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

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

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

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

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.

Dr. Ina Schaefer Software Engineering 1 Seite 14

Beispielarchitektur

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 Struktursicht

Ablaufsicht Physikalische Sicht

Szenarien

Dr. Ina Schaefer Software Engineering 1 Seite 16

Bestandteile der 4+1 Sichten

Logische Sicht Struktursicht

Ablaufsicht Physikalische Sicht

Grobentwurf

Feinentwurf

Szenarien• Use-Cases

• Klassenmodell• Verfeinerung desAnalysemodells

• Prozesse• Koordination

• Subsysteme• Schnittstellen

• Komponenten• Hardwaresysteme• Netze

Dr. Ina Schaefer Software Engineering 1 Seite 17

Primäre Zielgruppe und Aufgabe der Sichten

Logische Sicht Struktursicht

Ablaufsicht Physikalische Sicht

• Endanwender • Programmierung• Wartung

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

• Kommunikation• Verteilung• Auslieferung, Installation

Grobentwurf

Feinentwurf

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 Objektebestimmter Klassen.

• Schnittstelle ist klardefiniert.(z.B. Aufrufschnittstelle,Kommunikationsprotokoll)

UmfassendesSubsystem

Schnittstelle

Subsystem

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:UIAnwendung

Bank

UI = User Interface = Benutzerschnittstelle/ BenutzeroberflächeGUI = Graphical User Interface = grafische Benutzerschnittstelle

Dr. Ina Schaefer Software Engineering 1 Seite 20

Komponenten

optionaler grafischer StereotypName der

Komponente

bereitgestellte Schnittstelle

benötigte Schnittstelle

«component»

WebInterface

Database

Webservice

HTTP

Dr. Ina Schaefer Software Engineering 1 Seite 21

Komposition von Komponenten

Komponente

bereitgestellteSchnittstelle

ZusammengesetzteKomponente

CB

A

DPort

benötigteSchnittstelle

A

CB

D

analogesBlockdiagramm

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.

SpeicherndesSystem

LokalesKommunikationsnetz

Datenkommunikations-Netz

Rechner, Knoten

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önnenzugeordnet werden

Node (Knoten)

Dr. Ina Schaefer Software Engineering 1 Seite 24

PhysikalischeKonfiguration

Blockdiagramm

PC1 ... PCn PDA1 PDAm

Termin-Server

Anzeigetafel-Steuerung

PC Client PDA Client

PDA Sync

Termin-ManagerDaten-Export

Termin-Datenbank

Beispiel Terminverwaltung

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

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.

Beispiele zur konkreten technischen Realisierung siehe später(MVC-Architektur, Entwurfsmuster)

Subsystem A

(z.B. Benutzungs-oberfläche)

Subsystem B

(z.B. fachlicher Kern)

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

Dr. Ina Schaefer Software Engineering 1 Seite 28

Architekturmuster für die Struktursicht

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

SubsystemDatenfluss-Schnittstelle

Aufrufschnittstelle

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

Dr. Ina Schaefer Software Engineering 1 Seite 30

Beispiel: Compiler-Architektur

Kombination von Ketten

Scanner Parser Code-Generator

Fehler-Ausgabe

Quell-Programm Tokens Syntaxbaum

Ziel-Programm

Fehler-meldungen

Symbol-tabelle

Fehler-meldungen

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“

Dr. Ina Schaefer Software Engineering 1 Seite 32

Architekturmuster "Interpreter"

Schichtenarchitektur mit Parametrisierung

Beispiele:

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

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

Basissystem

Abstrakte MaschineProgramm

„Benutzer“

Dr. Ina Schaefer Software Engineering 1 Seite 33

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

Dr. Ina Schaefer Software Engineering 1 Seite 34

Variante: 3-Schichten-Referenzarchitektur

Beispiele für Systemfunktionen:

• Verkapselung von plattformspezifischen Funktionen

• Schnittstellen zu Fremdsystemen

Persistenzschicht

Fachlicher Kern

Benutzungsschnittstelle

System-funktionen

Dr. Ina Schaefer Software Engineering 1 Seite 35

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

Knoten Kommunikation

Dr. Ina Schaefer Software Engineering 1 Seite 36

Verteilungsmuster "Zentrales System"

Beispiele:

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

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

ZentralesSystem

"Unintelligentes"Terminal

Dr. Ina Schaefer Software Engineering 1 Seite 37

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

Dr. Ina Schaefer Software Engineering 1 Seite 38

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

Dr. Ina Schaefer Software Engineering 1 Seite 39

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.

Heute üblich!

Anwendungs-Server

"Intelligenter"Client

Server

Dr. Ina Schaefer Software Engineering 1 Seite 40

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

Dr. Ina Schaefer Software Engineering 1 Seite 41

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 42

Steuerungsmuster "Call-Return"

Haupt-programm

Unter-programm 1

Unter-programm 1.1

Unter-programm 1.2

Dr. Ina Schaefer Software Engineering 1 Seite 43

Steuerungsmuster "Master-Slave"

Manager SensorBenutz.-oberfläche

Aktuator

Dr. Ina Schaefer Software Engineering 1 Seite 44

Steuerungsmuster "Selective Broadcast"

EventHandler

Subsystem2

Subsystem1

Subsystem3

Ereignis e

ee

e

e'e'

Ereignis e'

e'

Dr. Ina Schaefer Software Engineering 1 Seite 45

Steuerungsmuster "Interrupt"

InterruptDispatcher

Handler2

e

Handler1

Prozess2

e’

Prozess1

VerwendetInterrupt-Vektor

Dr. Ina Schaefer Software Engineering 1 Seite 46

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 47

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 48

Historische Entwicklung von UML

Dr. Ina Schaefer Software Engineering 1 Seite 49

Diagrammtypen der UML