Erfahrungsbericht: Unternehmensweite Einführung eines werkzeuggestützten C++-Coding-Standards
Dr.-Ing. Olaf Seng
Dieser Vortrag steht als PDF-Dokument zur Verfügung.
Die Qualität eines Softwareprodukts steht in direktem Zusammenhang mit der Qualität des zugehörigen Quelltexts. Der Quelltext enthält sehr oft Anweisungssequenzen, die seine Stabilität und seine Wartbarkeit beeinträchtigen. Ein Coding-Standard, der bestimmte Anweisungssequenzen verbietet, kann somit maßgeblich zur Verbesserung der Stabilität und Wartbarkeit des Codes beitragen.
In diesem Beitrag stellen wir den von uns gewählten Ansatz vor, um einen Coding-Standard für die Sprache C++ unternehmensweit zu definieren und zu überprüfen. Ausgangspunkt unserer Arbeit war die Post-Mortem-Analyse zweier Stichproben von kritischen Fehlern, bei der wir zeigen konnten, dass ca. 10% - 15% der Fehler durch Codier-Regeln hätten vermieden werden können.
Zuerst definierten Mitglieder aus allen Entwicklungsteams die Regeln des Coding-Standards und die Code-Basis, für die der Standard verpflichtend ist. Da alle Entwicklungsteams an der Definition des Standards beteiligt waren, wurde dieser von Anfang an von den meisten Beteiligten akzeptiert.
Um den Coding-Standard zu überprüfen, haben wir ein kommerzielles Werkzeug um die von uns definierten Regeln erweitert. Dieses Werkzeug analysiert auf einem zentralen Server jede Nacht ca. 6 Mio. Zeilen Code und sucht nach Verletzungen der mittlerweile 50 Coding-Standard-Regeln. Die Ergebnisse werden per E-Mail an die Person geschickt, die den zugehörigen Quelltext zuletzt verändert hat. Diese kann die Ergebnisse mit Hilfe der Entwicklungsumgebung einsehen und korrigieren.
Die Anzahl der gefundenen Verletzungen wird über die Größe des Quelltexts normalisiert und zu einer Kennzahl pro Projekt aggregiert. Mit Hilfe dieser Kennzahl kann der Trend beobachtet werden und es können verschiedene Projekte bezüglich ihrer Coding-Standard-Konformität verglichen werden.
Ein Coding-Standard deckt nur die Anweisungsebene eines Programms ab. Wir planen ihn deshalb in Zukunft um Regeln auf Entwurfs- und Architekturebene zu erweitern.
Relevanz
- Entwickler: **
- Systemarchitekten: ***
- Projektleiter: ***
Der Referent:
Dr.-Ing. Olaf Seng studierte Informatik an der Universität Karlsruhe (TH). Am Forschungszentrum Informatik arbeitete er als wissenschaftlicher Mitarbeiter und Projektleiter und promovierte zum Thema automatische Restrukturierung objektorientierter Systeme. Bei der Nero Development & Services GmbH arbeitet er als Entwickler, Architekt und Projektleiter in den Bereichen Code-Qualität und Konfigurationsmanagement.
