Studie untersucht Programmierfehler auf unterster Ebene

Nicht jeder Styleguide hat recht – und das kann man beweisen

Gabriela Motroc

© Shutterstock / Hoppe

Verwirrender Code kann und wird zu Bugs führen. Amerikanische Forscher haben sich deswegen mit Missverständnissen im Quellcode beschäftigt. Sie identifizierten Codemuster, die Entwickler eher verwirren als dabei helfen, den Code zu verstehen. Außerdem zeigt die Studie, dass nicht jeder Styleguide recht hat.

Eine neue Studie von Forschern der New York University, University of Colorado, Colorado Springs, und der Pennsylvania State University (USA) versucht zu beweisen, dass es Codemuster gibt, die Missverständnisse wahrscheinlicher machen als Code ohne diese Muster.  Denn Quellcode dient einem doppelten Zweck. Er vermittelt Programmanweisungen an Maschinen und die Intention der Programmierer an Menschen. Das Problem beginnt, wenn eine Person zu einer anderen Schlussfolgerung über das Verhalten des Codes kommt als eine Maschine beim Ausführen des Programms. Mit anderen Worten: die Interpretation eines Programmierers von einem Stück Code unterscheidet sich vom Verhalten der Maschine. Während eine unterschiedliche Interpretation natürlich in einigen Situationen ( z. B. bei zufälligen Situationen, schlecht verstandenen APIs oder undefiniertem Verhalten) vorkommen kann, kann sie auch in kleinen, in sich abgeschlossenen Codezeilen auftreten. Diese Design Patterns, die leicht falsch interpretiert werden können, können zu Programmfehlern führen. Diese Fehler wiederum führen oft zu hohen Kosten und fehlerhaften Produkten. Die Folgen dieser Fehler können Produktivitätseinbußen, fehlerhafte Produkte und höhere Kosten sein.

Das Erkennen und Entfernen dieser Verwirrung stiftenden Programmbestandteile führt jedoch nicht nur zu weniger Problemen. Laut der Studie ist die Fähigkeit, bereits existierenden Quellcode zu verstehen, eines der wichtigsten Elemente eines kontinuierlich erfolgreichen Softwareprojekts. Es führt letztendlich zu Produktivitätssteigerung und reduzierten Wartungskosten. Verwirrender Code wirkt sich auf das Verständnis aus, das in allen Phasen der Softwareentwicklung zentral ist, insbesondere bei der Wartung und Codereview.

Das Experiment

Die Forscher haben kleine Codeteile gesucht und validiert, die Programmierer routinemäßig dazu veranlassen können, Code misszuverstehen. Diese Muster nannten sie Atome der Verwirrung oder kurz Atome. Sie können als empirische und quantitative Grundlage für das Verständnis dienen, was Code verwirrend macht. Die Forscher wählten Programme aus, die bereits als für den Menschen verwirrend anerkannt sind (Gewinner des IOCCC – International Obfuscated C Code Contest) und isolierten kleine Codemuster, die oft in einer einzigen Zeile enthalten waren, welche die Ursache für die Verwirrung von Programmierern waren. Ein empirisches Experiment mit 73 Probanden wurde durchgeführt, um herauszufinden, welche dieser Codemuster eine statistisch signifikante Menge an Verwirrung verursachten (d. h., Programmierer glauben zu lassen, dass sich das Programm, das dieses Muster enthält, anders verhält als die C-Sprachspezifikation vorschreibt). Als nächstes haben sie die Auswirkungen der Beseitigung dieser Atome aus größeren Programmen gemessen, die ebenfalls von IOCCC-Gewinnern stammten. Die IOCCC-Programme wurden vereinfacht, um die identifizierten Atome zu entfernen, und die Forscher nutzten diese Programme als Grundlage für ein zweites Experiment. 43 Teilnehmer, die nicht an ihrem vorherigen Experiment teilgenommen hatten, wurden rekrutiert. Die Forscher ermittelten quantitativ, wie viel Programmierfehler durch die Klärung dieser Atome reduziert werden konnte. Alle Daten finden sich hier.

Die Ergebnisse

Die Atome sorgten für erhebliche Verwirrung bei den Programmierern. Die Studie ergab jedoch, dass Personen mit mehr Erfahrung weniger Fehler machten als Personen mit weniger Erfahrung. Die Ergebnisse liefern Beweise für und gegen gängige Codeempfehlungen.  So identifizierten die Forscher verschiedene Atome, die in C-Styleguides nicht explizit erwähnt werden und deswegen in Codebasen häufig vorkommen. Außerdem fanden sie auch Beweise dafür, dass manche gängigen Empfehlungen den Code statistisch gesehen eher verwirrender machen als klarer. So steht zum Beispiel im Linux-Styleguide: „Do not unnecessarily use braces where a single statement will do“. Beim Experiment der Forscher stellte sich jedoch heraus, dass die Programmierer Code öfter falsch verstanden, bei dem die Klammern weggelassen wurden. Ebenso gilt der ?:-Operator als probates Mittel der Wahl, um lange if-Statements zu ersetzen. Auch hier zeigte sich, dass längerer Code mit if besser verstanden wurde als kürzerer mit ?:. Die Forscher haben so in ihrer Studie eventuell einen Grundstein dafür gelegt, Codeempfehlungen empirisch zu untersuchen und zu validieren.

Verwandte Themen:

Geschrieben von
Gabriela Motroc
Gabriela Motroc
Gabriela Motroc ist Online-Redakteurin für JAXenter.com. Vor S&S Media studierte Sie International Communication Management an der The Hague University of Applied Sciences.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.