Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en...

71
Software-Projekt Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universit¨ at Bremen Wintersemester 2008/09 ¨ Uberblick I 1 Software-Architektur

Transcript of Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en...

Page 1: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Projekt

Prof. Dr. Rainer Koschke

Fachbereich Mathematik und InformatikArbeitsgruppe Softwaretechnik

Universitat Bremen

Wintersemester 2008/09

Uberblick I

1 Software-Architektur

Page 2: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Software-Architektur

1 Software-ArchitekturWas ist Software-Architektur?EinflussfaktorenArchitektursichten und -blickwinkelKonzeptioneller BlickwinkelModulblickwinkelAusfuhrungsblickwinkelCode-SichtModularisierungSchnittstellenKopplung und ZusammenhaltQualitatenBewertung von ArchitekturenWiederholungsfragen

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 3 / 115

Software-Architektur

Lernziele

Verstehen, was Software-Architektur ist

Verschiedene Architektursichten kennen

Qualitaten einer Architektur kennen

Eine angemessene Software-Architektur entwerfen konnen

Die Anderbarkeit einer Software-Architektur bewerten konnen

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 4 / 115

Page 3: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Kontext

Implemen−tierung

Test

Wartung& Evolution

Architektur

Datenstrukturen

und Algorithmen

AnalyseEntwurf

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 5 / 115

Software-Architektur

Client-Server-Architektur: Dynamische Sicht

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 10 / 115

Page 4: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Client-Server-Architektur: Statische Sicht

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 11 / 115

Software-Architektur

Was ist Architektur?

Architecture is the human organization of empty space usingraw material.

Richard Hooker, 1996.

Definition

Software-Architektur ist die grundlegende Organisation eines Systemsverkorpert (IEEE P1471 2002)

in seinen Komponenten,

deren Beziehungen untereinander und zu der Umgebung

und die Prinzipien, die den Entwurf und die Evolution leiten.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 12 / 115

Page 5: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Bedeutung von Software-Architektur

Kommunikation zwischen allen Interessenten

hoher Abstraktionsgrad, der von vielen verstanden werden kann

Fruhe Entwurfsentscheidungen

→ nachhaltige Auswirkungen→ fruhzeitige Analyse

Transferierbare Abstraktion des Systems

→ eigenstandig wiederverwendbar→ unterstutzt Wiederverwendung im großen Stil (Software-Produktlinien)

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 13 / 115

Bedeutung von Software-Architektur

Kommunikation zwischen allen Interessenten

hoher Abstraktionsgrad, der von vielen verstanden werden kann

Fruhe Entwurfsentscheidungen

→ nachhaltige Auswirkungen→ fruhzeitige Analyse

Transferierbare Abstraktion des Systems

→ eigenstandig wiederverwendbar→ unterstutzt Wiederverwendung im großen Stil (Software-Produktlinien)

2008-1

2-1

4

Software-Projekt

Software-Architektur

Was ist Software-Architektur?

Bedeutung von Software-Architektur

Die Softwarearchitektur reprasentiert hohe Abstraktion eines Systems, die von den meisten Interessentenverstanden werden kann und damit eine Grundlage zum gegenseitigen Verstandnis, zur Konsensbildung und zurKommunikation darstellt.Die Softwarearchitektur ist die Manifestation fruher Entwurfsentscheidungen; diese fruhe Fixierung kannnachhaltige Auswirkungen haben auf die nachfolgende Entwicklung, Auslieferung sowie Wartung und Evolution. SAist auch die fruheste Systembeschreibung, die analysiert werden kann.Die Softwarearchitektur konstitutiert ein relativ kleines intellektuell fassbares Modell daruber, wie das Systemstruktiert ist und wie seine Komponenten zusammenwirken; dieses Modell ist eigenstandig nutzbar und kann uberdas spezifische System hinaus transferiert werden; insbesondere kann es fur Systeme mit ahnlichen Eigenschaftenund Anforderungen wiederverwendet werden, um so Wiederverwendung im großen Stil zu unterstutzen (Stichwort:Software-Produktlinien).

Page 6: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Beispielsystem IS2000 (Hofmeister u. a. 2000)

User ControlPanel

Remote ImagingComputers

ImagingComputer

Probe

Network

IS2000

������

������

�������������������������������������������

���������������

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 14 / 115

Software-Architektur

Einflussfaktoren/Anliegen (Concerns)

Einflussfaktoren

Produktfunktionen und -attribute

z.B. Performanz, Anspruche an Zuverlassigkeit, Umfang und Stabilitatder Anforderungen

Organisation

z.B. Budget, verfugbare Zeit, Team-Große und -erfahrung

Technologie

z.B. verfugbare Hard- und Software

Keiner der Faktoren kann isoliert behandelt werden → globale Analyse.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 15 / 115

Page 7: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Einflussfaktoren

Anmerkung

Ein Faktor ist nur dann relevant, wenn er Einfluss auf die Architektur hat.Test:

Architektur A1 ergibt sich mit Betrachtung des Faktors

Architektur A2 ergibt sich ohne Betrachtung des Faktors

Nur wenn A1 und A2 sich unterscheiden, ist der Faktor relevant.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 16 / 115

Software-Architektur

Globale Analyse

1. Identifiziere und beschreibe Faktoren2. Charaktersiere ihre Flexibilität und Änderbarkeit3. Analysiere ihre Auswirkungen

Analysiere Faktoren

Entwickle Strategien1. Identifiziere Probleme und Einflussfaktoren

3. Identifiziere verwandte Strategien2. Entwickle Lösungen und spezifische Strategien

Produktfaktoren

Organisatorische,undtechnologische Faktoren,

Einfluss

Rückkopplung

neue Problemeoder Strategien

Problem−karten

Faktortabelle neue Faktoren

BlickwinkelGlobale Analyse

neue Faktoren

AbschließendeEntwurfsaufgabe

Zentrale Entwurfs−aufgabe

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 17 / 115

Page 8: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Globale Analyse: Analysiere Faktoren

1. Identifiziere und beschreibe Faktoren

Faktoren, die viele Komponenten betreffen

Faktoren, die sich uber die Zeit andern

Faktoren, die schwer zu erfullen sind

Faktoren, mit denen man wenig Erfahrung hat

Beispiele:

Umfang funktionaler Anforderungen

Abgabetermin

Stabilitat der Hardware-Plattform

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 18 / 115

Software-Architektur

Globale Analyse: Analysiere Faktoren

2.a Charakterisiere ihre Flexibilitat

Flexibilitat

Kann zu Beginn uber Faktoren verhandelt werden mit Beteiligten(Manager, Marketingleute, Kunde, Benutzer etc.)?

Relevante Fragen zur Flexibilitat (am Beispiel Auslieferung derFunktionalitat):

Kann der Faktor beeinflusst oder geandert werden, so dass derArchitekturentwurf vereinfacht werden kann?

Auslieferung der Funktionalitat ist verhandelbar. Weniger wichtigeFunktionalitat kann in spaterem Release ausgeliefert werden.

Wie kann man ihn beeinflussen?

Nur nach rechtzeitiger Absprache mit dem Kunden.

Zu welchem Grad kann man ihn beeinflussen?

Der Kunde hat Mindestanforderungen, die erfullt werden mussen.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 19 / 115

Page 9: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Globale Analyse: Analysiere Faktoren

2.b Charakterisiere ihre Veranderlichkeit

Veranderlichkeit

Kann sich der Faktor wahrend der Entwicklung andern?

Relevante Fragen (am Beispiel Auslieferung der Funktionalitat):

In welcher Weise kann sich der Faktor andern?Prioritaten konnten sich andern.Anforderungen konnten wegfallen, weil nicht mehr relevant.Anforderungen konnten hinzukommen, weil sich Rahmenbedingungengeandert haben.

Wie wahrscheinlich ist die Anderung wahrend und nach derEntwicklung?

Moderat wahrend der Entwicklung; sehr hoch danach.

Wie oft wird er sich andern?Alle 3 Monate.

Wird der Faktor betroffen von Anderungen anderer Faktoren?Anderung technologischer Aspekte (Software-/Hardware-Plattform).

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 20 / 115

Software-Architektur

Globale Analyse: Analysiere Faktoren

3. Analysiere die Auswirkungen der Anderung von Faktoren auf Architektur

Auswirkungen

Wenn sich der Faktor andert, was wurde davon betroffen und wie?

Auswirkungen auf:

Andere Faktoren

Z.B. moderater Einfluss auf Einhaltung des Zeitplans und damit darauf,was zu welchem Zeitpunkt ausgeliefert werden kann

Systemkomponenten

Z.B. geplante Komponenten mussen uberarbeitet werden;Komponenten konnen hinzu kommen oder wegfallen.

Operationsmodi des Systems

Andere Entwurfsentscheidungen

. . .

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 21 / 115

Page 10: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Faktortabelle zu organisatorischen Aspekten

Faktor Flexibilitat undVeranderlichkeit

Auswirkung

O1 : EntwicklungsplanO1.1 : Time-To-Market

AuslieferungJuli 2006

Keine Flexibilitat Nicht alle Funktionen konnenimplementiert werden

O1.2 : Auslieferung von Produktfunktionen

priorisierteFunktionen

Funktionen sind verhandelbar Die Reihenfolge bei derImplementierung derFunktionen kann sich andern

O2 : EnwicklungsbudgetO2.1 : Anzahl Entwickler

5 Entwick-ler

Keine neuen Entwicklerkonnen eingestellt werden.Entwickler konnen (temporar)ausfallen.

Moderater Einfluss aufZeitplan; partielleImplementierung droht

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 22 / 115

Software-Architektur

Weitere organisatorische Beispielfaktoren I

O1: Management

Selbst herstellen versus kaufen

Zeitplan versus Funktionsumfang

Umgebung

Geschaftsziele

O2: Personal: Fahigkeiten, Interessen, Starken, Schwachen

Anwendungsdomane

Softwareentwurf

Spezielle Implementierungstechniken

Spezielle Analysetechniken

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 23 / 115

Page 11: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Weitere organisatorische Beispielfaktoren II

O3: Prozess und Entwicklungsumgebung

Entwicklungsplattform

Entwicklungsprozess und -werkzeuge

Prozesse und Werkzeuge des Konfigurationsmanagements

Produktionsprozesse und -werkzeuge

Testprozesse und -werkzeuge

Releaseprozesse und -werkzeuge

O4: Entwicklungszeitplan

Time-To-Market

Auslieferung der Produktfunktionen

Release-Zeitplan

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 24 / 115

Software-Architektur

Weitere organisatorische Beispielfaktoren III

O5: Entwicklungsbudget

Anzahl Entwickler

Kosten von Entwicklungswerkzeugen

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 25 / 115

Page 12: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Faktortabelle zu technischen Aspekten

Faktor Flexibilitat undVeranderlichkeit

Auswirkung

T2 : Domanenspezifische HardwareT2.1 : Aufzeichungs-Hardware

Nimmt Signal auf. Neuere Versionen alle 3Jahre.

Großer Einfluss aufAufzeichnungs- undBildverarbeitungskom-ponenten

T2.2 : Netzwerk

Kommunikationzwischen Aufzeichnungund allgemeinerHardware

Neuere Versionen alle 4Jahre

Großer Einfluss aufAufzeichnungs- undBildverarbeitungskom-ponenten

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 26 / 115

Software-Architektur

Technische Beispielfaktoren I

T1: Hardware

Prozessoren

Netzwerk

Hauptspeicher

Plattenspeicher

domanenspezifische Hardware

T2: Software

Betriebssystem

Benutzerschnittstelle

Software-Komponenten

Implementierungssprache

Entwurfsmuster

Rahmenwerke

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 27 / 115

Page 13: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Technische Beispielfaktoren II

T3: Architekturtechnologie

Architekturstile/-muster und -rahmenwerke

Domanenspezifische Architekturen oder Referenzarchitekturen

Architekturbeschreibungssprachen

Software-Produktlinien-Technologien

Werkzeuge zur Analyse und Validierung von Architekturen

T4: Standards

Schnittstelle zum Betriebssystem (z.B. Posix)

Datenbanken (z.B. SQL)

Datenformate

Kommunikation (z.B. TCP/IP)

Kodierrichtlinien

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 28 / 115

Software-Architektur

Faktortabelle zu Produktfaktoren

Faktor Flexibilitat undVeranderlichkeit

Auswirkung

P3 : Funktionale EigenschaftenP3.2 : Performanz der Aufzeichnung

Performanz: Große undAnzahl von Bildern;Antwortszeit:Ein-Ausgabe-Deadlines

Etwas flexibel. Große Auswirkung aufalle Komponenten furAufzeichnung,Bildverarbeitung,Speicherung undBetrachtung;Auswirkung variiert mitPerformanztuning.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 29 / 115

Page 14: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Beispielproduktfaktoren I

P1: ProduktfunktionenP2: Benutzerschnittstelle

Interaktionsmodell

Funktionen der Benutzerschnittstelle

P3: Performanz

Ausfuhrungszeiten

Speicherbedarf

Dauer des Systemstarts und -endes

Wiederherstellungszeit nach Fehlern

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 30 / 115

Software-Architektur

Beispielproduktfaktoren II

P4: Verlasslichkeit

Verfugbarkeit

Zuverlassigkeit

Sicherheit

P5: Fehlererkennung, -bericht, -behandlung

Fehlerklassifikation

Fehlerprotokollierung

Diagnostik

Wiederherstellung

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 31 / 115

Page 15: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Beispielproduktfaktoren III

P6: Service

Service-Dienste (Konfigurations- und Wartungsdienste) fur denBetrieb des System

Installation und Aktualisierung

Test der Software

Wartung und Erweiterung der Systemimplementierung

P7: Produktkosten

Hardwarebudget

Softwarelizenzbudget (fur verwendete Software)

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 32 / 115

Software-Architektur

Globale Analyse: Entwickle Strategien I

