agile Softwareentwicklung

Agile Softwareentwicklung – was habe ich als Anwender davon?

Software dient immer einem Zweck: Unternehmen beispielsweise möchten damit bestimmte betriebswirtschaftliche Aufgaben erledigen. Eine gute Software deckt den Bedarf der Anwender so ab, dass sie ihre Aufgaben effizient erfüllen können. Dieser Beitrag gibt einen nicht-technischen Einblick, wie agile Softwareentwicklung die Entstehung eines passenden Softwareprodukts unterstützt.

Die Kernaufgabe der Softwareentwicklung besteht darin, die Software an den Anforderungen der Kunden auszurichten und die geforderte Fachlichkeit zu liefern. Das ist der Sinn von Softwareentwicklung: Der Kunde erhält eine funktionsfähige Software, die seinen Anforderungen entspricht und technisch wie technologisch up to date ist (zum linguistischen Unterschied zwischen “technisch” und “technologisch”).

Im Grunde ist es dem Kunden vermutlich relativ egal, wie die für ihn passende Software entsteht. Aber er hat ganz sicher nichts gegen ein Vorgehen, welches ihn intensiv einbindet und am Ende zu einem guten Ergebnis führt. Ein agiles Vorgehen in der Softwareentwicklung kann genau das sicherstellen.

Softwareentwicklung – die Basics

Softwareentwicklung ist eine durchaus komplexe Aufgabe. Zu der Fachlichkeit, sprich: den fachlichen Anforderungen, die eine Software abbilden soll, kommen weitere Aspekte hinzu: etwa die Architektur der Anwendung, welche wesentlichen Einfluss auf die Stabilität und langfristige Wartbarkeit hat. Auch technische und technologische Aspekte müssen berücksichtigt werden, damit der Lebenszyklus der Software langfristig gesichert ist. Alles muss am Ende so aufeinander abgestimmt sein, dass der Kunde mit der Lösung zufrieden ist und seine Aufgaben erfüllen kann.

Die initiale Herstellung einer neuen Software ist eine große Aufgabe, aber auch die dauerhafte Pflege von Software ist eine Herausforderung. Der Lebenszyklus einer Software ist geprägt von häufigen Änderungen aufgrund neuer Anforderungen. Dies können fachliche Änderungen sein, die sich wiederum aus gesetzlichen Neuerungen oder geänderten Prozessen ergeben. Auch technische Veränderungen, zum Beispiel durch eine neue Version des Betriebssystems, können Anpassungen der Software notwendig machen.

Eine Software muss stets so konstruiert sein, dass sie robust gegenüber Änderungen jeder Art ist. Das bedeutet, Änderungen dürfen weder die Stabilität noch die Funktionsweise beeinträchtigen.

Softwareentwicklung – die oftmals bittere Realität

Im Rahmen traditioneller, also nicht agiler Softwareentwicklungsprozesse versucht man üblicherweise, die erforderliche Fachlichkeit in mitunter langatmigen und schwerfälligen Konzeptionsphasen möglichst umfassend zu beschreiben. Dies ist sehr ressourcenintensiv. Nicht selten stehen jedoch am Anfang des Lebenszyklus einer Software die fachlichen Anforderungen im Detail noch gar nicht fest. Der Kunde kann zwar seine Anforderungen grob beschreiben, aber kaum detailliert benennen.

Im Laufe oder sogar erst am Ende der Entwicklungsphase stellt sich dann oft heraus, dass vieles in den Konzepten falsch oder unvollständig war. Dadurch geraten Softwareprojekte in Schieflage und Verzug oder scheitern sogar ganz – was wiederum die Gesamtkosten und den Frustrationspegel erheblich steigen lässt.

Agile Softwareentwicklung – in kurzen Schritten zu guter Software

Agilität in der Softwareentwicklung kann solche für Kunden, Projektmanager und Softwareentwickler frustrierenden Erlebnisse verhindern. Unter Agilität versteht man in diesem Zusammenhang die kontinuierliche Bereitschaft, Veränderungen schnell herbeizuführen, Wandel – auch unvorhergesehenen – aufzugreifen und aus der Veränderung zu lernen.

