Software-Reviews – rechtfertigt hochwertige Software ihre Kosten?

Veit Schiele

21. Januar 2021

5r– minutes

Reviews finden in unserem gesamten Softwareentwicklungsprozess statt, angefangen bei der Analyse der Anforderungen und der passenden Softwarearchitektur bis hin zu Code- und Test-Analysen. Wir führen aber auch Audits der Software unserer Kunden durch, damit sie eine Einschätzung für die Weiterentwicklung und den Betrieb ihrer Software erhalten.

Was sind die Vorteile von Software-Reviews?

Software-Reviews führen zu deutlich weniger Fehlern. Nach einer Studie von Capers Jones [1] über zwölftausend Projekte werden diese reduziert durch

  • bei Requirements-Reviews um 20–50 Prozent

  • bei Top-Level-Design-Reviews um 30–60 Prozent

  • bei detaillierten funktionalen Entwurfsüberprüfungen um 30–65 Prozent

  • bei detaillierten logischen Entwurfsüberprüfungen um 35–75 Prozent

Die Studie kommt zu dem Schluss:

Schlechte Codequalität ist bis zum Ende der Code-Phase billiger; danach ist hohe Qualität billiger.

../_images/software-reviews-does-high-quality-software-justify-its-cost.png

Kosten über die Entwicklungsphasen Anforderung, Design, Kodierung, Test und Betrieb

Die Studie geht immer noch von einem klassischen Wasserfallmodell aus, das von den Anforderungen über die Softwarearchitektur und den Code bis hin zu den Tests und dem Betrieb reicht. In der agilen Softwareentwicklung wird dieser Prozess jedoch in vielen Zyklen wiederholt, so dass wir die meiste Zeit mit der Entwicklung von Software verbringen, indem wir die bestehende Codebasis ändern oder ergänzen. Daher müssen wir nicht nur die Änderungsanforderungen, sondern auch den bestehenden Code verstehen. Eine bessere Codequalität macht es uns leichter zu verstehen, was unsere Anwendung tut und wie sinnvoll die Änderungen sind. Wenn der Code gut in einzelne Module unterteilt ist, kann ich mir viel schneller einen Überblick verschaffen als bei einer großen monolithischen Codebasis. Wenn der Code außerdem klar benannt ist, kann ich schneller verstehen, was die verschiedenen Teile des Codes tun, ohne ins Detail gehen zu müssen. Je schneller ich den Code verstehe und die gewünschte Änderung umsetzen kann, desto weniger Zeit brauche ich für die Implementierung. Zu allem Überfluss steigt die Wahrscheinlichkeit, dass ich einen Fehler mache. Es geht mehr Zeit verloren, um solche Fehler zu finden und zu beheben. Diese zusätzliche Zeit wird normalerweise als technische Schuld verbucht.

Umgekehrt kann ich vielleicht einen schnellen Weg finden, um eine gewünschte Funktion bereitzustellen, die jedoch die bestehenden Modulgrenzen sprengt. Eine solche „quick and dirty“-Implementierung erschwert jedoch die Weiterentwicklung in den nächsten Wochen und Monaten. Auch in der agilen Softwareentwicklung ohne ausreichende Codequalität kann der Fortschritt nur am Anfang schnell sein, je länger es keine Überprüfung gibt, desto schwieriger wird die Weiterentwicklung. In vielen Gesprächen mit erfahrenen Kolleg*innen war die Einschätzung, dass regelmäßige Reviews und Refactorings schon nach wenigen Wochen zu einer höheren Produktivität führen.

Welche Arten von Überprüfungen lösen welche Probleme?

Es gibt verschiedene Möglichkeiten, einen Review durchzuführen. Diese hängen von der Zeit und den Zielen des Reviews ab.

Der Standard IEEE 1028 [2] definiert die folgenden fünf Arten von Reviews:

Walkthroughs

Mit dieser statischen Analysetechnik entwickeln wir Szenarien und führen Testläufe durch, um z. B. Anomalien in den Anforderungen und alternative Implementierungsoptionen zu finden. Sie helfen uns, das Problem besser zu verstehen, führen aber nicht unbedingt zu einer Entscheidung.

Technische Reviews

Diese technischen Reviews führen wir durch, um z. B. alternative Softwarearchitekturen in Diskussionen zu bewerten, Fehler zu finden oder technische Probleme zu lösen und zu einer (Konsens-)Entscheidung zu kommen.

Inspektionen

Diese formale Review-Technik setzen wir ein, um z. B. Widersprüche in den Anforderungen, falsche Modulzuordnungen, ähnliche Funktionen etc. schnell zu finden und möglichst frühzeitig beseitigen zu können. Wir führen solche Inspektionen oft während der Paarprogrammierung durch, was auch weniger erfahrenen Entwicklern ein schnelles und praktisches Training ermöglicht.

Audits

Bevor die Software in Betrieb genommen wird, führen wir häufig eine Evaluierung des Softwareprodukts hinsichtlich Kriterien wie Walk-Through-Reports, Softwarearchitektur, Code- und Sicherheitsanalyse sowie Testverfahren durch.

Management-Reviews

Diese systematische Bewertung von Entwicklungs- oder Beschaffungsprozessen nutzen wir, um uns einen Überblick über den Projektfortschritt zu verschaffen und ihn mit etwaigen Zeitplänen zu vergleichen.

Testimonials

“Vielen Dank für die gute Arbeit. Wir sind sehr zufrieden mit dem Ergebnis!”

– Niklas Kohlgraf, Projektmanagement, pooliestudios GmbH

Kontaktiert uns

Gerne beantworte ich eure Fragen und erstelle ein passendes Angebot für unsere Software-Reviews.

Portrait Veit Schiele

Veit Schiele

Mail

Phone