1. Identifiziere Probleme und deren EinflussfaktorenAnalysiere Faktorentabelle:

Grenzen oder Einschrankungen durch Faktoren

Unverruckbarer Abgabetermin erlaubt keinen vollen Funktionsumfang

Notwendigkeit, Auswirkung eines Faktors zu begrenzen

Entwurf muss Portierbarkeit vorsehen

Schwierigkeit, einen Produktfaktor zu erfullen

Speicher- und Prozessorbegrenzung erlaubt keine beliebig komplexenAlgorithmen

Notwendigkeit einer allgemeinen Losung zu globalen Anforderungenwie Fehlerbehandlung und Wiederaufsetzen nach Fehlern

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 34 / 115

Page 16: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Globale Analyse: Entwickle Strategien II

2. Entwickle Losungen und spezifische Strategien. . . fur die Behandlung der Probleme, die sich implementieren lassen unddie notwendige Anderbarkeit unterstutzen.

Strategie muss konsistent sein zu:

Einflussfaktor,

dessen Veranderlichkeit

und dessen Interaktion mit anderen Faktoren.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 35 / 115

Software-Architektur

Globale Analyse: Entwickle Strategien III

2. Entwickle Losungen und spezifische Strategien

Ziele:

Reduzierung oder Kapselung des Faktoreinflusses

Reduzierung der Auswirkung einer Anderung des Faktors auf denEntwurf und andere Faktoren

Reduzierung oder Kapselung notwendiger Bereiche vonExpertenwissen oder -fahigkeiten

Reduzierung der Gesamtentwicklungsdauer und -kosten

3. Identifiziere verwandte Strategien

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 36 / 115

Page 17: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Globale Analyse: Entwickle Strategien IV

Problemkarten (Issue Cards) beschreiben Problem und passende Strategieneinmalig:

Name des Problems

Beschreibung des ProblemsEinflussfaktorenListe aller Einflussfaktoren

LosungDiskussion einer allgemeinen LosungStrategie: Name der Strategie AErlauterung der Strategie AStrategie: Name der Strategie BErlauterung der Strategie B. . .

Verwandte StrategienReferenzen zu verwandten Strategien.Diskussion, in welcher Weise sie verwandt sind.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 37 / 115

Software-Architektur

Beispiele

Ambitionierter Zeitplan

Abgabetermin ist fix, Ressourcen sind begrenzt. Moglicherweise konnennicht alle Produktfunktionen realisiert werden.EinflussfaktorenO1.1 : Time-To-MarketO1.2 : Auslieferung von ProduktfunktionenO2.1 : Anzahl Entwickler

Losung

Strategie: Schrittweiser AusbauSystem wird schrittweise ausgebaut. Anforderungen werden in der Rei-henfolge ihrer Prioritat realisiert.

Strategie: Einkaufen statt SelbstentwickelnEinbindung externer COTS-Komponenten.Strategie: WiederverwendungEinbindung interner wiederverwendbarer Komponenten.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 38 / 115

Page 18: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Anderungen in allgemeiner und domanenspezifischer Hardware

Regelmaßige Anderungen der Hardware; Software soll mit minimalenAufwand an Anderungen angepasst werden konnen.

EinflussfaktorenT1.1: Prozessoren werden leistungsfahiger.T2.1: Aufzeichnungs-Hardware andert sich alle drei JahreT2.2: Netzwerktechnologie andert sich alle vier Jahre

Losung

Strategie: Kapselung domanenspezifischer Hardware:Kapsle Details, die sich andern konnen.

Strategie: Kapselung allgemeiner Hardware:Kapsle Details, die sich andern konnen.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 39 / 115

Software-Architektur

Betriebssystemanpassung

Weiterentwicklung des Betriebssystems (BS) und Wechsel auf ein neuesBS machen Anpassungen an betriebssystemspezifischen Komponentennotwendig. Fur die Wartung steht nur ein Entwickler zur Verfugung. DieAnpassungen mussen schnell vorgenommen werden.

EinflussfaktorenO1.1: Time-To-MarketO2.1: Anzahl EntwicklerT2.3: Betriebssystem

Losung

Strategie: Kapselung der BS-abhangigen AnteileBS-abhangige Anteile werden in Komponenten isoliert. Diese bilden einevirtuelle Maschine fur alle anderen Komponenten.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 40 / 115

Page 19: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Das fertige Gebaude

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 41 / 115

Das fertige Gebaude

2008-1

2-1

4

Software-Projekt

Software-Architektur

Architektursichten und -blickwinkel

Das fertige Gebaude

In der Gebaudearchitektur ist es ublich, von einem zu bauenden Gebaude verschiedene Modelle zu erstellen, bevordas Gebaude tatsachlich gebaut wird. Teilweise werden die Modelle als Prototypen benutzt, um dem zukunftigenHausbesitzer einen Eindruck von der Asthetik oder Funktion zu vermitteln. Teilweise sind die Modelle Plane, wie esnachher tatsachlich werden soll. Es wird dabei stets eine Vielzahl unterschiedlicher Modelle erstellt, die jeweilsbestimmte Aspekte betonen und von anderen abstrahieren. Der Grund liegt daran, dass unterschiedliche Personen,die am Gebaudebau beteiligt sind, das Gebaude aus unterschiedlichen Perspektiven betrachten wollen. Der spatereBesitzer interessiert sich fur das Gesamterscheinungsbild, der Maurer fur den Gebauderahmen und der Elektriker furKabelschachte, Steckdosen, Schalter etc. Das Prinzip, Unterschiedliches auseinander zu halten, ist in derSoftwaretechnik als Separation of Concerns bekannt: die Trennung unterschiedlicher Belange. Dieses Prinzip wirdauch beim Softwarearchitekturentwurf angewandt. Man nennt diese unterschiedlichen Bauplane oft Sichten derArchitektur.Wahrend sich in der Gebaudearchitektur uber viele Jahre feste Normen zu Bauzeichnungen, das heißt,Architektursichten, etabliert haben, stehen wir in der Softwaretechnik noch ganz am Anfang einer Entwicklung hinzu normierten Architektursichten. Ein erster Meilenstand auf diesem Weg ist der IEEE-Standard IEEE P1471(2002) Recommended Practice for Architectural Description of Software-intensive Systems. Er stellt Richtlinien auf,wie man Sichten der Softwarearchitektur beschreiben soll. Da aber noch Uneinigkeit herrscht, welche Sichten derSoftwarearchitektur uberhaupt relevant sind, legt er uns nicht auf eine feste Menge solcher Sichten fest. Er gehtviel mehr einen indirekten Weg. Er uberlasst es uns, zu entscheiden, welche Sichten wir beschreiben wollen, fordertaber, dass fur alle unsere Sichten definiert ist, was sie bedeuten.

Page 20: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Architektursichten und -blickwinkel

Definition

Architektursicht (View): Reprasentation eines ganzen Systems aus derPerspektive einer koharenten Menge von Anliegen (IEEE P1471 2002).

Definition

Architekturblickwinkel (Viewpoint): Spezifikation der Regeln undKonventionen, um eine Architektursicht zu konstruieren und zubenutzen (IEEE P1471 2002).Ein Blickwinkel ist ein Muster oder eine Vorlage, von der aus individuelleSichten entwickelt werden konnen, durch Festlegung von

Zweck,

adressierte Betrachter

und Techniken fur Erstellung, Gebrauch und Analyse.

Unterschiedliche Sichten helfen der Strukturierung: Separation ofConcerns.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 42 / 115

Architektursichten und -blickwinkel

Definition

Architektursicht (View): Reprasentation eines ganzen Systems aus derPerspektive einer koharenten Menge von Anliegen (IEEE P1471 2002).

Definition

Architekturblickwinkel (Viewpoint): Spezifikation der Regeln undKonventionen, um eine Architektursicht zu konstruieren und zubenutzen (IEEE P1471 2002).Ein Blickwinkel ist ein Muster oder eine Vorlage, von der aus individuelleSichten entwickelt werden konnen, durch Festlegung von

Zweck,

adressierte Betrachter

und Techniken fur Erstellung, Gebrauch und Analyse.

Unterschiedliche Sichten helfen der Strukturierung: Separation ofConcerns.

2008-1

2-1

4

Software-Projekt

Software-Architektur

Architektursichten und -blickwinkel

Architektursichten und -blickwinkel

Dazu fuhrt der Standard eine Trennung von konkretem Inhalt und Bedeutung einer Sicht ein. Eine Architektursicht(im Englischen: View) ist die Reprasentation eines ganzen Systems aus der Perspektive einer koharenten Menge vonAnliegen (IEEE P1471 2002). Eine Architektursicht beschreibt also immer ein bestimmtes System, im Sinne derGebaudearchitektur ist das also zum Beispiel die Facadenansicht des neuen Burogebaudes in der Universitatsallee15. In der Software ist die Beschreibung der Klassen und ihrer Abhangigkeiten der Banksoftware PayMe der Version1.3 in Form eines Klassendiagramms eine Architektursicht. Damit man ein Klassendiagramme jedoch verstehenkann, muss beschrieben sein, welche Konstrukte in solch einem Diagramm auftauchen durfen, was sie bedeuten undwie sie kombiniert werden konnen. Wahrend das Klassendiagramm fur PayMe spezifisch und damit nur fur PayMerelevant ist, ist die Beschreibung, wie Klassendiagrammme an sich aussehen konnen und was sie bedeuten,ubergreifend gultig fur alle denkbaren Klassendiagramme unabhangig von den Systemen, die sie beschreiben.Fur die Beschreibung aller moglichen Klassendiagramme fuhrt der IEEE-Standard den BegriffArchitekturblickwinkel (im Englischen: Viewpoint) ein. Ein Architekturblickwinkel (Viewpoint) ist die Spezifikationder Regeln und Konventionen, um eine Architektursicht zu konstruieren und zu benutzen (IEEE P1471 2002). EinBlickwinkel ist ein Muster oder eine Vorlage, von der aus individuelle Sichten entwickelt werden konnen, durchFestlegung des Zwecks, der adressierten Betrachter und der Techniken fur die Erstellung, den Gebrauch und dieAnalyse aller Sichten, die durch den Blickwinkel spezifiziert werden.Diese Trennung zwischen Sicht und Blickwinkel ist der eigentlich bedeutende Beitrag des genannten Standards.Das heißt fur uns, wenn wir eine Architektur durch eine Sicht beschreiben wollen, mussen wir zunachst in Form desBlickwinkels die Bedeutung der Sicht spezifizieren.

Page 21: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Siemens-Blickwinkel (Hofmeister u. a. 2000)

Konzeptioneller Blickwinkel: beschreibt logische Struktur desSystems; abstrahiert weitgehend von technologischen Details

Modulblickwinkel: beschreibt die statische logische Struktur desSystems

Ausfuhrungsblickwinkel: beschreibt die dynamische logischeStruktur des Systems

Code-Blickwinkel: beschreibt die”anfassbaren“ Elemente des

Systems (Quelldateien, Bibliotheken, ausfuhrbare Dateien etc.)

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 43 / 115

Siemens-Blickwinkel (Hofmeister u. a. 2000)

Konzeptioneller Blickwinkel: beschreibt logische Struktur desSystems; abstrahiert weitgehend von technologischen Details

Modulblickwinkel: beschreibt die statische logische Struktur desSystems

Ausfuhrungsblickwinkel: beschreibt die dynamische logischeStruktur des Systems

Code-Blickwinkel: beschreibt die”anfassbaren“ Elemente des

Systems (Quelldateien, Bibliotheken, ausfuhrbare Dateien etc.)

2008-1

2-1

4

Software-Projekt

Software-Architektur

Architektursichten und -blickwinkel

Siemens-Blickwinkel (Hofmeister u. a. 2000)

In der Literatur wurden sehr viele unterschiedliche Blickwinkel zur Beschreibung von Softwarearchitekturvorgeschlagen. Zachman (1987); Sowa und Zachman (1992); Zachman (1999) war einer der ersten Autoren, derBlickwinkel vorgeschlagen hat. Er schlug vor, Informationssysteme durch 6× 6 verschiedene Blickwinkel zubeschreiben. Perry und Wolf (1992) haben mehrere Blickwinkel von Zachman zusammen gefasst und die Anzahlder Blickwinkel damit auf drei reduziert, die letzten Endes aber aquivalent sind und lediglich unterschiedlicheAspekte hervor heben. Von Kruchten (1995) stammen die 4+1-Blickwinkel. Dazu gehoren der logische Blickwinkel,der das System abstrakt und anwendungsnah beschreibt, der Prozessblickwinkel, der die dynamische Ausfuhrungbeschreibt sowie der statische Entwicklungsblickwinkel und der physikalische Blickwinkel, der das System in dieHardware einbettet. Diese vier Blickwinkel werden zusammen gehalten durch einen redundanten Blickwinkel, dermittels Anwendungsszenarien beschreibt, wie die vier anderen Blickwinkel zusammen spielen.Die unterschiedlichen Blickwinkel in der Literatur sind verwirrend, zumal sehr viele Blickwinkel unterschiedlicherAutoren sehr ahnlich sind. Etwas Ordnung hat hier das Buch von (Clements u. a. 2002) geschaffen, in demKategorien von Blickwinkeln beschrieben sind. Dieses Buch ist auch zu empfehlen fur die Frage, wie manSoftwarearchitektur dokumentiert.Immerhin ist festzuhalten, dass viele der Blickwinkel sich auch auf die vier Siemens-Blickwinkel abbilden lassen(Hofmeister u. a. 2000). Es scheint, als ob mindestens die folgenden Aspekte zur Beschreibung eines Systemsnotwendig sind, die durch die vier Siemens-Blickwinkel abgedeckt werden:

• Konzeptioneller Blickwinkel: beschreibt die logische Struktur des Systems. Er abstrahiert weitgehend vontechnologischen Details wie z.B. konkrete Technologien, mit denen das System implementiert wird. Dieser Blickwinkelist der Anwendungsdomane am nachsten.

