10 Tipps für die Verbesserung der Code Qualität

Meldungen über Softwareprobleme und Sicherheitslücken in Programmcode sind heutzutage an der Tagesordnung. Da stellt sich natürlich die Frage, warum es trotz hochqualifizierter Softwareentwickler in großen Unternehmen immer wieder zu Problemen mit dem Programmcode kommt. 

Die Antwort lautet: Programmierung ist derart komplex, dass es bei hochspezialisierter Software irgendwann selbst für den besten Programmierer unmöglich wird, alle Konsequenzen aller Programmzeilen abschätzen zu können. Trotzdem ist es im Interesse eines jeden Unternehmens, Softwarefehler so weit wie möglich zu vermeiden. 

Daher gehört die stetige Verbesserung der Code Qualität zu den wichtigsten Eckpfeilern in der Softwareentwicklung. Hier sind einmal die 10 wichtigsten Tipps aufgelistet, die zur Verbesserung der Softwarequalität eingesetzt werden:

1) Versionskontrolle

Wenn mehrere Programmierer an einem Stück Software arbeiten, kommen unterschiedliche Versionen von Code zusammen. Bei der Vielzahl der Dateien den Überblick zu behalten, sie zusammenzuführen, Fehler zu erkennen und gleichzeitig im Team auszutauschen, kann recht schwierig sein. 

Versionskontrollsysteme sind Software-Tools, die Teams dabei unterstützen, Änderungen am Quellcode vorzunehmen. Die Versionskontrollsoftware verfolgt jede Korrektur des Codes und sammelt sie in einer benannten Datenbank. So können einfach Softwarefehler beseitigt werden, indem fehlerhafte Versionen zurückgenommen werden. Die gebräuchlichsten Tools auf dem Markt sind Git und Subversion.

2) Automatisierte Tests

Um immer wiederkehrende manuelle Tests zu vermeiden, werden automatisierte Tests eingesetzt. Diese haben unter anderem den Vorteil, dass sie testen, ob durch neu entwickelten Code Fehler in bereits existenten, vorher fehlerfreien Modulen auftreten. Die meisten Entwicklungsteams werden zustimmen, dass sie automatische Tests zwar nicht besonders mögen, diese Tests aber nützlich sind: 

Sie helfen den Entwicklern, den Code ehrlich zu verstehen und bieten eine solide Grundlage für die kontinuierliche Testpyramide. Dies wiederum ermöglicht es den Teams, die agile Entwicklung zu beschleunigen und gleichzeitig das Risiko zu verringern, dass sich in späteren Phasen Bugs einschleichen. 

Mit Hilfe von sogenannten Unit-Tests können Code-Komponenten oder Methoden daraufhin überprüft werden, ob sie wie vorgesehen laufen. Ein Unit-Test deckt eine möglichst kleine Einheit ab, etwa eine Methode oder ein Modul. Es können aber auch größere Einheiten durch Unit-Tests geprüft werden.

3) Individuelle Tests

Eine Kombination aus automatischen und menschlichen Tests wird in der Praxis am häufigsten praktiziert. Ein menschlicher Tester kann bei der Durchführung von manuellen Tests immer seine Erfahrung einbringen und schauen, ob es Fehler abseits der genauen Testschritte gibt. Am Ende muss manuell bewertet werden, ob es sich bei einer Anomalie um einen Fehler handelt oder nicht. 

Zum Beispiel könnte die vom Testautomatisierungswerkzeug angezeigte Anomalie auf eine neue Softwareversion mit fehlerfreiem und geändertem Softwaredesign zurückzuführen sein und „nur“ das Testskript wurde vergessen zu aktualisieren. Andererseits können auch Testskripte Fehler haben.

4) Profiling

Profiler sind Programmierwerkzeuge, die das Laufzeitverhalten von Software analysieren. In der Software-Entwicklung ist das Profiling eine Form der lebendigen Programmanalyse, die z.B. die Verwendung von Safe-Anweisungen oder die Häufigkeit und Länge von Funktionsaufrufen misst. Profiling wird insbesondere bei der Geschwindigkeitsmessung und Speichernutzung eingesetzt. Profiler sind dabei in praktisch jeder höheren Programmiersprache im Paket mit enthalten.

5) Programmcode kommentieren

Das Kommentieren von Quellcode ist leider etwas, das stiefmütterlich behandelt wird. In der Regel arbeiten immer mehrere Programmierer nacheinander oder nebeneinander am Programmcode. Daher ist es sehr hilfreich, wenn ein Programmierer seinen Kollegen einen lesbaren und verständlichen Programmcode hinterlässt. 

