Agile Softwareentwicklung: So bedienen Sie Kundenwünsche optimal

Digitales Business

Digitales Business

Datum 29.01.2019
Lesezeit 7 Min.

Agile Softwareentwicklung: So bedienen Sie Kundenwünsche optimal

Mit agiler Softwareentwicklung können Sie Ihren Entwicklungsprozess nicht nur beschleunigen, sondern auch transparenter und flexibler gestalten. Möglich machen das regelmäßige Feedbackrunden bei den Projektbeteiligten und Maßnahmen, die den Kunden oder späteren Anwender aktiv in die Entwicklung mit einbeziehen.

Extreme Programming, Scrum und agiles Testen – all diese Begriffe stehen im Zusammenhang mit agiler Softwareentwicklung. Dabei handelt es sich nicht bloß um Schlagworte: Diese neuen Programmier- und Entwicklungsmethoden haben deutliche Vorteile gegenüber klassischen Ansätzen wie dem V-Modell oder dem Rational-Unified-Process-Verfahren. Wir zeigen Ihnen, wie agile Softwareentwicklung funktioniert und wo die Grenzen dieser Methoden liegen.

– – –

+++ Außerdem spannend +++

Einfach einen Fortschritt voraus: Wie die New Industry mit Hilfe von IoT, vernetztem Denken und Smart Services die Geschäftswelt von morgen gestaltet.

Bestens informiert: In unserem IoT Spotlight Report stellen wir Ihnen jede Menge spannende Ideen zur Gerätevernetzung vor und liefern einen umfassenden, aktuellen Marktüberblick. Laden Sie sich den aktuellen Report einfach hier herunter: Download IoT Spotlight Report 2020.

– – –

Was genau bedeutet eigentlich agile Softwareentwicklung?

Die Agile Alliance, eine global arbeitende Non-Profit-Organisation zur Förderung agiler Softwareentwicklung, definiert den Begriff so: „Agile Softwareentwicklung ist ein Sammelbegriff für eine Reihe an Methoden und Verfahren, die auf den Werten und Prinzipien des agilen Manifests basieren.”

In diesem Manifest werden Maximen festgelegt, die die traditionelle Softwareentwicklung geradezu auf den Kopf und den Kunden sowie das Ergebnis vollkommen in den Mittelpunkt stellen. Ein Entwicklungsprozess nach agilen Methoden wird nicht als Liste von abzuarbeitenden Punkten, sondern als dynamisches Modell begriffen. Die vier Grundprinzipien lauten hierbei:

  • Individuen und Interaktionen sind wichtiger als Prozesse und Werkzeuge.
  • Funktionierende Software ist wichtiger als eine umfassende Dokumentation.
  • Die Zusammenarbeit mit dem Kunden ist wichtiger als Vertragsinhalte.
  • Das Reagieren auf Veränderungen ist wichtiger als das Befolgen eines Plans.

Die Ansätze der agilen Softwareentwicklung gehen dabei auf die späten 1990er-Jahre zurück, als herkömmliche Entwicklungsverfahren wie der Rational Unified Process (die Basis für UML, Unified Modeling Language) sowie das V-Modell (Softwareentwicklung in Phasen, jedoch ohne Rückkopplungsschleifen) immer mehr in Frage gestellt wurden. Solchen weitgehend rückkopplungsfreien – und somit linearen und wenig flexiblen – Methoden stellt die agile Softwareentwicklung einen Iterationsprozess mit mehreren Feedbackschleifen gegenüber.

Aus den Grundprinzipien agiler Softwareentwicklung leiten sich außerdem mehrere Entwicklungsprinzipien ab (insgesamt zwölf) – die wichtigsten hiervon sind:

  • Beschleunigung des Entwicklungsprozesses: Der Kunde steht im Mittelpunkt und soll seine Software so schnell wie möglich einsetzen können.
  • Flexibilität: Selbst späte Veränderungen am gewünschten Ergebnis können noch berücksichtigt werden.
  • Mehr Teamarbeit: Informationen sollen nach Möglichkeit persönlich ausgetauscht und nicht nur schriftlich festgehalten werden. Die Teams organisieren sich weitgehend selbst und hinterfragen regelmäßig ihre eigene Arbeit anhand der gesetzten Ziele und der agilen Prinzipien.
  • Das KISS-Prinzip (Keep It Simple and Smart): Die Software soll so einfach wie möglich und so komplex wie nötig aufgebaut werden.

