45
Was ist Softwarearchitektur? Ein Beispiel und drei Architekturen Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Wintersemester 2017/18

Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Was ist Softwarearchitektur?Ein Beispiel und drei Architekturen

Burkhardt Renz

Fachbereich MNITechnische Hochschule Mittelhessen

Wintersemester 2017/18

Page 2: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

„Architektur ist die Kombination vonutilitas, firmitas und venustas.“

frei nach Vitruvius (Römischer Architekt 90-20 v. Chr.)

Page 3: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Softwarearchitektur will erreichen, dass das Anwendungssystem dieAnforderungen erfüllt (utilitas), robust ist gegenüber Änderungen

(firmitas) und eine gewisse Schönheit hat (venustas).–

Fragt sich nur: wie?!

Page 4: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Eine (plakative) Gegenüberstellung

Das gedachte Gebäude

Die Zeichnungdes Architekten

Das gebaute Gebäude

Das Gedankengebäude

Entwurfspläne und Programmcode

Die softwaregesteuerte Hardware

nach S. Wendt, HPI

Gegenständliche Systeme Softwarebestimmte Systeme

Page 5: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Ergebnis der Gegenüberstellung

Gegenständliches System

• Grobstruktur mühelossichtbar

• Feinstruktur nur mit großemAufwand sichtbar zu machen

Softwaresystem

• Grobstruktur nur mitbesonderer Anstrengungsichtbar zu machen

• Feinstruktur mühelossichtbar

Was folgt daraus?

+ Wir müssen die Struktur, den Aufbau von Software verständlichmachen.+ Softwarearchitektur

Page 6: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Übersicht

Ein Beispiel – drei ArchitekturenSpezifikationObjektorientierte OrganisationPipes & FiltersEreignisgesteuertes SystemArchitektur und Codestruktur

Evolution und Architektur

Was ist Softwarearchitektur?

Page 7: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Spezifikation von Keywords in Context (KWIC)

The KWIC (Key Word in Context) index system acceptsan ordered set of lines; each line is an ordered set ofwords, and each word is an ordered set of characters.Any line may be “circulary shifted” by repeatedlyremoving the first word and appending it at the end ofthe line. The KWIC index system outputs a listing of allcircular shifts of all lines in alphabetical order.

— David Parnas

Page 8: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Beispiel für KWIC

InputSoftware Architecture in PracticeBringing Design to SoftwareProblem Frames

OutputArchitecture in Practice SoftwareBringing Design to SoftwareDesign to Software BringingFrames Problemin Practice Software ArchitecturePractice Software Architecture inProblem FramesSoftware Architecture in PracticeSoftware Bringing Design toto Software Bringing Design

Page 9: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Diskussion

Wie kann man ein Programm strukturieren, das diese Spezifikationerfüllt?

Page 10: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Ad-hoc-Lösung

Demo

Page 11: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Struktur der Ad-hoc-Lösung

LineReader LineShifter LineSorter LinePrinter

MasterControl

kwic.dat stdoutR R

RR R

Page 12: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Objektorientierte Organisation

Kapselung von DatenMethoden zur Manipulation der Daten

Index

MasterControl

kwic.dat stdout

R

Page 13: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Struktur des Objektnetzes

LineReader LineShifter LineSorter LinePrinter

Index

kwic.dat stdout

R

RR R

Page 14: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Objektorientierte Organisation

Demo

CharakteristikKontrollfluss durch zentrale KoordinationProzedurale Abstraktion durch Kapselung derZugriffsmethodenDatenkapselungAlgorithmen und Datenrepräsentation der einzelnen Klassenkönnen geändert werden, ohne die anderen zu beeinflussen.„Dependency Injection“

Page 15: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Pipes & Filters

Demo 1 (Prozesse)

Demo 2 (Threads)

Demo 3 (Funktionaler Stil in Java 8)

Demo 4 (Reaktiver Stil in Java 8 mit RxJava)

Page 16: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Struktur

LineReader LineShifter LineSorter LinePrinterkwic.dat stdout

Page 17: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Charakteristik

Die Steuerung ist verteilt: jeder Filter arbeitet, sobald Datenan seiner Eingabe anliegen.Die Filter sind voneinander unabhängig, sie kommunizierennur über die Pipes zwischen ihnen.Datenfluss und Kontrollfluss fallen zusammen

Page 18: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Ereignisgesteuertes System mit indirektem Aufruf

Demo

Page 19: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Struktur

LineReader LineShifter LineSorter LinePrinter

EventManager

kwic.dat stdout

Page 20: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Laufzeitstruktur

LineReader LineShifter LineSorter LinePrinter

MasterControl

kwic.dat stdout

Page 21: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Charakteristik

Keine zentrale Steuerung.Events führen zu Aktionen, die ihrerseits Events erzeugen.Veränderung der Daten löst Events aus.Modell „aktiver Daten“

Page 22: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Aufbaustruktur von KWIC in Variante 3