• Modulblickwinkel: beschreibt die statische logische Struktur des Systems in Form von Modulen und ihrenAbhangigkeiten.

• Ausfuhrungsblickwinkel: beschreibt die dynamische logische Struktur des Systems, das heißt, die Ausfuhrung undEinbettung in die ausfuhrende Hardware.

• Code-Blickwinkel: beschreibt die”anfassbaren“ Elemente des Systems (Quelldateien, Bibliotheken, ausfuhrbare Dateien

etc.).

Die vier Siemens-Blickwinkel wurden durch Befragung praktizierender Softwarearchitekten bei Siemens ermittelt,haben also offenbar praktische Relevanz.

Page 22: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Siemens-Blickwinkel (Hofmeister u. a. 2000)

Modul−beschränkungen

ModuleSubsysteme

Schichten

neueModula−risierung

Änderungen

elementenan Laufzeit−

KonnektorenKonfiguration

Komponenten

KomponentenKonnektorenKonfiguration

Laufzeit−beschränk−ungen

neueModula−risierungLaufzeit−elemente

Modulblickwinkel

Code−Blickwinkel

Aus

führ

ungs

blic

kwin

kel

Konzeptioneller Blickwinkel

Software−Architektur

Einfluss

Rückkopplung

Module

Quell−Code

Har

dwar

e−A

rchi

tekt

ur

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 44 / 115

Siemens-Blickwinkel (Hofmeister u. a. 2000)

Modul−beschränkungen

ModuleSubsysteme

Schichten

neueModula−risierung

Änderungen

elementenan Laufzeit−

KonnektorenKonfiguration

Komponenten

KomponentenKonnektorenKonfiguration

Laufzeit−beschränk−ungen

neueModula−risierungLaufzeit−elemente

Modulblickwinkel

Code−Blickwinkel

Aus

führ

ungs

blic

kwin

kel

Konzeptioneller Blickwinkel

Software−Architektur

Einfluss

Rückkopplung

Module

Quell−Code

Har

dwar

e−A

rchi

tekt

ur

2008-1

2-1

4

Software-Projekt

Software-Architektur

Architektursichten und -blickwinkel

Siemens-Blickwinkel (Hofmeister u. a. 2000)

In der Methode von Hofmeister u. a. (2000) sind diese vier Blickwinkel der Gegenstand des Entwurfes. DieSoftwarearchitektur wird entworfen, indem Sichten zu diesen vier Blickwinkeln erstellt werden.Wir werden im Folgenden naher auf diese Blickwinkel eingehen, indem wir sie im Kontext der Hofmeister-Methodebeschreiben.

Page 23: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

− Ressourcenbudget

Globale Analyse− Faktoren− Strategien

globale Evaluation

Produktfaktoren

Organisatorische,undtechnologische Faktoren,

Modulblickwinkel

Code−Blickwinkel

Einfluss

RückkopplungQuell−Code

Konzeptioneller Blickwinkel

Aus

führ

ungs

blic

kwin

kel

Har

dwar

e−A

rchi

tekt

ur

AbschließendeEntwurfsaufgabe

Zentrale Entwurfs−aufgabe

− Konfiguration− Konnektoren− Komponenten

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 45 / 115

− Ressourcenbudget

Globale Analyse− Faktoren− Strategien

globale Evaluation

Produktfaktoren

Organisatorische,undtechnologische Faktoren,

Modulblickwinkel

Code−Blickwinkel

Einfluss

RückkopplungQuell−Code

Konzeptioneller Blickwinkel

Aus

führ

ungs

blic

kwin

kel

Har

dwar

e−A

rchi

tekt

ur

AbschließendeEntwurfsaufgabe

Zentrale Entwurfs−aufgabe

− Konfiguration− Konnektoren− Komponenten

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Der Ausgangspunkt des Architekturentwurfes ist der konzeptionelle Blickwinkel. Mit Hilfe dieses Blickwinkels wirddie logische Struktur der angestrebten Architektur beschrieben. Ahnlich wie beim Datenbankentwurf, wo wirzunachst von einem konzeptionelle Schema ausgehen, das die Daten beschreibt so wie sie in derAnwendungsdomane sind. Es handelt sich noch nicht um den Entwurf einer konkreten Datenbank fur dasAnwendungsproblem, der ja letztlich stark von der verwendeten Technologie abhangt. In der Gebaudearchitekturgleicht der logische Blickwinkel, den ersten Skizzen, die der Architekt von dem spateren Haus macht. Dabei will erden Kopf noch frei haben von Detailentscheidungen, welche Heizung eingebaut wird etc.Ausgehend von der globalen Analyse der Einflussfaktoren, entwirft der Softwarearchitekt die Hauptkomponentenund -konnektoren des Systems. Eine Komponente ist eine Berechnungseinheit oder eine Einheit, die Datenspeichert. Dabei geht es nicht um einzelne Klassen oder gar spezifischen Algorithmen und Datenstrukturen,sondern um die grobe Verteilung der Zustandigkeiten in einem System auf großere Bausteine. Wie umfangreich soein Baustein ausfallt, hangt von der Große des Systems ab. Je großer das System, desto großer werden dieKomponenten initial ausfallen. Große Komponenten konnen dann spater verfeinert werden. Ein Beispiel fur eineKomponente in einem großeren System ist etwa eine Datenbank, in einer Client-Server-Architektur waren sowohlClient als auch Server erste Komponenten.Komponenten interagieren miteinander, um eine gemeinsame Aufgabe zu erfullen. Hierzu sind sie uber so genannteKonnektoren verbunden. Ein Konnektor stellt den Kontroll- und Datenfluss zwischen Komponenten dar. PrimitiveKonnektoren sind Methodenaufrufe, Parameterubergabe und Zugriffe auf Attribute. Komplexere Konnektoren sindbeispielsweise Mechanismen zur Interprozesskommunikation.Die Verbindung der Komponenten durch Konnektoren ergibt die Konfiguration. Ist eine Konfiguration entstanden,kann sie durch ein Review begutachtet werden. Ein Evaluationskriterium ist zum Beispiel, ob die Komponenten undKonnektoren alle geforderten Anwendungsfalle auch tatsachlich unterstutzen. Hierzu kann man auf dem Papieruberlegen, was die Komponenten und Konnektoren alles machen wurden fur jeden einzelnen Anwendungsfall.Abschließend werden noch die Ressourcen fur Komponenten und Konnektoren eingeplant, also wie viel Speicherund Rechenzeit Komponenten und Konnektoren zuerkannt bekommen.

Page 24: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Konzeptioneller Blickwinkel (Hofmeister u. a. 2000)

ist der Anwendungsdomane am nachsten

Systemfunktionalitat wird abgebildet auf

Konzeptionelle Komponenten: rechenbetonte Elemente oderDatenhaltungKonnektoren: Kontroll- und Datenfluss zwischen konzeptionellenKomponenten

Engineering-Belange:

Wie erfullt das System seine Anforderungen?

Wie werden Commercial-off-the-Shelf-Components (COTS) in dasSystem integriert?

Wie wird domanenspezifische Soft- und Hardware einbezogen?

Wie kann die Auswirkung von Anforderungen oder derAnwendungsdomane minimiert werden?

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 46 / 115

Konzeptioneller Blickwinkel (Hofmeister u. a. 2000)

ist der Anwendungsdomane am nachsten

Systemfunktionalitat wird abgebildet auf

Konzeptionelle Komponenten: rechenbetonte Elemente oderDatenhaltungKonnektoren: Kontroll- und Datenfluss zwischen konzeptionellenKomponenten

Engineering-Belange:

Wie erfullt das System seine Anforderungen?

Wie werden Commercial-off-the-Shelf-Components (COTS) in dasSystem integriert?

Wie wird domanenspezifische Soft- und Hardware einbezogen?

Wie kann die Auswirkung von Anforderungen oder derAnwendungsdomane minimiert werden?

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Konzeptioneller Blickwinkel (Hofmeister u. a. 2000)

Wie gesagt, steckt hinter der Aufteilung in Blickwinkel das Prinzip der Trennung unterschiedlicher Belange. WelcheBelange adressiert der konzeptionelle Blickwinkel also? Es geht dabei um die folgenden Fragen:

• Wie erfullt das System seine Anforderungen?

• Wie werden Commercial-off-the-Shelf-Components (COTS) in das System integriert, falls dies geplant ist?

• Wie wird domanenspezifische Soft- und Hardware einbezogen?

• Wie kann die Auswirkung von Anforderungen oder der Anwendungsdomane minimiert werden? Idealerweise sollte mannur eine Komponente anfassen mussen, wenn sich eine neue Anforderung aus der Anwendungsdomane ergibt. Dazumuss man jedoch die moglichen Anderungen vorwegsehen und die Architektur entsprechend so entwerfen, dass es leichtfallen wird, die zukunftige Anforderung zu realisieren.

Page 25: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Konzeptioneller Blickwinkel (Hofmeister u. a. 2000)

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 47 / 115

Konzeptioneller Blickwinkel (Hofmeister u. a. 2000)

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Konzeptioneller Blickwinkel (Hofmeister u. a. 2000)

Nachdem wir nun die Rolle und den Zweck des konzeptionellen Blickwinkels kennen, betrachten wir naher, wie einekonzeptionelle Sicht aufgebaut sein kann. Wir wenden uns also der Frage zu, wie der logische Blickwinkel eigentlichaussieht.Wir haben bereits uber die prinzipiellen Modellierungselemente gesprochen: Komponenten, Konnektoren und dieArt und Weise, wie sie in einer Konfiguration angeordnet werden.Das folgende Diagramm in UML beschreibt den logischen Blickwinkel genauer:

Wie wir sehen, besteht eine Konfiguration aus einer Menge von Komponenten und Konnektoren. SowohlKomponenten als auch Konnektoren konnen verfeinert werden, was die Komposition andeutet. Wenn eineKomponente verfeinert wird in Teilkomponenten, mussen diese selbstverstandlich auch uber Konnektoren wiederverbunden werden. Aus diesem Grunde ist auch die Komposition zwischen Konnektoren und Komponentenzwingend notwendig. Ahnliches gilt fur die Verfeinerung von Komponenten. Hiermit konnen wir beschreiben, wieein Konnektor durch Teilkomponenten und deren Konnektoren implementiert wird.

Page 26: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Konzeptioneller Blickwinkel (Hofmeister u. a. 2000)

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Konzeptioneller Blickwinkel (Hofmeister u. a. 2000)

Zur Verbindung von Komponenten und Konnektoren existieren entsprechende Beschreibungselemente: Anschlusse(Ports) und Rollen (Roles). Ein Anschluss (Port) ist ein Teil der Komponente. Das Pendant hierzu fur Konnektorenist die Rolle (Role). Wenn wir also beispielsweise eine Kommunikation zwischen einem Client und einem Serverbeschreiben wollen, dann werden diese zwei Komponenten uber einen Konnektor fur die Interprozesskommunikationverbunden, wie im oberen Teil der folgenden Grafik dargestellt:

Die Kommunikation dient dem Datenaustausch, deshalb wird hierfur ein Query-Konnektor verwendet, der fur

Anfragen an Server gedacht ist. UML-Stereotypen beschreiben die Diagrammelemente. Die Stereotypen

entstammen dem konzeptionellen Blickwinkel.

Software-Architektur

Komponenten und Konnektoren

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 48 / 115

Page 27: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Komponenten und Konnektoren

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Komponenten und Konnektoren

Eine solche Kommunikation ist im Falle einer Client-Server-Architektur asymmetrisch, das heißt, der Konnektorwird unterschiedlich benutzt von den Komponenten. Wahrend der Server am Konnektor auf eingehende Anfragenwartet und diese dann beantwortet, ergreift der Client die Initiative und schickt dem Server seine Anfragen. DerQuery-Konnektor fur die Interprozesskommunikation hat also eine Rolle fur den Client und eine fur den Server. DerTeil der Komponente, der die jeweilige Rolle, die durch einen Konnektor vorgegeben wird, anspricht ist der Port.Angenommen der Query-Konnektor wird durch spater durch Remote Method Invocation (RMI) in Javaimplementiert, dann kann man sich den Port konkret vorstellen als der Code in der Komponente, der denRMI-Aufruf absetzt.Konnektoren beschreiben Kontroll- und/oder Datenfluss. Man kann entweder auf die allgemeinen Data-beziehungsweise Control-Konnektoren zuruck greifen oder aber sich seine eigenen Konnektoren definieren. In derzweiten Zeile des Diagramms sehen wir zum Beispiel einen allgemeinen Data-Konnektor fur den Datenaustauschzwischen einem Produzenten und Konsumenten und in der dritten Zeile einen Control-Konnektor, der einenObserver benachrichtigt, wann immer sich eine observierte Komponenten in ihrem Zustand andert. Die letzte Zeilebeschreibt einen selbst definierten Konnektor fur den Datenaustausch uber eine Pipe, wie das zum Beispiel in Unixunterstutzt wird.Die Verbindung von Komponenten und Konnektoren ist bislang rein strukturell dargestellt. Das bisher Gesagtebeschreibt nur, dass Komponenten und Konnektoren interagieren, aber nicht wie. Wie eine Interaktion aussieht,wird durch ein Protokoll beschrieben, also etwa die Reihenfolge, in der Operationen ausgefuhrt werden. Der Porteiner Komponente hat ein Protokoll, ebenso erwartet der Konnektor fur eine Rolle eine vorgegebenVerwendungsweise, hat also auch ein Protokoll. Diese beiden Protokoll mussen selbstverstandlich kompatibel sein.Zu der Bedeutung und den Einschrankungen von cbinding kommen wir spater noch.

Software-Architektur

Strategie

Lege externe Schnittstellen fest.

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 50 / 115

Page 28: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Strategie

Lege externe Schnittstellen fest.

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Wir illustrieren nun an unserem laufenden Beispiel, wie die Hofmeister-Methode eine konzeptionellen Sicht entwirft.Ausgangspunkt sind die Strategien, die wir in der globalen Analyse aufgestellt haben, um mit Entwurfskonfliktenumzugehen. Sie werden nun eingesetzt.Wir beschreiben den Entwurfsprozess top-down, das heißt, wir beginnen im Folgenden mit dem System als einegroße Komponente und verfeinern sie weiter. Das ist ein gangiges Vorgehen. Sollen aber existierende Komponentenwiederverwendet werden, dann kombiniert man den Top-Down-Ansatz mit einem Bottom-Up-Vorgehen. Letzterergeht von den existierenden Komponenten aus und baut sie zu einem großeren Ganzen sukzessive zusammen. In derKombination entwirft man sowohl top-down als auch bottum-up und versucht, die beiden Entwurfsrichtungenaufeinander zuzufuhren. Beim reinen Top-Down-Vorgehen kann es dazu kommen, dass existierende Komponentennicht wiederverwendet werden, weil sie nicht das Gefuge passen; außerdem konnen redundante Komponentenentstehen. Erfahrene Architekten beherrschen beide Richtungen.

Strategie

Lege externe Schnittstellen fest.

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Wir beginnen hier also zunachst mit dem System als eine einzige Komponente. In der Anforderungsanalyse habenwir uns bereits damit auseinander gesetzt, welche Schnittstellen nach außen das System bieten muss. Diese werdennun eingezogen. Es ergibt sich das folgende Bild:

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Die schwarzen Kastchen am Rande der Komponente sind ihre Ports, das heißt, ihre Schnittstellen nach außen.

Page 29: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Strategie

Fuhre Komponenten fur Aufzeichnung, Bearbeitung und Export ein.

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

:Imaging

:Acquisitionp

rob

eC

om

ma

nd

sp

rob

eD

ata

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 51 / 115Strategie

Fuhre Komponenten fur Aufzeichnung, Bearbeitung und Export ein.

:Co

ntr

ol

:Data

sender

receiv

er

source dest

:Exporting

:Imaging

:Acquisition

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Nun fuhren wir Komponenten fur Aufzeichnung, Bearbeitung und Export ein. Diese Aufteilung folgt demEVA-Prinzip (Eingabe/Verarbeitung/Ausgabe) und stellt eine Umsetzung des Strategie Separation of Concern dar.Die inneren Komponenten werden uber innere Konnektoren verbunden. Hier gilt die Regel, dass eine Verbindungzwischen einem Port und einer Rolle nur moglich ist, wenn die zugehorigen Komponenten und Konnektoren imselben anderen Element (Komponente oder Konnektor) enthalten sind. Mit anderen Worten, die Verbindung kannkeine Abstraktionsebene durchqueren. Wir stellen fest, dass die Komponenten und Konnektoren wie gefordert Teilder selben Komponente sind. Damit ist das Diagramm in diesem Punkt wohlgeformt.

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

:Imaging

:Acquisition

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Page 30: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Strategie

Fuhre Komponenten fur Aufzeichnung, Bearbeitung und Export ein.

:Co

ntr

ol

:Data

sender

receiv

er

source dest

:Exporting

:Imaging

:Acquisition

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Wir erkennen des Weiteren eine Verbindung zwischen zwei Ports und zwar von den inneren Komponenten zu denPorts der umgebenden Komponente. Dies sind die so genannten CBindings, auf die wir bislang noch nichteingegangen sind. Sie dienen dazu, darzustellen wie die außeren Ports auf die inneren Ports beziehungsweise dieaußeren Rollen auf die inneren Rollen abgebildet werden, stellen also den Kontext der außeren Schnittstellen zuminneren Aufbau her. Hier ist die Regel, dass ein CBinding von einem inneren Ports nur zu einem Port derunmittelbar umschließenden Komponente verlaufen darf. Entsprechendes gilt fur ein CBinding zwischen Rollen. DasDiagramm halt sich auch an diese Regel.

Software-Architektur

Strategie

Kapselung domanenspezifischer Hardware.

:Co

ntr

ols

en

de

rre

ce

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

:Imaging

:Acquisition

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 52 / 115

Page 31: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Strategie

Kapselung domanenspezifischer Hardware.

:Co

ntr

ols

ender

receiv

er

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

sender

receiv

er

source dest

:Exporting

:Imaging

:Acquisition

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Im nachsten Schritt wenden wir die Strategie der Kapselung domanenspezifischer Hardware an, damit wir vorAnderungen dieser Hardware weitgehend geschutzt sind. Dazu fuhren wir zwei weitere Teilkomponenten ein, dievon den Eigenschaften der Eingabe-Hardware abstrahieren, die sich andern konnen. Diese beiden Komponentenstellen Geratetreiber dar.

:Co

ntr

ols

en

de

rre

ce

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

:Imaging

:Acquisition

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Wir erkennen in diesem Diagramm, wie die Anschlussbindung der innersten Komponenten zu den außerstenSystemschnittstellen von IS2000 uber zwei Ebenen hinweg erfolgt.

Software-Architektur

Strategie

Entkopple Interaktionsmodell.

:Acquire

:Monitor

:Co

ntr

ols

en

de

rre

ce

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

:Imaging

:Acquisition

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 53 / 115

Page 32: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Strategie

Entkopple Interaktionsmodell.

:Acquire

:Monitor

:Co

ntr

ols

ender

receiv

er

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

sender

receiv

er

source dest

:Exporting

:Imaging

:Acquisition

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Um auch gefeit zu sein gegen Anderungen in der Art und Weise, wie mit dem Benutzer interaktiv kommuniziertwird, fuhren wir analog zu den Geratetreibern eigene Teilkomponenten ein, die von Eingabe beziehungsweiseAusgabe von und zum Benutzer abstrahieren. Wir wenden damit eine Strategie zur Entkopplung desInteraktionsmodells an.

:Acquire

:Monitor

:Co

ntr

ols

en

de

rre

ce

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

:Imaging

:Acquisition

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Software-Architektur

Strategie

Separiere nach Anliegen: Separation of Concern.

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor

:Co

ntr

ols

en

de

rre

ce

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

:Imaging

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 54 / 115

Page 33: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Strategie

Separiere nach Anliegen: Separation of Concern.

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor

:Co

ntr

ols

ender

receiv

er

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

sender

receiv

er

source dest

:Exporting

:Imaging

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Die Trennung in der Komponente Acquisition in zwei Teilkomponenten fuhrt dazu, dass die verbleibendeFunktionalitat dieser Komponente, die weder hardware-spezifisch noch spezifisch fur das Interaktionsmodell ist, ineiner weiteren Komponente Aquisition-Management versammelt werden muss.

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor:C

on

tro

lse

nd

er

rece

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

:Imaging

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Software-Architektur

Strategie

Separiere zeitkritische Komponenten.

:Data :Data :Data

:Co

ntr

ol

source dest source dest

rece

ive

rse

nd

er

source dest

:Imaging

:ImageProcessing

:PostProcessing

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor

:Co

ntr

ols

en

de

rre

ce

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 55 / 115

Page 34: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Strategie

Separiere zeitkritische Komponenten.

:Data :Data :Data

:Co

ntr

ol

source dest source dest

receiv

er

sender

source dest

:Imaging

:ImageProcessing

:PostProcessing

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor

:Co

ntr

ols

ender

receiv

er

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

sender

receiv

er

source dest

:Exporting

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

In analoger Weise mussen wir auch bei der Komponente Imaging so verfahren. Hier nehmen wir aber noch eineweitere Verfeinerung vor. Und zwar trennen wir Algorithmen mit Echtzeitanforderungen (also z.B. das komprimierteAbspeichern des aufgenommenen Bildes, damit kein Bild verloren geht) und weiterfuhrende Algorithmen ohneEchtzeitanforderungen (wie z.B. das Aufhellen dunkler Bilder). Auf diese Weise konnen die Algorithmen mitunterschiedlichen Prioritaten versehen und auch auf unterschiedlichen Prozessoren ausgefuhrt werden.

:Data :Data :Data

:Co

ntr

ol

source dest source dest

rece

ive

rse

nd

er

source dest

:Imaging

:ImageProcessing

:PostProcessing

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor

:Co

ntr

ols

en

de

rre

ce

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

:Exporting

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Software-Architektur

Strategie

Kapselung domanenspezifischer Bild-Daten.

:Data

:Data

:Co

ntr

ol

source dest

se

nd

er

rece

ive

r

source dest

:Exporting

:ImageCollection

:Comm

:Export

:Data :Data :Data

:Co

ntr

ol

source dest source dest

rece

ive

rse

nd

er

source dest

:Imaging

:ImageProcessing

:PostProcessing

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor

:Co

ntr

ols

en

de

rre

ce

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

se

nd

er

rece

ive

r

source dest

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 56 / 115

Page 35: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Strategie

Kapselung domanenspezifischer Bild-Daten.

:Data

:Data

:Co

ntr

ol

source dest

sender

receiv

er

source dest

:Exporting

:ImageCollection

:Comm

:Export

:Data :Data :Data

:Co

ntr

ol

source dest source dest

receiv

er

sender

source dest

:Imaging

:ImageProcessing

:PostProcessing

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor

:Co

ntr

ols

ender

receiv

er

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

sender

receiv

er

source dest

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Schließlich verfeinern wir noch die Komponenten Exporting. Hier wollen wir den Aufwand fur den Export inunterschiedliche Bildformate minimieren. Wir wenden dazu eine Strategie an, die domanenspezifischer Bild-Datenkapselt. Wir wahlen hierfur eine interne Reprasentation unserer Bild-Daten in einer DatenhaltungskomponenteImage Collection. Fur den Export gibt es dann je eine Transformation des internen in das gewunschte Format. DieKomponente Export ubernimmt hierfur die notwendige Interaktion mit dem Benutzer. Außerdem konnen die Bilderauch noch uber ein Netzwerk verschickt werden. Diese Aufgabe ubernimmt die Komponente Comm.

:Data

:Data

:Co

ntr

ol

source dest

se

nd

er

rece

ive

r

source dest

:Exporting

:ImageCollection

:Comm

:Export

:Data :Data :Data

:Co

ntr

ol

source dest source dest

rece

ive

rse

nd

er

source dest

:Imaging

:ImageProcessing

:PostProcessing

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor

:Co

ntr

ols

en

de

rre

ce

ive

r

:Probe

Control

:DataCollection

:Co

ntr

ol

:Datase

nd

er

rece

ive

r

source dest

pro

be

Co

mm

an

ds

pro

be

Da

tau

se

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

Strategie

Kapselung domanenspezifischer Bild-Daten.

:Data

:Data

:Co

ntr

ol

source dest

sender

receiv

er

source dest

:Exporting

:ImageCollection

:Comm

:Export

:Data :Data :Data

:Co

ntr

ol

source dest source dest

receiv

er

sender

source dest

:Imaging

:ImageProcessing

:PostProcessing

:Control :Control

senderreceiver receiver sender

:Acquisition

Management

:Acquisition:Acquire

:Monitor

:Co

ntr

ols

ender

receiv

er

:Probe

Control

:DataCollection

:Co

ntr

ol

:Data

sender

receiv

er

source dest

pro

be

Co

mm

an

ds

pro

be

Da

ta

use

rAcq

Co

ntro

lu

se

rIma

ge

Exp

ort

use

rAcq

Dis

pla

y

networkAccess

:IS2000

2008-1

2-1

4

Software-Projekt

Software-Architektur

Konzeptioneller Blickwinkel

Wir haben in diesem Abschnitt gesehen, wie man eine konzeptionelle Sicht sukzessive durch Anwendung dervorbereiteten Strategien verfeinert. Dabei sollte jede Anwendung einer Strategie unbedingt dokumentiert werden,damit die Entwurfsentscheidungen nachvollziehbar werden. Die Begrundungen fur bestimmteEntwurfsentscheidungen lassen sich namlich auch nicht durch Reverse-Engineering-Techniken, die allein vomQuellcode ausgehen, nicht wieder rekonstruieren. Der Quellcode ist die sicherste Beschreibung dafur, was dieSoftware macht. Er enthalt aber keinen Hinweis darauf, was er hatte machen sollen, warum er was macht undwarum er es gerade so macht.

Page 36: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Produktfaktoren

Organisatorische,undtechnologische Faktoren,

Code−Blickwinkel

Einfluss

RückkopplungQuell−Code

− Schnittstellen

Globale Analyse− Faktoren− Strategien

globale Evaluation

Aus

führ

ungs

blic

kwin

kel

Har

dwar

e−A

rchi

tekt

urModulblickwinkel

Konzeptioneller Blickwinkel

AbschließendeEntwurfsaufgabe

Zentrale Entwurfs−aufgabe− Module− Schichten− Subsysteme

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 57 / 115

Produktfaktoren

Organisatorische,undtechnologische Faktoren,

Code−Blickwinkel

Einfluss

RückkopplungQuell−Code

− Schnittstellen

Globale Analyse− Faktoren− Strategien

globale Evaluation

Aus

führ

ungs

blic

kwin

kel

Har

dwar

e−A

rchi

tekt

urModulblickwinkel

Konzeptioneller Blickwinkel

AbschließendeEntwurfsaufgabe

Zentrale Entwurfs−aufgabe− Module− Schichten− Subsysteme

2008-1

2-1

4

Software-Projekt

Software-Architektur

Modulblickwinkel

Im nachsten Schritt uberfuhren wir die konzeptionelle Sicht in die Modulsicht, die den statischen Aufbau desSystems beschreibt in Form von Modulen, Schnittstellen, Subsystemen und Schichten. Es ist gut moglich, dass sichbeim Entwurf der konzeptionellen Sicht, sich neue Aspekte ergeben haben, so dass wir die globale Analysegegebenfalls wiederholen, bevor wir uns an die zentrale Entwurfsaufgaben machen, die Module zu entwerfen. NachEntwurf der Module und ihre Anordnung in Schichten und Subsystemen, entwerfen wir abschließend derenSchnittstellen.In diesem Abschnitt vertiefen wir den Modulsichtentwurf. Es sei voraus geschickt, dass wir nicht streng sequentiellModulsicht, dann Ausfuhrungs- und dann Code-Sicht entwerfen. Vielmehr ist der Entwurfsprozess meist iterativ.

Page 37: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Modulblickwinkel

bildet Komponenten und Konnektoren auf Module, Schichten undSubsysteme ab

setzt konzeptionelle Losung mit aktuellen Softwareplattformen(Programmiersprachen, Bibliotheken) und Technologien um

beschreibt statische Aspekte

Engineering-Belange:

Wie wird das Produkt auf die Software-Plattform abgebildet?

Welche Softwaredienste werden benutzt und von wem?

Wie wird das Testen unterstutzt?

Wie konnen Abhangigkeiten zwischen Modulen minimiert werden?

Wie kann die Wiederverwendung von Modulen maximiert werden?

Welche Techniken konnen eingesetzt werden, um Auswirkungen vonAnderungen zu minimieren.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 58 / 115

Modulblickwinkel

bildet Komponenten und Konnektoren auf Module, Schichten undSubsysteme ab

setzt konzeptionelle Losung mit aktuellen Softwareplattformen(Programmiersprachen, Bibliotheken) und Technologien um

beschreibt statische Aspekte

Engineering-Belange:

Wie wird das Produkt auf die Software-Plattform abgebildet?

Welche Softwaredienste werden benutzt und von wem?

Wie wird das Testen unterstutzt?

Wie konnen Abhangigkeiten zwischen Modulen minimiert werden?

Wie kann die Wiederverwendung von Modulen maximiert werden?

Welche Techniken konnen eingesetzt werden, um Auswirkungen vonAnderungen zu minimieren.

2008-1

2-1

4

Software-Projekt

Software-Architektur

Modulblickwinkel

Modulblickwinkel

Beim Entwurf der Modulsicht bilden wir die Komponenten und Konnektoren der konzeptionellen Sicht auf Module,Schichten und Subsysteme ab. Hierzu setzen wir die konzeptionelle Losung mit der aktuellen Softwareplattforme(Programmiersprachen, Bibliotheken, Werkzeuge) und Technologien um. Dabei werden rein statische Aspektebeschrieben.Die Belange, die durch die statische Modulsicht adressiert werden sind die folgenden:

• Wie wird das Produkt auf die Software-Plattform abgebildet?

• Welche Softwaredienste werden benutzt und von wem?

• Wie wird das Testen unterstutzt?

• Wie konnen Abhangigkeiten zwischen Modulen minimiert werden?

• Wie kann die Wiederverwendung von Modulen maximiert werden?

• Welche Techniken konnen eingesetzt werden, um Auswirkungen von Anderungen zu minimieren.

Fur die Modulsichten interessieren sich Programmierer fur die Programmierung. Tester interessieren fur denBlackbox-Komponententest sowie den Integrationstest. Ein Projektleiter kann von der Modulsicht Gebrauchmachen, um festzulegen, welcher Entwickler welches Modul implementieren soll.

Page 38: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Modulblickwinkel (Hofmeister u. a. 2000)

Module (layer) A uses

Module

Interface

Layer

module (layer) B whenA requires an interfacethat B provides

Subsystem

use

0..1

require *

*

*

require

* provide

*

* * * * *

0..1

0..1

use *

* *

* assigned−to

*

cont

ain

provide

contain

0..1

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 59 / 115

Modulblickwinkel (Hofmeister u. a. 2000)

Module (layer) A uses

Module

Interface

Layer

module (layer) B whenA requires an interfacethat B provides

Subsystem

use

0..1

require *

*

*

require

* provide

*

* * * * *

0..1

0..1

use *

* *

* assigned−to

* co

ntai

nprovide

contain

0..1

2008-1

2-1

4

Software-Projekt

Software-Architektur

Modulblickwinkel

Modulblickwinkel (Hofmeister u. a. 2000)

Der Modulblickwinkel wird durch das folgende UML-Diagramm beschrieben:

Module (layer) A uses

Module

Interface

Layer

module (layer) B whenA requires an interfacethat B provides

Subsystem

use

0..1

require *

*

*

require

* provide

*

* * * * *

0..1

0..1

use *

* *

* assigned−to

*

cont

ain

provide

contain

0..1

Ein Modul ist eine statische, austauschbare Gliederungseinheit mit einem bestimmten Zweck. Es kann in derBeschreibung durch Teilmodule verfeinert werden. Ein Modul hat zwei Kategorien von Schnittstellen: dieSchnittstellen, die es selbst anderen anbietet (provides) und jene, die es von anderen benotigt require). In denmeisten Programmiersprachen kann man nur die zur Verfugung gestellten Schnittstellen angeben, aber nicht jene,die das Modul voraussetzt. Wenn Module aber ausgetauscht werden und die Auswirkung von Anderungen analysiertwerden sollen, dann benotigt man auch Wissen daruber, welche Schnittstelle ein Modul voraussetzt.Module konnen zu Schichten angeordnet werden. Damit wird die Sichtbarkeit von Modulen festgelegt. Bei einemstrikten Schichtenmodell durfen Module einer Schicht nur auf Module der nachst tieferen Schicht zugreifen. Dieserhoht die Austauschbarkeit. Ein Schicht implementiert eine Art virtuelle Maschine. Auch Schichten haben beideArten von Schnittstellen und konnen wieder weiter in Teilschichten verfeinert werden.Schließlich konnen Module nochmal unabhangig von Schichten zu einem Subsystem zusammen gefasst werden. EinSubsystem ist eine weitere Gliederungseinheit, die orthogonal zu hierarchischen Modulen und zu Schichten ist. IhreDaseinberechtigung wird spater im Kontext des Code-Blickwinkels deutlicher.Ein Modul benutzt (use) ein anderes Modul beziehungsweise Schicht, wenn das Modul auf eine Schnittstellezugreift, das von dem anderen Modul beziehungsweise der Schicht zur Verfugung gestellt wird.Die use-Beziehung ist eine allgemeine Form von Abhangigkeit. Man kann unter ihr auch eine Vererbungsbeziehungsubsumieren. Die Unterklasse benutzt ihre Oberklasse dadurch, dass sie von ihr erbt.

Page 39: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Notation fur Module

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 60 / 115

Notation fur Module

2008-1

2-1

4

Software-Projekt

Software-Architektur

Modulblickwinkel

Notation fur Module

Module sind ein etwas allgemeineres Konzept als Klassen. Klassen sind ein Konzept einer Programmiersprache unddes objektorientierten Paradigmas. Module konnen aber in C auch durch Dateien implementiert werden. Oft werdensie durch mehrere Dateien oder Klassen implementiert. Insofern hat das Konzept Modul seine Berechtigung.Weil Module aber Klassen ahneln, kann man fur sie auch eine ahnliche Notation verwenden. Im folgendenDiagramm verwenden wir den Stereotyp Modul um zu kennzeichnen, dass die Klassenikone als Module zuinterpretieren sind.

Die UML-Notation fur sichtbare und unsichtbare Elemente konnen zur Spezifikation der provides-Schnittstelleverwendet werden. Alternativ kann man auch auf die UML-Darstellungen fur Schnittstellen zuruck greifen. DerLolipop an Modul B besagt, dass B eine Schnittstelle zur Verfugung stellt, von der Modul C abhangt.

Page 40: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Beispiel einer Modulsicht

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 62 / 115

Beispiel einer Modulsicht

2008-1

2-1

4

Software-Projekt

Software-Architektur

Modulblickwinkel

Beispiel einer Modulsicht

Als Beispiel fur eine Modulsicht verfeinern wir einen Aspekt der konzeptionellen Sicht unseres laufenden Beispielsder IS2000. Wir wenden uns hierzu der Komponente Comm der konzeptionellen Sicht zu. Ihre Aufgabe ist es, dieNetzwerkkommunikation zu realisieren.Das folgende Beispieldiagramm beschreibt diesen kleinen Ausschnitt:

Page 41: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Beispiel einer Modulsicht

2008-1

2-1

4

Software-Projekt

Software-Architektur

Modulblickwinkel

Beispiel einer Modulsicht

Das Diagramm beschreibt, wie die Comm-Komponente den Netzwerkzugriff realisiert. Wir haben uns dazuentschlossen das Netzwerkprotokoll TCP/IP zu verwenden, um Daten uber das Internet auszutauschen. Da derDatentransfer zwischen einer heterogenen Rechnerlandschaft geschieht und deshalb Binardaten konvertiert werdenmussen, legen wir uber die TCP/IP-Schicht noch eine weitere Schicht, die das Ein- und Auspacken dertransferierten Daten vornimmt. Außerdem konnen wir auf diese Weise von TCP/IP abstrahieren und es bei Bedarfleicht gegen ein anderes Protokoll austauschen. Die Schicht Network wird sowohl von der IS2000 als auch vonanderen Prozessen, die auf entfernten Rechnern ausgefuhrt werden, verwendet (stellvertretend steht hierfur dasModule Remote Imaging). Die Schicht Network gliedert sich in ein Dispatcher-Modul, der die Verwaltung desSendens und Empfangens ubernimmt, und in ein Modul forwarder fur das Einpacken fur den Datenversand und einModul receiver fur das Entpacken der Daten. Letztere beiden Module mussen sich auf eine gemeinsameDatenreprasentation einigen. Aus diesem Grund sind sie dem selben Modul wrapper zugeordnet.Wir haben hier ein vergleichsweise kleines Detail der logischen Sicht auf Module abgebildet und bereits eineansehnliche Anzahl von Modulen erhalten. Das Beispiel sollte deutlich machen, dass wir fur die gesamtekonzeptionelle Sicht eine große Anzahl von Modulen erhalten werden. Damit wir uns in diesem Abbildungsprozessverlieren, haben wir glucklicherweise die konzeptionelle Sicht, die alles zusammen halt und an der wir unsorientieren konnen.

Software-Architektur

Produktfaktoren

Organisatorische,undtechnologische Faktoren,

Einfluss

RückkopplungQuell−Code

Code−Blickwinkel

Konzeptioneller Blickwinkel

Globale Analyse− Faktoren− Strategien

Har

dwar

e−A

rchi

tekt

ur

globale Evaluation

− Ressourcenzuweisung

Ausführungsblickwinkel

Modulblickwinkel

Zentrale Entwurfs−aufgabe− Laufzeitelemente− Kommunikationspfade− Ausführungskonfiguration

AbschließendeEntwurfsaufgabe

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 63 / 115

Page 42: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Produktfaktoren

Organisatorische,undtechnologische Faktoren,

Einfluss

RückkopplungQuell−Code

Code−Blickwinkel

Konzeptioneller Blickwinkel

Globale Analyse− Faktoren− Strategien

Har

dwar

e−A

rchi

tekt

ur

globale Evaluation

− Ressourcenzuweisung

Ausführungsblickwinkel

Modulblickwinkel

Zentrale Entwurfs−aufgabe− Laufzeitelemente− Kommunikationspfade− Ausführungskonfiguration

AbschließendeEntwurfsaufgabe

2008-1

2-1

4

Software-Projekt

Software-Architektur

Ausfuhrungsblickwinkel

Software ist primar Verhalten. Durch die Modulsicht wird aber nur der innere strukturelle Aufbau beschrieben. Imnachsten Schritt kummern wir uns um dynamische Aspekte, also Dinge, die zur Laufzeit relevant sind. Dazu bildenwir die Module auf Elemente der Ausfuhrungsplattform (sowohl Hardware als auch Software) ab. Dazu dient derAusfuhrungsblickwinkel.

Software-Architektur

Ausfuhrungsblickwinkel

beschreibt dynamische Aspekte

beschreibt, wie Module auf Elemente der Ausfuhrungs- undHardwareplattform abgebildet werden

definiert Laufzeitelemente und deren Attribute (Speicher- undZeitbedarf, Allokation auf Hardware)

Engineering-Belange:

Wie verlauft Kontroll- und Datenfluss zwischen Laufzeitkomponenten?

Wie kann Ressourcenverbrauch ausgewogen werden?

Wie konnen Nebenlaufigkeit, Replikation und Verteilung erreichtwerden, ohne die Algorithmen unnotig zu verkomplizieren?

Wie konnen Auswirkungen von Anderungen in derAusfuhrungsplattform minimiert werden?

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 64 / 115

Page 43: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Ausfuhrungsblickwinkel

beschreibt dynamische Aspekte

beschreibt, wie Module auf Elemente der Ausfuhrungs- undHardwareplattform abgebildet werden

definiert Laufzeitelemente und deren Attribute (Speicher- undZeitbedarf, Allokation auf Hardware)

Engineering-Belange:

Wie verlauft Kontroll- und Datenfluss zwischen Laufzeitkomponenten?

Wie kann Ressourcenverbrauch ausgewogen werden?

Wie konnen Nebenlaufigkeit, Replikation und Verteilung erreichtwerden, ohne die Algorithmen unnotig zu verkomplizieren?

Wie konnen Auswirkungen von Anderungen in derAusfuhrungsplattform minimiert werden?

2008-1

2-1

4

Software-Projekt

Software-Architektur

Ausfuhrungsblickwinkel

Ausfuhrungsblickwinkel

Der Ausfuhrungsblickwinkel definiert die Laufzeitelemente und deren Attribute wie Speicher- und Zeitbedarf undAllokation auf Hardware. Wir beschreiben hierbei, welche Prozesse und Objekte existieren, wie sie miteinander zuAusfuhrungszeit kommunizieren und wie sie auf die ausfuhrende Hardware abgebildet werden.Die adressierten Belange des Ausfuhrungsblickwinkels sind damit:

• Wie verlauft der Kontroll- und Datenfluss zwischen den Laufzeitkomponenten (Prozesse, Objekte etc.)?