Die gesamten zwölf Entwicklungsprinzipien können Sie im Detail auf der Website der Agile Alliance einsehen.

 

Mit agilen Methoden können Sie Ihren Aufwand deutlich reduzieren

Mit agiler Softwareentwicklung ist nicht zwingend eine bestimmte Art und Weise zu programmieren gemeint. Vielmehr werden hier Methoden und Prozesse vorgeschlagen, die auf dem agilen Manifest basieren. Trotz des scheinbaren Mehraufwands während der Entwicklungsphase können diese Ansätze in der Summe Ihren Projektaufwand deutlich reduzieren. Grund hierfür ist, dass Sie schon während der Entwicklungsphase und frühzeitig feststellen, wo es Schwierigkeiten gibt, und nicht erst am Ende des Projekts in der Testphase.

Zu den agilen Methoden gehören unter anderem:

  • Paarprogrammierung: Hierbei arbeiten zwei Programmierer gleichzeitig an einem Stück Code. Während einer von ihnen die Aufgabe strukturiert und den Code kontrolliert, ist der andere mit der eigentlichen Programmierarbeit beschäftigt. Voraussetzung hierfür ist allerdings ein ähnlicher Programmierstil bei beiden Entwicklern.
  • User-Storys: Eine Softwareanforderung wird in möglichst knappen Worten und aus User-Sicht beispielsweise auf einem kleinen Klebezettel („Story-Card”) beschrieben. Dies soll dazu dienen, den Endanwender und dessen Bedürfnisse klar in den Fokus zu stellen. Auf der Vorderseite wird die Nutzeranforderung in Umgangssprache festgehalten (beispielsweise: „Als wiederkehrender Nutzer möchte ich nach dem Einloggen Neuigkeiten sehen, die mich betreffen, um nicht jedes Mal in allen Bereichen suchen zu müssen”). Auf der Rückseite werden die fachlichen Anforderungen notiert, um diese Aktion umzusetzen (in diesem Fall die Aufbereitung und Anzeige von Daten, die einen bestimmten Nutzer betreffen, und was dazu technisch notwendig ist).
  • Schnelle Reviews: Ein schnelles (und regelmäßiges) Code-Review ermöglicht es, Fehler rechtzeitig aufzudecken und diese zu korrigieren. Das kann beispielsweise täglich und durch einen anderen Entwickler passieren. So wird verhindert, dass schwerwiegende Fehler im Code erst spät entdeckt werden und umfangreiche Änderungen nach sich ziehen.

 

Agile Ansätze stellen den Kunden in den Mittelpunkt

Neben den genannten Methoden gibt es auch verschiedene Entwicklungsprozesse und Entwicklungsprinzipien, die unter dem Sammelbegriff „agile Softwareentwicklung” gebündelt sind. Allen gemeinsam ist auch hier die Orientierung am agilen Manifest und die Tatsache, dass das Kunden- oder Anwenderbedürfnis im Mittelpunkt steht. Dies ist zwar grundsätzlich auch bei herkömmlichen Ansätzen der Fall, jedoch wird der Kunde bei den agilen Ansätzen viel stärker einbezogen und liefert fortlaufend Feedback. Die Begriffe „agiler Prozess” und „agile Methode” lassen sich dabei allerdings nicht immer klar voneinander trennen. Im Folgenden stellen wir die interessantesten agilen Entwicklungsansätze exemplarisch vor:

Kanban: Besserer Programmierfluss durch Transparenz

