Kapitel 8.2 Agile Prozesse Flashcards
Was ist das agile Manifest?
Eine Gegenreaktion zu plangetriebenen Prozessen (Wasserfall)
Welche Ideen stehen im agilen Manifest?
- Individuen und Interaktion wichtiger als Prozesse und Werkzeuge
- Laufende Software wichtiger als vollständige Dokumentation
- Kundenmitarbeit wichtiger als Vertragsverhandlungen
- Sich auf Änderungen einstellen wichtiger als Verfolgen eines Plans
Eigenschaften von agilen Prozessen?
- Minimum an Vorausplanung
- Planung erfolgt inkrementell
- Vermeiden unterstützender Dokumente
- Schnelle Reaktion auf Änderungen
- Einbeziehung des Kunden in die Entwicklung
- Vertreter: Extreme Programming (XP), Scrum, Crystal, Adaptive Software Development, Feature-Driven Development, Software- Expedition
Praktiken des Extreme Programming (XP) nennen?
- Paarprogrammierung
- Testgetriebene Entwicklung
- Inkrementeller Entwurf durch Umstrukturierungen
- Iterative Planung in kurzen Zyklen (Planungsspiel)
- Aktive Beteiligung des Kunden
- Fortlaufende Integration
- Programmierrichtlinien
- Gemeinsamer Quelltext-Besitz
- Textuelle Beschreibung der Anwendungsfälle auf Karteikarten
- 40-Stunden-Woche
Was ist Paarprogrammierung?
- Jede Programmiertätigkeit wird im Paar ausgeführt
- Arbeit an einer Tastatur, einer Maus und einem Bildschirm
- Rollenverteilung: Fahrer und Beifahrer
- Fahrer denkt an Implementierung des Algorithmus
- Beifahrer denkt strategisch, führt ständige Durchsicht durch
Vorteile und Nachteile der Paarprogrammierung nennen.
Vorteile:
- Führt zu nachweisbar höherer Qualität des Programmtextes
- Paarprogrammierung kompensiert für fehlende Inspektionen/Reviews.
Nachteile:
- Vorteil gegenüber Einzelprogrammierung plus Inspektionen ist nicht nachweisbar.
- Kosten verdoppeln sich nahezu.
- Nützt eher unerfahrenen Entwicklern.
Eigenschaften von Effizientem Testen?
- Möglichst zeitnah zur Programmierung
- Automatisiert und damit wiederholbar
- Soll Spaß machen
- Testen so oft und so einfach wie Übersetzen
- Fehler finden, nicht Fehlerfreiheit beweisen
Wie funktioniert das Testen bei XP?
- “Any program feature without an automated test simply doesn’t exist.”
- Programmierer schreiben automatische Komponententests Kunde spezifiziert Akzeptanztests, die das Team implementiert
- Andere Testarten auch möglich, z. B. Stresstest
- Testausführung häufig und automatisch
Wie funktioniert testgetriebene Entwicklung?
- Test/Implementierung/Umstrukturierung: Motiviere jede Verhaltensänderung am Quelltext durch einen automatisierten Test.
- Umstrukturierung und einfacher Entwurf: Bringe den Code immer in eine einfache Form.
- Häufige Integration: Integriere den Code so häufig wie möglich.
- Paarprogrammierung: Soll helfen die Regeln der testgetriebenen Entwicklung einzuhalten.
Zustandsdiagramm der testgetriebenen Entwicklung?
- Testcode vor Anwendungscode schreiben
- kleine Schritte (nicht mehr als eine Methode pro Zyklus)
- Inkrementeller Entwurf (nur so viel, wie gebraucht wird; kein vorausschauender Entwurf)
Test/Implementierung/Umstrukturierung:
was passiert in den Übergängen grün->rot, rot-> grün und grün->grün?
- grün → rot:
- Schreibe einen Test der fehlschlägt. Schreibe gegebenenfalls gerade soviel Quelltext (Stummel, Attrappen, Nachahmungen), dass der Test übersetzt werden kann.
- rot → grün:
- Schreibe gerade soviel Quelltext, dass alle Tests erfolgreich laufen.
- grün → grün:
- Bereinigung durch Umstrukturierung: Eliminiere Duplikationen und andere Unsauberkeiten im Quelltext. Alle Tests müssen weiterhin laufen.
*
- Bereinigung durch Umstrukturierung: Eliminiere Duplikationen und andere Unsauberkeiten im Quelltext. Alle Tests müssen weiterhin laufen.
Was ist Umstrukturierung und wie lauten die Voraussetzungen dafür?
“A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.” [Fowler 1999]
Voraussetzungen:
- automatische Tests: sie stellen lauffähiges Produkt nach Umstrukturierung sicher
- kollektiver Code-Besitz: Änderungen am ganzen Produkt für jeden möglich
Ziel der Umstrukturierung?
Stets eine möglichst einfache Form, die für die bisher implementierten Anforderungen ausreicht (kein änderungsfreundlicher, vorausschauender Entwurf nötig)
Umstrukturierung: Wann ist die einfache Form erreicht?
Die einfache Form ist erreicht, wenn der Code…
- alle seine Tests erfüllt.
- vom „Zielpublikum“ verstanden werden kann.
- jede Intention der Programmierer ausdrückt.
- keine duplizierte Logik enthält.
- möglichst wenig Klassen und Methoden umfasst.
- Reihenfolge entscheidend!
Wo wird die Umstrukturierung durchgeführt?
- Durchgeführt an faulen Gerüchen (engl. bad smells) des Programmtextes, z. B.:
- duplizierter Programmtext
- parallele Vererbungsbäume
- Schrotflintenchirurgie: eine neue Funktion erfordert Änderung an vielen Stellen
- Kommentare zu umfangreich (Variablen besser benennen, Codestücke herausziehen und in Methoden verpacken)