Softwarearchitektur - Software and Systems Engineering

Transcription

Softwarearchitektur - Software and Systems Engineering
Softwarearchitektur
(Architektur: αρχή = Anfang, Ursprung + tectum = Haus, Dach)
4. Sichten bei der Softwarearchitektur – Teil 1
Vorlesung Wintersemester 2010 / 2011
Technische Universität München
Institut für Informatik
Lehrstuhl von Prof. Dr. Manfred Broy
Dr. Klaus Bergner, Prof. Dr. Manfred Broy, Dr. Marc Sihling
Inhalt
Motivation und Eigenschaften
Was sind Sichten?
Überblick über die Sichten
Fachliche Sicht
Vom Analysemodell zum fachlichen Entwurf
Bildung fachlicher Komponenten
Technische Sicht
Technische Komponenten und Schnittstellen
Umsetzung der Fachlichkeit
Verteilungssicht
Verteilung der Komponenten
Zusammenfassung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.2
Inhalt
Motivation und Eigenschaften
Was sind Sichten?
Überblick über die Sichten
Fachliche Sicht
Vom Analysemodell zum fachlichen Entwurf
Bildung fachlicher Komponenten
Technische Sicht
Technische Komponenten und Schnittstellen
Umsetzung der Fachlichkeit
Verteilungssicht
Verteilung der Komponenten
Zusammenfassung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.3
Warum Sichten?
Komplexe Systeme lassen sich nicht übersichtlich mit
einer einzigen Beschreibung erfassen.
Unterschiedliche Rollen im Bezug auf das System
arbeiten mit unterschiedlichen Informationen.
Nötig sind geeignete Architekturbeschreibungen als
Kommunikations- und
Diskussionsplattform
Plan für Entwurf und
Implementierung
für unterschiedliche
Zielgruppen und
Aufgaben.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.4
Was sind Sichten?
Ein System wird aus mehreren Blickwinkeln betrachtet, die jeweils
unterschiedliche Schwerpunkte haben.
Je nach Blickwinkel treten
bestimmte Eigenschaften in den
Vordergrund, andere werden nur
grob oder gar nicht dargestellt.
Eine Beschreibung für einen
definierten Blickwinkel heißt
Sicht.
IEEE STD 1471-2000: A view is a
representation of a whole system
from the perspective of a related
set of concerns.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
aus [AC98]
3.5
Beispiel: Baupläne
Bei einem Gebäude sind viele
unterschiedliche Sichten zu
berücksichtigen:
Grundriss
Aufrisse
Traglasten
Elektroinstallationsplan
Installationsplan
Fluchtwegeplan
etc.
Jede ist für bestimmte
Aufgaben und Rollen
zugeschnitten.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.6
Eigenschaften von Sichten
Eine Sicht stellt jeweils bestimmte Eigenschaften eines
Systems dar.
Sichten sind typischerweise nicht völlig unabhängig
voneinander – bestimmte Informationen aus einer Sicht
können sich in anderen Sichten wiederfinden.
Widersprechen sich zwei Sichten nicht (und beschreiben
damit ein mögliches System), so heißen sie konsistent
miteinander.
Für die einzelnen Sichten können jeweils geeignete
Beschreibungstechniken verwendet werden.
Eine Beschreibungstechnik kann aber auch für
unterschiedliche Sichten verwendet werden.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.7
Arten von Sichten auf die Architektur eines Systems
Wir unterscheiden in der Folge folgende Sichten:
Spezifikationssichten
Fachliche Sicht
Technische Sicht
Verteilungssicht
Thema der heutigen
Doppelstunde
Erstellungssichten
Entwicklungssicht
Testsicht
Bereitstellungssicht
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
Thema der nächsten
Doppelstunde
3.9
Fachliche Sicht - Überblick
Zweck
Inhalte
Darstellung der Konzepte des Anwendungsgebiets möglichst
unabhängig von einer softwaretechnischen oder plattformspezifischen Lösung
Fachliche Komponenten inklusive Schnittstellen und Verhalten
Beziehungen zwischen fachlichen Komponenten
Systemgrenze und Anbindung existierender fachlicher
Komponenten
Beschreibung
Überblick möglich durch CRC-Karten, Box-and-Line-Diagramme
objektorientierte Modellierungstechniken (UML + Erweiterungen)
in Spezialfällen formale Techniken (OCL, ADLs, DSLs etc.)
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.10
Technische Sicht - Überblick
Zweck
Inhalte
Darstellung der softwaretechnischen Lösung für das System
inklusive der Umsetzung der fachlichen Sicht
Technische Komponenten des Systems und deren Schnittstellen
Beziehungen zwischen den Komponenten, inklusive der
Abbildung der fachlichen Komponenten in die technische Sicht
Beziehung zu Basissoftware und Abbildung auf die Hardware
Beschreibung
Überblick möglich durch Box-and-Line-Diagramme
objektorientierte Modellierungstechniken (UML + Erweiterungen)
Interface Definition Languages (IDLs)
Quellcode-Fragmente für Details von Mechanismen
in Spezialfällen formale Techniken (OCL, ADLs, DSLs etc.)
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.11
Fachliche und Technische Sicht
top-down
fachliche
Anforderungen
Architekturanalyse
Re
1
1
Systemarchitektur,
Hardware
Re
- N ame : String
Rep
- Name : String
*
1
0..1
Proj
*
- Name : String
- OEFStream : String
*
1
1
+SubProj ect
*
Co
*
Com
- Name : String
- Kind : int
- ClassName : String
Fachliche
Sicht
C om
1
*
+SubComponent
1
*
Attr
- Name : String
- Type : String
Te
- Name : String
- Line : String
1..*
1
0..1
*
File
S
S
*
0..1
-
+Super Component
1
*
+ SubC omponent
<< Enum>>
Automa
1
+SourcePort
+OutChannel
1
+ DestinationPort
0..1
Fo
- Name : String
- Style : int
- Size : int
P
- X : int
- Y : int
0..1
Chan
- Name : String
- Type : String
- DisplayFont : Font
- DrawType : int
- TextBoxSize : Dimension
- TextBoxLocation : Point
< <Enum> >
Line
+$ STRAIG HT : LineStyle
+$ SNAPPED : LineStyle
+$ SLANTED : LineStyle
+$ LOOP : LineStyle
bottom-up
existierende
Komponenten &
Systeme
< < Enum> >
Dire
+ $ IN : Dir ection
+ $ OUT : Direction
Auto
- N ame : Stri ng
- Kind : int
- C lassName : Str ing
*
0..1
0..1
*
Par
- N ame : Str ing
Te
- Line : String
1..*
1
0..1
*
Fil e
S
S
*
0..1
Stat
- Name : String
- Pr edicate : Stri ng
- EntryAction : String
- ExitActi on : Stri ng
- IsH istory : bool ean
- IsInitial : boolean
- Location : Point
- Si ze : D imension
- Border : int
- FileName : String
1
1
*
*
*
Inte
Attr
- N ame : String
- Type : Str ing
1
*
Inte
- Name : String
- Condition : String
- Direction : int
- Location : Point
1
+SourcePoint
Di
- Heig ht : int
- Width : int
+ InChannel
Proj
*
Com
- N ame : String
- Location : Point
- Size : D imensi on
- Border : i nt
- D isplayFont : Font
- TextBoxLocation : Point
- TextBoxSize : D imensi on
1
- FileName : String
1
+ $ IMPLEMENTATION : AutomatonKind
+ $ CLASSSPEC : AutomatonKind
+ $ TYPESPEC : AutomatonKind
1
0..1
*
Stat
Name : String
Predicate : Str ing
EntryAction : String
ExitAction : String
IsHistory : boolean
IsInitial : boolean
Location : Point
Size : Dimension
Border : int
*
Port
- N ame : String
- D irection : Direction = -1
- Type : String
- Location : Point
# DisplayFont : Font
- ShowName : boolean
R ep
1
1
Technische
Sicht
0..1
0..1
*
Par
- Name : String
- Location : Point
- Size : Dimension
- Border : int
- DisplayFont : Font
- TextBoxLocation : Point
- TextBoxSize : Dimension
1
Com
- Name : String
- OEFStr eam : String
- OEFAnnotati on : Str ing
1
0..1
1
0..1
+SuperComponent
1
*
*
Co
- N ame : Stri ng
Auto
- Name : String
- OEFStream : String
- OEFAnnotation : String
0..1
1
Proj
- Name : String
- OEFStr eam : String
1
1
*
- N ame : String
1
*
+Super Project
1
Proj
0..1
1
1
1
+ SuperProject
+SubProject
+ OutSeg ment
*
Por t
- N ame : String
- D irecti on : D ir ection = -1
- Type : Str ing
- Location : Point
# D isplayFont : Font
- ShowN ame : bool ean
1
+ Sour cePort
+OutC hannel
1
+DestinationPoint
+ InSeg ment
1
+ DestinationPor t
0..1
- N ame : String
- Input : String
- O utput : String
- PreCondition : String
- PostCondition : String
- Action : String
- IsOuter : boolean
- C ontrolPointOne : Point
- C ontrolPointTwo : Point
Di
- H ei ght : int
- Width : int
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
P
- X : int
- Y : int
<< Enum> >
Line
+$ STR AIGH T : LineStyle
+$ SN APPED : Li neStyle
+$ SLANTED : Li neStyle
+$ LOOP : LineStyle
Wiederverwendung
fachlich
Fo
- N ame : Str ing
- Style : int
- Size : int
0..1
C han
- N ame : Stri ng
- Type : String
- D isplayFont : Font
- D rawType : int
- TextBoxSize : Di mension
- TextBoxLocati on : Point
*
Tran
< <Enum>>
Automa
+ $ IM PLEM ENTATION : AutomatonKind
+ $ CLASSSPEC : AutomatonKi nd
+ $ TYPESPEC : AutomatonKind
+InC hannel
<< Enum> >
D ire
+ $ IN : D irecti on
+ $ OU T : D irection
- N ame : Str ing
- C ondition : String
- D ir ection : int
- Location : Poi nt
1
+ Sour cePoint
1
+ D estinationPoi nt
+OutSegment
*
*
+InSeg ment
Tr an
- N ame : Stri ng
- Input : String
- Output : Str ing
- PreCondition : String
- PostC ondition : Str ing
- Acti on : Str ing
- IsOuter : boolean
- C ontrolPointOne : Poi nt
- C ontrolPointTwo : Poi nt
Applikationsserver,
Datenbanken,
Transaktionsmonitore
technisch
3.12
Trennung von fachlicher und technischer Sicht: Vorteile
Entwurf, Realisierung und Validierung der Fachlichkeit
werden vereinfacht
technische Details müssen nicht betrachtet werden
wesentliche Reduzierung der Komplexität
Einbeziehung der Anwender wird möglich
Möglichkeit, die fachliche Sicht auf unterschiedliche
technische Architekturen abzubilden
fachliches Verhalten bleibt bei allen Realisierungen gleich
Evolution und Optimierungen der technischen Architektur
unabhängig von der Fachlichkeit möglich
langlebige, wertvolle Geschäftslogik kann unabhängig von
speziellen Techniken leben und weiterentwickelt werden
Integration unterschiedlicher Systeme vereinfacht
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.13
MDA – Model-Driven Architecture
Ansatz der Object Management Group (OMG) zur
Modellierung bei der Software-Entwicklung
Unterscheidet drei aufeinander aufbauende Sichten
Computation-Independent Model (CIM) = Analysemodell
- Anforderungen und Umgebung eines Systems
- Abstrahiert von Struktur und Informationsverarbeitung
Platform-Independent Model (PIM) = Fachliche Architektur
- Spezifiziert Struktur und Informationsverarbeitung
- Enthält nur die Anteile, die für alle Plattformen gleich sind
Platform-Dependent Model (PSM) = Technische Architektur
- Spezifiziert konkrete Mechanismen für spezielle Plattform
Entwicklung erfolgt mittels Modelltransformationen
Teile von MDA sind standardisiert: MOF, XMI, UML, QVT
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.14
Inhalt
Motivation und Eigenschaften
Was sind Sichten?
Überblick über die Sichten
Fachliche Sicht
Vom Analysemodell zum fachlichen Entwurf
Bildung fachlicher Komponenten
Technische Sicht
Technische Komponenten und Schnittstellen
Umsetzung der Fachlichkeit
Verteilungssicht
Verteilung der Komponenten
Zusammenfassung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.15
Fragestellungen in der fachlichen Sicht
1. Wie wird die fachliche Funktionalität repräsentiert?
Welche Operationen gibt es und wo hängen sie?
Wie sind die fachlichen Abläufe?
2. Wie sind die Schnittstellen der fachlichen
Komponenten?
Welche Operationen sind nach außen zugänglich?
3. Wie lassen sich fachliche Komponenten bilden?
Wann werden Komponenten gebildet?
Wie erfolgen Zugriff auf und Verwaltung von Komponenten?
Welche Beziehungen haben die Komponenten untereinander?
Wie lassen sich Komponenten voneinander entkoppeln?
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.16
Vom Analysemodell zum fachlichen Entwurf
Die genannten Fragestellungen werden in einem iterativen Prozess
beantwortet:
Start mit erstem fachlichen Analyse-Modell basierend auf den
Anforderungen (meist in Form eines Klassendiagramms mit den Daten
des Systems und zusätzlicher Anwendungsfälle und Aktivitäten).
Schrittweise Verfeinerung des Modells durch
- Hinzufügen von Operationen
- Schnittstellenbildung
- Komponentenbildung
Das entstehende Modell ist plattformunabhängig, zielt aber
typischerweise bereits auf einen bestimmten Architekturstil ab.
Dazu enthält es bereits Konzepte, die seine Abbildung auf die
Technik erleichtern.
OMG-Terminologie: CIM-to-PIM-Mapping.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.17
Anwendungsbeispiel: eSteuer 2010
Neues Informationssystem „eSteuer 2010“ für die Berechnung
neuer Steuern in Finanzämtern
Steuern
Grundsteuer
Hundesteuer
leicht erweiterbar für beliebige neue Steuerarten
Wegfall von Steuerarten soll grundsätzlich ebenfalls möglich sein
Funktionalität und Anwendungsfälle von eSteuer 2010
Steuerzahler verwalten
Grundsteuerinformationen verwalten, Grundsteuer berechnen
Hundesteuerinformationen verwalten, Hundesteuer berechnen
Steuerermäßigungen für Wachhunde auf Fremdgrundstücken
beachten!
Anwender des Systems sind Finanzbeamte
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.18
Ergebnis der Anforderungsanalyse - Funktionalität
Anwendungsfälle und Ablaufspezifikationen
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.19
Ergebnis der Anforderungsanalyse - Daten
Fachliches Datenmodell in Form eines UML-Klassendiagramms
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.20
Zuordnung der Funktionalität
In der fachlichen Sicht wird die Funktionalität in Form
von Operationen der modellierten Klassen dargestellt.
Hier gibt es im Wesentlichen zwei Möglichkeiten:
1. Operationen können direkt an den Daten-Objekten (EntityKlassen) hängen.
2. Es können eigene Control-Klassen für Operationen gebildet
werden.
Beobachtung: Daten sind meist stabiler als
Funktionalität.
Als Strategie ist deshalb sinnvoll, instabile Funktionalität eher
auszulagern und nur stabile Basisfunktionalität bei den EntityKlassen zu belassen.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.21
Zuordnung der Funktionalität im Beispiel
berechneHundesteuer ist eine instabile
Operation (das Berechnungsschema kann sich
ändern) und wird deshalb einer neuen
Control-Klasse Steuerrechner zugeordnet
berechneAnzahlBewachungen
ist eine stabile Operation und wird
deshalb der bestehenden EntityKlasse Hundesteuerzahler
zugeordnet
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.22
Navigations- und Verwaltungsoperationen
Neben den Operationen für die Aktionen der Anwendungsfälle gibt es auch Operationen, die sich aus der
Umsetzung des Klassendiagramms ergeben.
Zugriff auf die Daten
typischerweise über die Einführung von get- und setOperationen für die Attribute
Beispiel: Operationen getGewicht():int und
setGewicht(int):void der Klasse Hund
Verwaltung der Beziehungen zwischen Klassen
typischerweise über die Einführung von Navigations- und
Verwaltungsmethoden
Beispiel: Operationen getHunde():Collection,
addHund(Hund):void und removeHund(Hund):void
der Klasse Hundesteuerzahler
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.23
Zugriffs- und Verwaltungsoperationen
Verwaltung der Instanzen
typischerweise über die Einführung von Verwaltungsklassen
Beispiele: Verwaltungsklasse HundesteuerManager mit
Operationen zum Erzeugen, Löschen und Suchen von
Hundesteuerzahlern und Hunden
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.24
Zwischenstand der fachlichen Sicht
Ergebnis: erstes objektorientiertes EntwurfsModell, zeigt reine Entwurfskonzepte, keine
Implementierungsklassen
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.25
Validierung durch Beispiele
Für die Operationen im Klassendiagramm werden nun fachliche
Abläufe durchgespielt und
beispielhafte Objektstrukturen
gebildet.
Klassen zur Modellierung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
Beispiel-Instanzen zur Validierung
3.26
Inhalt
Motivation und Eigenschaften
Was sind Sichten?
Überblick über die Sichten
Fachliche Sicht
Vom Analysemodell zum fachlichen Entwurf
Bildung fachlicher Komponenten
Technische Sicht
Technische Komponenten und Schnittstellen
Umsetzung der Fachlichkeit
Verteilungssicht
Verteilung der Komponenten
Zusammenfassung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.27
Schnittstellenbildung
Zur Vorbereitung der Komponentenbildung werden (möglichst
schmale) Schnittstellen definiert und mit geeigneten
Beschreibungstechniken beschrieben.
Die Schnittstellen enthalten nur die Operationen, die später von der
Komponente nach außen angeboten werden.
Gegebenenfalls kann es unterschiedliche Sätze von Schnittstellen
geben (z.B. Schnittstellen mit extern zugänglichen Operationen,
Schnittstellen mit nur komponentenintern zugänglichen
Operationen).
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.28
Bildung fachlicher Komponenten
Die Bildung übergreifender fachlicher Komponenten
erfolgt nach folgenden Gesichtspunkten:
Lose Kopplung – starke Bindung
Wiederverwendbarkeit für andere Systeme
Einfache Austauschbarkeit der Komponente
Konfigurierbarkeit des Systems und der Komponente
In einem ersten Schritt wird dazu das Klassendiagramm
partitioniert.
Person und Rolle stellen Basisfunktionalität für viele
Anwendungen zur Verfügung eigene Komponente.
Für die unterschiedlichen Steuerarten werden jeweils eigene
Komponenten erstellt, um flexibel auf Änderungen reagieren zu
können. Außerdem kann dann jede derartige Komponente von
den betreffenden Fachleuten realisiert und getestet werden.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.29
Partitionierung am Beispiel
Komponente
Personenverwaltung
Komponente
Hundesteuerverwaltung
Komponente Grundsteuerverwaltung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.30
Abhängigkeiten zwischen Komponenten definieren
Der Entwurf der Abhängigkeitsstruktur erfolgt nach
folgenden Gesichtspunkten:
Komponenten mit Basisfunktionalität sollten von möglichst
wenig anderen Komponenten abhängig sein. Umgekehrt: Je
instabiler eine Komponente ist, desto weniger Komponenten
sollten von ihr abhängig sein.
- Fehlerfreiheit
- Minimierung des Aufwands bei Änderungen
- Auslieferung unterschiedlicher Systemkonfigurationen
Zyklen in der Abhängigkeitsstruktur sollten möglichst vermieden
werden
- leichtere Austauschbarkeit von Komponenten
- Weglassen von Komponenten möglich
- einfachere Abstimmung der Teams während der Entwicklung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.31
Abhängigkeitsstruktur im Anwendungsbeispiel
Im Beispiel gibt es drei Komponenten:
Personenverwaltung als Basiskomponente
Grundsteuerverwaltung als relativ stabile Komponente
Hundesteuerverwaltung als relativ instabile Komponente
Die Ahängigkeitsstruktur wird im Beispiel wie folgt entworfen:
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.32
Bidirektionale Abhängigkeiten
Bidirektional navigierbare Assoziationen resultieren normalerweise in
zyklischen Abhängigkeiten zwischen den betreffenden Komponenten.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.33
Aufbrechen von bidirektionalen Abhängigkeiten
Diese Abhängigkeiten lassen sich beispielsweise über die Einführung
einer neuen finde-Operation in dem Manager der Komponente
aufbrechen.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.34
Kommunikation von Basis- zu abhängigen Komponenten
Basiskomponenten können abhängige Komponenten nicht über
deren eigene Schnittstellen rufen, da sich sonst eine zyklische
Abhängigkeit ergäbe.
Möglich ist jedoch beispielsweise eine Kommunikation über das
Observer-Pattern durch Ableiten von der Schnittstelle Rolle.
addRolle entspricht
register-Operation
beim update
erfolgt Zugriff
auf geänderte
Daten in
Person
setVermoegen löst
update-Aufrufe aus
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.35
Resultierende Komponenten
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.36
Mögliche Verbindungsstruktur der Komponenten
Inhalt
Motivation und Eigenschaften
Was sind Sichten?
Überblick über die Sichten
Fachliche Sicht
Vom Analysemodell zum fachlichen Entwurf
Bildung fachlicher Komponenten
Technische Sicht
Technische Komponenten und Schnittstellen
Umsetzung der Fachlichkeit
Verteilungssicht
Verteilung der Komponenten
Zusammenfassung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.38
Fragestellungen in der technischen Sicht
1. Wie wird die technische Funktionalität repräsentiert?
Wie werden die nicht-funktionalen Anforderungen erfüllt?
Welche Komponenten und Schnittstellen gibt es?
Welche Querschnittsmechanismen und Basistechniken gibt es?
Wie arbeiten sie zusammen?
Vorgehen und Beschreibung wie bei Fachlicher Sicht
Beispiele in später folgenden Vorlesungen
2. Wie ist der Zusammenhang zur fachlichen Sicht?
Was ist die Schnittmenge zwischen den beiden Sichten?
Wie finden sich die fachlichen Konzepte in der technischen
Sicht wieder?
Beispiele in später folgenden Vorlesungen
Möglichkeiten auf den folgenden Folien
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.39
Entkopplung der technischen Funktionalität
Damit die fachlichen Komponenten arbeiten können, stützen sie
sich auf Dienste der technischen Komponenten ab.
Problem: Bei explizit verwendeten technischen Diensten keine
Entkopplung und damit eine enge Bindung von fachlichen und
technischen Komponenten!
Frage: Wie schafft man die Entkopplung?
Fachlichkeit
Technik
+
?
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.40
Strategie: Templates für schematische Kopplung
Programmierrichtlinien oder Templates geben vor, wie die Technik
im Programm angesprochen werden kann bzw. muss.
Fachliche
Anteile
Fachliche und technische
Teile gemäß Template
Technische
Anteile
Probleme
Einhaltung der Richtlinien schwierig zu überwachen
Templates können Code sehr unübersichtlich machen
Keine echte Trennung von fachlichem und technischem Code: Wechsel
auf neue technische Infrastruktur kann ggf. sehr aufwändig sein
Beispiel
Methoden-Template zum Tracing von Methoden und zum Überprüfen
von Pre- und Postconditions
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.41
Methodentemplate (Preconditions & Trace Entry) (1)
public void doSomeThing(String arg1, int arg2) {
if (CheckManager.CHECK_PRECONDITION) {
CheckManager.assertPreCondition(this, new
NotNullAssertion(arg1));
CheckManager.assertPreCondition(this,
arg2 > 0, "arg2 <= 0");
}
boolean exceptionThrown = false;
TraceManager.traceCallEntry(this,
new java.lang.Object[] { s });
try {
… fachlicher Code …
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.42
Methodentemplate (Trace Exceptions) (2)
} // try
catch (RuntimeException ex) {
exceptionThrown = true;
TraceManager.traceExceptionThrown(this, ex);
throw ex;
}
catch (Error err) {
exceptionThrown = true;
TraceManager.traceExceptionThrown(this, ex);
throw err;
}
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.43
Methodentemplate (Postconditions & Trace Exit) (3)
finally {
if (!exceptionThrown) {
TraceManager.traceCallExit(this);
if (CheckManager.CHECK_POSTCONDITION) {
CheckManager.assertPostCondition(this, new
NotNullAssertion(arg1));
}
}
}
} // doSomeThing
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.44
Strategie: Technik hinter Schnittstellen kapseln
Adapter und Wrapper dienen dazu
komplexe und/oder proprietäre technische Schnittstellen und
Mechanismen vor der fachlichen Sicht zu verstecken und
stattdessen einfache, möglichst standardisierte Schnittstellen für
Anwendungsdienste bereitzustellen.
A
B’
A
A
A
B
B’
Adapter
C’
D
C’
C
B
C
D
Wrapper
Mögliche Probleme:
Technik scheint immer noch durch
Komponenten sind von Schnittstellen der Adapter/Wrapper abhängig
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.45
Beispiel: Standardschnittstellen für Persistenz
Der Zugriff auf die Verwaltungsfunktionalität geschieht über
einfache, möglichst standardisierte Schnittstellen.
Interface aus der ODMG-Schnittstelle
ODMG API
OODBMSAdapter
ODMG API
O/R-MappingAdapter
O/R-Tool API
O/R-Mapping
Tool
OODBMS-API
OODBMS
Datenbank
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
JDBC-API
relationale
RDBMS
3.46
Strategie: Verantwortung auf Container abwälzen
Fachlichkeit wird möglichst ganz ohne Bezug auf technische
Basisfunktionalität realisiert (Plain Old Java Objects, POJOs).
Ein Container versorgt die fachlichen Komponenten mit allem, was sie
brauchen und regelt die Technik im Hintergrund.
Der Container benötigt dazu Wissen über die Komponente, das er z.B.
über eine Konfigurationsdatei oder über reflexive Introspektion erhält.
Container
Konfiguration
Mögliche Probleme
Nur möglich, wenn Verwaltung der technischen Funktionalität
konfigurationsgesteuert (ohne Programmierung) möglich ist
Konfigurationsdateien können sehr komplex werden
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.47
Beispiel: Deklaratives Transaktionsmanagement
Transaktionssteuerung bei einem Anwendungsserver
Component-Managed Transactions: Die fachliche Komponente erzeugt
Transaktionen und ruft begin, commit und abort auf ihnen auf.
Container-Managed Transactions: Der Application Server
bestimmt, wann eine Transaktion geöffnet und beendet wird.
Beispiel: Ausschnitt aus Konfigurationsdatei für deklarative
Transaktionsverwaltung im Spring Application Framework
<bean id=„trx_hundesteuermanager"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="txManager"/>
Spring-Mechanismus
Verwaltete Komponente
<property name="target" ref=„hundesteuermanager"/>
<property name="transactionAttributes"><props>
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key=„finde*">PROPAGATION_REQUIRED,readOnly</prop>
</props></property>
Transaktionsattribute für Operationen
</bean>
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.48
Strategie: Entkopplung durch Generierung
Die Fachlichkeit wird möglichst
ohne Bezug auf die Technik
spezifiziert.
Ein Generator erzeugt mit Hilfe
einer Konfiguration die
Implementierung.
Probleme:
Änderungen am generierten
Ergebnis müssen definiert
behandelt werden
Konfiguration kann sehr komplex
und schwer verständlich werden
Schlechte Generatoren erzeugen
schlechten Code
Bau von Generatoren ist nicht
einfach; Erfahrung mit manueller
Abbildung ist hilfreich
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
Konfiguration
Transformation
3.49
Beispiel: PIM-to-PSM-Mappings bei MDA
Fachliche Sicht
(PIM)
aus [SI01]
Technische Sicht
(PSM)
Entwicklungssicht
(PSM)
Bereitstellungs-Sicht
(PSM)
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.50
Beispiel: EJB3 Annotations
@Entity
@Table(name=„HUND")
@NamedQueries( { @NamedQuery(name =
"findHundById", query = "from HUND i where i.id = ?")})
public class Hund implements IdentifiableObject {
@Id @GeneratedValue private long id ;
...
}
Fachlicher Quellcode und technische Konfiguration
stehen beisammen, sind leichter konsistent zu halten.
Nachteil: Technische Aspekte vermischt mit Fachlichkeit;
Wechsel auf andere technische Plattform erschwert.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.51
Beispiel: Aspect-Oriented Programming (AOP)
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.52
Inhalt
Motivation und Eigenschaften
Was sind Sichten?
Überblick über die Sichten
Fachliche Sicht
Vom Analysemodell zum fachlichen Entwurf
Bildung fachlicher Komponenten
Technische Sicht
Technische Komponenten und Schnittstellen
Umsetzung der Fachlichkeit
Verteilungssicht
Verteilung der Komponenten
Zusammenfassung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.53
Verteilungssicht - Überblick
Zweck
Inhalte
Darstellung der Verteilung der Komponenten zur Ausführungszeit
auf die Prozessoren und Rechner
Abbildung der Komponenten des Systems auf die Elemente der
Systemarchitektur zur Laufzeit
Darstellung des Client-/Server-Schnitts
Darstellung der ausführungsnahen Qualitätseigenschaften, wie
zum Beispiel Performance
Beschreibungen
Textuelle Beschreibung und informelle Box-and-Line-Diagramme
Kompositionsstrukturdiagramme von UML
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.54
Kern-Entwurfsaufgabe: der Client-Server-Schnitt
Entfernte DS
Entfernte AS
Verteilte PS
1
Präsentation
2
Präsentation
Verteilte AS
Verteilte DS
Präsentation
Präsentation
k
Präsentation
1
2
Anwendung
k
1
2
Anwendung
k
Anwendung
Anwendung
1
2
k
1
Anwendung
Datenhaltung
Datenhaltung
Datenhaltung
2
k
Datenhaltung
Datenhaltung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.55
Beschreibung der Verteilungssicht
Die Verteilungssicht zeigt die Verteilung von fachlichen und
technischen Komponenteninstanzen auf die Elemente der
Systemarchitektur.
Beispiel eSteuer 2010:
s1 : Server
s2 : Server
hv : Hundesteuerverwaltung
pv : Personenverwaltung
gv : Grundsteuerverwaltung
db1 : Database
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
db2 : Database
3.56
Inhalt
Motivation und Eigenschaften
Was sind Sichten?
Überblick über die Sichten
Fachliche Sicht
Vom Analysemodell zum fachlichen Entwurf
Bildung fachlicher Komponenten
Technische Sicht
Technische Komponenten und Schnittstellen
Umsetzung der Fachlichkeit
Verteilungssicht
Verteilung der Komponenten
Zusammenfassung
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.57
Zusammenfassung
Eine Sicht stellt jeweils bestimmte, zusammengehörige
Eigenschaften eines Systems dar.
Es gibt zwei Hauptarten von Sichten: Spezifikationssichten zur
Beschreibung des Systems und Entwurfssichten zur Beschreibung
seiner Entwicklung.
Bei den Spezifikationssichten sollte die fachliche Sicht vor der
technischen Sicht bearbeitet und ausmodelliert werden.
Sowohl in der fachlichen als auch in der technischen Sicht ist die
Bildung von Komponenten mit klar definierten Schnittstellen und
Abhängigkeitsbeziehungen wichtig.
Zur Entkopplung von fachlicher und technischer Sicht gibt es eine
Reihe von Standard-Techniken. Dazu gehören insbesondere die
Kapselung der Technik hinter Schnittstellen, ContainerArchitekturen sowie Generierung.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.58
Literaturhinweise
[BRS97]
Klaus Bergner, Andreas Rausch, Marc Sihling: Using UML for
Modeling a Distributed Java Application, Technischer Bericht der Universität
München, TUM-I9735, http://wwwbib.informatik.tumuenchen.de/infberichte/1997/TUM-I9735.ps.gz, 1997.
[CBB02]
Paul Clements, Felix Bachmann, Len Bass, David Garlan, James
Ivers, Reed Little, Robert Nord, Judith Stafford: Documenting Software
Architectures – Views and Beyond, Addison-Wesley, 2002.
[HNS99]
Christine Hofmeister, Robert Nord, Dilip Soni: Applied Software
Architecture, Addison Wesley – Object Technology Series, 1999.
[HS99]
Peter Herzum, Oliver Sims. Business Component Factory: A
Comprehensive Overview of Component-Based Development for the
Enterprise, John Wiley & Sons, 1999.
[Kr94]
Mario Jeckle, Chris Rupp, Jürgen Hahn, Barbara ZenglerStefan
Queins: UML2 glasklar, Carl Hanser Verlag, 2004.
[OM01]
Object Management Group: Model Driven Architecture (MDA)
Website, www.omg.org/mda, OMG 2005.
[SI01]
J. Siegel, OMG Staff Strategy Group: Developing in OMG´s
Model-Driven Architecture, OMG White Paper, November 2001.
[Sp05]
Spring Framework Website, www.springframework.org, 2005.
Softwarearchitektur verteilter Systeme – 4. Sichten bei der Softwarearchitektur I
3.59

Documents pareils