Als ein ganzheitliches Konzept zielt agile Softwareentwicklung darauf ab, Risiken im Entwicklungsprozess zu minimieren und zugleich den Kundennutzen durch Effizienz, Qualitätsorientierung und Einfachheit zu erhöhen.

Agile Softwareentwicklung umfasst eine Reihe von Methoden und Praktiken, die auf dem sogenannten Manifest für Agile Softwareentwicklung basieren (s. Kasten).
 

Auszug aus dem Manifest für Agile Softwareentwicklung

“Wir erschließen bessere Wege, Software zu entwickeln,
indem wir es selbst tun und anderen dabei helfen.
Durch diese Tätigkeit haben wir diese Werte zu schätzen gelernt:

Individuen und Interaktionen mehr als Prozesse und Werkzeuge
Funktionierende Software mehr als umfassende Dokumentation
Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung
Reagieren auf Veränderung mehr als das Befolgen eines Plans

Das heißt, obwohl wir die Werte auf der rechten Seite wichtig finden,
schätzen wir die Werte auf der linken Seite höher ein.”

Quelle: https://agilemanifesto.org/iso/de/manifesto.html


 
Was zeichnet agile Softwareentwicklung aus? 

  • Entsprechend dem Agilen Manifest hat die Erstellung einer funktionierenden Software als Dokumentation der Fachlichkeit bei der agilen Softwareentwicklung hohe Priorität. Die Fachlichkeit wird zu Beginn des Projekts durch den Kunden, die Fachexperten und die Softwareentwickler gemeinsam erarbeitet. Erst wenn mindestens grundsätzliche Einigkeit und Klarheit über die fachlichen Anforderungen herrschen, beginnt man mit der Entwicklung der Software.
  • Aufgrund der intensiven und regelmäßigen Einbindung der Anwender und der Fachexperten in kurze Entwicklungsabschnitte kann die Software sehr zielgerichtet und bedarfsgerecht entwickelt werden. Der ständige Austausch der Beteiligten für zu einer kontinuierlich verbesserten Abbildung der Fachlichkeit in der Software.
  • Bereits am Ende eines Entwicklungsabschnitts steht das jeweilige Ergebnis in Form einer funktionsfähigen Software zur Verfügung. Oft stellen die Softwareentwickler dem Kunden das Ergebnis vor und holen von diesem direkt ein Feedback dazu ein.
  • Die Auslieferung der Software erfolgt in der Regel erst dann, wenn die Fachlichkeit soweit implementiert ist, dass die Software bei der Erledigung der Aufgaben tatsächlich helfen kann. Aber die Auslieferung sollte so schnell wie möglich erfolgen, was wiederum zu schnellem Feedback führt und weitere Umsetzungsschritte ermöglicht.

Fazit: Agile Softwareentwicklung führt zu besserer Software

Die agile Softwareentwicklung stellt konsequent die Anforderung des Kunden in den Fokus. Sie ermöglicht durch kurze Entwicklungsabschnitte ein intensives und zeitnahes Feedback der Anwender und der Fachexperten. Durch den ständigen Austausch sind alle Beteiligten eingebunden und die fachliche Implementierung entwickelt sich kontinuierlich bis zur Reife weiter. Unterm Strich erhalten die Kunden zügig eine funktionierende Software, die den Anforderungen entspricht.
 

Jan Spangl
Autor dieses Beitrags
Jan Spangl leitet den Bereich Forschung & Entwicklung bei HS – Hamburger Software und arbeitet in Forschungs- und Entwicklungsprojekten nach agilen Methoden der Softwareentwicklung.

Bildquellen: NicoElNino/Fotolia.com, Jan Spangl (Porträt)

0 Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail Adresse wird nicht veröffentlicht. Es gilt unsere Datenschutzerklärung.

Schreibe einen Kommentar

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