Das japanische Wort „Kanban” bedeutet „Signalkarte” und wurde ursprünglich in der japanischen Automobilindustrie als Prinzip zur Verbesserung von Produktionsprozessen eingeführt. In der Informationstechnologie hingegen geht es vor allem darum, den Entwicklungsprozess zu „verschlanken”. Dazu werden sämtliche Phasen möglichst transparent dargestellt und auf Karteikarten oder Haftnotizen festgehalten. Ein sogenanntes Kanban-Board dient dabei zur Visualisierung des Projektstands. Die Menge der jeweils gleichzeitig angefangenen Aufgaben („Work in Progress”) wird außerdem begrenzt, damit einzelne Komponenten schneller fertiggestellt werden können. So können alle Beteiligten jederzeit erkennen, wie weit das Projekt fortgeschritten ist, und mögliche Engpässe werden rechtzeitig identifiziert.

Scrum: Vor allem große Projekte profitieren von inkrementellem Vorgehen


Gerade umfangreiche Projekte lassen sich häufig mit Scrum (englisch für „Gedränge”) besser realisieren als mit anderen Methoden wie beispielsweise Kanban. Grund hierfür ist, dass manche Vorhaben einfach zu komplex sind, als dass sie komplett auf ein einzelnes Visualisierungs-Board übertragen werden können. Sogenannte Inkremente (Projektfortschritte) wechseln sich jeweils mit sogenannten Sprint-Phasen von zeitlich begrenzter Dauer ab, in denen die eigentliche Entwicklungsarbeit geschieht.

Es gibt dabei einen speziellen Scrum Guide: Er legt einige wenige Regeln fest, die relativ viele Freiheiten bei der Projektgestaltung lassen. Um der hohen Komplexität bei größeren Projekten zu begegnen, wird das gesamte Vorhaben außerdem in Zwischenschritte unterteilt, an deren Ende jeweils eine neue Planung für den Folgeschritt steht. Für diese gibt es dann jeweils eigene sogenannte Scrum Boards. Transparenz, die Überprüfung von Zwischenergebnissen und die anschließende Anpassung des Entwicklungsprozesses haben auch beim Scrum-Ansatz Vorrang vor dem ursprünglich festgelegten Projektziel.




Video: YouTube / Frank Lange TV

 

Extreme Programming: In kleinen Schritten zum großen Ergebnis

Die sogenannte Extremprogrammierung geht bei der Zerlegung eines Projekts in Teilaufgaben noch einen Schritt weiter. Neben den üblichen Prinzipien aus dem agilen Manifest wird hier davon ausgegangen, dass die Anforderungen an die endgültige Software zu Beginn des Projekts noch nicht komplett klar sind. Als eines der wenigen Prinzipien bezieht Extreme Programming („XP”) dieses Risiko aktiv mit in den Programmierprozess ein. Unter anderem kann der Kunde aufgrund der kurzen Entwicklungszyklen zu jeder Zeit aktiv in das Projekt eingreifen. Dies soll gewährleisten, dass der Kunde zu jeder Zeit die volle Kontrolle über das hat, was geschieht, und er am Ende zufriedener mit dem Ergebnis ist – er hat es schließlich aktiv mitgestaltet. Außerdem werden auf diese Art möglicherweise überflüssige Features vermieden, die der Kunde vielleicht gar nicht bestellt (und somit bezahlt) hat, die aber dennoch Programmieraufwand verursachen (würden).

Weitere interessante agile Programmieransätze sind:

  • Crystal: Hier handelt es sich um eine ganze Familie von Programmiermethoden, die zu den jeweiligen Umständen passende Regelwerke vorgeben und die nach Farben unterteilt werden. Die „Farbe” „Crystal Clear” steht dabei für kleinere Projekte, an denen nur eine bis sechs Personen gemeinsam arbeiten; bei „Crystal Blue” sind es immerhin 200 bis 500 Entwickler.
  • Adaptive Software Development: Bei diesem Ansatz stellen Sie alle vier Wochen gemeinsam mit dem Kunden die Frage, ob die neue Programmversion wirklich einen Fortschritt darstellt.
  • Agiles Testen: Auch beim immer wieder notwendigen Softwaretest können agile Methoden zum Einsatz kommen. Diese beruhen unter anderem darauf, dass möglichst schnell testfähige Softwareelemente bereitgestellt werden. Einige dieser Tests werden sogar automatisiert durchgeführt.
  • BDD (Behaviour Driven Development): Diese ebenfalls testgetriebene Entwicklungsform basiert auf „Wenn-Dann”-Sätzen, die das gewünschte Softwareverhalten beschreiben. Auf dieser Basis entsteht eine Softwarebeschreibung, deren korrekte Implementierung weitgehend automatisiert geprüft werden kann.
  • Agile Unified Process: Im Wesentlichen basiert dieser Ansatz darauf, dass nicht wie beim oben erwähnten, herkömmlichen Rational Unified Process erst ganz am Ende eines Projekts ein fertiges Softwareprodukt steht. Stattdessen wird die Entwicklungsarbeit in mehrere Production Releases unterteilt. Diese können dann einzeln getestet werden, sind jedoch möglicherweise noch nicht voll funktionsfähig.

 

