Skript zur Vorlesung Software Engineering I

Download Report

Transcript Skript zur Vorlesung Software Engineering I

Vorlesung
Software Engineering I
Statische Basiskonzepte 2
(Architektur)
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
1
Systemsichten und Modellierung
Statik
Dynamik
Logik
Funktionen
Kontrollstrukturen
Abhängigkeiten
Daten
Zustände
Entscheidungstabellen
Datenstrukturen
Prozesse
Mathematik
Architektur
Zeitliches Verhalten
Regeln
Beschreiben die feste
Struktur des Systems,
die sich während der
Laufzeit nicht ändert.
Beschreiben das
Verhalten und die
Veränderungen
während der Laufzeit.
Beschreiben die
Programmfunktion
logisch und
mathematisch
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
2
Definiton: Software-Architektur
Was ist Software-Architektur?
• J.Siedersleben:
“Es geht um die Frage, wie man Millionen Programmzeilen großer
Systeme so strukturiert, dass im Ergebnis die gewünschte Qualität
erreicht wird: Wartbarkeit, Flexibitlität, Performance und andere
Eigenschaften.„
• H.Balzert:
“eine strukturierte oder hierarchische Anordnung der
Systemkomponenten sowie Beschreibung ihrer Beziehungen“
• T.Posch:
„Softwarearchitektur entstand aus der Notwendigkeit heraus,
immer größer und komplexer werdende Software zu
beherrschen."
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
3
Definition: Software Architektur
Software-Architektur beschreibt die Beziehungen der Fachkomponenten
untereinander, mit weiteren Systemkomponenten, sowie der
Systemumgebung.
•
Auswahlkriterien:
- Art der Aufgabenstellung
- Realisierungsvorgaben
- nicht-funktionale Systemanforderungen
•
Ziel:
- klare Struktur
- eindeutige "Rollen" der Komponenten
- wenige, klar umrissene Kommunikationsschnittstellen
•
Verkürzt kann man sagen, dass eine Architektur regelt, welche
Komponente mit welcher kommuniziert.
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
4
Keinerlei Architektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
5
Prinzip Strukturierung
• Strukturierung = (separation of concerns / Unterteilung
in Aspekte)
• Arten der Unterteilung
– zeitliche Unterteilung: Anforderungsanalyse / Entwurf /
Programmierung / Test
– qualitative Unterteilung: Effizienz / Robustheit / Korrektheit
– perspektivische Unterteilung: Statik /Dynamik / Logik
(Datenstrukturen / Datenfluss / Kontrollfluss)
– Dekomposition (Unterteilung in Bestandteile): Komponente 1,
Komponente 2 (-> diese Unterteilung ist so wesentlich, dass sie
unter dem Prinzip Modularität gesondert betrachtet wird!)
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
6
Prinzip: Strukturierung
Dekomposition
Komposition
Legende
Komponente /
Modul
A
A ruft B auf
B
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
7
Prinzip: Modularität
• Unterteilung eines komplexen Systems in
Komponenten / Module
– Anwendungsbeispiele
• Schreiben eines Berichts (Gliederung)
• Bau eines Autos (Arbeitsteilung)
–
–
–
–
–
Modularität als Ergebnis der Dekomposition
Modularität als Grundlage der Komponierbarkeit
Modularität als Voraussetzung für Wiederverwendung
Modularität als Voraussetzung für lokale Änderungen
Bestandteile eines Moduls
• Operationen
• Objekttypen
• Beziehungen zwischen Objekttypen
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
8
Prinzip: Modularität ff.
• Kohäsion (cohesion). Ein Maß für die Stärke
des inneren Zusammenhangs eines Moduls. Je
höher die Kohäsion ist, desto besser.
• Kopplung (coupling). Ein Maß für die
Abhängigkeit zwischen zwei Modulen. Die
Modularisierung ist umso besser, je geringer die
wechselseitige Kopplung zwischen den Modulen
ist.
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
9
Prinzip: Modularität ff.
Ziel von Modularität:
– hohe Kohäsion
– geringe Kopplung
– Geheimnisprinzip („Information Hiding“)
d.h.
– enger interner Zusammenhalt innerhalb eines Moduls
– wenig Wechselwirkungen mit anderen Modulen
– außerhalb des Moduls nur bekannt, was die
Komponente leistet. Wie sie ihre Leistungen erbringt,
wird nach außen verborgen.
Nur dann
– Wiederverwendung in kleinen Teilen
– lokale Änderbarkeit
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
10
Prinzip: Modularität ff.
hohe Kohäsion /
geringe Kopplung
geringe Kohäsion /
geringe Kopplung
hohe Kohäsion /
hohe Kopplung
geringe Kohäsion / hohe Kopplung
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
11
Prinzip: Abstraktion
– Trennung von wichtigen und unwichtigen Merkmalen
– „Unterschlagung“ / „Wegabstraktion“ der unwichtigen
und Betonung der wichtigen zum Zweck der
Konzentration auf das Wesentliche
– Gängige Abstraktionen
• die Signatur einer Operation abstrahiert von der Realisierung
der Operation
• die Konstrukte einer Programmiersprache abstrahieren von
Prozessorendetails
• ein Datenflussdiagramm abstrahiert von den Aufrufstrukturen
zwischen Komponenten
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
12
Prinzip: Abstraktion ff.
Abstraktion Straßenkarte:
wichtig
unwichtig
für mit dem Auto Reisende
Straßen
Radwege
für mit dem Zug Reisende
Gleise, Hauptbahnhöfe
Straßen, Radwege
Abstraktion Software:
für den Anwender
für den Vorstand
für den Entwickler
Version 17.07.2015
wichtig
unwichtig
Oberflächen,
Funktionalität
Rentabilität
Interne Struktur
Schnittstellen zwischen
Komponenten
Schulungsaufwand für
neue Software
Software Engineering I
VE 09: Statische Basiskonzepte 2
Plattform
Dozenten:
Markus Rentschler
Andreas Stuckert
13
Prinzip: Änderungsnotwendigkeit
• Software ist Gegenstand von Änderungen.
• Ursachen für Änderungen:
– (Geplante) Inkrementelle Entwicklung
– Beseitigung von Fehlern (korrektive Wartung)
– Verbesserung nichtfunktionaler Eigenschaften
(perfektive Wartung)
– Erweiterung der Funktionalität wegen sich ändernder
Rahmenbedingungen (adaptive Wartung)
– (Ungeplante) Erweiterung der Funktionalität wegen
Erkenntnisgewinn während der Entwicklung
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
14
Prinzip: Objektorientierung
• Die Programmstruktur besteht nicht direkt aus Abläufen,
sondern aus Objekten mit Eigenschaften und Methoden
(Daten und darauf operierenden Funktionen)
• Das Programm besteht aus Interaktionen zwischen den
Objekten
• Die Objekte werden stets nur von außen betrachtet und
verbergen ihren inneren Aufbau.
•  Modularität und Abstraktion
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
15
Notationen für Architektur
• Blockdiagramme
UML: Implementierungsdiagramme, auch
Klassendiagramm als kleinste modulare
Einheit aus Architektursicht.
• Konfigurationsdiagramm
UML: Verteilungsdiagramm
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
16
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 (Aufrufschnittstelle,
Kommunikationsprotokoll)
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
17
UML:Implementierungsdiagramm
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
18
Konfigurationsdiagramme
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
19
UML: Verteilungsdiagramm
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
20
Architekturmuster und -patterns
•
Allgemeine Definitionen
–
–
–
•
Arten von Architekturmustern
–
–
–
–
–
–
•
Muster (Patterns) beschreiben häufig auftretende Entwurfsprobleme und dazu universell
verwendbare generische Lösungsschemen.
Architekturmuster beziehen sich auf die Architektur von Softwaresystemen.
Entwurfsmuster (Design Patterns) sind weniger stark abstrahiert und beziehen sich eher
auf die Softwarekodierung. Die bekanntesten Design Patterns sind von GoF beschrieben
(Gang of Four: Gamma, Helm, Johnson und Vlissides).
Struktur (Layer, Pipes and Filters, Blackboard)
Verteilte Systeme (Broker, P2P, Client-Server)
Interaktive Systeme (MVC / Model-View-Controller, Presentation-Abstraction-Control)
Adaptierbare Systeme (Microkernel, Reflection)
Ereignisverarbeitung (Proactor, Reactor)
Synchronisation (Object Synchronizer)
Arten von Entwurfsmustern (Design Patterns)
–
–
–
Erzeuger-Muster (Prozess der Objekterzeugung: Abstract Factory, Builder, Factory Method,
Prototype, Singleton)
Struktur-Muster (Zusammenbau von Klassen und Objekten: Adapter, Bridge, Composite,
Decorator, Facade, Flyweight, Proxy)
Verhaltens-Muster (Algorithmen sowie Aufgabenteilung zwischen Klassen: Iterator, Mediator,
Observer, State, Strategy, Template Method, Visitor)
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
21
Architekturmuster
Allgemeine Strukturierung
– Schichten
– Pipes and Filter
– Datenhaltung (Blackboard)
Strukturierung von Realzeitsystemen
– Monitorstruktur
Strukturierung verteilter Systeme
– Peer-To-Peer
– Client-Server
– Mehrschichtige Architekturen
– Broker
Strukturierung Interaktiver Systeme
– Model-View-Controller (MVC)
– Presentation-Abstraction-Control (PAC)
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
22
Allgemein: Schichtenarchitektur
Verboten!
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
23
Allgemein: Pipe and Filter Architektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
24
Allgemein: Datenhaltungsarchitektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
25
Realzeit: Monitor-Architektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
26
Verteilt: Peer-to-Peer-Architektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
27
Verteilt: Client-Server-Architektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
28
Verteilt: Broker-Architektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
29
Broker - Architektur
• Entkopple Client und Server durch eine so genannte
Broker–Komponente
– Server registrieren sich beim Broker
– Server macht seine Dienste durch eine Schnittstelle bekannt
• Clients greifen auf die Dienste des Servers durch
Aufträge über den Broker zu
– Broker lokalisiert passenden Server, gibt Auftrag weiter und
– Ergebnisse/Ausnahmen an den Client zurück
• Hinzufügen, Entfernen, Austausch und Migration von
Komponenten zur Laufzeit
• Für Entwickler und Benutzer sollte es zwischen
zentralisierten Systemen und verteilten Systemen keinen
Unterschied geben
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
30
Broker - Architektur: CORBA
• CORBA – Common Object Request Broker Architecture
• Standardarchitektur für objekt-orientiertes, verteiltes Rechnen der
Object Management Group (OMG) im Rahmen der OMA
• Interoperabilität zwischen Objekten durch
Schnittstellenbeschreibung in Interface Definition Language (IDL)
• Objektimplementierungen in verschiedenen
Implementierungssprachen durch Abbildung des Objekt–Modells auf
Elemente der IDL
• plattformübergreifende Kommunikation durch CORBA–Architektur
als Instanz des Broker–Architekturmusters
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
31
Mehrschichten-Architektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
32
Mehrschichtenarchitektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
33
Zwei-Schichten-Architektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
34
Drei-Schichten-Architektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
35
Schichtenmodelle zur Netzwerkkommunikation
• Als das OSI-Modell entwickelt wurde, sollte es zum bereits
existierenden DoD-Modell abwärtskompatibel sein.
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
36
OSI Schichtenarchitektur
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
37
Architekturmuster: Model-View-Controller
Strukturierung in die drei Einheiten Datenmodell (engl. model), Präsentation
(engl. view) und Programmsteuerung (engl. controller). Ziel des Musters ist ein
flexibler Programmentwurf, der eine spätere Änderung oder Erweiterung
erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten
ermöglicht.
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
38
MVC: Beispiel
Version 17.07.2015
Software Engineering I
VE 09: Statische Basiskonzepte 2
Dozenten:
Markus Rentschler
Andreas Stuckert
39