LineReader LineShifter LineSorter LinePrinter

EventManager

kwic.dat stdout

Page 23: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Codestruktur von KWIC in Variante 3

kwicmain()usage()

AlphabeticalOrdercompare()

LinePrinterLinePrinter(evMgr: IEventManager)run()

LineSorterLineSorter(evMgr: IEventManager)run()

LineShifterLineShifter(evMgr: IEventManager)run()

LineReaderLineReader(evMgr: IEventManager)run()

«interface»IEventManager

registerAgent(a: Agent)unregisterAgent(a: Agent)putEvent(ev: Event)

EventManagerrun()

AgentAgent(evMgr: IEventManager)putEvent()

Page 24: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Übersicht

Ein Beispiel – drei Architekturen

Evolution und ArchitekturNeue AnforderungenVergleich der LösungenFazit

Was ist Softwarearchitektur?

Page 25: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Neue Anforderungen an KWIC

1 Nicht-Berücksichtigung bestimmter Wörter (wie „der, die,das“) für den Index.

2 Input nicht nur aus einer, sondern aus mehreren Quellen.3 Graphische Benutzeroberfläche für die Abfrage des Index.

Page 26: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Neue Anforderungen an KWIC

Diskussion

Page 27: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Objektorientierte Organisation

1 Implementierung einer neuen LineShifter-Implementierung, diedann dem Index-Objekt injiziert wird.

2 Paralleler Input nur möglich, indem die Struktur grundlegendgeändert wird.

3 Die Implementierung von Index zum Schreiben eines Indexverwenden, GUI objektorientiert entwickeln, IndexReaderschreiben und dort verwenden.

Page 28: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Pipes & Filters

1 Filter für „StopWords“ zwischenschalten.2 Paralleler Input leicht möglich, vorausgesetzt man verwendet

Pipes, die mehrere Eingaben mischen können.3 Die Implementierung von KWIC mit Pipes & Filters zum

Schreiben eines Index verwenden, GUI objektorientiertentwickeln, IndexReader schreiben und dort verwenden.

Page 29: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Ereignisgesteuertes System

1 Filter für „StopWords“ in das Protokoll einbeziehen –Änderung an anderen Filtern notwendig.Oder neuen LineShifter schreiben – ohne das Protokoll zuverändern.

2 Paralleler Input leicht möglich: die parallelen Readerverwenden alle dasselbe Protokoll. Aber: Ende derVerarbeitung erst, wenn sich der letzte Reader abgemeldet hat.

3 Die Implementierung von Index durch das ereignisgesteuerteSystem zum Schreiben eines Index verwenden, GUIobjektorientiert entwickeln, IndexReader schreiben und dortverwenden.

Page 30: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Fazit

1 Architektur ⊥ Funktionalität2 Architektur ⇒ Qualität3 Architektur 6= Codestruktur

Page 31: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Übersicht

Ein Beispiel – drei Architekturen

Evolution und Architektur

Was ist Softwarearchitektur?DefinitionWozu Softwarearchitektur?Literatur & Links

Page 32: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Was ist Softwarearchitektur? – Definition

The software architecture of a system is the set ofstructures needed to reason about the system, whichcomprise software elements, relations among them, andproperties of both.

— Len Bass et al.

Page 33: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Elemente der Definition

Elemente der SoftwarearchitekturElemente, Komponenten – definieren den Ort vonBerechnungen oder auch Speicher, z.B. Filter, Datenbanken,Objekte, Server, Klienten usw.Beziehungen, Konnektoren – definieren die Interaktion derKomponenten, z.B. Funktionsaufruf, Pipe, Event usw.Eigenschaften – definieren Vorgaben und Beschränkungen fürKomponenten, z.B. Schnittstellen, Qualitätsmerkmale usw.

Page 34: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Diskussion

Abstraktion: Wesentliche Elemente und ihre BeziehungenStruktur: Zerlegung und ZusammenbauStrukturen: Verschiedene Sichten auf das Wesentliche desSystemsBeziehungen: Organisierende Prinzipien des Zusammenwirkender ElementePlan: Bauplan im Unterschied zu Dokumentation undProjektplan

Page 35: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Was ist Softwarearchitektur? – Kritik der Definition

The architecture of a software system defines that systemin terms of components and of interactions among thosecomponents. In addition to specifying the structure andtopology of the system, the architecture shows theintended correspondence between the systemrequirements and elements of the constructed system.

— Mary Shaw et al.

What is surprising about the Shaw et al. model [indiesem Geiste ist auch die Definition von Len Bass] isthat, rather than defining the software’s architecture asexisting within the software, it is defining a description ofthe software’s architecture as if that were the architecture

— Roy Thomas Fielding

Page 36: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Welche Strukturen?

Software ist die Beschreibung des gewollten Verhaltens eineruniversellen, abstrakten Maschine (Computer).

Beschreibung – Beschriebenes – Umgebung

