Studie zur Softwarequalität: Open Source schlägt proprietär
Seit letztem Jahr können auch Java-Entwickler Coveritys Scan Service zur Überprüfung der Softwarequalität nutzen. Sie beheben wohl aber im Schnitt weniger High-Impact-Defekte als ihre C/C++-Kollegen.
- Alexander Neumann
Ein zentrales Ergebnis der diesjährigen Auflage des Coverity Scan Report weicht von den früheren Studien insofern ab, dass dieses Mal die Qualität des untersuchten Open-Source-Codes grundsätzlich bessere Resultate zeigte als der herangezogene proprietäre Code. In der letztjährigen Auflage hieß es dagegen, dass die Codequalität bei quelloffenen Projekten tendenziell leide, wenn deren Software mehr als eine Million Zeilen Code übertreffe. Bei proprietärer Software hingegen würde die Qualität ab so einer Projektgröße prinzipiell besser werden.
Der Report war erstmals 2006 durchgeführt worden. Initiator war das U.S. Department of Homeland Security, dessen Arbeit von 2008 an Coverity fortsetzte. Im Rahmen der Untersuchung werden die Vollständigkeit und Qualität quelloffener und proprietärer Software mit Coveritys Scan Service durchleuchtet. Mit dem für Open-Source-Projekte kostenlosen Dienst können Anwender den Status der Projekte verfolgen und sich Einblick in die Softwarequalität verschaffen.
Der neuen Untersuchung liegen offenbar die Zahlen aus der Beobachtung von mehr als 1500 Softwareprojekten zugrunde, darunter 700 quelloffene C/C++- (darunter NetBSD, FreeBSD, LibreOffice und Linux) und eine nicht genannte Zahl an Unternehmensprojekten. Erstmals wurde auch Java-Software durchleuchtet. Coverity spricht hier von etwa 100, wobei die Apache-Projekte Hadoop, HBase, Cassandra, CloudStack sowie die Eclipse-Projekte Hudson und Code Recommenders zu den bekannteren zählen.
Ergebnisse en detail
Coverity stellt im nach der Registrierung erhältlichen Report eine Fehlerdichte (Fehler pro 1000 Codezeilen) von durchschnittlich 0,59 bei quelloffenen C/C++-Projekten fest, verglichen mit einer durchschnittlichen Fehlerdichte von 0,72 für proprietären Code in Unternehmensprojekten. Nicht nur dass der quelloffene Code im Durchschnitt bessere Werte erhielt, er war offenbar erstmals in allen Kategorien (< 100.000, 100.000 bis 499.999, 500.000 bis eine Million, > eine Million) qualitativ hochwertiger. Eine Fehlerdichte unter 1,0 gilt als Industriestandard für eine hohe Qualität.
Als Musterprojekt stellen die Herausgeber der Studie die Linux-Entwicklung heraus: Auch mit dem Scan Service ließ sich seit 2008 offenbar die durchschnittliche Zeit von der Entdeckung eines Fehlers bis zu seiner Behebung von 122 Tagen auf sechs Tage reduzieren. Seit dem ersten Coverity Scan Report haben die untersuchten Linux-Versionen durchgehend eine Fehlerdichte von unter 1,0 aufgewiesen. Bei den dieses Mal mehr als 8,5 Millionen untersuchten Zeilen Linux-Code landete man bei einer Fehlerdichte von 0,61.
Die Analyse ergab außerdem, dass Entwickler, die an quelloffenen Java-Projekten beteiligt sind, im Schnitt weniger High-Impact-Defekte beheben als jene, die bei C/C++-Projekten mitwirken. Am Scan Service teilnehmende Java-Entwickler reparierten anscheinend 13 Prozent der identifizierten Resource Leaks; C/C++-Experten behoben dagegen 46 Prozent. Als möglichen Grund für den Unterschied macht Coverity aus, dass viele Java-Entwickler einem trügerischen Sicherheitsgefühl aufgesessen seien, das aus Annahmen hervorgeht, Sprachmechanismen wie Garbage Collection schütze sie vor unvorhersehbarem Verhalten und Fehlern beim Zugriff auf Systemressourcen.
Für den neuen Report durchleuchtete Coverity mehr als acht Millionen Codezeilen von rund 100 Java-Projekten. Seit seinem Eintritt in den Scan Service im August 2013 konnte beispielsweise HBase, die Datenbank für Hadoop, mehr als 220 Fehler beheben, inklusive eines deutlich höheren Anteils an Resource Leaks im Vergleich zu anderen Java-Projekten im Service: 66 Prozent bei HBase im Vergleich zu 13 Prozent im Durchschnitt bei anderen Projekten. (ane)