Benutzer-Werkzeuge

Webseiten-Werkzeuge


se:agilesoftwareentwicklung

**Dies ist eine alte Version des Dokuments!**

Agile Softwareentwicklung

Kernpunkte agiler Entwicklungsmethoden

nach {[quellen:Bleek2008]}

  • priorisierte Anforderungen sind die Grundlage der Entwicklung
    • Fokus auf nutzenbringende Features (und nicht auf Standardfunktionen wie z.B. Stammdatenverwaltung)
  • Kommunikation mit dem Kunden
    • z.B. Sprint Planning zusammen mit dem Kunden
    • Kunde entscheidet über Prioritäten (neue Features, Bugfixing etc.)
    • zusätzliche Anforderungen können leicht und schnell integriert werden
  • das Team soll ständig dazulernen
    • Retrospektiven sind äußerst wichtig für die Entwicklung des Teams und des Prozesses
    • kontinuierliche Verbesserung des Schätzverfahrens für Tasks → z.B. Planning Poker
    • Collective Code Ownership → jeglicher Code darf von jedem Entwickler geändert werden
  • lauffähige Software abliefern
  • die verfügbare Arbeitszeit muss realistisch verplant werden
    • überschaubare Länge der Tasks/Aufgaben der Entwickler (max. 1 Woche)
    • z.B. 70% produktive Zeit wegen Urlaub, unvorhergesehenen Aufgaben etc.
    • Zeit für Bugfixing, Retrospektiven etc. muss eingeplant werden
    • Timeboxing → Termine stehen fest, Funktionen werden ggfs. reduziert
  • einfache Regeln → keine Zeitverschwendung durch lange Lernzeiten für Prozessmodell
  • viel Freiheit für die Entwickler → dennoch sollten die wenigen Regeln strikt eingehalten werden
  • wenig Dokumentation

Agile Werte

nach {[quellen:Bleek2008|S. 10ff.]}

  • Kommunikation
    • direkt: von Person zu Person und möglichst kurzfristig bei Bedarf
    • offen und ehrlich: alles wird angesprochen auch unangenehme Dinge
  • Einfachheit
    • technisch: nur das bauen, was benötigt wird
    • organisatotisch: Entwickler organisieren sich weitestgehend selbst
    • methodisch: keine überbordenden Prozesse, sondern einfach umzusetzendes Vorgehen
  • Rückkopplung
  • Mut
    • neue Wege ausprobieren
    • sich gegen Widerstände durchsetzen
    • wichtig für offene Kommunikation bei schwierigen Themen
  • Respekt
    • Voraussetzung für offene und ehrliche Kommunikation

Das agile Manifest

Das Original: Manifesto for Agile Software Development

  • Individuen und Interaktionen vor Prozessen und Werkzeugen
  • laufende Software vor ausgedehnter Dokumentation
  • Zusammenarbeit mit dem Kunden vor Vertragsverhandlungen
  • Reaktion auf Veränderungen vor Planverfolgung

Pro und Contra

nach {[quellen:Bleek2008|S. 159ff.]}

  • Contra aufgrund des Kunden
    • kein SMARTes Projektziel
    • Prozess ist fest vorgegeben (z.B. bei Behörden)
    • Nice-to-have-Projekt → es gibt keinen Kunden, der Anforderungen definiert
    • lange Entscheidungswege beim Kunden → mangelhafte Rückkopplung
    • langwierige Change-Request-Verfahren → langer Stillstand im Projekt
    • kein Anwenderkontakt möglich → keine Rückkopplung möglich
    • Kundenrolle nicht oder zeitlich zu knapp besetzt → lange Entscheidungswege, keine klare Vision des Kunden vorhanden
    • Erstellung von lebenskritischer Software → wichtige Vorgaben zu Tests, Dokumentation etc.
    • Angst und organisierte Unverantwortlichkeit → niemand übernimmt Verantwortung
    • Kunde steht nicht hinter dem Vorgehen → Kunde nimmt seine Rolle nicht ernst oder fürchtet Mehrarbeit
    • keine Arbeit vor Ort möglich → mangelhafte Rückkopplung
    • Festpreisprojekte → Erkenntnisse können/dürfen nicht in den laufenden Prozess eingearbeitet werden
    • Kunde ist eine Behörde → meist treffen mehrere der obigen Punkte zu
  • Contra aufgrund der Entwickler
    • keine Erfahrung mit agilen Projekten und kein Coach vorhanden
    • Lernunfähigkeit oder -unwillen → agile Entwicklung bedeutet Lernen
    • Kultur von Befehl und Gehorsam → agile Entwicklung bedeutet Eigenverantwortung, Fehler machen dürfen etc.
    • Entwickler scheuen Anwenderkontakt → keine Rückkopplung möglich
    • hohe Mitarbeiterfluktuation → Team kann sich nicht einspielen
    • keine Arbeit vor Ort gewünscht → Rückkopplung wird behindert
    • kein Management-Commitment auf agile Methoden → Erlaubnis, Fehler machen zu dürfen ist sehr wichtig
  • Contra aufgrund der Technologien
    • lange Build-Zeiten
  • Pro aufgrund des Kunden
    • Start-ups → müssen schnell Ergebnisse liefern
    • innovative Projekte → brauchen Lernerfolge, haben Commitment der Teilnehmer
    • neue Anwendungsbereiche → schnelle Lernerfolge
    • schnelle Auslieferung notwendig (Time-to-Market)
    • nutzenorientierte Perspektive des Kunden (anstatt kostenorientiert)
    • Transparenz des Projektfortschritts → Risikominimierung
  • Pro aufgrund der Entwickler
    • neugierige Entwickler → wollen Kunden verstehen, wollen Neues ausprobieren, sind risikobereit, wollen sich einbringen
    • Arbeit vor Ort ist sowieso gegeben
    • konkrete (Team-)Probleme sind bekannt → agile Entwicklung kann durch Rückkopplungen gezielt Probleme lösen
  • Pro aufgrund von Technologien
    • inkrementelle Compiler → schnelle Rückkopplung beim Entwickler
    • interpretierte Scriptsprachen
    • Refactoring-Browser vorhanden → leichte Änderbarkeit des Quelltextes
    • Test-Frameworks vorhanden oder bekannt
se/agilesoftwareentwicklung.1230409986.txt.gz · Zuletzt geändert: 2014-04-05 11:42 (Externe Bearbeitung)