Agile Softwareentwicklung: flexibel und kundenorientiert

Chief Technology Officer, ScienceSoft

Veröffentlicht:
7 Min. Lesezeit

Seitdem das „Agile Manifest“ die Szene betreten hat, hat es nicht nur positive Änderungen in die Softwareentwicklung mit sich gebracht, sondern auch Kontroversen in der IT-Gesellschaft ausgelöst. Agile Evangelisten glauben, dass die agile Vorgehensweise ermöglicht, die Software schneller auszuliefern und sich auf derer Verbesserung ständig zu fokussieren. Ihre Gegner behaupten, dass der agile Ansatz zur Softwareentwicklung alle bestehenden guten Practices untergräbt.

Also, wer hat recht? Basierend auf unserer Erfahrung in der Softwareentwicklung, die wir auch unter dem Einsatz von agilen Methoden umgesetzt haben, möchten wir in unserem Blogbeitrag den Sammelbegriff „agile Softwareentwicklung“ in einzelne Elemente zerlegen und erklären, was hinter diesem Begriff steckt.

Agile Softwareentwicklung - ScienceSoft

Agile Softwareentwicklung: Werte und Prinzipien

Die 4 Werte und 12 Prinzipien der agilen Softwareentwicklung stammen aus dem Agilen Manifest, das 2001 veröffentlicht wurde, um den Entwicklungsprozess schlanker und flexibler zu gestalten.

Es wurden die folgenden Werte aufgezählt, in denen betont wird, dass man die Werte auf der linken Seite höher als Werte auf der rechten Seit schätzt:

  • Individuen und Interaktion mehr als Prozesse und Werkzeugen. Die Planung ist wichtig, aber Teammitglieder und interne Kommunikation stehen im Vordergrund. Individuen sind in der Lage, sich weiter zu entwickeln und mit Ihren Fähigkeiten und Fachkenntnissen den gesamten Prozess kontinuierlich zu verbessern.
  • Funktionierende Software mehr als umfassende Dokumentation. Obwohl die Dokumentation als Basis für die weitere Wartung dient, steht die funktionierende Software im Mittelpunkt. Es gilt auch zu beachten, dass es in agilen Projekten vor allem um die bedarfsgerechte Dokumentation geht.
  • Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlungen. Um Missverständnisse und falsche Interpretationen zu vermeiden, setzt man auf die dauerhafte und enge Zusammenarbeit sowie die direkte und offene Kommunikation mit dem Kunden. Je intensiver ein Kunde in den Entwicklungsprozess eingebunden wird, desto zufriedener bleibt er am Ende des Projektes.
  • Reagierung auf Veränderungen mehr als das Befolgen eines Plans. Das macht keinen Sinn ausführliche Pläne für Monate (oder Jahre) zu erstellen, weil Veränderungen unerlässlich sind. Flexibel und rechtzeitig auf diese Veränderungen durch kurze Iterationen und häufige Releases zu reagieren trägt mehr zum Erfolg des Produktes als das reine Befolgen eines vordefinierten Plans.

Das agile Manifest enthält auch 12 Prinzipien der agilen Vorgehensweise bei der Softwareentwicklung:

12 Prinzipien der agilen Softwareentwicklung - ScienceSoft

 

Agiler Entwicklungsprozess

 

Typischer agiler Entwicklungprozess - ScienceSoft

Ein agiler Entwicklungsprozess gliedert sich in folgende Phasen:

  1. Initialplanung. In dieser Phase handelt es sich um keine detaillierte Planung des Softwareproduktes, sondern eher um die Festlegung von Meilensteinen auf dem Weg zum gewünschten Produkt. Erfahrungsgemäß ist es schwierig, alle Rahmenbedingungen im Voraus ausführlich zu beschreiben und während des Projektes dem erstellten Plan zu folgen. Die agile Softwareentwicklung ermöglicht, die Planung Schritt für Schritt zu verfeinern.
  2. Iteration. Das gesamte Projekt gliedert sich in mehrere Iterationen (jeweils 2-4 Wochen), die das Ziel verfolgen, die funktionierende Software auszuliefern, die basierend auf dem Feedback von Kunden bei der Planung der nächsten Iteration verbessert werden kann. Jede Iteration umfasst die folgenden Phasen: Planung einer Iteration; Entwicklung von Features; Testen und Abnahme.
  3. Auslieferung. Die funktionierende Version des Produkts wird an den Kunden ausgeliefert. Die funktionsfähige Software wird nach jeder Iteration freigegeben. Auf diese Weise durchläuft das Produkt mehrere Releases. Nach jeder Veröffentlichung können neue Funktionen hinzugefügt werden, was die Software schrittweise verbessert, bis sie den Kundenerwartungen völlig entspricht.

