venerdì 17 maggio 2013

Linux: la qualità del codice del kernel premiata da uno studio


coverity_2012Coverity e il Dipartimento di Sicurezza Nazionale degli Stati Uniti portano avanti, ormai dalle 2006, un progetto di ricerca denominato “Coverity Scan Open Source Report” che negli anni si è guadagnato la nomea di benchmark per la qualità generale del codice prodotto dai progetti a codice aperto. Questa settimana è stata rilasciata la versione 2012 del rapporto, dove si trovano considerazioni interessanti per il confronto tra i modelli di sviluppo aperti e proprietari.
Il lavoro di ricerca consiste nell’analizzare 68 milioni di righe di codice di software FOSS, e circa 300 milioni di righe di codice proprietario. Coverity esegue quella che si dice analisi statica del codice, ovvero un’analisi matematica (dunque senza necessità di eseguire il programma) alla ricerca di difetti come spreco di risorse, accessi non consentiti alla memoria e flussi di controllo errati. Coverity fornisce appunto un servizio di analisi statica che è gratuito per progetti open source e a pagamento per software proprietari, e attinge a questa base di utenti per pubblicare il suo rapporto annuale. Vediamo i punti chiave di quest’anno.

I progetti open source con una base di codice compresa tra 500000 e 1 milione di righe di codice hanno riscontrato una densità di difetti pari a 0,44 per KLOC(KiloLines of Code, ogni 1000 righe di codice) contro un valore più che doppio rilevato nei software proprietari (0.98). Prendendo però in considerazione i progetti con una base di codice superiore al milione di righe il discorso si ribalta: i progetti proprietari presentano meno difetti, con una densità di difetti pari a 0,66 per KLOC contro i 0,75 dei progetti aperti. A cosa può essere dovuta questa differenza?
Lo studio fornisce questa spiegazione nelle sue conclusioni: all’inizio della loro vita iprogetti open come Linux contano un gruppo ristretto di sviluppatori estremamente a loro agio con la base di codice, ma man mano che il progetto cresce e attira nuovi sviluppatori spesso non si è del tutto preparati a gestire la nuova complessità; al contrario il formalismo dei controlli e del testing necessari nei team di sviluppo proprietari comporta una fase iniziale molto più difficoltosa, ma che una volta domata porta benefici a lungo termine in termini di controllo qualità. A cambiare è cioè il punto della vita del progetto nel quale viene introdotto un controllo di qualità e un testing più rigoroso, che nei progetti proprietari è parte integrante fin dall’avvio mentre nei progetti open tende ad arrivare solo successivamente.
Al kernel Linux viene dedicato tuttavia un capitolo a parte: in questo 2012 le varie versioni del kernel gestito da Linus Torvalds, che ormai orbitano attorno alla spaventosa cifra di 7 milioni e mezzo di righe di codice, hanno registrato una densità di difetti pari solamente a 0,66 per KLOC. Nell’ultima versione, la 3.8, il valore si abbassa fino a 0,59 per KLOC. Per Coverity il kernel Linux rimane, come negli altri anni, “un benchmark di qualità per l’industria“.

Nessun commento:

Posta un commento