• Wie kann der Ressourcenverbrauch (Speicher, Rechenzeit etc.) ausgewogen werden?

• Wie konnen Nebenlaufigkeit, Replikation und Verteilung erreicht werden, ohne die Algorithmen unnotig zuverkomplizieren?

• Wie konnen Auswirkungen von Anderungen in der Ausfuhrungsplattform minimiert werden (also Anderungen derHardware)?

Software-Architektur

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

SoftwarePlatform

PlatformElement

PlatformResource

HardwareResource

CommunicationPath

RuntimeEntity

CommunicationMechanism

Module

*

* * *

consumeconsume

* contain

is a

communicate over

*

1

use mechanism

assigned to

* 2..*

1

*

assigned to

*

*

*

* 1

*

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 65 / 115

Page 44: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

SoftwarePlatform

PlatformElement

PlatformResource

HardwareResource

CommunicationPath

RuntimeEntity

CommunicationMechanism

Module

*

* * *

consumeconsume

* contain

is a

communicate over

*

1

use mechanism

assigned to

* 2..*

1

*

assigned to

*

*

*

* 1

*

2008-1

2-1

4

Software-Projekt

Software-Architektur

Ausfuhrungsblickwinkel

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

Das folgende UML-Diagramm beschreibt den Ausfuhrungsblickwinkel:

SoftwarePlatform

PlatformElement

PlatformResource

HardwareResource

CommunicationPath

RuntimeEntity

CommunicationMechanism

Module

*

* * *

consumeconsume

* contain

is a

communicate over

*

1

use mechanism

assigned to

* 2..*

1

*

assigned to

*

*

*

* 1

*

Die Software-Plattform halt alle Aspekte der Ausfuhrung zusammen. Sie besteht zunachst aus Plattformelementen,dies sind Dinge, die zur Laufzeit angelegt werden und ausgefuhrt werden konnen (z.B. Prozesse; wir lernen weitereBeispiele weiter unten kennen).

Die Plattformelemente haben Instanzen, die Laufzeiteinheiten (Runtime Entity). Die Laufzeiteinheiten

kommunizieren uber Kommunikationspfade (Communication Path) mit einander. Mindestens zwei konkrete

Laufzeitinstanzen kommunizieren dabei. Die Kommunikationspfade verwenden hierzu einen

Kommunikationsmechanismus, wie beispielsweise eine Remote Method Invocation in Java oder eine

Corba-Interprozesskommunikation.

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

SoftwarePlatform

PlatformElement

PlatformResource

HardwareResource

CommunicationPath

RuntimeEntity

CommunicationMechanism

Module

*

* * *

consumeconsume

* contain

is a

communicate over

*

1

use mechanism

assigned to

* 2..*

1

*

assigned to

*

*

*

* 1

*

2008-1

2-1

4

Software-Projekt

Software-Architektur

Ausfuhrungsblickwinkel

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

Bei der Ausfuhrung konsumiert eine Laufzeiteinheit Laufzeitressourcen wie Speicher oder Rechenzeit.Auf der rechten Seite des Diagramms sehen wir die Einbettung in die Hardwareumgebung und in die statischeModulsicht. Module sind den Laufzeiteinheiten, die sie ausfuhren. Dabei kann ein Modul naturlich von vielenLaufzeiteinheiten verwendet werden. Durch diese Bezuge zur Modulsicht werden die beiden Sichten miteinanderverknupft.Die Plattformressourcen werden auf konkrete Hardware-Ressourcen abgebildet, die sie zur Verfugung stellen, wiebeispielsweise Prozessoren oder gemeinsamer Speicher.

Page 45: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 66 / 115

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

2008-1

2-1

4

Software-Projekt

Software-Architektur

Ausfuhrungsblickwinkel

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

Die Konzepte des Ausfuhrungsblickwinkels sind noch relativ abstrakt. Die folgende Vererbungshierarchiekonkretisiert die Konzepte. Ein Plattformelement ist eine Softwareeinheit, die zur Laufzeit existiert. Dazu gehorenzum Beispiel Objekte als Instanzen von Klassen. Fur die Realisierung von paralleler Ausfuhrung haben wir Threads(als leichtgewichtige Prozesse mit gemeinsamem Speicher), Prozesse mit getrennten Speicher oder Tasks (alseigenes Sprachkonstrukt aus einer Programmiersprache). Diese Prozesse kommunizieren uber weiterePlattformelemente wie Sockets, Warteschlangen, Dateien oder geteiltem Speicher. Außerdem kann man Modulebundeln in dynamischen Bibliotheken und auf unterschiedlichen Rechnern installieren.

Page 46: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

2008-1

2-1

4

Software-Projekt

Software-Architektur

Ausfuhrungsblickwinkel

Ausfuhrungsblickwinkel (Hofmeister u. a. 2000)

Plattformressourcen sind Ressourcen, die uns von der Software- und Hardwareplattform zur Verfugung gestelltwerden, die von den Plattformelementen konsumiert werden, wahrend sie ihre Arbeit erledigen. Dazu gehohrenneben Speicher und CPU-Zeit Betriebsmittel fur die Synchronisation wie Semaphore oder Timer.Kommunikationsmechanismen schließlich dienen den Plattformelementen zum Nachrichtenaustausch. Unter demBetriebssystem Windows gibt es hierfur zum Beispiel DCOM. Plattformunabhangigere Mechanismen sind dieInterprozesskommunikation (IPC) oder der Remote Procedure Call (RPC), bei Java auch bekannt als RemoteMethod Invocation (RMI).

Software-Architektur

Beispiel einer Ausfuhrungssicht

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 67 / 115

Page 47: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Beispiel einer Ausfuhrungssicht

2008-1

2-1

4

Software-Projekt

Software-Architektur

Ausfuhrungsblickwinkel

Beispiel einer Ausfuhrungssicht

Fur Diagramme, die die Ausfuhrungssicht beschreiben, gibt keine Standardnotation. Die Diagrammart in der UML,die der Ausfuhrungssicht am nachsten kommt, ist das Deployment-Diagramm. Es zeigt aber nicht alle Aspekte, dieim Ausfuhrungsblickwinkel nach Hofmeister u. a. (2000) moglich sind. Hofmeister u. a. (2000) schlagen deshalbeine eigene Notation vor, die an das Deployment-Diagramm der UML angelehnt ist. Das folgende Diagramm ist einBeispiel hierfur:

Beispiel einer Ausfuhrungssicht

2008-1

2-1

4

Software-Projekt

Software-Architektur

Ausfuhrungsblickwinkel

Beispiel einer Ausfuhrungssicht

Wir erkennen darin drei Rechnertypen, die als Quader dargestellt sind. In ihnen geschachtelt tauchen dreiProzesstypen, die mit dem Stereotyp process gekennzeichnet sind. Die Schachtelung druckt aus, dass dergeschachtelte Prozess auf dem jeweiligen Rechner ausgefuhrt wird. Die Module, die die Prozesse dabei ausfuhren,sind in den Prozessen geschachtelt. Die Kommunikationspfade werden als Assoziationen zwischen den Prozessendargestellt. Die Beschriftung der Assoziation gibt den Kommunikationsmechanismus wieder. Die Multiplizitaten anden Kommunikationspfaden gibt an, wie viele Prozess jeden Typs in der Kommunikation involviert sind. In unseremFall ist das je eine n:1-Beziehungen, das heißt, mehrere Shop-Assistents kommunizieren mit einem Shop-Server undmehrere Shop-Server kommunizieren mit einem Datenbank-Server.Wie viele Instanzen es von den Typen von Hardware-Ressourcen und Plattformelementen zur Laufzeit gibt, wirddurch die Zahl in den Kasten wieder gegeben. Den Ladenrechner und Datenbankrechner gibt es nur einmal, es kannaber beliebig viele PDAs geben. Auf jedem PDA wird nur ein Prozess vom Typ Personal Shop Assistent gestartet.Gleiches gilt fur den Datenbankrechner, auf dem nur eine Instanz des Prozesstyps Data Base Server existiert. UmAusfallsicherheit und Skalierbarkeit zu sichern, hat sich der Architekt entschlossen, auf dem Ladenrechner nInstanzen von Shop Server anzulegen.

Page 48: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Produktfaktoren

Organisatorische,undtechnologische Faktoren,

Einfluss

RückkopplungQuell−Code

− Build−Prozess− Konfigurations− management

Globale Analyse− Faktoren− Strategien

globale Evaluation

Aus

führ

ungs

blic

kwin

kel

Har

dwar

e−A

rchi

tekt

ur

Konzeptioneller Blickwinkel

Code−Blickwinkel

Modulblickwinkel

AbschließendeEntwurfsaufgabe

Zentrale Entwurfs−aufgabe− Quellkomponenten

− Auslieferungskomp.− Zwischenprodukte

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 68 / 115

Produktfaktoren

Organisatorische,undtechnologische Faktoren,

Einfluss

RückkopplungQuell−Code

− Build−Prozess− Konfigurations− management

Globale Analyse− Faktoren− Strategien

globale Evaluation

Aus

führ

ungs

blic

kwin

kel

Har

dwar

e−A

rchi

tekt

ur

Konzeptioneller Blickwinkel

Code−Blickwinkel

Modulblickwinkel

AbschließendeEntwurfsaufgabe

Zentrale Entwurfs−aufgabe− Quellkomponenten

− Auslieferungskomp.− Zwischenprodukte

2008-1

2-1

4

Software-Projekt

Software-Architektur

Code-Sicht

Nachdem wir Modulsicht und Ausfuhrungssicht entworfen haben, planen wir die konkrete Implementierung.Elemente aus der Modulsicht und Ausfuhrungssicht sind abstrakte Konzepte, die dann in einerProgrammiersprachen realisiert werden mussen. Dies geschieht, indem Programmierer Dateien anlegen, in denender Implementierungscode (textuell oder graphisch) aufgefuhrt ist. Wir nennen dies die Quellkomponenten. Ausden Quellkomponenten werden dann moglicherweise uber Zwischenprodukte das erzeugt, was schließlich als Codean den Kunden ausgeliefert wird. Beispielsweise haben wir unser Programm in C geschrieben. Dann erzeugt derCompiler daraus als Zwischenprodukt Objektdateien und moglicherweise Bibliotheken. Daraus erzeugt der Linkerschließlich das ausfuhrbare Programm. Das ausfuhrbare Programm und alle dynamischen Bibliotheken stellen dieAusfuhrungskomponenten dar. Da Dateien meist die Einheit sind, in der Aufgaben an Programmierer verteiltwerden, und die meisten Versionskontrollsysteme nur ganze Dateien verwalten, bestimmt die Aufteilung in Dateiendie Aufgabenverteilung und das Konfigurationsmanagement. Außerdem kann der Build-Prozess unter Umstandenbei großen Systemen, die nicht selten in vielen unterschiedlichen Programmiersprachen geschrieben wird, sehrkomplex werden. Der Build-Prozess benotigt nicht selten viel Zeit selbst auf machtiger Hardware. Aus diesenGrunden sollte fur mittlere und große Systeme die Abbildung der abstrakten Konzepte aus der Modulsicht undAusfuhrungssicht auf “anfassbare” Dateien und auch der Build-Prozess geplant und dokumentiert werden. Dies istdie Aufgabe der Code-Sicht.Bevor wir die Code-Sicht entwerfen, ist es moglicherweise notwendig, die globale Analyse nochmals zu wiederholen,wenn sich durch den Entwurf der vorherigen Sichten Einflussfaktoren und Strategien geandert haben sollten.

Page 49: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Code-Blickwinkel

bildet Laufzeiteinheiten auf installierbare Objekte (ausfuhrbareDateien, dynamische Link-Bibliotheken etc.) ab

bildet Module auf Quellkomponenten (Dateien) ab

zeigt, wie die installierbaren Dateien aus den Quellkomponentengeneriert werden

Engineering-Belange:

Wie kann die Zeit und der Aufwand fur Produkt-Upgrades verringertwerden?

Wie sollen Produktversionen verwaltet werden?

Wie kann die Build-Zeit verringert werden?

Welche Werkzeuge werden in der Entwicklungsumgebung benotigt?

Wie wird Integration und Test unterstutzt?

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 69 / 115

Code-Blickwinkel

bildet Laufzeiteinheiten auf installierbare Objekte (ausfuhrbareDateien, dynamische Link-Bibliotheken etc.) ab

bildet Module auf Quellkomponenten (Dateien) ab

zeigt, wie die installierbaren Dateien aus den Quellkomponentengeneriert werden

Engineering-Belange:

Wie kann die Zeit und der Aufwand fur Produkt-Upgrades verringertwerden?

Wie sollen Produktversionen verwaltet werden?

Wie kann die Build-Zeit verringert werden?

Welche Werkzeuge werden in der Entwicklungsumgebung benotigt?

Wie wird Integration und Test unterstutzt?

2008-1

2-1

4

Software-Projekt

Software-Architektur

Code-Sicht

Code-Blickwinkel

Die Code-Sicht bildet die Laufzeiteinheiten auf installierbare Objekte (ausfuhrbare Dateien, dynamischeLink-Bibliotheken etc.) ab. Außerdem bildet sie Module auf Quellkomponenten (Dateien) ab und zeigt, wie dieinstallierbaren Dateien aus den Quellkomponenten generiert werden.Die Belange, die mit der Code-Sicht adressiert werden, sind wie folgt:

• Wie kann die Zeit und der Aufwand fur Produkt-Upgrades verringert werden? Dazu mussen wir wissen, welcheausgelieferten Einheiten wir erneuern mussen. Im schlimmsten Fall muss der Kunde alles neu installieren. Dies wollen wiraber vermeiden.

• Wie sollen Produktversionen verwaltet werden? Unter Umstanden mussen wir nachvollziehen konnen, welche einzelnenDateien fur die Installation bei einem bestimmten Kunden eingeflossen sind, um zum Beispiel Fehler zu diagnostizieren.Diese Information muss durch das Konfigurationsmanagement bereit gehalten werden.

