Rechnet sich der Einsatz von agilen Methoden?

Hohe und nachhaltige Qualität

Spaghetticode ist einfacher und schneller zu schreiben als eine gut strukturierte Komponente. Das jedenfalls behauptet Josuttis, der sogar so weit geht zu behaupten, die Zukunft läge im „Crappy Code“. Man solle sich einfach damit abfinden, dass schlechter Code normal ist [7]. Marketing und Vertrieb würden einen solchen Kostendruck aufbauen, dass man einfach zu der billigsten Art der Programmierung greifen müsse, und das sei eben einfach etwas zusammenzuhacken, was funktioniert. Der Denkfehler aus Sicht der Autoren: Schlechter Code ist nicht billiger, ganz im Gegenteil.

Josuttis Ansatz greift zu kurz, weil er sich nur auf die einmaligen Erstellungskosten des Codes bezieht. Die wahren Kosten verstecken sich aber ganz woanders. 85 % der Kosten, Tendenz steigend, stecken in der Wartung [8]. Ja, Spaghetticode zu schreiben, ist günstiger, aber eben auch nur das Schreiben. Dazu kommt, dass man sich bei einer agilen Vorgehensweise quasi in der zweiten Iteration schon in der Wartungsphase befindet. Nun das könnte jetzt ein Argument sein, eben nicht iterativ zu entwickeln, um die Wartungsphase möglichst weit herauszuschieben, aber auch die Betrachtungsweise ist verkürzt. Denn auch wenn die Wartungsphase „offiziell“ erst nach dem Release anfängt, Software zu warten heißt, zu bestehender Funktionalität neue hinzuzufügen, und das geschieht tagtäglich in der Softwareentwicklung.

Eine Untersuchung des amerikanischen Verteidigungsministeriums hat den Einfluss von der Struktur eines Systems auf die Wartbarkeit gemessen. Danach wurden Kosten, Fehler und zeitlicher Aufwand einer Änderung an einem System gemessen, bevor und nachdem es von einem unstrukturierten in einen strukturierten Zustand überführt wurde. Die Unterschiede sind drastisch: die Änderungen am strukturierten System dauerten nur halb so lange und verursachten die Hälfte der Kosten. Die Anzahl der Fehler ging noch drastischer auf fast ein Zehntel zurück [9]. All das sind Kostenvorteile, die man mitnimmt, wenn sich das System in einem qualitativ hochwertigen Zustand befindet.

Die Erfahrung zeigt, dass die Qualität des Codes häufig Zeit und Budget zum Opfer fällt. Martin Fowler nennt diese Qualitätsschulden, die ein Projekt über die Laufzeit aufbaut, auch Technical Debt [10]. Agile Methoden wie Scrum führen deshalb eine „Definition of Done“ ein, die die Qualitätskriterien für eine Anforderung festlegt. Nur wenn diese komplett erfüllt sind, wird eine Anforderung in einer Iteration ausgeliefert. Zudem schreiben agile Softwareentwicklungsmethodiken wie eXtreme Programming [11] Praktiken wie Test-driven Development, Continuous Integration und Pair Programming vor, um die Codequalität der Anwendung hochzuhalten.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.