Vorlesung 2: Sind Architekten überhaupt notwendig, wenn wenn man über agile Teams spricht? Flashcards

1
Q

Was ist agile Softwareentwicklung?

A

▪ 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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wie funktioniert Scrum?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie viel Architektur ist notwendig?
Wie viel Architekturarbeit im Voraus notwendig ist, bevor mit der Entwicklung eines Systems begonnen wird?

A

▪ 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”)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

“Architecture as an Enabler for System Evolution” beschreibt die Rolle der Softwarearchitektur dabei, ein System langfristig zu unterstützen, anzupassen und weiterzuentwickeln, beschreibe diese.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Beschreibe Software-Architekten in der agilen Entwicklung.

A

▪ 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly