Die 12 Grundsätze der agilen Softwareentwicklung

agile Softwareentwicklung

Im Februar 2001 wurde das „Agile Manifest“ durch die „Agile Alliance“

veröffentlicht. Es handelt sich um eine gemeinsame Definition von Werten und Grundsätzen der verschiedenen agiler Softwareentwicklungsmethoden.

 

Bei agiler Softwareentwicklung steht der Mensch, der Nutzen der Software, die Kommunikation untereinander, die Flexibilität und Einfachheit der Lösung im Vordergrund.

 

  • Individuen und Interaktion sind wichtiger als Prozesse und Werkzeuge
  • Funktionierende Software ist wichtiger als ausführliche Dokumentation
  • Zusammenarbeit mit dem Kunden ist wichtiger als Vertragsverhandlungen
  • Offenheit für Änderungen ist wichtiger als Festhalten an einem starren Plan

 

Das bedeutet nicht, dass in agilen Projekten keine Pläne, Prozesse, Dokumentation und Verträge existieren.

 

Basierend auf den vier Werten wurden zwölf Grundsätze festgelegt.

 

Stelle den Kunden durch frühzeitige und regelmäßige Übergabe nützlicher Software zufrieden.

 

Der Erfolg des Projektes wird an den Anforderungen zu Projekteende und nicht am Inhalt des Projektauftrages gemessen. Durch regelmäßige Übergaben wird der Erfolg laufend gemessen und gegebenenfalls erforderliche Anpassungen durchgeführt.

 

Nehme neue oder sich ändernde Anforderungen entgegen, selbst zu einem späten Zeitpunkt in der Entwicklung. Änderungen werden durch Agile Prozesse als Wettbewerbsvorteile für den Kunden nutzbar.

 

Nicht alle Anforderungen an eine Software sind zu Beginn des Projektes bekannt. Während des gesamten Projektes können sich Anforderungen ändern, neue hinzukommen oder bestehende gegenstandslos werden. Eine schnelle Umsetzung der sich ändernden Anforderungen steigert den Nutzen der Software für den Kunden.

 

Lauffähige Software wird in kurzen Abständen von Wochen bis wenigen Monaten an den Kunden geliefert.

 

Eine ständige und in kurzen Abständen stattfindende Übergabe der Software ermöglicht dem  Kunden, notwendige Korrekturen der Anforderungen rechtzeitig einzubringen.

 

Der Kunde und die Entwickler arbeiten täglich, über die gesamte Laufzeit des Projektes, zusammen.

 

Der Kunde (Auftraggeber, Mitarbeiter der Fachbereiche, Anwender, …) und die Entwickler stehen im ständigen Kontakt um Anforderungen festzulegen, Rückmeldungen zu bearbeiten und fachliche sowie technische Entscheidungen zu treffen.

 

Stelle motivierte Mitarbeiter in den Mittelpunkt des Projekts. Traue ihnen ihre Aufgaben zu, gib ihnen die notwendige Unterstützung und schaffe mit ihnen die benötigte Arbeitsumgebung.

 

Organisatorisch steht der qualifizierte und engagierte Mitarbeitern im Mittelpunkt der agilen Softwareentwicklung.  Die Motivation der Entwickler hängt von dem entgegengebrachten Vertrauen, deren Förderung/Weiterentwicklung und der vorhandenen Arbeitsumgebung ab.

 

Die effizienteste Methode der Kommunikation, mit und innerhalb des Entwicklerteams, ist das persönliche Gespräch.

 

Bei einem persönlichen Gespräch werden neben dem Inhalt zusätzliche Informationen mittels Gestik, Mimik und Stimmlage übertragen. Diese helfen dem Gesprächspartner ein vollständiges Bild zu erhalten. Fehlen diese Zusatzinformationen kann es zu falschen Annahmen und Missverständnisse kommen. Zudem können beim persönlichen Gespräch Rückfragen gestellt und gleich beantwortet werden.

 

Funktionierende Software ist das wichtigste Maß für den Projektfortschritt.

 

Einzig eine lauffähige Software stellt für den Kunden einen Geschäftswert dar. Deshalb wird der Projektfortschritt am Umfang und Nutzen der funktionierenden Software gemessen.

 

Agile Prozesse fördern eine beständige Entwicklung. Geldgeber, Entwickler und Nutzer sollten in der Lage sein, ein konstantes Tempo beibehalten zu können.

 

Beständige Entwicklung bedeutet die kontinuierliche Verbesserung der Software über einen langen Zeitraum. Je länger diese Zeitraum anhält, umso mehr Fehler entstehen durch Ermüdung und Frustration. Eine gleichmäßige Arbeitsauslastung hilft unnötigen Stress, Überarbeitung und in weiterer Folge Burnout zu vermeiden.

 

Ständige Aufmerksamkeit auf gutes Design und die erstklassige technische Umsetzung erhöhen die Agilität.

 

Gutes Design ist verständlich und kann implementiert werden. Entscheidungen zu Design und Umsetzung werden laufend durch das Projektteam getroffen und verantwortet.

 

Einfachheit und die „Kunst des Weglassens“ ist entscheidend.

 

Einfache Lösungen sind leichter zu verstehen, weniger fehleranfällig, schneller zu realisieren und billiger.

Das Projektteam setzt nur aktuelle Anforderungen des Kunden um. Zukünftige Funktionen werden implementiert wenn diese notwendig sind und nicht vorher.

 

Die besten Lösungen werden von sich selbstorganisierenden Teams erstellt.

 

Wird dem Projektteam die interne Organisation freigestellt, dann steigt die Motivation und das Verantwortungsbewusstsein jedes Einzelnen für das Gesamtergebnis. Zusätzlich werden die Teammitglieder gemäß ihrer Fähigkeiten intern eingesetzt. Als dies führt zu besseren Ergebnissen.

 

In regelmäßigen Abständen überlegt das Projektteam wie es noch effektiver werden kann. Anschließend wird das eigene Verhalten entsprechend angepasst.

 

Agile Softwareentwicklung bedeutet ebenfalls den eigenen Entwicklungsprozess dynamisch an die  Bedürfnisse und das Umfeld anzupassen. Um die Effektivität des gesamten Projektteams zu verbessern, wird in regelmäßigen Abständen der Entwicklungsprozess reflektiert, notwendige Maßnahmen festgelegt und umgesetzt.