Agile Engineering-Techniken (3 Tage)
Voraussetzungen
Die Teilnehmer sollten Programmiererfahrung haben in
- Java 5
- Web-Programmierung
Ziele
- Wie konvertiert das Team eine Anzahl von User Stories in ein potentiell auslieferbares Inkrement des Produkts
- Wie erkennt das Team, wie die User Story umgesetzt wird, welche Arbeitsschritte(Tasks) daraus abgeleitet werden müssen
- Wie bestimmt man, wann ein Task bzw. eine User Story fertig sind („done“)
- Wie entwickelt und dokumentiert ein Scrum Team Richtlinien und Standards für „done“ (Team Charter)
- Wie vermeidet man „technische Schulden“ (technical debt) und was sind die Auswirkungen solcher Schulden
- Wie wird bestimmt, wer welche Aufgaben bei der Realisierung des Produkt-Inkrement übernimmt, welche Rollen gibt es im Team
- Welche Arten von Tests gibt es in der agilen Entwicklung, welche Rolle haben sie, wie und wann werden sie entwickelt und eingesetzt
- Wie setzt man eine kontinuierliche Integration mit automatisierten Unit- und Akzeptanztests auf und hält sie am laufen
- Test-First-Entwicklung und (Akzeptanz- und Unit-)Test-getriebene Entwicklung/Design
- Pair-Programming-Techniken im Team
- Refaktorisierung, Patterns und integrierte Nutzung im TDD-Zyklus
- Emergente Architektur und ihr Nutzen für eine inkrmentelle Entwicklung
- Reporting und Messung von Geschwindigkeit (velocity) des Teams
- Hindernisee und Beteiligung an der Beseitigung derselben
Inhalte
Architektur und Design
Lernziele
- Untersuchung von Architektur und Design mit dem primären Fokus auf den Prinzipien, die eine bessere Testbarkeit und einfacheres Refactoring ermöglichen
- Prinzipien von Architektur in einer agilen Umgebung
- Design-Praktiken in einem agilen Team
- Prinzipien und Vorgehensweisen, die eine bessere Testbarkeit und einfacheres Refactoring ermöglichen
- Anti-Patterns
Schritte
- Erarbeiten eines Proof of Concept/Spike früh im Kursverlauf
- Emergente Architektur Live als Teil der Aufgabenstellung
- Clean code
Zusammenarbeit
Lernziele
-
Ein umfassendes Verständnis zur Art, wie agile Teams zusammenarbeiten. Das umfasst u.a.:
- Zusammenarbeit als ein Team
- Einbeziehen des Kunden in den Prozess
- Pair programming
Schritte
- Diskussion and Reflexion über das Wesen der Zusammenarbeiten bei Agilen Methoden
- Jeder Teilnehmer arbeitet als Mitglied eines Scrum Teams während des gesamten Kurses
- Wir ratendringend zur Nutzung von Pair Programming währnd dem Kurs
- Wir veranstalten „Programmier-Randori“ Sessions im Kurs
- We führen eine Retrospektive als Teil des Kurses durch
- Der Kurs beinhaltet Product Backlog Schätzung als eines seiner Kernelemente
Testgetriebene Entwicklung
Lernziele
Wir studieren Test‐First Entwicklung, u.a. mit folgenden Konzepten:
- Testgetriebene Entwicklung (TDD) als Design-Aktivität
- Der Rot-Grün-Refactoring Zyklus
- Unit-Testen: Prinzipien und Praktiken
- Was macht einen guten Test aus, wie misst man die Effektivität eines Tests
Schritte
- Präsentation und Diskussion über automatisiertes Testen und TDD
- Wir empfehlen dringend die Nutzung von TDD während des Kurses
- Coding Kata – Vorführung und Übung
- Coding Randori
- „Code sense“ Übung
Refactoring
Lernziele
Eine Einführung in die Praxis des Refactoring, u.a. folgende Konzepte:
- Wann soll man refakturieren
- Refactoring zur Pflegbarkeit
- Refactoring nach Patterns
- Problemzonen
Schritte
- Diskussionen und Vorträge
- Übungen zur Refakturierung von schlechtem Code
- Impliziter Teil der Übungen über den ganzen Kurs (TDD)
Kontinuierliche Integration
Lernziele
Eine Einführung in die Grundprinzipien der kontinuierlichen Integration, u.a.:
- Bauen und testen der Software mit einem einzelnen Kommando(„single command build“)
- Erstellen von automatisierten, selbst-testenden und schnellen Builds
- Die Bedeutung eines einheitlichen Quelltext-Repository
- Verbessern der Transparenz und Sichtbarkeit durch automatisches Deployment
Schritte
- Diskussion und Vorträge
- Aufsetzen eines CI-Systems im Kursverlauf (basiert auf Hudson und SubVersion)
- Während der Kursübungen empfehlen wir dringend häufige Integration
Kursformat
- Einführung
- Drei kurze Sprints, mit Lieferung eines laufenden Inkrement mit neuer Funktionalität.
Allgemeine Lehrmethoden
- Kurze Theorieabschnitte, die sofort in Übungen bzw. Praktische Entwicklung umgesetzt werden.
- Assessment: setzt sich zusammen aus Review durch die Trainer, gegenseitige Bewertung (“peer review”) und Selbstbewertung.
- Spiele und andere Abendübungen: Code Kata, Daily Scrum from Hell, Penny Game.
