Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en...
Transcript of Wintersemester 2008/09 Software-Projekt · 2008-12-14 · ! unterstutzt Wiederverwendung im gro en...
Software-Projekt
Prof. Dr. Rainer Koschke
Fachbereich Mathematik und InformatikArbeitsgruppe Softwaretechnik
Universitat Bremen
Wintersemester 2008/09
Uberblick I
1 Software-Architektur
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
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
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
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).
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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
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
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
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
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
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
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.
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.
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.
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.
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.
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:
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
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
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
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.
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.
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
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.
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.
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.
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
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
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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