Vorlesung 2: Sind Architekten überhaupt notwendig, wenn wenn man über agile Teams spricht? Flashcards
Was ist agile Softwareentwicklung?
▪ Agile Softwareentwicklung wurde erstmals 2001 von einer Gruppe von Softwareentwicklern als Begriff erwähnt.
▪ Die Gruppe wollte bessere Wege der Softwareentwicklung entwickeln und definierte agile Werte (Achtung: die rechte
Seite jeder Aussage ist auch wichtig!):
- Individuen und Interaktionen über Prozesse und Werkzeuge
- Funktionierende Software statt umfassender Dokumentation
- Zusammenarbeit mit dem Kunden statt Vertragsverhandlungen
- Reagieren auf Veränderungen statt Befolgen eines Plans
▪ Darüber hinaus wurden zwölf Prinzipien für agile Software veröffentlicht (die sich seither bewährt haben!)
▪ Es entwickelten sich viele Prozesse rund um die agile Softwareentwicklung auf verschiedenen Ebenen (z. B. Scrum auf Teamebene und SAFe auf Organisationsebene)
Wie funktioniert Scrum?
Wie viel Architektur ist notwendig?
Wie viel Architekturarbeit im Voraus notwendig ist, bevor mit der Entwicklung eines Systems begonnen wird?
▪ Intentionale vs. emergente Architektur: Wie
viel Up-Front-Architektur ist notwendig?
▪ Up-front-Architektur klingt wie ein Wasserfall-Ansatz, reduziert aber
reduziert Risiken:
- Erhöhte Vorhersagbarkeit
- Leichtere Koordination zwischen Teams
▪ Mehr Vorleistung reduziert spätere Nacharbeit, kann aber auch
zu mehr Over-Engineering führen (YAGNI!)
▪ Faustformel: Je größer das Projekt, desto höher der Anteil
der Architekturarbeit im Vorfeld.
▪ Bei großer Unsicherheit: auf Architekturebene experimentieren
▪ Es muss eine Mischung aus Up-Front-Architekturarbeit und
agiler Feature-Entwicklung (es ist nicht
“agil vs. Architektur”)
“Architecture as an Enabler for System Evolution” beschreibt die Rolle der Softwarearchitektur dabei, ein System langfristig zu unterstützen, anzupassen und weiterzuentwickeln, beschreibe diese.
Ausschließlich auf emergente Architektur in großen Systemen setzen
- Höhere Lieferkosten und Verzögerungen
- Geringere Änderbarkeit und Wartbarkeit
- Geringere Qualität
wird wahrscheinlich zu Problemen führen:
▪ Je größer das System ist, desto wichtiger ist eine bewusste Architektur (die architektonische Startbahn):
- Voraussetzungen für die zukünftige Entwicklung werden im Voraus implementiert (“Befähiger”)
- Funktionen können Teile der Startbahn “verbrauchen”, um eine schnelle Bereitstellung zu ermöglichen
- NewEnablers werden im Laufe der Zeit implementiert
▪ Je größer das “Flugzeug” ist, desto mehr “Landebahn” braucht man
Beschreibe Software-Architekten in der agilen Entwicklung.
▪ Um schnell auf Veränderungen zu reagieren / anpassungsfähig zu sein, müssen die Teams voll funktionsfähig sein:
- Teams haben alle Kompetenzen, die sie brauchen (multi-skilled teams, incl. Software-Architektur)
- Teams können ihre eigenen Entscheidungen treffen (was weniger Zwänge bedeutet)
- Teams leiden nicht unter organisatorischen Abhängigkeiten
▪ Schnelles Reagieren auf veränderte Bedingungen kann zu Änderungen in der Software-Architektur führen
- Evolution der Architektur ist wichtig
- Gleichgewicht zwischen “emergentem Design” und “Intentionalität
▪ Die Ausrichtung der Software-Teams an den Geschäftszielen und Visionen ist nach wie vor wichtig
▪ Enabling Teams können andere Teams dabei unterstützen, voll funktionsfähig zu werden