AGILA – Agile Softwarearchitektur
Teil 3Willkommen zum letzten Teil der Blogserie
Nachdem wir uns in den letzten Beiträgen mit den Grundlagen der Softwarearchitektur, agiler Entwicklung im Allgemeinen und agilem Architekturvorgehen beschäftigt haben, betrachten wir im letzten Beitrag der Serie, welche Anforderungen an Architekturen agile Projekte mit sich bringen.
Architekturanforderungen in agilen Projekten
Architekturanforderungen in agilen Projekten sind spezifische Anforderungen oder Kriterien, die bei der Entwicklung der Softwarearchitektur berücksichtigt werden müssen. Durch sie soll sichergestellt werden, dass resultierende Systeme die gewünschten Qualitätsmerkmale, Funktionalitäten und Leistungseigenschaften erfüllt. Diese Anforderungen dienen als Leitlinien für die Gestaltung der Architektur und beeinflussen die technischen Entscheidungen im Entwicklungsprozess. In agilen Projekten sollten Architekturanforderungen agil und anpassbar sein, um auf sich ändernde Anforderungen reagieren zu können.
Architekturanforderungen können verschiedene Aspekte umfassen:
– Leistungsmerkmale umfassen Anforderungen an die Performance, Skalierbarkeit und Reaktionsfähigkeit des Systems unter bestimmten Belastungsbedingungen.
– Sicherheit meint Anforderungen an den Datenschutz, die Sicherheit der Datenübertragung, den Zugriffsschutz und die allgemeine Sicherheit des Systems.
– Skalierbarkeit bezieht sich auf die Fähigkeit des Systems, sich an steigende Anforderungen anzupassen. Sei es in Bezug auf Nutzerzahl, Datenmenge oder Transaktionsvolumen .
– Wartbarkeit sind Anforderungen, die festlegen , wie leicht das System gewartet, aktualisiert und erweitert werden kann, ohne negative Auswirkungen auf die Funktionalität zu haben.
– Erweiterbarkeit meint, wie einfach und nahtlos das System um neue Funktionen oder Module erweitert werden kann, ohne bestehende Codes zu beeinträchtigen.
– Interoperabilität betrifft die Fähigkeit des Systems, nahtlos mit anderen Systemen oder Diensten zu kommunizieren und zu interagieren.
– Architekturmuster und -stile können als Anforderungen festgelegt werden, um sicherzustellen, dass die Architektur den gewünschten Designprinzipien folgt.
– Technologische Anforderungen umfassen spezifische Technologien, Frameworks oder Plattformen, die im Projekt verwendet werden.
– Nicht-funktionale Anforderungen: Dies können nicht-funktionale Anforderungen wie Benutzerfreundlichkeit, Zugänglichkeit, Barrierefreiheit und mehr umfassen.
In agilen Projekten werden Architekturanforderungen oft in enger Zusammenarbeit mit den Stakeholdern erarbeitet und können sich im Laufe des Projektes ändern. Sie dienen als Leitfaden für die kontinuierliche Anpassung und Entwicklung der Architektur, um sicherzustellen, dass das Endprodukt den Anforderungen entspricht und die Erwartungen erfüllt.