In der folgenden Tabelle sind die wichtigsten Unterschiede zwischen dem agilen und klassischen Ansatz zur Softwareentwicklung:

Agile vs. klassische Softwareentwicklung - ScienceSoft

Agile Softwareentwicklung: Vorteile im Allgemeinen

Die agile Softwareentwicklung bietet mehrere Vorteile, die wesentlich zum Projekterfolg beitragen.

Zu den Hauptvorteilen gehören die folgenden:

  • Schnellere Auslieferung: Die funktionsfähige Software wird schon am Ende der ersten Iteration freigegeben. Die Entwickler machen sich an das Projekt, sobald sie die hochpriorisierten Anforderungen kennen. Sie fügen weitere Funktionen in den nächsten Iterationen hinzu. Der Funktionsumfang wird im Laufe des Projektes ja nach veränderten Umständen definiert.
  • Dokumentation mit wenig Aufwand: Detaillierte Spezifikationen sind nicht erforderlich, weil ständige Änderungen sogar eingeplant sind. Aber das bedeutet nicht, dass es in agilen Projekten nicht dokumentiert wird: weniger, bedarfsgerecht und in einer anderen Form.
  • Kontinuierliche Verbesserung:  Flexible Anpassung an die Anforderungen des Kunden oder Änderungen im Arbeitsprozess werden zum Bestandteil der agilen Vorgehensweise. Das ermöglicht, die Software kontinuierlich zu verbessern und zufriedenstellende Ergebnisse auszuliefern.
  • Effektive Zusammenarbeit: Durch die intensive Kundeneinbindung in allen Phasen wird es sichergestellt, dass Missverständnisse vermieden werden und der Auftraggeber die Software erhält, die seinen Anforderungen entspricht.
  • Höhere Qualität: Testen nach jeder Iteration tragen dazu bei, Fehler frühzeitig zu erkennen sowie zu beseitigen und dadurch die Qualität des Produktes zu erhöhen.

Agile Softwareentwicklung: Vorteile für Outsourcing-Unternehmen

Es gibt zahlreiche Debatten darüber, ob es überhaupt möglich ist, einen agilen Ansatz und Outsourcing zu kombinieren, weil die agile Vorgehensweise bei der Softwareentwicklung erfordert, dass ein Unternehmen auf alle Veränderungen schnell und flexibel reagiert. Deshalb ist es schwierig, entfernt eine effektive, langfristige Zusammenarbeit zwischen einem Outsourcing-Anbieter und einem Kunden ohne regelmäßige Treffen und direkte Kommunikation aufzubauen.

Aber wie die Erfahrung zeigt, es kommt darauf an, wie flexibel und vollständig Anforderungen eines Auftraggebers sind. Bei der Umsetzung zahlreicher Projekte hat unser Team für das Outsourcing der Softwareentwicklung entdeckt, dass die agile Vorgehensweise auch für Outsourcing-Projekte eine Reihe von Möglichkeiten eröffnet, um ein Softwareprojekt effektiver zu planen und zu verwalten und dadurch die Softwarequalität kontinuierlich zu verbessern. Welche Vorteile bietet die agile Entwicklung beim Outsourcing:

  • Einfachere und effektivere Projektplanung: Bei der agilen Entwicklung geht es um eine detaillierte Planung jeder Funktion für eine Iteration, die regelmäßig 2-6 Wochen dauert. Sobald der Outsourcing-Anbieter einen Plan für eine Iteration erstellt und ein funktionsfähiges Produkt mit hoch priorisierten Funktionen ausgeliefert hat, plant er eine neue Iteration. Dadurch wird die gesamte Planung bei der Projektabwicklung schrittweise durchgeführt.

  • Sichtbarer Projektfortschritt: Die agile Entwicklung bietet Möglichkeiten, Ergebnisse nach jeder Iteration – Qualität, Kosten, Termine, Budget und mehr – mittels geeigneter Software-Metriken zu analysieren und den Projektfortschritt regelmäßig zu überprüfen. Wenn es sich herausstellt, dass bestimmte Verbesserungen notwendig sind – beispielsweise Einführung neuer Technologien oder eine andere Verteilung der zur Verfügung stehenden Projekt-Ressourcen – ist es in agilen Projekten möglich, diese Verbesserungen von Iteration zu Iteration kontinuierlich durchzuführen.

  • Verbesserte Teamverwaltung und Ressourcenverteilung: Die Flexibilität der agilen Softwareentwicklung ermöglicht es einem Outsourcing-Dienstleister, das Projektmanagement schlanker zu gestalten und mit Methoden des sogenannten Kaizen-Ansatzes zu erweitern, um Mudas (Verschwendungen), Muris (Überlastungen) sowie Muras (Unausgeglichenheiten) zu vermeiden. Diese Methoden helfen, die Produktivität des Entwicklungsteams nach jeder Iteration zu analysieren, Schwachstellen zu identifizieren und basierend auf Ergebnissen während der nächsten Iteration Prozesse zu verbessern, z. B. Stolpersteine im Arbeitsablauf jedes Teams zu erkennen und diese zu beseitigen.

  • Höhere Qualität: Jedes Outsourcing-Projekt ist darauf abgezielt, das Produkt von maximal höchster Qualität bereitzustellen. Auch hier kommt die agile Entwicklung zur Hilfe, indem sie ermöglicht, sowohl durch ständige Verbesserungen und Optimierungen von internen Prozessen (auch basierend auf dem Feedback von Kunden), als auch durch kontinuierlich durchgeführte Testaktivitäten während jeder Iteration die Qualität des zu entwickelnden Produktes zu steigern.

Agile Softwareentwicklung: Nachteile

Obwohl oben aufgezählte Vorteile der agilen Softwareentwicklung überzeugend aussehen, birgt dieser Ansatz auch einige Nachteile:

  • Unbekannte Risiken: Da sich der Projektumfang ändern kann, ist es jederzeit möglich, dass unerwartete Herausforderungen während des Projektes auftauchen, die zu beseitigen sind.
  • Kein Gesamtüberblick: Wenn sich Anforderungen im Laufe des Projektes ändern können, fällt es schwer, Zeit- und Kostenrahmen einzuschätzen. Des Weiteren gibt´s immer eine Gefahr, dass Projekt ausufern kann.
  • Hoher Zeitaufwand für die Kommunikation: Der Agile Ansatz erfordert viel Zeit für die Kommunikation und Koordination aller Prozesse. Es geht nicht nur um interne Kommunikation zwischen Fachexperten und Entwicklern. Der Kunde muss häufig in den Entwicklungsprojekt involviert werden, wass nicht immer möglich ist. Das kann viel Zeit kosten und zu Verzögerungen führen.
  • Abhängigkeit von weichen Fähigkeiten: Der Erfolg des Projektes hängt auch davon, wie effektiv die Zusammenarbeit sowohl im Team, als auch mit dem Auftraggeber erfolgt. Das Entwicklungsteam kann beispielweise über unzureichende organisatorische Fähigkeiten verfügen, was zur Folge hat, dass die am Anfang jeder Iteration gestellten Ziele nicht erreicht werden und damit in die nächste übergehen. Dadurch wird die Auslieferung nicht beschleunigt, sondern verlangsamt.

Agile Entwicklungsmethoden

Agile Methoden - ScienceSoft

Die folgenden agilen Entwicklungsmethoden erfreuen sich größter Beliebtheit:

Scrum ist eine der am meisten verbreiteten agilen Methoden, bei der der Entwicklungsprozess in kurze inkrementelle Iterationen (sog. Sprints) unterteilt ist, die 2 bis 4 Wochen dauern. Jede nächste Iteration basiert auf den Ergebnissen aus der vorherigen. Diese Methode bietet eine Möglichkeit, den Projektfortschritt ständig zu verfolgen: regelmäßig Ergebnisse zu analysieren und durch Rückkopplungen zu Kunden mehr Flexibilität zu schaffen.

Kanban hilft, Aufgaben zu priorisieren und deren aktuellen Status auf dem sogenannten Kanban-Board zu visualisieren. Diese Methode ermöglicht auch, die Anzahl von Aufträgen zu begrenzen und damit Ressourcen effizienter zu verteilen und die Überlastung des Entwicklungsteams zu vermeiden.

Lean umfasst Prinzipien, die helfen, Prozesse in der Softwareentwicklung schlank zu gestalten, um Verschwendungen zu minimieren (übermäßige Funktionalität, Ausfallzeiten im Entwicklungsprozess, unklare Anforderungen). Es zielt vor allem darauf ab, herauszufinden, was der Kunde wirklich braucht, und basierend auf den Ergebnissen das neue Produkt auf den Markt zu bringen.

XP (Extreme Programming) ist eine Methode, bei der der Fokus von Anfang an auf der Codierung liegt und einige Aspekte (z. B. die Dokumentation) als überflüssig erachtet werden. Kurze Entwicklungszyklen und Software-Releases (1-3 Wochen) ermöglichen, das Feedback von Kunden zu erhalten und flexibel auf Änderungen zu reagieren. Bei diesem Modell kommen bewährte Entwicklungspraktiken zum Einsatz:

  • Programmierung in Paaren – jeder Code wird von 2 Mitarbeitern erstellt, die an einem Rechner gemeinsam sitzen.
  • Testgetriebene Entwicklung – Tests kommen zum Einsatz, um die Softwareentwicklung zu steuern.
  • Continuous Integration – vorgenommene Änderungen werden regelmäßig ins Projekt integriert.

 

DSDM (Dynamic Systems Development Method) legt einen besonderen Wert auf die Einbindung von Benutzern. Dieser agile Ansatz besteht aus sieben Phasen: Vorprojekt, Machbarkeitsprüfung, Business Study, Funktionsmodell, Design und Bau, Bereitstellung und Postprojekt. Im Unterschied zu anderen agilen Methoden umfasst DSDM den gesamten Projektzyklus.

Crystal stellt eine Familie von agilen Methoden dar, die parallele Entwicklungen ermöglichen und eine Grundlage für die Auswahl einer geeigneten Methode für jedes Projekt je nach Projektgröße, Kritikalität und Zielsetzung bilden. Das Ziel besteht darin, die schlankste Methode auszuwählen, die zum Erfolg führt.

FDD (Feature Driven Development) ist ein Ansatz, bei dem die Definition von Features bei der Entwicklung im Mittelpunkt steht. Zuerst wird das Gesamtmodell entwickelt. Dann folgt die Erstellung eines Feature-Plans. Dabei muss jedes Feature einen Mehrwert dem Kunden bringen. Nach diesem Plan wird der Entwicklungsprozess je nach Feature organisiert – Planung, Entwurf und Erstellung.

Fazit

Jetzt wissen Sie, dass der Oberbegriff „agile Softwareentwicklung“ mehrere Aspekte abdeckt. Im agilen Manifest formulierte Werte und Prinzipien bilden eine Grundlage dafür, Softwareprojekte agil umzusetzen. Aber die Agile Vorgehensweise ist kein Allheilmittel für alle Projekte. Das macht Sinn, Vorteile und Nachteile sowohl der agilen, als auch der klassischen Softwareentwicklung abzuwägen und eine passende agile Entwicklungsmethode auszuwählen. Die richtige Entscheidung kann erheblich zum Erfolg ihres Projektes beitragen.

Wir haben bereits über 1850 Projekte erfolgreich durchgeführt. Nutzen Sie unser umfassendes Leistungsangebot in der Softwareentwicklung - von der Beratung bis hin zu Support und Weiterentwicklung.