• Wie kann die Build-Zeit verringert werden? Die Zeit fur die vollstandige Ubersetzung kann erheblich sein und damit dieEntwicklung stark hemmen. Bei großen Systemen kann es viele Stunden dauern, bis ein System vollstandig ubersetzt ist.Wir wollen deshalb die Abhangigkeiten zwischen den Dateien moglichst gering halten, um den Build-Prozess so kurz wiemoglich zu halten.

• Welche Werkzeuge werden in der Entwicklungsumgebung benotigt? In manchen Fallen konnen zum Beispiel Teile desCode automatisch generiert werden.

• Wie wird Integration und Test unterstutzt? Bei der inkrementellen Integration werden Systemteile sukzessivhinzugenommen und in ihrer Interaktion getestet. Dazu muss man den inneren Aufbau und die Abhangigkeiten aus derModulsicht kennen und wissen, welche Dateien dazu jeweils zu ubersetzen und zu testen sind.

Page 50: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Code-Blickwinkel (Hofmeister u. a. 2000)

RuntimeEntity

Interface

Module

Layer

SubsystemSoftwarePlatform

Executable ConfigurationDescriptionLibraryBinary

ComponentSource

Component

trace

trace

trace

trace

*

1 * 1 * * *

link

*

* 11 * *

0..1

0..1

0..1

0..1

*

*

* 1

*

*

*

*

*

*

* * * *

instantiate

link

compile

linkcompile

import

use at runtimegenerate

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 70 / 115

Code-Blickwinkel (Hofmeister u. a. 2000)

RuntimeEntity

Interface

Module

Layer

SubsystemSoftwarePlatform

Executable ConfigurationDescriptionLibraryBinary

ComponentSource

Component

trace

trace

trace

trace

*

1 * 1 * * *

link

*

* 11 * *

0..1

0..1

0..1

0..1

*

*

* 1

*

*

*

*

*

*

* * * *

instantiate

link

compile

linkcompile

import

use at runtimegenerate

2008-1

2-1

4

Software-Projekt

Software-Architektur

Code-Sicht

Code-Blickwinkel (Hofmeister u. a. 2000)

Code-Sichten werden durch den folgenden Code-Blickwinkel beschrieben:

RuntimeEntity

Interface

Module

Layer

SubsystemSoftwarePlatform

Executable ConfigurationDescriptionLibraryBinary

ComponentSource

Component

trace

trace

trace

trace

*

1 * 1 * * *

link

*

* 11 * *

0..1

0..1

0..1

0..1

*

*

* 1

*

*

*

*

*

*

* * * *

instantiate

link

compile

linkcompile

import

use at runtimegenerate

Page 51: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Code-Blickwinkel (Hofmeister u. a. 2000)

RuntimeEntity

Interface

Module

Layer

SubsystemSoftwarePlatform

Executable ConfigurationDescriptionLibraryBinary

ComponentSource

Component

trace

trace

trace

trace

*

1 * 1 * * *

link

*

* 11 * *

0..1

0..1

0..1

0..1

*

*

* 1

*

*

*

*

*

*

* * * *

instantiate

link

compile

linkcompile

import

use at runtimegenerate

2008-1

2-1

4

Software-Projekt

Software-Architektur

Code-Sicht

Code-Blickwinkel (Hofmeister u. a. 2000)

Alles, was fur die Konstruktion des Systems notwendig ist, wird versammelt unter der Software-Plattform (SoftwarePlatform). Dazu gehoren primar die Quell-Komponenten (Source Component), die die Module und Schnittstellenimplementieren. Das sind in Java beispielsweise die Java-Quelldateien. Sie hangen zum Teil von einander ab, indemsie sich importieren. In Java gibt es dafur die import-Anweisung. Außer reinen Code-Dateien betrachten wir auchzum Beispiel UML-Diagramme als Quell-Komponenten, wenn aus ihnen Quell-Code generiert wird. DieQuell-Komponenten werden bei kompilierten Sprachen von einem Compiler in eine Binarform ubersetzt. In Java istdas der Java-Bytecode. Die Binardateien werden in einem weiteren Schritt oft in statischen oder dynamischenBibliotheken zusammen gefasst. In Java sind das die JAR-Bibliotheken. Ein Linker linkt die Binardateien undBibliotheken schließlich zu einem ausfuhrbaren Programm. Das Linken kann auch erst zum Zeitpunkt desProgramms stattfinden, dann spricht man von einem dynamischen Linker. Die ausfuhrbaren Programme konnenhaufig durch Konfigurationsdateien (Configuration Description) zur Start- oder Laufzeit konfiguriert werden.Beispielsweise kann die Sprache, in der mit dem Anwender kommuniziert wird, bei internationalisiertenProgrammen eingestellt werden.Auf der linken Seite des Diagramms zum Code-Blickwinkel finden wir Elemente des statischen Modulblickwinkelsund des Ausfuhrungsblickwinkels. Auf diese Weise werden die verschiedenen Sichten miteinander verbunden.Zwischen Quell-Komponenten und Modulen und Schnittstellen haben wir eine trace-Beziehung. Sie beschreibt,welche Module durch welche Dateien implementiert werden, und ermoglicht damit die Nachvollziehbarkeit (imEnglischen: Traceability) zwischen unterschiedlichen Ebenen eines Systems. Schichten und Subsysteme sind meistkeiner einzelnen Quell-Komponente zuzuordnen. Vielmehr bilden wir sie ab auf die Software-Plattform. Eine Schichtoder ein Subsystem implementiert damit eine Software-Plattform.Die Programme erzeugen (instantiate) wahrend ihrer Ausfuhrung die Laufzeiteinheiten (Runtime Entity).

Software-Architektur

Code-Blickwinkel: Beispiel

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 71 / 115

Page 52: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Code-Blickwinkel: Beispiel

2008-1

2-1

4

Software-Projekt

Software-Architektur

Code-Sicht

Code-Blickwinkel: Beispiel

Das folgende Diagramm ist ein Beispiel fur eine Code-Sicht:

Die Modul dispatcher wird durch die Datei dispatcher.java implementiert. Das Modul wrapper sowie seineDie Teilmodule forwarder und receiver werden durch die Dateien forwarder.java und receiver.java umgesetzt. Daszusammengesetzte Modul wrapper wird nicht unmittelbar durch eine Quell-Komponente implementiert. Vielmehrbesteht es aus den oben genannten Teilmodulen, die bestimmten Quell-Komponenten zugeordnet sind.Hierarchische Module werden als reine Gliederungseinheiten verwendet. Die Moduldekomposition ergibt einenBaum. Nur die Blatter dieses Baumes stellen Module dar, fur die auch Code geschrieben werden muss.Die aus den Java-Dateien generierten Class-Dateien werden in einer JAR-Bibliothek fur den Server abgelegt. BeiAusfuhrung der Bibliothek, indem die entsprechende main-Methode aktiviert wird, wird dann der Server-Prozesserzeugt.

Code-Blickwinkel: Beispiel

2008-1

2-1

4

Software-Projekt

Software-Architektur

Code-Sicht

Code-Blickwinkel: Beispiel

Das Modell von Hofmeister ist sehr stark an herkommlichen Sprachen wie C oder C++ orientiert. Im Falle vonJava sind einige Spezialisierungen beziehungsweise Anpassungen sinnvoll.Eine Erleichterung in Java ist der Umstand, dass eine Class-Datei mit genau einer Java-Quelldatei korrespondiert(und umgekehrt; außer fur innere Klassen). Und die Package-Struktur korrespondiert mit der physischenDateisystem-Struktur.Die Bibliotheken in Java heißen JAR-Dateien (Java Archive; im Wesentlichen nichts anderes als ein Zip-Archiv mitJava-Class-Dateien). Die Class-Dateien werden nicht zu den Bibliotheken gelinkt, sondern lediglich hinzugefugt.Es gibt in Java eigentlich kein Exectuable wie bei C oder C++. Jede Klasse, die eine statische Methode main hat,kann zum Hauptprogramm werden. Enthalt eine JAR-Datei mindestens eine solche Klasse, kann sie als Executablebetrachtet werden. Eine JAR-Datei (oder auch eine Class-Datei) instantiates eine Runtime Entity, wenn ihr mainaufgerufen wird, oder wenn ein Thread aktiviert wird.

Page 53: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Code-Blickwinkel: Beispiel

Tabellendarstellung:

Module Source File JAR

dispatcher dispatcher.java server.jarforwarder forwarder.java server.jarreceiver receiver.java server.jar. . . . . . . . .

JAR instantiates

server.jar Shop Server. . . . . .

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 72 / 115

Code-Blickwinkel: Beispiel

Tabellendarstellung:

Module Source File JAR

dispatcher dispatcher.java server.jarforwarder forwarder.java server.jarreceiver receiver.java server.jar. . . . . . . . .

JAR instantiates

server.jar Shop Server. . . . . .

2008-1

2-1

4

Software-Projekt

Software-Architektur

Code-Sicht

Code-Blickwinkel: Beispiel

In der Praxis wird man kaum fur die in der Code-Sicht auftretenden Relationen ein UML-Diagramm zeichnen, da esviel zu viele sind. Einfacher beschreibt man sie durch Tabellen, wie zum Beispiel:

Module Source File JARdispatcher dispatcher.java server.jarforwarder forwarder.java server.jarreceiver receiver.java server.jar. . . . . . . . .

JAR instantiatesserver.jar Shop Server. . . . . .

Wenn Namenskonventionen existieren (im Falle von Java heißt die Class-Datei, die zu einer Java-Dateimyfile.java gehort, schlicht myfile.class, wenn es sich nicht um eine innere Klasse handelt) mussen nicht alleRelationen durch Tabellen beschrieben werden.

Page 54: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Was ist Modularisierung?

Definition

Modularisierung: Dekomposition eines Systems in Module.Modul: austauschbares Programmteil, das eine geschlosseneFunktionseinheit bildet.Arbeitspaket: von einer Person oder einer kleinen Gruppe von Entwicklernentwerfbar, implementierbar, testbar, verstehbar, anderbar, . . .

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 73 / 115

Software-Architektur

Conways Gesetz:

Conways Gesetz:

Die Struktur der Software spiegelt die Struktur der Organisation wider.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 79 / 115

Page 55: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Schnittstellen

Definition

Schnittstelle (allgemein): Teil eines Systems, das dem Austausch vonInformationen, Energie oder Materie mit anderen Systemen dient.

– Wikipedia, die freie Enzyklopadie

Definition

Schnittstelle: Menge der Annahmen, die das Modul uber seine Umgebungmacht, sowie jene, die die Umgebung uber das Modul macht.

Definition

Syntaktische Schnittstelle: offentliche Attribute und Methoden mitderen Signaturen.

Zwei Module sind uber ihre Schnittstellen verbunden und damit abhangig.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 80 / 115

Software-Architektur

Ein Wort zu Schnittstellen

+ Draw()

Figure

Rectangle

+ Draw()

Circle

+ Draw()+ width+ height + radius

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 81 / 115

Page 56: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Eine offene Schnittstelle

a b s t r a c t c l a s s F i gu r e {

p u b l i c a b s t r a c t vo i d Draw ( ) ;}c l a s s C i r c l e e x t end s F i gu r e {

p u b l i c vo i d Draw ( ) {} ;p u b l i c i n t r a d i u s ;

}c l a s s Rec tang l e e x t end s F i gu r e {

p u b l i c vo i d Draw ( ) {} ;p u b l i c i n t h e i g h t ;p u b l i c i n t width ;

}

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 82 / 115

Software-Architektur

Geheimnisprinzip (Information Hiding) nach Parnas (1972)

Schnittstellen sind ein Kontrakt zwischen:

Verwender:

darf sich nur auf zugesicherte Annahmen verlassenmuss Vorbedingungen einhalten

Anbieter:

muss zugesichertes Verhalten implementierendarf sich nur auf zugesicherte Vorbedingungen verlassen

Der Kontrakt fuhrt zu einer Kopplung zwischen Verwender und Anbieter.

Schnittstellen werden so entworfen, dass

Kopplung auf das Mindestmaß beschrankt wird;

d.h. die Details, die sich andern konnen, werden hinter Schnittstelleverborgen.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 83 / 115

Page 57: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Programmiersprachenunterstutzung

a b s t r a c t c l a s s F i gu r e {

p u b l i c a b s t r a c t vo i d Draw ( ) ;}c l a s s C i r c l e e x t end s F i gu r e {

p u b l i c vo i d Draw ( ) {} ;p r i v a t e i n t r a d i u s ;

}c l a s s Rec tang l e e x t end s F i gu r e {

p u b l i c vo i d Draw ( ) {} ;p r i v a t e i n t h e i g h t ;p r i v a t e i n t width ;

}

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 84 / 115

Software-Architektur

Verwender der Klasse

p u b l i c vo i d Drawing ( F i gu r e A Figure , i n t Times ) {

f o r ( i n t i = 0 ; i < Times ; i++) {A Figu re . Draw ( ) ;

}}

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 85 / 115

Page 58: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Klassendiagramm

Drawing+ Draw()

Figure

Rectangle

+ Draw()

Circle

+ Draw()

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 86 / 115

Software-Architektur

Klassendiagramm

Graphs

Node

+ Draw()

Edge

+ Draw()

Drawing+ Draw()

Figure

Rectangle

+ Draw()

Circle

+ Draw()

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 87 / 115

Page 59: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Klassendiagramm

Graphs

Node

+ Draw()

Edge

+ Draw()

Drawing

+ Draw()

Figure

Rectangle

+ Draw()

Circle

+ Draw()

Drawable

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 89 / 115

Software-Architektur

Schnittstelle als eigenes Sprachkonstrukt

Schnittstelle:

i n t e r f a c e Drawable {vo i d Draw ( ) ;

}

Schnittstellenverwender:

