Workshop: Einführung in die Software-Architektur
Konzeption und Entwicklung moderner Software-Systeme
- Kriterien für gute Software-Architektur
- Strukturierte Herangehensweisen zur Erstellung einer Software-Architektur
- Qualitativ hochwertige Software entwickeln und begleiten
Die Qualität der Software-Architektur entscheidet über den Erfolg eines jeden Software-Projektes. Aber was genau ist eine gute Software-Architektur und was sind die Aufgaben eines Software-Architekt:in?
In diesem Workshop lernen Sie, sich als Software-Architekt:in im Spannungsfeld von technischen Entscheidungen und kommunikativen Aufgaben zu bewegen.
Die Disziplin Software-Architektur wird grundlegend eingeführt und in ihrer Breite dargestellt. Sie erhalten einen Überblick zu allen relevanten Elementen einer Software-Architektur und den zugehörigen Tätigkeitsfeldern der Software-Architekt:in. Die Inhalte werden praxisnah vermittelt und mit Übungen vertieft, so dass Sie das Gelernte direkt im Projektalltag einsetzen können.
Zu den Aufgaben von Software-Architekt:innen gehören Architekturentwurf, Requirements-Engineering, geschäftliches Verständnis, Sicherstellung funktionaler und nichtfunktionaler Qualitäten, Entscheidungsfindung und Kommunikation mit unterschiedlichen Stakeholdern. Um diese zu meistern, erlernen Sie eine strukturierte Herangehensweise zur Erstellung einer Software-Architektur. Darin wird, ausgehend von den architekturell signifikanten Requirements, ein Architekturentwurf abgeleitet, der auf Design-Taktiken zur Bewältigung nichtfunktionaler Qualitäten fokussiert.
Sie erhalten das Rüstzeug, um mit etablierten Verfahren wie Architektur-Reviews, Testautomatisierung und DevOps die Qualität Ihres Systems über dessen gesamten Lebenszyklus sicherzustellen.
Definition und Motivation
- Was ist Software-Architektur?
- Warum braucht man eine strukturiere Software-Architektur?
Die Rolle des Architekt:in
- Kommunikation
- Geschäftliche Aspekte
- Requirements Elicitation
- Architektur-Entwurf
- Design-Entscheidungen
- Technologie-Entscheidungen
Prozess der Architektur-Erstellung
- Wie entwerfe ich eine Software-Architektur?
- Architekturell signifikante Requirements identifizieren
- Von Requirements zu Architektur-Entscheidungen
- Strategische vs. taktische Entscheidungen
- Rough Up Front Design: Subsysteme, Konzepte für zentrale NFRs
- Iterativer Prozess zur Elaboration der Architektur
Design eines Systems
- Subsysteme und deren Interaktion definieren
- Komponenten
- Kommunikationspfade
- Schnittstellen, extern / intern
- Goldene Regeln der Software-Architektur
- Separation of Concerns
- Looe Coupling
- High Cohesion
- Encapsulation
- “Premature Optimization is the root of all evil”
- DRY: Don’t repreat yourself
- Technologieentscheidungen treffen
- Betriebssysteme, Programmiersprachen, Datenbanken, Kommunikation, Security, Entwicklungsumgebung, Buildsysteme
- Ausführungsumgebungen und Deployments definieren
- Cloud, Server, Desktop, Embedded
Qualitätsattribute und Requirements
- Die Norm ISO / IEC 25010: Software Qualität
- Design Taktiken für Qualitätsattribute nach Bass, Clements, Katzman
- Konkurrierende und sich unterstützende Qualitätsattribute
Qualität langfristig sicherstellen
- DevOps
- Test und Testautomatisierung
- Review Techniken: ATAM
- Architecture Refactoring
- Dokumentation
Paradigmen und Strömungen der Software-Architektur
- Microservices
- DDD
- Patterns
- Der Architekt im Agilen Umfeld
System-Klassen und Ihre architekturellen Besonderheiten
- Embedded
- Realtime
- Desktop
- Server
- Distributed System
- Cluster
- Cloud
Der Workshop richtet sich an:
- Software-Entwickler:innen die sich zu Architekt:innen weiterbilden wollen
- Software-Architekt:innen die ihr Vorgehen auf eine fundierte Grundlage stellen möchten
- Entscheider:innen die einen Einblick in das Zusammenspiel aus Business, Technologie und Architektur erhalten möchten
Hilfreich sind Erfahrungen aus Software-Projekten.
Mindestanzahl Teilnehmende: 2 Personen