Agile Softwareentwicklung für effiziente Programmierprojekte

Einstein1 > Tipps + Tutorials  > Startup Know-how  > Agile Softwareentwicklung für effiziente Programmierprojekte
Agile Softwareentwicklung Einstein1

Agile Softwareentwicklung für effiziente Programmierprojekte

In Softwareentwicklerkreisen hat sich in den vergangenen zehn Jahren zunehmend die Erkenntnis durchgesetzt, dass sich komplexe Programmierprojekte nicht von Anbeginn in allen Details planen lassen.

 

So scheitern immer noch viele Softwareprojekte daran, dass man sich bei der Umsetzung eines starren Pflichtenheftes zu sehr an Must-Haves festbeißt, obwohl zwischenzeitlich festgestellt wurde, dass diese gar nicht (mehr) erforderlich sind.

 

Hier setzt die agile Softwareentwicklung an.

 

 

 

Was heißt „Agile Softwareentwicklung“?

 

Agile Softwareentwicklung ist eine Form eines komplexen Entwicklungsprozesses, bei dem die Agilität (lateinisch agilis: beweglich) eine maßgebliche Rolle spielt. Kundenvorgaben sollen im Verlauf des Entwicklungsprojektes durch flexibel einsetzbare Zwischenschritte gelöst werden.

 

Ein praktisches Beispiel zur Veranschaulichung: Stell Dir vor, du planst mit einem selbstfahrenden Elektroauto eine längere Fahrt. Du programmierst die Fahrtroute zum Ziel vor dem Antritt der Fahrt fest ein und lässt dabei festgelegte Zwischenstopps einlegen, um den Fahrzeugakku aufzuladen.

 

Ausweichrouten und alternative E-Tankstellen sind nicht vorgesehen, da Du ja alles fest im Voraus geplant hast. Du ahnst es sicher schon: Auf diese Art wirst Du dein Ziel mit großer Wahrscheinlichkeit nicht erreichen.

 

Denn was ist, wenn ein gesperrter Straßenabschnitt im Weg liegt? Wie ist die Vorgehensweise, wenn eine der angesteuerten Akku-Tankstellen aus irgendwelchen Gründen nicht in Betrieb ist oder Du während der Fahrt feststellst, dass Du doch lieber ein anderes Ziel ansteuern möchtet?

 

Diese Situation ist vergleichbar mit jener, in der sich ein Kunde im herkömmlichen Softwareentwicklungsprojekt befindet: Er muss sein Briefing mit allen Anforderungen an die geplante Software in einem Pflichtenheft minutiös notieren. Allein hierdurch verzögert sich bereits der Start des Projektes.

 

Häufig stellt sich erst im Verlauf der Entwicklung heraus, welche Detailfunktionen überhaupt benötigt werden und welche nicht. Neue Anforderungen und Kundenwünsche in die Softwareplanung zu integrieren ist meist mit großem Aufwand verbunden, da man den bisher festgelegten Weg „über den Haufen werfen“ muss, was in der Regel zu teuren und zeitfressenden Nachverhandlungen des Entwicklerteams mit dem Kunden führt.

 

Dies wiederum bringt aber das Projekt nicht voran, da man sich mit vertraglichen Dingen beschäftigt anstatt an der Sache zu arbeiten. Dieser widrige Umstand kann durch eine agile Projektierung vermieden werden.

Methoden der agilen Softwareentwicklung

 

Agile Softwareentwicklung benötigt keine detaillierten Pflichten- oder Lastenhefte. Der Auftraggeber legt zu Beginn lediglich einige Grundfunktionen vor, wodurch sofort mit der Projektierung und Entwicklung begonnen werden kann.

 

Neue oder geänderte Anforderungen können jederzeit während des Entwicklungsprozesses in aktualisierter Form definiert werden. Dies kann z. B. dann der Fall sein, wenn eine veränderte Wettbewerbssituation eintritt oder wenn auffällt, dass die Software veränderte oder zusätzliche Funtkionen vorweisen muss als bisher angenommen. Auf diese Weise wird nur das programmiert, was tatsächlich gebraucht wird.

 

Eine der bekanntesten Methoden der agilen Softwareentwicklung ist Scrum (englisch für „Gedränge“). Diese agile Methodik besticht durch einfache Strukturen und festgelegte Rollen, wodurch die Prinzipien von Scrum schnell erlern- und einsetzbar sind.

 

Scrum baut auf drei Teilnehmer auf: dem Product Owner, dem Entwicklerteam und dem Scrum Master. Das Entwicklerteam arbeitet in einzelnen festgelegten Zeitabschnitten (ca. 1 – 4 Wochen), die auch als „Sprint“ bezeichnet werden.

 

Innerhalb eines Sprints kann der Product Owner keine Änderungen an den Anforderungen vornehmen, es wird ausschließlich an der Weiterentwicklung gearbeitet.

 

Nach Ablauf eines Sprints werden die Erfahrungen des vergangenen Zyklus in einem Backlog festgehalten und hieraus Erkenntnisse für den kommenden Sprint gewonnen. Dieses iterative Vorgehen sorgt für schnell vorzeigbare (Zwischen-)Ergebnisse des Softwareprojektes.

 

Die Vorteile der agilen Softwareentwicklung gegenüber klassischen Entwicklungsmethoden beruhen auf drei Prinzipien: Transparenz, Überprüfung und Anpassung in ständig wiederkehrenden Zyklen.

 

Eine ähnliche Methodik ist das so genannte „Extreme Programming“, kurz XP. Hierbei wird grundsätzlich das Lösen einer Entwicklungsaufgabe in den Vordergrund gestellt, formale Vorgehensvorgaben sind zweitrangig.

 

Auch dieses Verfahren folgt einem Modell der Software-Entwicklungstechnik, die sich den Kundenwünschen in kleinen Schritten annähert (vergleichbar mit den Sprints bei Scrum).

Prinzipien der agilen Softwareentwicklung

 

Bereits im Jahr 2001 machte man sich Gedanken über die Umsetzung agiler Entwicklungsverfahren. So fand sich die „Agile Alliance“ zusammen. Diese setzte sich aus 17 Software-Methodologen zusammen, die erkannt hatten, dass man mit der zunehmenden Komplexität von Softwareprojekten mit herkömmlichen Methoden immer häufiger in einer Sackgasse landet.

 

Auf die Fragestellung „Was heißt agile Softwareentwicklung?“ erdachte man ein Manifest, aus dem sich zwölf Prinzipien herauskristallisierten, die moderne Software-Entwicklungsprojekte zum Erfolg führen sollen und bis heute Gültigkeit haben:

 

  1. Die höchste Zielsetzung besteht darin, den Kunden durch rechtzeitige Lieferung hochwertiger Software zufriedenzustellen.
  2. Änderungen der Anforderungen sind jederzeit willkommen, auch wenn diese spät in der Entwicklungsphase gestellt werden. Der Wettbewerbsvorteil des Kunden wird durch agile Prozesse unterstützt.
  3. Softwareupdates mit neuen Funkitionen werden in kurzen Zeitabschnitten geliefert, wobei kürzere Lieferphasen bevorzugt werden.
  4. Geschäftliche Mitarbeiter müssen mit dem Entwicklerteam täglich im Projekt zusammenarbeiten.
  5. Nur motivierte Mitarbeiter sind erfolgreich in ihren Projekten. Es soll ihnen ein bestmögliches Arbeitsumfeld geboten werden und Vertrauen in ihre Arbeit offen gezeigt werden.
  6. Der zwischenmenschliche Austausch auf Augenhöhe ist die effektivste und effizienteste Form der Wissensweitergabe innerhalb eines Entwicklungsteams.
  7. Der wichtigste Faktor des Projektfortschritts ist funktionierende Software.
  8. Agile Entwicklungsprozesse fördern nachhaltige Entwicklung. Entwickler, User und Förderer sollten in kontinuierlichem Arbeitstempo vorankommen, ohne Unterbrechungen einlegen zu müssen.
  9. Das Beachten von gutem Softwaredesign sowie hohe technische Qualitätsmaßstäbe fördern und verbessern die Agilität.
  10. Keep it simple – Einfachheit ist essenziell.
  11. Arbeitsgruppen, die sich selbst organisieren, schaffen die besten Designs, Anforderungen und Softwarearchitekturen.
  12. Das Entwicklerteam reflektiert in regelmäßigen Abständen, wie es produktiver werden kann und passt seine Vorgehensweisen entsprechend an.

 

12 Prinzipien der agilen Softwareentwicklung

Die 12 Prinzipien der agilen Softwareentwicklung (Quelle: http://bit.ly/2MygTDm)

Vorteile der agilen Softwareentwicklung

 

Warum agile Softwareentwicklung mehr ist als nur ein Buzzword aus Beraterkreisen, kann man leicht erkennen, wenn man die Vorteile dieser Methodik zusammenfasst. Vieles ergibt sich bereits aus den vorgenannten zwölf Prinzipien.

 

Durch simplifizierte Verfahrensweisen ist agile Softwareentwicklung einfach einzuführen und kontrollierbar. Die Administration ist auf das notwendige Minimum beschränkt, ebenso die Dokumentation, da effektives Entwickeln ein Softwareprojekt mehr voranbringt als das Abfassen von langwierigen Dokumentationspamphleten, die nach jedem Sprint ständig aktualisiert werden müssten.

 

Fertiggestellte Teilfunktionen können schnell ausgeliefert werden, weil nicht abgewartet werden muss, bis das gesamte Softwareprojekt fertiggestellt ist. Design- und Analysephasen wechseln sich in kurzen Takten ab, Fehler oder Kursabweichungen können im nächsten Teilabschnitt korrigiert und neue Kundenwünsche kurzfristig implementiert werden.

 

Und nicht zuletzt ist das Teamwork bei stringenter Anwendung von agilen Arbeitstechniken äußerst effizient, was wiederum aus den Punkten 11 und 12 der oben genannten Prinzipien hervorgeht: Selbstorganisierte Arbeitsgruppen, die Wissensaustausch täglich „leben“, sind an Produktivität kaum zu überbieten.

 

 

 

Nachteile der agilen Softwareentwicklung

 

Wie so oft hat auch die agile Softwareentwicklung ihre Kehrseiten. Die Nachteile der agilen Softwareentwicklung ergeben sich ebenfalls aus den zwölf Prinzipien der agilen Softwareentwicklung: Wenn wir uns die Punkte 5 und 6 ansehen erkennen wir, dass die Produktergebnisse sehr von individuellen Fähigkeiten und der Motivation der Mitarbeiter abhängen.

 

Wenn die Kommunikation und die „Chemie“ des Entwicklerteams nicht (mehr) stimmt, kann das auch die agile Softwareentwicklung nicht retten. Missverständliche Kommunikation oder verspätete Entscheidungen bedeuten in jedem Fall einen Mehraufwand.

 

Das gilt insbesondere für große und sicherheitsrelevante Softwareprojekte, denn gerade hier besteht die Gefahr des Scheiterns, wenn sich ständig ändernde Anforderungen oder eine hohe Personalfluktuation dafür sorgen, dass ein Softwareprojekt niemals fertig wird und der Kunde schließlich entnervt aufgibt.

 

Ein weiterer Punkt, der berücksichtigt werden sollte, ist die Tatsache, dass ein Softwarelieferungsvertrag vor dem Projektstart nur sehr unbestimmt formuliert werden kann, da der Projektumfang möglicherweise noch gar nicht feststeht.

 

Hinzu kommt, dass insbesondere die Einbindung von externen Ressourcen, deren Bedarf erst während des Entwicklungsprozesses entsteht, vertraglich kaum festzulegen ist.

 

 

 

Fazit

 

Warum agile Softwareentwicklung nicht in jedem Fall das Allheilmittel gegen zu scheitern drohende Softwareprojekte ist, zeigt sich in der Praxis.

 

Es gibt durchaus Szenarien, in denen Software-Projekte nach der klassischen Wasserfall-Methode nach wie vor sinnvoll sind, insbesondere wenn der geplante Projektumfang eine gewisse Größe überschreitet.

 

Es gibt im Programmierer-Alltag eben nicht die eine optimale Methode für alle Fälle. Es sind u. U. auch Mischformen denkbar; so kann z. B. ein Kundenauftrag auf dem herkömmlichen Wege mit einem festgelegten Pflichtenheft beginnen und erst in einer späteren Entwicklungsphase fährt man dann in iterativen Takten nach den Regeln von Scrum fort.

 

Es kann also nicht schaden, sich im Rahmen der Projektsteuerung in beiden Welten auszukennen: klassische Methoden und agile Softwareentwicklung.

Avatar for Niko Emran
Niko Emran

Hi, ich bin Niko. Als Netzwerkmanager im Einstein1 bin ich für das Online Marketing und die Beratung und Betreuung von Gründern und Startups zuständig.

Keine Kommentare

Poste einen Kommentar

Kommentar
Name
Email
Website