p u b l i c vo i d Drawing ( Drawable Drawab le Object , i n t Times ) {

f o r ( i n t i = 0 ; i < Times ; i++) {Drawab le Ob jec t . Draw ( ) ;

}}

Schnittstellenanbieter:

a b s t r a c t c l a s s F i gu r e implements Drawable {}

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 90 / 115

Page 60: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Zusammenfassung zu Schnittstellen

Schnittstelle ist Kontrakt zwischen Anbieter und Verwender, der dieerlaubten wechselseitigen Annahmen festlegt

Programmiersprachen erlauben die Spezifikation syntaktischerEigenschaften von Schnittstellen

moderne Programmiersprachen bieten Schnittstellen als eigenesSprachkonstrukt an

nur wenige erlauben die Spezifikation semantischer Eigenschaften

Vor- und Nachbedingungenweitere Zusicherungen, wie z.B. Speicher- und Zeitkomplexitat

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 91 / 115

Software-Architektur

Kopplung und Zusammenhalt

Definition

Kopplung: Grad der Abhangigkeit zwischen Modulen.

Definition

Zusammenhalt (Koharenz): Verwandtschaft der Teile eines Moduls.

Modul A Modul B

Modul A Modul B

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 92 / 115

Page 61: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Kopplung und Zusammenhalt

Definition

Kopplung: Grad der Abhangigkeit zwischen Modulen.

Definition

Zusammenhalt (Koharenz): Verwandtschaft der Teile eines Moduls.

Modul A Modul B

Modul A Modul B2008-1

2-1

4

Software-Projekt

Software-Architektur

Kopplung und Zusammenhalt

Kopplung und Zusammenhalt

Der Architekt eines Konzertsaals bemuht sich, den Saal so zu bauen, dass die akustische Storung von außen extremgering ist, die Horbarkeit im Saal dagegen extrem hoch. Dem entspricht bei der Arbeit des Software-Architekten dieGliederung in Module so, dass

• die Kopplung (d.h. die Breite und Komplexitat der Schnittstellen) zwischen den Modulen moglichst gering,

• der Zusammenhalt (d.h. die Verwandtschaft zwischen den Teilen eines Moduls) moglichst hoch wird.

Das Konzept von Kopplung und Zusammenhalt basiert ursprunglich auf den FORTRAN- und COBOL-Programmender fruhen 70‘er Jahre. Heute haben wir Sprachen, die uns mehrere Abstraktionsebenen bieten. Dabei streben wirauf der Modulebene vor allem niedrige Kopplung (bei maßigem Zusammenhalt), auf der Prozedurebene vor allemhohen Zusammenhalt (bei erheblicher Kopplung) an.

Software-Architektur

Stufen des Zusammenhalts (von schlecht nach gut)

Stufe innerhalb einer Funktion/Moduls betrifft

keinZusammenhalt

rein zufallige Zusammenstellung Module

Ahnlichkeit z.B. ahnlicher Zweck, also etwa alleMatrixoperationen; auchFehlerbehandlung

Module

zeitliche Nahe Verwendung zum selben Zeitpunkt,z.B. Initialisierung, Abschluss

Module,Funktionen

gemeinsameDaten

Zugriff auf bestimmte Daten,exklusiv, z.B. Kalenderpaket(Systemuhr)

Funktionen,Module

Hersteller /Verbraucher

ein Teil erzeugt, was der andereverwendet

Module,Funktionen

einziges Datum Kapselung einer Datenstruktur,Zusammenfassung der Operationen

Module,Funktionen

einzige Operation Operation, die nicht mehr zerlegbarist

Funktionen

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 93 / 115

Page 62: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Stufen der Kopplung (von schlecht nach gut)

Stufe zwischen Funktionen/Modulen betrifft

Einbruch Veranderung des Codes Funktionen

volle Offnung Zugriff auf alle Daten, z.B. auf alleAttribute einer Klasse

(Module)Funktionen

selektiveOffnung

bestimmte Attribute sind zuganglich oderglobal durch expliziten Export/Import

Module,Funktionen

Funktions-kopplung

nur Funktionsaufruf und Parameter Module(Funktion)

keineKopplung

Es besteht keine logische Beziehung(Zugriff ist syntaktisch unmoglich)

Module

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 94 / 115

Software-Architektur

Kriterien fur einen guten Software-Entwurf

Jeder Entwurf ist ein Kompromiss.

Geringe Kopplung zwischen allen Modulen

Hoher Zusammenhalt in allen Funktionen und Modulen

Kriterium der naiven Suche: Jede Einheit sollte einen leichterkennbaren Sinn haben.

Abstraktion: Implementierungsdetails verbergen

Kapselung von Dingen, die sich andern konnen (Geheimnisprinzip;Information Hiding)

Etwa gleich große Einheiten (Module, Funktionen). Abweichungensollten plausibel sein; generell durfen einfache Objekte großer sein alskomplizierte.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 95 / 115

Page 63: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Kriterien fur einen guten Software-Entwurf (Forts.)

Uniforme Entwurfsstrategie; wenn z.B. eine Schichtenstruktur gewahltwurde, sollte sie nicht an irgendeiner Stelle korrumpiert sein.

Uniforme Gestaltung der Schnittstellen.

Uniforme Benennung.

Prinzip der Isomorphie zur Realitat (Michael Jackson1): Die Softwaresollte der Realitat strukturell gleichen, damit die Anderungen derRealitat in der Software leicht nachvollzogen werden konnen.

1Nein, nicht der Michael Jackson.Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 96 / 115

Software-Architektur

Bewertung von Modularisierung

Software Architecture Analysis Method (SAAM) (Kazman u. a. 1996):

1 Lege wichtige Qualitatsaspekte fest

2 Beschreibe alternative Modularisierungen

3 Entwickle Szenarien fur die Qualitatsaspekte

4 Spiele die Szenarien durch und bewerte die Modularisierungen

5 Betrachte Wechselwirkungen zwischen den Qualitatsaspekten

6 Fasse die Evaluation zusammen

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 97 / 115

Page 64: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Beispiel: Key Word in Context (KWIC) (Parnas 1972)

Bistum Osnabrück

Friede von Osnabrück

Friede westfälischer

Osnabrück Bistum

vonOsnabrück Friede

Friedevon Osnabrück

westfälischer Friede

Zeilen

Sortierung der

westfälischer Friede

Friede westfälischer

Friede von Osnabrück

vonOsnabrück Friede

Friedevon Osnabrück

Bistum Osnabrück

Osnabrück Bistum

jeder Zeile

zyklische Vertauschung

von

Bistum Osnabrück

westfälischer Friede

OsnabrückFriede

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 100 / 115

Software-Architektur

Betrachtete Qualitatsaspekte und Szenarien

Anderbarkeit

Eingabeformat andert sichgroßere Dateien mussen verarbeitet werdenriesige Dateien mussen verarbeitet werden

separate Entwickelbarkeit

verteile Arbeit an Entwicklungsteams

Performanz

berechne KWIC fur FB3-Webseiten

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 101 / 115

Page 65: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Ablauf

1 Eingabe der Daten

2 Interne Speicherung der Daten

3 Indizierung (Zeile, Wortanfang, Wortende)

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20

W e s t f ä l i s c h e r F r i e d e

F r i e d e v o n O s n a b r ü c k

B i s t u m O s n a b r ü c k

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16

(3, 12, 20)

(3, 8, 10)

(3, 1, 6)

(2, 8, 16)

(2, 1, 6)

(1, 15, 20)

(1, 1, 13)

4 Zyklische Rotation der Indizierung

5 Sortierung der Indizierung

6 Ausgabe der Indizierung

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 102 / 115

Software-Architektur

Erste Modularisierung (ablauforientiert)

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 104 / 115

Page 66: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Qualitaten

Anderbarkeit:betroffene Module

Input Shifter Sorter Output

Eingabeformat ×großere Dateien × × × ×riesige Dateien × × × ×

Getrennte Entwicklung:

alle Datenstrukturen mussen bekannt sein

komplexe Beschreibung notwendig

Performanz:

schneller Zugriff auf globale Variablen

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 105 / 115

Software-Architektur

Geheimnisprinzip (Information Hiding) (Parnas 1972)

Definition

Geheimnisprinzip: Module verbergen alleImplementierungsentscheidungen, die sich andern konnen, hinter einerabstrakten Schnittstelle.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 106 / 115

Page 67: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Zweite Modularisierung (objektbasiert)

. . . nach dem Geheimnisprinzip (Information Hiding) (Parnas 1972)

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 107 / 115

Software-Architektur

Qualitaten

Anderbarkeit:betroffene Module

Input Lines Index Indexer Sorter Output

Eingabeformat ×großere Dateien ×riesige Dateien ×

Getrennte Entwicklung:

nur Schnittstellen mussen bekannt sein

Performanz:

zusatzliche Aufrufe

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 108 / 115

Page 68: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Abschließendes Wort zur Modularisierung

Es gibt viele Modularisierungsmoglichkeiten.

Jede ist gut fur einen Zweck, schlecht fur einen anderen.

Mit gangigen Programmiersprachen muss man sich auf eine festlegen.

Definition

Querschnittsbelange (Cross-Cutting Concerns):Implementierungsaspekte, die eine große Zahl von Modulen betreffen.

Beispiele: Fehlerbehandlung, Logging-Mechanismen, Vermeidung vonSpeicherlochern etc.

Aspektorientierte Programmiersprachen erlauben eine separateBeschreibung dieser Aspekte und ein

”Einweben“ des Aspekts in das

System.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 109 / 115

Software-Architektur

Wiederholungsfragen I

Was ist Software-Architektur und welche Bedeutung hat sie?

Welche Faktoren spielen eine Rolle fur die Architektur?

Erlautern Sie den Prozess von Hofmeister et al. zum Entwurf einerArchitektur (globale Analyse, Faktoren, Strategien,Blickwinkelentwurf).

Was ist ein Architekturblickwinkel bzw. eine Architektursicht?

Erlautern Sie die Blickwinkel von Hofmeister et al. Wer hat jeweils einInteresse an diesen Blickwinkeln?

Warum verschiedene Blickwinkel? Warum gerade diese vierBlickwinkel?

Wie lautet das Gesetz von Conway?

Was ist Modularisierung?

Was ist eine Schnittstelle?

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 110 / 115

Page 69: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

Wiederholungsfragen II

Was ist das Prinzip des Information-Hidings?

Was versteht man unter Kopplung und Zusammenhalt?

Nennen Sie Regeln fur einen guten Architekturentwurf.

Wie lasst sich Architektur prufen? Erlautern Sie insbesondere SAAM.

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 111 / 115

Software-Architektur

Weiterfuhrende Literatur

Bass u. a. (2003) geben eine gute Ubersicht zu allen relevantenAspekten von Software-Architektur

Hofmeister u. a. (2000) beschreiben eine Methode fur denArchitekturentwurf, die auf vier verschiedenen Architektursichtenberuht

Shaw und Garlan (1996) geben eine Einfuhrung inSoftware-Architektur und beschreiben einige Architekturstile bzw.-muster

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 112 / 115

Page 70: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

1 Bass u. a. 2003 Bass, Len ; Clements, Paul ; Kazman, Rick:Software Architecture in Practice. 2nd edition. Addison Wesley, 2003

2 Buschmann u. a. 1996 Buschmann, Frank ; Meunier, Regine ;Rohnert, Hans ; Sommerlad, Peter ; Stal, Michael:Pattern-oriented Software Architecture: A System of Patterns. Bd. 1.Wiley, 1996

3 Clements u. a. 2002 Clements, Paul ; Bachmann, Felix ; Bass,Len ; Garlan, David ; Ivers, James ; Little, Reed ; Nord,Robert ; Stafford, Judith: Documenting Software Architecture.Boston : Addison-Wesley, 2002

4 Hofmeister u. a. 2000 Hofmeister, Christine ; Nord, Robert ;Soni, Dilip: Applied Software Architecture. Addison Wesley, 2000(Object Technology Series)

5 IEEE P1471 2002 : IEEE Recommended Practice for ArchitecturalDescription of Software-intensive Systems—Std. 1471-2000. ISBN0-7381-2518-0, IEEE, New York, NY, USA. 2002

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 113 / 115

Software-Architektur

6 Kazman u. a. 1996 Kazman, Rick ; Abowd, Gregory ; Bass, Len ;Clements, Paul: Scenario-Based Analysis of Software Architecture. In:IEEE Software (1996), November, S. 47–55

7 Kruchten 1995 Kruchten, Phillipe: The 4+1 View Model ofArchitecture. In: IEEE Software 12 (1995), November, Nr. 6, S. 42–50

8 Parnas 1972 Parnas, David L.: On the Criteria to Be Used inDecomposing Systems into Modules. In: Communications of the ACM15 (1972), Dezember, Nr. 12

9 Perry und Wolf 1992 Perry, Dewayne E. ; Wolf, Alexander L.:Foundations for the Study of Software. In: ACM SIGSOFT 17 (1992),Oktober, Nr. 4, S. 40–52

10 Shaw und Garlan 1996 Shaw, Mary ; Garlan, David: SoftwareArchitecture – Perspectives on an Emerging Discipline. Upper SaddleRiver, NJ : Prentice Hall, 1996. – ISBN ISBN 0-13-182957-2

11 Sowa und Zachman 1992 Sowa, J. F. ; Zachman, J. A.: Extendingand formalising the framework for information systems architecture. In:IBM Systems Journal (1992)

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 114 / 115

Page 71: Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en Stil (Software-Produktlinien) Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester

Software-Architektur

12 Zachman 1987 Zachman, J. A.: A framework for information systemsarchitecture. In: IBM Systems Journal 26 (1987), Nr. 3

13 Zachman 1999 Zachman, J. A.: A framework for information systemsarchitecture. In: IBM Systems Journal 38 (1999), Nr. 2&3, S. 454—470

Rainer Koschke (Uni Bremen) Software-Projekt Wintersemester 2008/09 115 / 115