Suche

Die Merkmale hoher Codequalität

Michael Thomas

© Shutterstock.com/schatzy

Genau wie die Frage, was einen durchschnittlichen Programmierer von einem herausragenden unterscheidet, ist auch die Entscheidung, was qualitativ hochwertigen Code ausmacht, nicht leicht zu treffen: Was der eine Entwickler an Code besonders schätzt, wird vom nächsten möglicherweise als eher irrelevant betrachtet.

Dieser Problematik der Codequalität geht der Blogger David Starr in seinem Artikel „Defining Code Quality“ nach. Dabei folgt er zunächst der von J.M. Juran in dem Buch „Juran’s Quality Control Handbook“ aufgestellten Definitionen, was unter dem Begriff „Qualität“ überhaupt zu verstehen ist. Für Juran bedeutet Qualität einerseits, dass die Funktionen eines Produkts die Bedürfnisse des Kunden befriedigen, sowie anderseits allgemein eine Freiheit von Mängeln.

Bedürfnisse des Kunden und Technische Schuld

Der erste Punkt lässt sich Starr zufolge recht leicht bewerten: Sobald der Code die Bedürfnisse des Kunden nicht erfüllt, ist er durchgefallen. Diese Anforderung, so Starr weiter, ist einer der Hauptgründe dafür, warum sich die Qualität des Endprodukts so schwer von seinem Entstehungsprozess trennen lässt. Denn ein Entwicklerteam, das engen Kontakt zum Kunden pflegt, ihm regelmäßig die eigenen Fortschritte präsentiert, wird dessen Erwartungen mit deutlich größerer Wahrscheinlichkeit erfüllen können als eines, das erst mit dem komplett fertigen Produkt vor der Tür steht.

Natürlich kann jedoch auch ein Produkt, dass die Bedürfnisse des Kunden erfüllt, von schlechter Qualität sein. Dies zeigt sich Starr zufolge spätestens dann, wenn die Software im Nachhinein an neue Anforderungen angepasst werden muss. Eine möglichst einfache Änderung der Software sollte also ebenfalls gegeben sein, sprich die Technische Schuld so gering wie möglich gehalten werden.

Freiheit von Mängeln: Lesbarkeit und Wartbarkeit

Die Freiheit von Mängeln, Jurans zweite Qualitätskategorie, kann aufgrund des Umfangs des Konzepts auf unterschiedlichsten Maßzahlen beruhen. Starr nennt beispielsweise nicht-funktionale Anforderungen, wozu er u. a. die Wart- bzw. Pflegbarkeit, die Erweiterbarkeit und die (Programm-)Lesbarkeit zählt.

Stichwort Lesbarkeit: Um die für die Gewinnung kontextueller Informationen – über die man für Änderungen verfügen muss – aufzuwendenden Zeit nach Möglichkeit zu minimieren, empfiehlt Starr am Beispiel von Klassen einfache Designs sowie saubere Trennungen, damit jede Klasse eine einzige, klar definierte Zuständigkeit besitzt.

Im Hinblick auf die Wartbarkeit sollte man Starr zufolge zudem keinesfalls die Relevanz statischer Codeanalyse-Tools für den Softwareentwicklungsprozess unterschätzen, da diese nicht nur die Wartbarkeit des Code anhand empirischer Messungen bewerten, sondern darüber hinaus auch andere Stellschrauben wie die Sicherheit, die Performance oder die Interoperabilität überprüfen können – ganz abgesehen davon, dass die Ergebnisse das Potential bergen, den eigenen Programmierstil nachhaltig zu beeinflussen.

Eingedenk der Eingangs getroffenen Feststellung, dass Entwickler teils grundverschiedene Ansichten darüber pflegen können, was guten Code ausmacht bleibt die Frage an unsere Leser, wie die von Juran und Starr aufgestellten Eckpfeiler zu bewerten sind: Sind mit den im Zentrum stehenden Anforderungen „Befriedigung der Bedürfnisse des Kunden“ und „Freiheit von Mängeln“ die wichtigsten Aspekte qualitativ hochwertigen Codes abgedeckt?

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: