💡 Hint: To show the presentation in Fullscreen press "F".
→ or Space: Next page
←: Previous page
ESC: Show overview
?: show help
Architektur Deep Dive
Von Anforderungen zu Entscheidungen und strukturiertem Code
Warum Architektur?
Software bleibt bestehen - unverändert
Aber die Welt verändert sich, mit ihren Anforderungen
-> Ständiges Anpassen notwendig
Warum Architektur?
Unvermeidbare Basis jeder Software
Frühzeitige Fehlererkennung durch geplante Strukturen
Vermeidung von unkontrollierbarer Legacy-Software
kontinuierliche Anpassung
=> Software lange in angemessener Qualität, Zeit und Kosten weiter entwicklen
=> Architektur begleitet die Software von Anfang bis Ende
Warum Architektur?
Haus der Geschichte, Darmstadt
Internetfund, toter Vogel
Warum Architektur?
Architektur-Ziele: eher langfristig
Projekt-Ziele: eher kurzfristig
=> möglichst große Schnittmenge aushandeln
Methoden zur Architekturgestaltung
Wo fängt man an?
Wie startet man?
Was soll dokumentiert werden?
Definition Softwarearchitektur
”Software Architecture is the stuff you can’t google.”
nach Mark Richards
Definition Softwarearchitektur
”Die grundsätzliche Organisation eines Systems, wie sie sich in dessen Komponenten, deren Beziehung zueinander und zur Umgebung widerspiegelt, sowie die Prinzipien, die für seinen Entwurf und seine Evolution gelten.”
nach ISO 42010
Grundelemente
Unabhängige Bausteine
Beziehungen/Relationen über definierte Schnittstellen
Konzepte und Prinzipien
Definition Baustein
ein einzelnes Element des Systems
in sich gekapseltes Verhalten
Schnittstellen zu anderen Bausteinen
austauschbar und wiederverwendbar
Kontext
Abhängigkeit: wie externe Faktoren Architekturentscheidungen beeinflussen
Anpassung an Geschäftsziele und -umfeld
rechtliche und technische Rahmenbedingungen
organisatorische Faktoren
Balancierung konkurrierender Projektfaktoren
Regel: Es gibt kein Patentrezept
Fundament der Architektur
Bausteine und deren Zerlegung
Beziehungen zwischen Elementen und Umgebung
Grundsätze über Design und Entwicklung
Entscheidungen über Entwurf des Systems
Evolution des Systems unterstützen
Festhalten von Zielen
Schlecht: Implizite Aussagen/Wünsche werden oft vergessen
Gut: explizit ausarbeiten und aufschreiben
Sichert Konsistenz bei Entscheidungen
Schnelles Aufdecken von Konflikten
Fördert Abstimmen und Festlegen mit Stakeholdern
Zeigt auch Abwägung/Diskussion auf
Was macht ein Software Architekt?
Mitarbeit in allen Phasen und Lebens-abschnitten des Software Systems
Anforderungen analysieren
Strukturen entwerfen
Querschnittskonzepte schneiden
Architektur kommunizieren
Architektur bewerten
Umsetzung begleiten
Aufgabenverteilung
Klassisch: Architekt bestimmt von außerhalb des Teams
Niemand benannt: Implizite Architektur aus dem Team
Agenten: Themen explizit im Team verteilt
im Team: Architekt unterstützt Team
Komplexität in Software
beherrschbar machen durch iteratives Vorgehen
Iterativ entwickeln und adaptieren
inkrementell wachsen
Ideen auch mal ausprobieren
Frühzeitige Rückmeldung durch Stakeholder
kontinuierliche Anpassung
schnelles Erkennen von Risiken
Stakeholder
Def. Stakeholder
Personen oder Organisationen, welche
das System nutzen, betreiben, prüfen, entwickeln, zahlen, …
Daten liefern oder empfangen
Interesse am System/Betrieb/Resultaten haben
Und verschiedenste Anforderungen mitbringen:
Wer nimmt Einfluss bzw. Wer ist betroffen?
Was sind die Erwartungen?
Wie groß ist der Einfluss (worauf)?
Wo können Konflikte entstehen?
Die Stakeholder-Prio-Matrix
Die Stakeholder-Prio-Matrix
begleitend zur Matrix eine übersichtliche Tabelle
Beispiel:
Rolle
Beschreibung
Ziel/Intention
Kontakt
Prio
Infobedarf
Auftraggeber
Dagobert Duck
Ertrag erzielen
@e.mail
Hoch
aktueller Stand
Betreiber
Rechenzentrum
SaaS anbieter
@mail
Medium
Betriebshandbuch
Besucher
Kunde
Dienst nutzen
-
Medium
FAQ
…
Anforderungen
Anforderungen verstehen
Anforderungen sammeln
aufräumen und bereinigen
angemessenen Umfang sicherstellen
Widersprüche beseitigen
Anforderungen klären
Stakeholder und ihr Ziel identifizieren
Kontext/Scope abgrenzen
Funktionen/Prozesse/Abläufe verstehen
Qualitätsziele erstellen
Randbedingungen festlegen
verschiedene Anforderungen
Funktionale Anforderungen: Was soll das System tun?
Qualitätsanforderung: Wie soll ein System etwas tun?
Randbedingungen: Welche Einschränkungen liegen vor?
Nicht-Anforderungen: Was soll aktiv nicht gemacht werden?
Funktionale Anforderung
Was muss die Anwendung können?
Welche Funktionen erfüllen?
z.B. Zeit anzeigen, Rechenaufgabe lösen, …
Randbedingungen
Auf diese Bedingungen ist nur wenig Einfluss möglich
Freiheitsgrad der Architektur durch Randbedinungen eingeschränkt
Man kann sich aber entsprechend darauf einstellen
z.B. Hardware, Budget, Compliance,…
Nicht-Anforderungen
Es gibt bestimmte Dinge, die explizit nicht getan werden sollen
Durch die Definition von Nicht-Anforderungen, kann das System einfacher gestaltet werden
Eine spätere Änderung ist meist schwer
z.B. keine Nutzerdaten speichern
Def. Qualität
Qualität: Ist == Soll
”… eine Eigenschaft einer Software, die sich bei Erstellung, Benutzung oder Weiterentwicklung zeigt.” nach Stefan Toth