Softwarearchitektur

04IN2014 | Wintersemester 2019/20

Zusammenfassung

Im Zuge der systematischen Entwicklung von Software oder software-intensiver Systeme ist die Softwarearchitektur das zentrale Entwicklungsartefakt, welches die Qualitäten des zugehörigen Systems maßgeblich bestimmt. Der Software-Architekt steht vor der Herausforderung, die Anforderungen der Kunden bzw. Auftragsgeber mit den bestehenden Randbedingungen und technischen Möglichkeiten in der Softwarearchitektur in Einklang zu bringen und die Architektur der Software geeignet zu dokumentieren. Anforderungen bezüglich spezifischer Systemqualitäten (wie z.B. Verfügbarkeit, Änderbarkeit, Performance, funktionale Sicherheit und Datenschutz) habe als sogenannte „Architekturtreiber“ erhebliche Auswirkungen auf die Strukturierung des Softwaresystems, das Zusammenspiel der Bausteine innerhalb der Softwarearchitektur und die Verteilung der Software auf Berechnungsressourcen. Beim Entwurf einer Softwarearchitektur und bei der Exploration von Entwurfsalternativen ist es entscheidend, die Qualität der Softwarearchitekturen möglichst objektiv bewerten zu können. Da sich der Kontext, die Technologie und die Wünsche und Bedürfnisse der Stakeholder fortwährend weiterentwickeln, ist es für die Wartung und Pflege der Systeme wesentlich, die Veränderung der Softwarearchitektur über den Lebenszyklus hinweg zu beherrschen und falls notwendig die Architektur zu überarbeiten, um z.B. wichtige Qualitätsanforderungen weiterhin erfüllen zu können. Besonders für sogenannten „langlebige“ Systeme ist dieser Aspekt von Softwarearchitekturen von elementarer Wichtigkeit.

Die Vorlesung behandelt die wissenschaftlichen und methodischen Grundlagen, die für den ingenieurmäßigen Entwurf von Software-Architekturen notwendig sind. Hierzu werden unter anderem Konzepte, Techniken und Methoden vermittelt, die den systematischen Entwurf von Softwarearchitekturen sowie deren Dokumentation, Bewertung und Evolution unterstützen.

Lernziele

Die Studierenden:

  • kennen die grundlegenden Begriffe im Themenfeld „Softwarearchitektur“ und können die Einordnung der Disziplin in gängige Prozessmodelle sowie die typischen Verantwortlichkeiten der Rolle „Software Architect“ erläutern;
  • können die Zusammenhänge zwischen Anforderungen, Entwurfsentscheidungen, Softwarearchitektur und der Qualität von Software erläutern;
  • sind in der Lage Softwarearchitekturen auf Basis erprobter Konzepte, Techniken und Methoden aus verschiedenen Standpunkten heraus zu konstruieren und zu modellieren;
  • sind in der Lage Softwarearchitekturen unter Verwendung erprobter Techniken zu bewerten und die Vor- und Nachteile verschiedener Architekturentscheidungen zu diskutieren;
  • kennen Konzepte und Techniken zum Management der Evolution von Softwarearchitekturen und können ausgewählte Techniken anwenden.
  • kennen charakteristische Architekturmerkmale moderner Systemtypen sowie Beispiele für Referenzarchitekturen in ausgewählten Anwendungsdomänen und können diese erläutern.

Inhaltsgliederung

  • Kapitel 1: Grundlagen von Softwarearchitekturen I
    Inhalte: Motivation | Terminologie | Systemtheoretischer Hintergrund | Stellenwert von Softwarearchitekturen
  • Kapitel 2: Grundlagen von Softwarearchitekturen II
    Inhalte: Softwarearchitektur in Entwicklungsprozessen | Entwurfsprinzipien | Stakeholder und Rollen | Architekturprozess
  • Kapitel 3: Grundlagen von Softwarearchitekturen III
    Inhalte: Modellbildung im Architekturentwurf | Qualitätseigenschaften von Softwarearchitekturen | Viewpoints und View
  • Kapitel 4: Dokumentation von Softwarearchitekturen I
    Inhalte: Dokumentation von statischen Sichten auf Softwarearchitekturen
  • Kapitel 5: Dokumentation von Softwarearchitekturen II
    Inhalte: Dokumentation von dynamischen Sichten auf Softwarearchitekturen
  • Kapitel 6: Dokumentation von Softwarearchitekturen III
    Inhalte: OMG SysML | SAE Architecture Analysis and Design Language (AADL)
  • Kapitel 7: Entwurf von Softwarearchitekturen I
    Inhalte: Architekturentwurfsprozess | Architekturmuster und Architekturstile | Modul-Stile
  • Kapitel 8: Entwurf von Softwarearchitekturen II
    Inhalte: Komponenten-und-Konnektoren-Stile (u.a. SOA, Microservices) | Allokations-Stile (u.a. Deployment und Safety Integrity Level)
  • Kapitel 9: Entwurf von Softwarearchitekturen III
    Inhalte: Attribute Driven Design | Entwurfskonzepte | Architekturtaktiken | Design Space Exploration
  • Kapitel 10: Entwurf von Softwarearchitekturen IV
    Inhalte: Software-Produktlinienentwicklung | Variabilitätsmanagement
  • Kapitel 11: Bewertung von Softwarearchitekturen
    Inhalte: Architekturbewertung in Entwicklungsprozessen | Basistechniken und Methoden zur Architekturbewertung | Architekturbewertung am Beispiel ATAM, CBAM (Kosten-Wert-Analyse) und FTA (Gefährdungsanalyse)
  • Kapitel 12: Evolution von Softwarearchitekturen
    Inhalte: Grundlegendes zur Alterung und Evolution von Software | Architekturerosion und Architecture Drifts | Architecture Smells | Technische Schulden| Refactoring und Verjüngung
  • Kapitel 13: Fallbeispiele – Softwarearchitekturen softwareintensiver Systems in der Digitalisierung
    Inhalte: Context-Aware Systeme | IoT-basierte Systeme | Datenintensive Systems | Autonome Systeme | Automatisiertes Fahren | Industrie 4.0 |

Literatur

Im Folgenden ist die Primärliteratur zur Vertiefung der Vorlesungsinhalte angegeben. Weitere Literaturhinweise zu spezifischen Themenkomplexen finden sich in den Vorlesungsfolien zur Veranstaltung.

  1. Len Bass, Rick Kazman, Paul Clements: Software Architecture in Practice. Addison-Wesley, 2012.
  2. Paul Clements; Felix Bachmann: Documenting Software Architectures – Views and Beyond. Addison Wesley, 2010.
  3. Nick Rozanski, Eoin Woods: Software Systems Architecture – Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley, 2011.
  4. Richard N. Taylor, Nenad Medvidovic, Eric Dashofy: Software Architecture: Foundations, Theory, and Practice. Wiley, 2009.
  5. Chris Rupp, Stefan Queins et al.: UML glasklar – Praxiswissen für die UML Modellierung. Hanser, 2012.
  6. Paul Clements, Rick Kazman, Mark Klein: Evaluating Software Architecture – Methods and Case Studies. Addison-Wesley, 2002.
  7. Carola Lilienthal: Langlebige Software-Architekturen – Technische Schulden analysieren, begrenzen und abbauen. 2. Auflage, dpunkt.Verlag, 2017.
  8. Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-orientierte Software-Architektur. Vol. 1: A System of Patterns. Wiley, 1996.
  9. Ralf Reussner, Wilhelm Hasselbring (Hrsg.) Handbuch der Software-Architektur. Dpunkt.Verlag, Heidelberg 2009.
  10. Stefan Rook, Martin Lippert: Refactoring in Large Software Projects: Performing Complex Restructurings Successfully. Wiley, 2007.