LE DIRECT
ⓘ Publicité
Radio France ne vous demandera jamais de communiquer vos coordonnées bancaires.

Analyse statistique des dépôts de code source de logiciels libres et à code ouvert

4 min
À retrouver dans l'émission

Par Ivaylo Ganchev, doctorant au Laboratoire d'informatique avancée de Saint-Denis de l'université Paris 8 Vincennes-Saint-Denis

Nous voulons tous utiliser des logiciels sans bogues et bénéficier d’une expérience utilisateur décente. Or la maintenance d’un logiciel est une activité très coûteuse. Selon les auteurs, les estimations varient entre 40% et 90% du coût initial du projet. Cela coûte presque aussi cher de maintenir un logiciel que de le produire.

Pour cette raison, les éditeurs de logiciels essayent d’anticiper et de corriger les bogues avant le lancement d’une version. Pour cela, différentes techniques sont utilisées. Historiquement la méthode formalisée la plus ancienne est celle qu’on appelle la complexité cyclomatique de McCabe. Elle consiste dans le fait d’étudier la complexité et les liens entre les différentes parties d’un programme. Pour cela des programmes analysent des logiciels pour détecter des endroits où on a des problèmes dans la construction logique du logiciel analysé.

Une autre méthode consiste à utiliser des fuzzers. Il s’agit de programmes qui génèrent des données aléatoires qui sont ensuite dirigées vers les logiciels testés. On analyse par la suite le comportement des logiciels testés quand ils crashent.

Ma recherche fait partie d’une troisième voie — l’analyse des méta-données des dépôts de logiciels. Dans le cas de ma recherche, il s’agit bien de dépôts de logiciels libres. Méta-données ? Ce sont des données qui expliquent des données. Par exemple, si on considère qu’un fichier de code source est une donnée, les méta-données sont des informations comme : qui a produit la dernière modification du fichier, à quelle heure et depuis où, ou encore combien de lignes ont été modifiées depuis la dernière version. On peut appeler cela des métadonnées simples ou non-liées.

On distingue aussi des méta-données complexes qui nécessitent le recoupement de plusieurs méta-données simples, voire des informations en provenance de plusieurs dépôts différents. Par exemple : combien de personnes ont travaillé sur un fichier, comment est organisé le réseau des développeurs entre différents modules d’un programme, le temps de résolution d’un bogue, le nombre de modifications par semaine ou bien le nombre de bogues par version.

Ma recherche consiste dans le fait d’explorer différents dépôts de données (principalement des dépôts de code source ou dépôts de bogues), de récupérer et d’analyser les méta-données à la recherche d’informations intéressantes. La plupart du temps, la récupération est simple car les dépôts sont ouverts et en ligne. Il suffit de lancer des petits robots qui vont aller récupérer les métadonnées et les intégrer à une base de données locale.

Par la suite, je procède au traitement et à l’analyse des données. J’utilise soit des outils disponibles librement, soit des outils que j’ai fabriqué dans le cadre de la recherche. La plupart des problèmes que je rencontre sont propres au domaine des Méga-données (ou Big Data en anglais) et des fouilles de données. Par exemple, la qualité des données n’est souvent pas au rendez-vous et on doit passer un certain temps à les nettoyer. Ou bien on doit interconnecter des bases qui n’ont que peu de liens entre elles.

Finalement si j’observe des résultats intéressants, je gratte un peu plus pour voir si on n’a pas trouvé une métrique intéressante.

Actuellement je me focalise sur la recherche de métriques, autres que celles déjà trouvées qui nous permettent de déceler des parties d’un logiciel qui contiennent des bogues.

En analysant seulement les méta-données, on peut trouver avec une confiance relativement importante les endroits qui contiennent potentiellement des bogues. On peut aussi trouver les périodes de la semaine ou de la journée qui contiennent statistiquement le plus de bogues et attirer l’attention des meneurs d’un projet sur ces points. Au-delà de la recherche des endroits avec bogues, je m’intéresse aussi à des questions comme les cycles de vie d’un logiciel et les étapes de son évolution.

Bien sûr, au-delà des dépôts de code source et des bogues, on peut analyser d’autres types de dépôts comme les archives des listes de diffusion, les archives de chat IRC ou encore les archives documentaires comme les wikis. Du fait de l’ouverture du processus de développement, les logiciels libres et à code ouvert fournissent d’énormes quantités de données qui ne demandent qu’à être explorées et exploitées.

Ces données peuvent être et sont utilisées à dresser des profils des projets : combien de développeurs actifs se trouvent derrière un projet ? Est-ce qu’il y a des sociétés derrière un projet libre ? Est-ce qu’il y a une communauté active ? Quel est le temps moyen de résolution d’un bogue ? Etc. Tout ceci est fait dans le but d’améliorer la qualité des programmes et de permettre aux utilisateurs d’avoir des logiciels avec moins de bogues. Cela permet aussi à des décideurs de savoir facilement si l’intégration d’un logiciel libre dans un système d’information est risqué ou non.

Cette activité de recherche fait partie d’un domaine de recherche qui s’appelle “Empirical Software Engineering”. Plusieurs conférences et journaux existent sur le sujet, comme la conférence annuelle “Mining Software Repositories” lors de laquelle des chercheurs du monde entier échangent leurs trouvailles et leurs méthodes de recherche, d’analyse et de visualisation.

Ce domaine n’est pas propre aux logiciels libres. Les grands groupes industriels se sont appropriés ces techniques et les utilisent en permanence pour améliorer la qualité de leurs produits. Ce qu’apportent les logiciels libres est la grande quantité de données disponibles librement. Ceci facilite énormément la recherche. Par exemple, on n’est pas lié par des clauses de non-divulgation ou bien des restrictions d’accès au code source. Le point le plus important est certainement le fait que toutes les découvertes peuvent être vérifiées et toutes les expériences refaites. De plus, personnellement étant utilisateur de logiciels libre de longue date, c’était un moyen modeste de faire un retour à la communauté et ainsi de contribuer à ce mouvement extraordinaire que sont les logiciels libres.

ⓘ Publicité
Radio France ne vous demandera jamais de communiquer vos coordonnées bancaires.

France Culture

est dans l'appli Radio France
Direct, podcasts, fictions

INSTALLER OBTENIR

Newsletter

Découvrez le meilleur de France Culture

S'abonner
À venir dans ... secondes ...par......