Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Seminarpräsentation Projektgruppe knowAANAgile Softwareentwicklung
Tobias Varlemann, [email protected]
Fakultät für Elektrotechnik, Informatik und MathematikInstitut für Informatik
Fachgruppe Didaktik der Informatik
26. November 2010
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Was ist agile Softwateentwicklung
Agile Softwareentwicklung bezeichnet eine Gegenbewegung zurklassischen 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
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Werte, das agile Manifest
Individuen und Interaktion sind wichtiger als Prozesse undWerkzeugeQualifikation und Kommunikation des Team hoch bewertet. Kein Versteifung auf Werkzeuge oder Techniken
Funktionierende Programme sind wichtiger als ausführlicheDokumentationZiel ist es funktionierende Software zu entwickeln nicht ausführliche Dokumentationen
Das stetige Abstimmen mit dem Kunden ist wichtiger als dieUrsprüngliche Leistungsbeschreibung in VerträgenFlexibilität ist gefordert. Reagieren auf wechselnde Anforderungen, statt umsetzen veralteter aus Verträgen
Der Mut und die Offenheit für Änderungen steht über denBefolgen eines festgelegten PlansEs erfordert Mut mit dem Team offen umzugehen, Probleme anzusprechen und Änderungen anzunehmen
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Prinzipien
Leitsätze für agiles ArbeitenBeispiele:
ZweckmäßigkeitKISS-PrinzipYAGNI (You ain’t gonna need it)KundennäheGemeinsamer Code-BesitzRessourcen mehrfach benutzen
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden
Best Practices aus der SoftwareentwicklungMethoden aus verschiedene Bereichen
ThinkingCollaboratingReleasingPlanningDevelopment
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 AspekteBeispiele:
Extrem ProgrammingScrumCristalFeature Driven Development
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden: Thinking
Pair ProgrammingProgrammieren im Paar. Einer programmiert, einer kontrolliert
Energized WorkAngagiertes Mitarbeiten. 40h Woche
Informative WorkspaceTeam informationen öffentlich und einfach zugänglich
RetrospectiveAbschließende Kritische Begutachtung der Prozesse
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden Collaborating
Trust
Sit TogetherKurze Wege, enge Kommunikation
Real Costumer InvolvementKunde vor Ort, kurze Antwortzeiten auf Fragen
Stand-Up MeetingsTäglich, nach Mittag, 3 Fragen
Was habe ich seid letzten Meeting gemachtWas werde ich bis zum nächsten Meeting machen
Was behindert mich
Coding StandardsCode Formatierung, Code Dokumentation
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden Releasing
Done DoneFertig ist eine Anforderung wenn sie geschrieben, getestet, integriert und deployed wurde
No BugsIm Repository befindet sich immer funktionierender Code
Version Control
Ten-Minute BuildEin build mit Tests sollen nnicht länger als zehn Minuten dauern, ansonsten aufspalten
Continuous Integration
DocumentationTests dokumentieren den Code. In Ausnahmen externe Dokumentation
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden Planning
Vision
Release Planning
Planning GameKunden erstellen Anforderungen, Entwickler schätzen, Kunden ordnen Iterationen zu
Iteration Planning
SlackEinplanen von Zusatzzeit für Problemebehandlung
StoriesAnforderungen werden in Stories aufgeschrieben. Als Einkäufer erstelle ich Auftrage mit Lieferzeiten
SchätzungRelative Aufwandsabschätzungen mit 5 Punkten mit Sching-Schang-Schong-Schätzen.
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Agile Methoden Development
Test Driven DevelopmentGraybox Testing, erst Tests für Anforderung Schreiben, dann Anforderung umsetzten.
RefactoringStändiges Anpassen und vereinfachen der Architektur und des Codes
Simple DesignDeduplication des Codes, möglichst wenig Klassen und Methoden
Incremental DesignLöse nur das aktuelle Problem, erst wenn für ein Anderes Problem der Code angefasst wird generalisieren.
Customer TestsTests die mit dem Kunden entwickelt werden um funktionales Wissen abzubilden
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Gemeinsamkeiten
Frühe und häufige AuslieferungAbstimmung des richtigen WegsEntdeckung von FehlentwicklungenKontrolle des Fortschritts
Rückkopplung und KommunikationHäufig, mit möglichst geringen AufwandIntern Kommunikation statt Dokumentation
Reaktion auf VeränderungVeränderungen begrüßen und akzeptierenNicht über Veränderungen ärgern
LernenLernen durch MitarbeitLernen über Fachlichkeiten, technischen Details und Technikenund Werkzeuge
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
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Einführung
Sammlung von Agilen Methoden und Regelungen für dasZusammenspielZwei Sätze an Methoden
Primäre Methoden die verwendet werden müssenSekundäre Methoden können nach belieben angewendet werden
Zusammenhang der Methoden ergeben sich aus Werten undPrinzipien
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Werte
Kommunikation
Rückkopplung
Einfachheit
Mut
Respekt
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Prinzipien
Menschlichkeit
Wirtschaftlichkeit
Gegenseitiger Vorteil
Selbstähnlichkeit
Verbesserung
Mannigfaltigkeit
Reflexion
Fluss
Gelegenheit
Redundanz
Fehlschlag
Qualität
Babyschritte
Akzeptierte Verantwortlichkeit
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
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
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Rollenverteilung
KundeAnforderungen aufschreiben und priorisierenAuskunft zu Details
XP-CoachFührt das Team sanftBeobachtet den Ablauf und korrigiert
Entwickler
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. 3Monate)
2 Entwickler schätzen den Aufwand und geben den KundenRückkopplung
3 Kunde wählt genauer nach Aufwand die Anforderungen für dasRelease und die nächste Iteration (1 Woche) aus
4 Entwickler beginnen Iteration, Rückfragen an den Kunden5 Präsentation am Ende der Iteration, Rückkopplung des Kunden6 Planung der nächsten Iteration oder des nächsten Releases.
Wenn Anforderungen oder Prioritäten geändert wurden weiter mitSchritt 2Wenn keine Änderungen weiter mit Schritt 4
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Einführung
Fertigung und Entwicklung so komplex das nicht im Vorausgeplant werden kann.
Nicht explizit Softwareentwicklung sondern generell Management
Product Backlog
Iterationen gleicher Länge (Sprints)
Sprint Backlog
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Rollenverteilung
Product OwnerTeam
eigenverantwortliche Umsetzung des AuftragsHandelt mit Owner aus wann welche Anforderungen umgesetztwerden
Scrum-MasterAchtet auf Einhalte des ProzessesSollte nicht Teammitglied sein
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Projekt Ablauf
1 Sprint-Planungstreffen 1Kunden anwesendAuffüllen den Product BacklogFestlegen des Sprintziels
2 Sprint-Planungstreffen 2Nur Scrum TeamAuswahl der Anforderungen für das Sprint BacklogAnforderungen in Tasks zerlegen und an die Entwickler verteilen
3 Sprint1 bis 4 Wochen langDaily Scrums im Sprint
4 ReviewVorstellung der Sprintergebnisses für den OwnerMögliche Änderungen am Product Backlog
5 RetrospektiveBetrachtung der letzten SprintphaseFeststellung Was war gut und Was kann verbessert werden
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)
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Rollenverteilung
ProjektleiterChefarchitekt
Hält Überblick über die Gesamtarchitektur und fachlichen Aspekte
ChefprogrammiererFührt Entwicklerteams in größeren Projekten
Entwickler
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit
Projektablauf
1 Entwickle GesamtmodellErstellung von Fachmodellen in klein Gruppen und Integration inGesamtmodell
2 Erstelle Feature-ListeAufspaltung des Gesamtmodells in FeaturesVerwendunge eines Schemas: Subject Areas <- BusinessActivities <- StepsSteps entsprechen Features
3 Plane je FeaturePlanung der Reihenfolge der Features, berücksichtigtAbhängigkeitenJeder Buisness Activity wird ein Chefprogrammierer zugeordnet
4 Entwurf je FeatureZuweisung von Features an EntwicklerteamsErstellung von Sequenzdiagrammen und Klassen- undMethodenrümpfen
5 Konstruiere je FeatureErstellung von Quelltext
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
Top Related