Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Agile Softwareentwicklung
1. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Seminarpräsentation Projektgruppe knowAAN
Agile Softwareentwicklung
Tobias Varlemann, tobiashv@upb.de
Fakultät für Elektrotechnik, Informatik und Mathematik
Institut für Informatik
Fachgruppe Didaktik der Informatik
26. November 2010
2. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Was ist agile Softwateentwicklung
Agile Softwareentwicklung bezeichnet eine Gegenbewegung zur
klassischen Softwareentwicklung
Entwicklungsprozesse flexibler und schlanker
Fokusierung auf technische und soziale Probleme
Agile Werte als Grundlage
Agile Prinzipieren als Handlungsgrundlage
Agile Methoden als Verfahren der Softwareentwicklung
Agile Prozesse Vorgehensweise
3. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Werte, das agile Manifest
Individuen und Interaktion sind wichtiger als Prozesse und
Werkzeuge
Qualifikation und Kommunikation des Team hoch bewertet. Kein Versteifung auf Werkzeuge oder Techniken
Funktionierende Programme sind wichtiger als ausführliche
Dokumentation
Ziel ist es funktionierende Software zu entwickeln nicht ausführliche Dokumentationen
Das stetige Abstimmen mit dem Kunden ist wichtiger als die
Ursprüngliche Leistungsbeschreibung in Verträgen
Flexibilität ist gefordert. Reagieren auf wechselnde Anforderungen, statt umsetzen veralteter aus Verträgen
Der Mut und die Offenheit für Änderungen steht über den
Befolgen eines festgelegten Plans
Es erfordert Mut mit dem Team offen umzugehen, Probleme anzusprechen und Änderungen anzunehmen
4. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Prinzipien
Leitsätze für agiles Arbeiten
Beispiele:
Zweckmäßigkeit
KISS-Prinzip
YAGNI (You ain’t gonna need it)
Kundennähe
Gemeinsamer Code-Besitz
Ressourcen mehrfach benutzen
5. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden
Best Practices aus der Softwareentwicklung
Methoden aus verschiedene Bereichen
Thinking
Collaborating
Releasing
Planning
Development
6. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Prozesse
Erstellung eines Prozesses aus Werten Prinzipien und Methoden
Ziel Abbau der Bürokratie und Integration menschlicher Aspekte
Beispiele:
Extrem Programming
Scrum
Cristal
Feature Driven Development
7. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden: Thinking
Pair Programming
Programmieren im Paar. Einer programmiert, einer kontrolliert
Energized Work
Angagiertes Mitarbeiten. 40h Woche
Informative Workspace
Team informationen öffentlich und einfach zugänglich
Retrospective
Abschließende Kritische Begutachtung der Prozesse
12. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden Collaborating
Trust
Sit Together
Kurze Wege, enge Kommunikation
Real Costumer Involvement
Kunde vor Ort, kurze Antwortzeiten auf Fragen
Stand-Up Meetings
Täglich, nach Mittag, 3 Fragen
Was habe ich seid letzten Meeting gemacht
Was werde ich bis zum nächsten Meeting machen
Was behindert mich
Coding Standards
Code Formatierung, Code Dokumentation
14. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden Releasing
Done Done
Fertig ist eine Anforderung wenn sie geschrieben, getestet, integriert und deployed wurde
No Bugs
Im Repository befindet sich immer funktionierender Code
Version Control
Ten-Minute Build
Ein build mit Tests sollen nnicht länger als zehn Minuten dauern, ansonsten aufspalten
Continuous Integration
Documentation
Tests dokumentieren den Code. In Ausnahmen externe Dokumentation
17. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden Planning
Vision
Release Planning
Planning Game
Kunden erstellen Anforderungen, Entwickler schätzen, Kunden ordnen Iterationen zu
Iteration Planning
Slack
Einplanen von Zusatzzeit für Problemebehandlung
Stories
Anforderungen werden in Stories aufgeschrieben. Als Einkäufer erstelle ich Auftrage mit Lieferzeiten
Schätzung
Relative Aufwandsabschätzungen mit 5 Punkten mit Sching-Schang-Schong-Schätzen.
18. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden Development
Test Driven Development
Graybox Testing, erst Tests für Anforderung Schreiben, dann Anforderung umsetzten.
Refactoring
Ständiges Anpassen und vereinfachen der Architektur und des Codes
Simple Design
Deduplication des Codes, möglichst wenig Klassen und Methoden
Incremental Design
Löse nur das aktuelle Problem, erst wenn für ein Anderes Problem der Code angefasst wird generalisieren.
Customer Tests
Tests die mit dem Kunden entwickelt werden um funktionales Wissen abzubilden
20. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Gemeinsamkeiten
Frühe und häufige Auslieferung
Abstimmung des richtigen Wegs
Entdeckung von Fehlentwicklungen
Kontrolle des Fortschritts
Rückkopplung und Kommunikation
Häufig, mit möglichst geringen Aufwand
Intern Kommunikation statt Dokumentation
Reaktion auf Veränderung
Veränderungen begrüßen und akzeptieren
Nicht über Veränderungen ärgern
Lernen
Lernen durch Mitarbeit
Lernen über Fachlichkeiten, technischen Details und Techniken
und Werkzeuge
21. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Gemeinsamkeiten
Entwurf der gesamten Software reduzieren
Früh ausführbare Software erstellen
Häufige Abstimmung mit Kunden
Flexible auf Kundenwünsche eingehen
Aufwand gering halten, mehr Zeit für die Umsetzung
22. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Einführung
Sammlung von Agilen Methoden und Regelungen für das
Zusammenspiel
Zwei Sätze an Methoden
Primäre Methoden die verwendet werden müssen
Sekundäre Methoden können nach belieben angewendet werden
Zusammenhang der Methoden ergeben sich aus Werten und
Prinzipien
23. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Werte
Kommunikation
Rückkopplung
Einfachheit
Mut
Respekt
25. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
13 Primär Methoden
Räumlich zusammen sitzen
Komplettes Team
Informative Arbeitsumgebung
Energized Work
Pair Programming
Stories
Wochenzyklus
Quatalszyklus
Freiraum (Slack)
Ten-Minute Build
Continuous Integration
Test Driven Development
Inkrementeller Entwurf
26. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
11 Sekundär Praktiken
Kundenbeteiligung
Inkrementelles Deployment
Team Kontinuität
Schrumpfende Teams
Ursachen Analyse
Gemeinsamer Quelltext
Quelltests und Tests
Eine Quelltextbasis
Daily Deployment
Vertrag mit verhandelbaren Umfang
Bezahlung pro Benutzung
27. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Rollenverteilung
Kunde
Anforderungen aufschreiben und priorisieren
Auskunft zu Details
XP-Coach
Führt das Team sanft
Beobachtet den Ablauf und korrigiert
Entwickler
28. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Projekt Ablauf
1 Kunde wählt grob Anforderungen für ein Release aus (ca. 3
Monate)
2 Entwickler schätzen den Aufwand und geben den Kunden
Rückkopplung
3 Kunde wählt genauer nach Aufwand die Anforderungen für das
Release und die nächste Iteration (1 Woche) aus
4 Entwickler beginnen Iteration, Rückfragen an den Kunden
5 Präsentation am Ende der Iteration, Rückkopplung des Kunden
6 Planung der nächsten Iteration oder des nächsten Releases.
Wenn Anforderungen oder Prioritäten geändert wurden weiter mit
Schritt 2
Wenn keine Änderungen weiter mit Schritt 4
29. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Einführung
Fertigung und Entwicklung so komplex das nicht im Voraus
geplant werden kann.
Nicht explizit Softwareentwicklung sondern generell Management
Product Backlog
Iterationen gleicher Länge (Sprints)
Sprint Backlog
30. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Rollenverteilung
Product Owner
Team
eigenverantwortliche Umsetzung des Auftrags
Handelt mit Owner aus wann welche Anforderungen umgesetzt
werden
Scrum-Master
Achtet auf Einhalte des Prozesses
Sollte nicht Teammitglied sein
31. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Projekt Ablauf
1 Sprint-Planungstreffen 1
Kunden anwesend
Auffüllen den Product Backlog
Festlegen des Sprintziels
2 Sprint-Planungstreffen 2
Nur Scrum Team
Auswahl der Anforderungen für das Sprint Backlog
Anforderungen in Tasks zerlegen und an die Entwickler verteilen
3 Sprint
1 bis 4 Wochen lang
Daily Scrums im Sprint
4 Review
Vorstellung der Sprintergebnisses für den Owner
Mögliche Änderungen am Product Backlog
5 Retrospektive
Betrachtung der letzten Sprintphase
Feststellung Was war gut und Was kann verbessert werden
32. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Einführung
Basis sind zu entwickelnde Features
Aufteilung großer Teams in kleine mit Chefprogrammierer
Projekt max. 6 Monate
2-3 Wochen für Planung (Schritt 1-3)
2 Wochen Iterationen (Schritt 4-5)
33. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Rollenverteilung
Projektleiter
Chefarchitekt
Hält Überblick über die Gesamtarchitektur und fachlichen Aspekte
Chefprogrammierer
Führt Entwicklerteams in größeren Projekten
Entwickler
34. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Projektablauf
1 Entwickle Gesamtmodell
Erstellung von Fachmodellen in klein Gruppen und Integration in
Gesamtmodell
2 Erstelle Feature-Liste
Aufspaltung des Gesamtmodells in Features
Verwendunge eines Schemas: Subject Areas <- Business
Activities <- Steps
Steps entsprechen Features
3 Plane je Feature
Planung der Reihenfolge der Features, berücksichtigt
Abhängigkeiten
Jeder Buisness Activity wird ein Chefprogrammierer zugeordnet
4 Entwurf je Feature
Zuweisung von Features an Entwicklerteams
Erstellung von Sequenzdiagrammen und Klassen- und
Methodenrümpfen
5 Konstruiere je Feature
Erstellung von Quelltext
35. Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Entwicklung in Projektgruppen
Raum um einen informativen Arbeitsplatz einzurichten.
Veränderung der Iterationsdauer oder -umfang für Teilzeit.
Feste Tage für Entwicklung und Standupmeetings
Repository und Integrationsserver