Agile Konzepte für Architekturanforderungen
Agile Konzepte für Architekturanforderungen betonen die Flexibilität, Zusammenarbeit und kontinuierliche Anpassung von Anforderungen. Diese Konzepte sollen sicherstellen, dass Architekturanforderungen agil sind und sich in einer sich ständig ändernden Umgebung weiterentwickeln können.
Es folgen einige Beispiele:
– User Stories für Architektur: Ähnlich wie bei funktionalen Anforderungen können Architekturanforderungen als User Stories formuliert werden. Diese User Stories beschreiben die Anforderungen aus Sicht eines Benutzers oder einer Stakeholder-Rolle. Sie fokussieren sich auf den Wert, den die Architektur für diese Benutzer bietet.
– Agile Architekturdokumentation: Agile Konzepte bevorzugen eine leichtgewichtige Dokumentation, die sich schnell anpassen lässt. Diagramme, Skizzen, Whiteboard-Skizzen und kurze Beschreibungen können verwendet werden, um Architekturprinzipien und entscheidungen zu dokumentieren.
– Emergente Architektur: Agile Architekten bevorzugen die Entwicklung einer emergenten Architektur, die sich schrittweise aus den Anforderungen und der Funktionalität entwickelt. Dies ermöglicht es, auf veränderte Anforderungen und Gegebenheiten flexibel zu reagieren, ohne in umfangreiche Vorausplanung zu verfallen.
– Risikoorientierte Architekturanforderungen: Agile Architekten identifizieren und priorisieren Risiken, die mit der Architektur verbunden sind. Anforderungen werden basierend auf diesen
Risiken festgelegt und entsprechende Strategien entwickelt, um sie zu mindern.
– Kontinuierliche Anpassung: Architekturanforderungen werden kontinuierlich überprüft und
angepasst, um sicherzustellen, dass sie aktuell und relevant bleiben. Dies geschieht in enger Zusammenarbeit mit den Stakeholdern, um sicherzustellen, dass die Architektur den aktuellen Bedürfnissen entspricht.
– Just-in-Time-Entscheidungen: Agile Teams treffen Entscheidungen „just-in-time“, wenn die Anforderungen und das Verständnis des Systems wachsen. Dadurch können sie sich auf aktuelle Informationen stützen.
– Kollaboratives Arbeiten: Architekturanforderungen werden durch kollaboratives Arbeiten mit dem Entwicklungsteam, den Produktverantwortlichen und anderen Stakeholdern entwickelt.
Dies fördert das gemeinsame Verständnis und sorgt für eine bessere Umsetzung der Anforderungen.
Diese agilen Konzepte für Architekturanforderungen tragen dazu bei, dass die Architektur flexibel, anpassungsfähig und auf die aktuellen Bedürfnisse ausgerichtet bleibt, während gleichzeitig eine hohe Qualität und Kundenzufriedenheit gewährleistet werden.
Dringlichkeit als Treiber für agile Architekturarbeit
Dringlichkeit als Treiber für agile Architekturarbeit bezieht sich auf die Notwendigkeit, sich auf spezifische Aspekte der Softwarearchitektur zu konzentrieren, die aufgrund ihrer kritischen Bedeutung oder ihrer potenziellen Auswirkungen auf das Projekt priorisiert werden müsse.
Dieser Ansatz basiert auf der Idee, dass nicht alle Teile der Architektur gleich wichtig sind und dass es sinnvoll ist, sich zuerst auf diejenigen Aspekte zu konzentrieren, die einen unmittelbaren und signifikanten Einfluss haben.
Die Dringlichkeit kann verschiedene Gründe haben:
Risikominderung: Wenn bestimmte Architekturaspekte ein hohes Risiko für das Projekt darstellen, sollten sie frühzeitig angegangen werden, um potenzielle Probleme zu minimieren.
Kritische Funktionalitäten: Falls die Architektur direkt mit kritischen Funktionen des Systems verbunden ist, ist es dringend erforderlich, diese Bereiche zu priorisieren, um die Leistung und Zuverlässigkeit sicherzustellen.
Performance und Skalierbarkeit: Wenn das System unter erwarteter Last gut funktionieren muss, ist es wichtig, Architekturentscheidungen zu treffen, die die Performance und Skalierbarkeit optimieren.
Integration: Wenn das System mit anderen externen Systemen oder Diensten interagiert, ist es dringend erforderlich, die Integrationsarchitektur sorgfältig zu planen und umzusetzen.
Änderungen in den Anforderungen: Wenn sich die Anforderungen ändern, kann es notwendig sein, die Architektur schnell anzupassen, um sicherzustellen, dass das System den aktuellen Bedürfnissen entspricht.
Die agile Architekturarbeit unter Berücksichtigung der Dringlichkeit ermöglicht es, schnell auf die wichtigsten Anliegen zu reagieren. So kann sichergestellt werden, dass das Projekt auf einem soliden Fundament aufbaut. Dabei ist jedoch eine Balance erforderlich, um die Dringlichkeit mit den langfristigen Zielen der Architektur und der technischen Integrität in Einklang zu bringen.
Quellen
- https://www.scrum.org/
- http://agilemanifesto.org/
- https://www.isaqb.org/
- https://de.wikipedia.org/wiki/Softwarearchitektur
- https://www.agile-academy.com/
- Mike Cohn: Agile Design: Intentional Yet Emergent.
- Stefan Toth: „Vorgehensmuster für Softwarearchitektur: Kombinierbare Praktiken in Zeiten von Agile und Lean”, 2. Auflage, Hanser Verlag 2015