1 Struktur der Beschreibung: Codestruktur2 Struktur des Beschriebenen: konzeptionelle Struktur des

(laufenden) Systems3 Struktur der Umgebung: Infrastruktur

Page 37: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Architektonische Themen – Auswahl

Regeln für „Querschnittsthemen“z.B. Fehlerbehandlung, Verteilung. . .Richtlinien für BauplanFachliche Architekturz.B. Strukturen des AnwendungsgebietsQualitätsanforderungen und Strategien, sie zu erreichenz.B. Erweiterbarkeit, Anpassbarkeit des SystemsInfrastruktur, eingesetzte Technikz.B. Frameworks, Sprachen, Datenbanken. . .

Die Abgrenzung der architekturell relevanten Strukturenist die zentrale Aufgabe des Architekten und kann nichtnach formalen Kriterien vollzogen werden

— Peter Tabeling

Page 38: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Aufgaben und Ziele

Mittel der Kommunikation und Diskussion allerInteressengruppen (Stakeholder)Festlegung der ersten und grundlegenden Entscheidungen fürDesign und Implementierung (Constraints)Grundlage für das Erreichen der funktionalen und qualitativenMerkmale des zu konstruierenden SystemsArchitektur fungiert als „mentaler Prototyp“Architektur(-stile, -muster) sind wiederverwendbar, auf andereSysteme übertragbar

Page 39: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Erwartungen an eine Softwarearchitektur

Klare Entwurfsabsichten, damit die intendierte Architekturerhalten und verständlich bleibtDesignzentren festlegenBasis für Design, damit die wesentlichen Fragen gestelltwerdenVerbesserung der Änderbarkeit, indem die Designzentrenerkennbar bleiben und erhalten werden

Page 40: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Grundlegende Entscheidungen in der Architektur

Funktionalität Fähigkeit des Systems, die intendierte Aufgabe zuerfüllen (kann durch verschiedene Architekturenerreicht werden)

Qualitätsmerkmale Insbesondere nicht-funktionale Merkmale, diein hohem Maße von der Architektur beeinflusstwerden

Organisation Architektur bestimmt auch die Organisation desEntwicklungsprozesses

Eckpfeiler Architektur legt den Rahmen fest, in dem sich Designund Implementierung bewegen (z.B. Framework)

Page 41: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Zusammenfassung: Aufgaben von Softwarearchitektur

1 Verstehbare Darstellung der zentralen Entwurfsentscheidungen2 Wiederverwendbarkeit von Komponenten eines Systems3 Grundlegender Bauplan für die Konstruktion eines

Softwaresystems4 Basis für kontrolllierte Evolution eines Systems oder einer

Produktlinie5 Grundlage für die Analyse eines (evtl noch gar nicht gebauten)

Softwaresystems – z.B. in Bezug auf Qualitätsmerkmale6 Mittel des Managements der Entwicklung und

Weiterentwicklung

Page 42: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Fazit: Was ist Softwarearchitektur?

To be architectural is to be the most abstract depictionof the system that enables reasoning about criticalrequirements and constrains all subsequent refinements.

— Mark Klein

A mental prototype is a model of the system whichoutlines a potential system solution. It describesfunctionality, but leaves open most of the implementationdetails.

— Andreas Knöpfel, Bernhard Gröne, Peter Tabeling

Page 43: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Literatur

Mary Shaw, David GarlanSoftware Architecture: Perspectives on an Emerging DisciplineUpper Saddle River, NJ: Prentice-Hall, 1996.

Len Bass, Paul Clements, Rick KazmanSoftware Architecture in PracticeBoston: Addison-Wesley, Third Edition 2012.

Jan BoschDesign and Use of Software ArchitecturesHarlow, UK: Addison-Wesley, 2000.

Christine Hofmeister, Robert Nord, Dili SoniApplied Software ArchitectureReading, MA: Addison-Wesley, 2000.

Page 44: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Literatur

Ian GortonEssential Software ArchitectureBerlin: Springer, Second Edition 2011.

Peter TabelingSoftwaresysteme und ihre ModellierungBerlin: Springer, 2006.

Richard N. Taylor, Nenad Medvidović, Eric M. DashofySoftware Architecture: Foundations, Theory, and PracticeJohn Wiley & Sons, 2010.

George FairbanksJust Enough Software Architecture: A Risk-Driven ApproachBoulder CO: Marshall & Brainerd, 2010.

Page 45: Was ist Softwarearchitektur? - Ein Beispiel und drei ... · Eine(plakative)Gegenüberstellung Das gedachte Gebäude Die Zeichnung des Architekten Das gebaute Gebäude Das Gedankengebäude

Links

I Software Engineering InstituteSoftware Architecturehttp://www.sei.cmu.edu/architecture/

I Michael Stal, Stefan Tilkov, Markus Völter, Christian WeyerSoftwareArchitekTOUR - Podcast für den professionellenSoftwarearchitektenhttp://www.heise.de/developer/podcast/