Vorgehen zur Agilen Software-Entwicklung

Der Begriff "Agile Software-Entwicklung" wird vor allem in Abgrenzung zu herkömmlichen Methoden verwendet. Bis weit in unser Jahrtausend hinein wurden meist statische Phasenmodelle propagiert. Dabei folgte auf eine Entwurfs- eine Realisierungs- und schließlich eine Testphase. Iteratives Vorgehen war nur sehr schwierig und unter Verletzung der Vorgehensmodelle möglich.

Die Agile Software-Entwicklung entstand ab Anfang der 1990er Jahre als Antwort auf die Kritik am traditionellen Vorgehen. 2001 wurde schließlich das "Agile Manifest" formuliert, das als Basis der Bewegung verstanden wird. In Kurzform geht es darum, vorhandene Resourcen wie die Fähigkeiten der Mitarbeiter besser zu nutzen, den Kunden mit besserer Kommunikation stärker einzubinden und einen iterativen Prozess der ständigen Überprüfung zu implementieren. Es kommt nicht darauf an, vorbildliche Dokumentation zu erstellen, sondern funktionierende Software.

Die Agile Software-Entwicklung wurde ausgehend von diesem Manifest mit Leben gefüllt, indem Detailtechniken wie Paarprogrammierung, testgetriebene Entwicklung oder Versionskontrolle pragmatisch angewandt werden. Agile Software-Entwicklung soll in kleinen Schritten mit jeweils wenig Aufwand Teilziele realisieren, die ständig vom Kunden qualitätsgeprüft wird. Das Feedback des Kunden wird zügig in Korrekturen und Verbesserungen umgesetzt. Die Gefahr von Missverständnissen wird dadurch minimiert.

Ein agiles Vorgehen bei der Entwicklung von individueller Software verwendet eine Reihe von Techniken wie paarweises "eXtreme Programming", bei dem jeweils zwei Entwickler gemeinsam testgetrieben entwickeln und damit von vornherein Fehler vermeiden. So entsteht für jede neue Funktion mindestens ein Test auf formale Richtigkeit, ein so genannter "Unit-Test". Diese laufen bei jedem Compile-Vorgang automatisch mit, so dass fehlerhafte Seiteneffekte praktisch unmöglich werden. Das ermöglicht auch Refaktorierungen, bei denen Teile der Software optimiert werden, ohne ihre Funktionsweise zu verändern. Mehrmals täglich finden automatisierte Systemintegrationen statt, so dass stets ein lauffähiges System bereitsteht. Noch fehlende Funktionen werden durch "Mocks" simuliert oder durch Prototypen ersetzt.

Rund um die Agile Software-Entwicklung haben sich Detailtechniken entwickelt, die auch außerhalb agiler Projekte angewandt werden können. Über Agile Software-Entwicklung wird leidenschaftlich gestritten. Während sich manche Projekte schon "agil" nennen, weil sie nur Unit-Tests verwenden, bestehen andere darauf, dass man den kompletten Katalog agiler Techniken anwenden muss, um sich so nennen zu dürfen. Um diesem Streit zu entgehen, nennen sich viele Projekte nach einem Buch von Andrew Hunt und David Thomas "pragmatisch". Zum Themenkomplex Agile Software-Entwicklung gibt es eine große Menge Literatur, mit deren Hilfe jeder Software-Entwickler das wichtigste Ziel angehen kann: schneller bessere Software bereitstellen, die die Kundenwünsche erfüllt.

Reporting-Engine zum Verwalten, Sortieren, Filtern und Aggregieren verknüpfter Daten (z.B. Gesamt-Aboumsatz nach Geschlecht in bestimmtem Zeitraum). Fertig ''zusammengeklickte'' Ansichten lassen sich als Templates speichern und anschließend jederzeit wieder laden.