Gerade wenn die Softwarekomponenten immer größer werden, macht es Sinn, einige Teile des Programms in Stichworten im Programmcode zu kommentieren. Niemand liest oder arbeitet gerne mit schlechtem Code, denn es ist anstrengend und kostet Zeit, die eigentlich für etwas anderes verwendet werden könnte.

6) Coding Standards / Clean Code

In größeren Projekten, in denen viele Mitwirkende bei der Softwareentwicklung zusammenarbeiten, werden die Anforderungen an den Programmierstil oft in Programmierrichtlinien festgelegt: Diese bauen oft auf unternehmensübergreifenden oder weltweit veröffentlichten Konventionen auf. 

Standards für die Wartung der Software, die festlegen, wie andere Entwickler den Code lesen, verstehen, ändern und aktualisieren können, sind vielleicht die wichtigsten und am weitesten verbreiteten in der Softwareentwicklung, da Software oft länger als geplant wiederverwendet wird.

Einer dieser Standards ist „Clean Code“. „Clean Code“ ist eine Sammlung von Programmierprinzipien, die in der Realität konkretisiert werden müssen. Softwareentwickler sprechen von „korrektem“ Quellcode, aber auch von Dokumenten, Konzepten, Regeln, die intuitiv verständlich sind. Das Clean Code-Paradigma umfasst den gesamten Software-Lebenszyklus – vom Design bis zur Entwicklung.

7) Code Review

Ein Code-Review ist eine systematische Untersuchung von Quellcode mit dem Ziel, Fehler und Mängel im Code zu finden und die Code Qualität zu korrigieren. Das Review gehört zu den analytischen Qualitätssicherungsmaßnahmen. 

Es ist ein Analyse- und Bewertungsprozess, bei dem die Projektergebnisse einer Gruppe von Reviewern präsentiert und von diesen kommentiert oder freigegeben werden. Zu den Ergebnissen von Code-Reviews gehört neben den gefundenen Fehlern auch eine verbesserte Code Qualität. Fehler, die während des Reviews ans Licht kommen, können oft viel kostengünstiger korrigiert werden, als wenn sie vorher bei der Testausführung gefunden werden. Während Code-Reviews, die über die Schulter hinweg stattfinden, eine großartige Möglichkeit sind, Neues abzuhaken, verlassen sich geografisch verstreute Gruppen von Mitarbeitern traditionell auf E-Mails für Code-Reviews. 

Bei diesem Code-Review-Prozess sendet ein Entwickler Änderungen per E-Mail an das gesamte Entwicklerteam, typischerweise über Versionskontrollsysteme, die Benachrichtigungen automatisieren. Beim Pair Programming wird der Review-Prozess selbst direkt in das Schreiben des Codes integriert.

8) Test-driven Development und Pair Programming

Es gibt zahlreiche Möglichkeiten, die Art und Weise der Entwicklung zu steuern, um von Beginn an eine saubere Herangehensweise zu forcieren. Testgetriebene Entwicklung ist dabei eine Methode der agilen Softwareentwicklung, bei der die Entwickler Unit-Tests konsequent vor den zu testenden Codeabschnitten oder Komponenten erstellen. 

Damit erschafft man ein Grundgerüst, an dem sich die Programmierer strategisch ausrichten sollen. Beim Pair Programming hingegen arbeiten zwei Programmierer gleichzeitig am Code, wobei einer programmiert und der andere den programmierten Code kontrolliert.

9) Refactoring

Code-Refactoring ist der Prozess der Umstrukturierung von bestehendem Computercode. Refactoring zielt darauf ab, das Design, die Struktur und/oder die Implementierung der Software zu verbessern, während ihre Funktionalität erhalten bleibt. 

Die Vorteile sind eine verbesserte Lesbarkeit des Codes und eine reduzierte Komplexität. Die Programmierung einer Software ist ein langwieriger Prozess, an dem mehrere Entwickler beteiligt sind. Dabei wird der geschriebene Quellcode oft verschoben und erweitert.

10) Hilfssoftware

Zunehmend wird Software eingesetzt, die die Aufgabe hat, die aktuelle Code Qualität von Software zu ermitteln. Dadurch lassen sich Schwachstellen herausfiltern. Eine automatische Verbesserung erfolgt aber in der Regel dadurch nicht. Meistens sind diese Tools teuer, erreichen aber oftmals nicht die Qualitäten eines menschlichen Analysten.

Interessante Links:

Wie bewertet man Codequalität? Mehr im Blogbeitrag

Bessere Anwendungsentwicklung auf qualitaet-ist-messbar.de

Bilder: Canva


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

Schreibe einen Kommentar