© Excellent backgrounds/Shutterstock.com
Effektiver Einsatz von Codereviews

Vier Augen sehen mehr als zwei


Codereviews führen zu qualitativ hochwertigeren Systemen und zu besser vernetzten Teams. Denn das gemeinsame Durchgehen von Quelltexten bringt Fehler frühzeitig zum Vorschein und hilft beim Wissensaustausch. Die optimale Einbettung in den Entwicklungsprozess und eine Infrastruktur aus etablierten Tools sorgen zudem dafür, dass Code­reviews auch langfristig zum Erfolg eines Unternehmens beitragen.

Kontinuierliche Codereviews sind ein effektives Mittel, um Softwarequalität langfristig zu steigern. Bei einem Codereview begutachten ein oder mehrere Entwickler den Quellcode, der von einem Kollegen geschrieben wurde. Regelmäßig und richtig durchgeführte Codereviews versprechen viele Vorteile. Denn je häufiger Quellcode betrachtet wird, desto mehr Fehler können darin gefunden werden. Und umso früher ein Fehler gefunden werden kann, desto günstiger lässt er sich beheben. Befindet sich ein Fehler erst einmal in einem Produktionssystem, kann die Behebung teuer werden. Daher ist es sinnvoll, möglichst viele Fehler bereits in einer frühen Entwicklungsphase zu finden [1].

  • Codereviews fördern auch die Wissensvermittlung. Ein häufiges Problem bei der Entwicklung von Software ist das Entstehen von Wissensinseln. Denn der einzelne Entwickler kennt immer nur einen kleinen Teil der gesamten Codebasis und kann daher bei notwendigen Anpassungen in anderen Codeteilen kaum behilflich sein. Codereviews mildern diesen Effekt, da sich jeder Entwickler zwangsläufig mit anderen Codeteilen auseinandersetzen muss. Als positive Folge wird sich auch die Wartbarkeit der Software erhöhen. Code, der weniger Fehler enthält und über den mehr Entwickler ein tieferes Verständnis haben, wird über kurz oder lang eine höhere Qualität aufweisen und somit auch wartbarer sein. Nicht zu unterschätzen ist der letzte Vorteil von Codereviews: Beim Reviewen werden nicht nur Fehler, sondern auch viele gute Codestellen zum Vorschein kommen, die dem Reviewer als Anregung für weitere Entwicklungsarbeiten dienen können.

Trotz dieser vielen Vorteile werden Codereviews nicht in allen Entwicklungsprojekten gelebt. Viele Entwickler berichten sogar von negativen Erfahrungen mit Codereviews. Die Gründe hierfür sind vielfältig. Mit der richtigen Vorbereitung lassen sich auftretende Anfangsschwierigkeiten allerdings in der Regel schnell überwinden. Zunächst sollten einige technische Voraussetzungen geschaffen werden, um das effiziente Durchführen von Codereviews überhaupt erst zu ermöglichen. Besonders wichtig ist es zudem, eine positive Grundhaltung bei allen Beteiligten zu schaffen, also bei den Entwicklern und dem Management. Nur wer sich ernsthaft und offen gemeinsam im Team verbessern möchte, kann die Vorteile von Codereviews auch nutzen. Nicht zuletzt scheitert die Einführung von Reviews allzu häufig am Fehlen konkreter Regeln und an einer nicht optimalen Einbindung in den Entwicklungsprozess.

Vor dem Codereview steht der Test

Ein wesentlicher Vorteil von Codereviews ist das Senken der Gesamtentwicklungskosten. Diese Kostenersparnis lässt sich allerdings nur erreichen, wenn die zur Verfügung stehende Zeit der beteiligten Personen optimal genutzt wird. In Softwareentwicklungsprojekten sind die Personalkosten in aller Regel der größte Kostenfaktor, und daher sollten wir die für Reviews eingesetzte Zeit eines jeden Entwicklers auf das notwendige Mindestmaß beschränken. Durch geschickte Automatisierung von Qualitätssicherungsmaßnahmen können wir den manuellen Reviewaufwand auf den tatsächlich notwendigen Teil beschränken. Die konkreten Maßnahmen unterscheiden sich zwar von Projekt zu Projekt, basieren aber letztlich immer auf einer Kombination der gleichen Mechanismen.

Beim Betrachten eines Codefragments lassen sich Bugs meist nur schwer erkennen. Noch schwieriger ist allerdings das Finden von unerwünschten Seiteneffekten, die sich durch geänderte Codestellen ergeben. Diese Seiteneffekte lassen sich bei einem Review nur mit viel Erfahrung und einem tiefen Wissen über die Anwendung finden. Es ist daher wichtig, mit einer hohen Testabdeckung möglichst viele Seiteneffekte automatisiert zu finden, da sich dies nur bedingt im Rahmen eines Reviews leisten lässt.

Zu einer hohen Testabdeckung gehört zwingend auch ein automatischer Build-Prozess, der in der Lage ist, auch Tests automatisch auszuführen. Des Weiteren benötigt man einen Continuous-Integration-Server, der diesen Build-Prozess regelmäßig startet, sodass die Entwickler über fehlgeschlagene Tests informiert werden. Auch Codequalitätstools wie SonarQube [2], FindBugs [3], PMD [4] oder Checkstyle [5] können beim automatischen Entdecken von Problemstellen im Code hilfreich sein, die man ansonsten manuell nur mit großem Aufwand finden würde.

Neben diesen zum Glück mittlerweile weit verbreiteten Qualitätsmaßnahmen lassen sich noch viele weitere automatisierte Prüfungen in den Build-Prozess integrieren. Dazu gehört vor allem das Überprüfen von Architekturvorgaben und...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang