Agile Software Development
Was bedeutet Agile Software Development
Der Begriff und die Methoden des Agile Software Development – also der schnellen Software-Entwicklung - entstanden aus der Not heraus, immer kürzere Innovationszyklen zu fahren. Dementsprechend entwickelte man Softwareprodukte nicht mehr voll durch sondern machte sie bereits in früheren Produktstadien verfügbar. Die Produktreife wird dann erst im laufenden Geschäft entwickelt, die Vorteile der Software stehen aber schon in einem frühen Stadium in begrenztem Rahmen zur Verfügung.
Das Agile Manifesto
Bereits 2001 entstand das so genannte 'Agile Manifesto', eine Deklaration von Prinzipien des 'Agile Software Development' – unterzeichnet von einer Hand voll Programmierern, die eine dynamischere Art der Entwicklung proklamierte und von den Vorteilen für die Entwickler, gegenüber den Kunden und für die Qualität der Software selbst überzeugt waren.
Die Vorteile des Agile Software Development
- Das Softwareprodukt ist schneller einsatzbereit.
- Auf Änderungen kann schneller reagiert werden .
- Der Kunde kann besser in den Prozess eingebunden werden .
- Frühe Prototypen zeigen, ob die Software allen Ansprüchen genügt .
- Code wird wiederverwertet .
- Bürokratische Arbeit nimmt stark ab .
- Vermeidung zu groß dimensionierter Software, Schlankheit.
Kritik am Agile Software Development
- Die Prozesse verlangen den Entwicklern selbst Agilität ab .
- Viele Bugs werden erst 'unterwegs' gefunden .
- Gesamt-Kosten sind schwerer kalkulierbar .
- Ständige Korrespondenz mit dem Kunden nötig.
- Beschränkter Projektumfang, da Teams selbstregulierend sein sollen .
- Häufiges Patching – also Aktualisieren von Fehlerbehebungen .
Methoden
- Pairing
Zwei Programmierer arbeiten an einem Rechner. Einer codet – der andere denkt mit und korrigiert, abwechselnd. Fehler werden vermieden – optimale Lösungswege werden bereits "unterwegs" diskutiert – einer kann vom anderen lernen.
- Testen
Regelmäßiges Testen lässt frühzeitig Fehler erkennen. Bug-Tickets werden ausgegeben, die dann abgearbeitet werden.
- Geteiltes Wissen
Spezialistentum sollte vermieden werden. Jeder sollte sich mit den verschiedenen Thematiken des Projekts auskennen. Eine sorgfältige Dokumentation ist nötig.
- Schnelle Integration
Softwarekomponenten werden so schnell als möglich integriert – so werden Bugs schneller gefunden und der Kenntnisstand des Gesamt-Teams aktualisiert.
- Kunden-Kommunikation
Während der Entwicklung sollte der Kunde mit einbezogen sein, um Missverständnisse aufzuklären und Änderungen zu definieren.
- Optimierung
Die Software und ihre Teile werden nicht erst eingebunden und angewandt, wenn sie perfekt sind, sondern sie werden immer als optimierungsfähig betrachtet. So werden sie auch ständig optimiert, bis ein akzeptabler Zustand erreicht ist.
- Kurze Zyklen
Schnelle Prototypentwicklung – darauf folgen weitere Entwicklungszyklen, die dazu dienen, die Software zu skalieren, zu optimieren, zu integrieren und zu veröffentlichen. Zyklen bestehen wiederum aus Programmieren - Integrieren – Test – Kommunizieren- Optimieren.
- Keine Überstunden
Überstunden zeugen von schlechter Planung und werden als kontraproduktiv angesehen.
- Einfaches Software-Design
So wenig Features wie möglich, soviele nötig.
- User Storys
Anstatt mit einem komplexen, fehlerbehafteten Pflichtenheft zu arbeiten, werden User Storys erzählt. Diese bilden die Anforderungen an die Software ab. Beispiel: Der User sucht aus zwei Kategorien von Waren seine Einkäufe aus. Er kann sie auswählen und am Ende mit einer Kreditkarte bezahlen.
- Betaphase
Frühzeitiges Zugehen auf den Anwender und ihn in die Optimierungszyklen mit einbeziehen.
- Code-Recycling
Durch gute Dokumentation schon während der Entwicklung lassen sich Softwarefunktionen ausfindig machen, die man später recyceln kann. So spart man Arbeit und Geld.
Fazit:
Besonders für Start-ups ist das 'Agile Software Development' interessant, da man mit den Methoden nicht nur schnell entwickeln kann, sondern mit dem Instrumentarium ebensogut Geschäftsmodelle entwickeln und aussteuern kann. Frühe Prototypierung demonstriert Investoren und Referenzkunden die Funktionalität der Software.
Schlagworte zu diesem Artikel