Ausklappbare Informationsgrafik
Infografik: Eigenkreation

 

Ist agile Softwareentwicklung als Allheilmittel zu sehen?

Allen agilen Programmieransätzen ist gemein, dass sie das Kundenbedürfnis ins Zentrum der Entwicklung stellen. Konventionelle Methoden definieren zunächst ein langes Pflichtenheft und dann wird der Kunde während des anschließenden Entwicklungsprozesses im Prinzip nicht mehr einbezogen. Am Ende wird dann ein mehr oder weniger passendes Ergebnis präsentiert, bei dem erst in der Praxisanwendung klar wird, welche Anpassungen noch notwendig sind. Bei den meisten agilen Ansätzen dagegen wird der Kunde im laufenden Entwicklungsprozess sehr aktiv eingebunden. So sind agile Programmierverfahren in der Lage, schnell auf mögliche Schwachstellen zu reagieren, und sogar während der Entwicklung können Veränderungen am Markt oder in der zugrundeliegenden Technologie berücksichtigt werden.

Das agile Manifest gibt also durchaus sinnvolle Anregungen für modernes Programmieren. Dennoch lösen die genannten Prinzipien nicht die inhaltlichen Herausforderungen, die während der Entwicklung selbst auftreten können – und während agile Ansätze die Schwachstellen konventioneller Methoden ausgleichen können, bringen sie gleichzeitig ganz eigene mit: Der Einsatz agiler Methoden bedeutet mehr Aufwand bei der gemeinsamen Abstimmung in einem Team. Zudem verändern sie das Anforderungsprofil der Entwickler im Hinblick auf Softskills bei der Abstimmung mit Teammitgliedern und Kunden. Nicht zu vergessen: Auch auf Kundenseite verlangt die Einbeziehung in den Entwicklungsprozess mehr Aufwand.

Ein Allheilmittel sind agile Methoden somit nicht – am Ende eines Projekts stehen jedoch normalerweise deutlich bessere Ergebnisse und mehr Kundenzufriedenheit, sodass sich der zusätzliche Aufwand für Organisation und Planung durchaus lohnt. Es gibt zudem immer die Möglichkeit, verschiedene Methoden zu kombinieren. Auch klassische Programmieransätze erlauben sehr wohl den Einsatz agiler Methoden (beispielsweise durch das sogenannte Rapid Prototyping, bei dem Teilkomponenten zunächst modellhaft implementiert werden). Es gibt also für jedes Team und für jede Aufgabe eine individuelle, agile Lösung.

 

Zusammenfassung

  • Agile Softwareentwicklung stellt Kundenbedürfnisse und laufendes Anwenderfeedback in den Mittelpunkt eines Projekts.
  • Das agile Manifest umfasst vier Grundregeln, aus denen sich zwölf Grundprinzipien agiler Softwareentwicklung ableiten.
  • Moderne Entwicklungsmethoden wie Kanban, Scrum, Extreme Programming und andere Verfahren basieren auf diesem Manifest.
  • Je nach Projektumfang und -komplexität eignen sich bestimmte Verfahren besonders gut für die Realisierung eines Projekts.
  • Die agilen Prinzipien bilden die Realität im Entwicklungsprozess deutlich besser ab, als herkömmliche Entwicklungsverfahren dies können.

 

Welche Rolle spielen bei Ihnen agile Prozesse in der Softwareentwicklung und wie setzen Sie diese um? Wir freuen uns auf Ihren Kommentar.

 

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Facebook Twitter WhatsApp LinkedIn Xing E-Mail