Accélérer l’étude des versions d’un logiciel grâce à un assemblage incrémental

Distinctions Informatique

Le passage de lignes de code à un logiciel fonctionnel s’appelle un build, ce qui en fait un concept absolument crucial pour le développement logiciel. Différents types de builds sont disponibles, comme les builds incrémentaux qui intriguent des chercheurs de l’Institut de recherche en informatique et systèmes aléatoires (IRISA - CNRS/Université de Rennes 1). Les derniers travaux de cette équipe expliquent en quoi ils peuvent offrir d’importants gains de vitesse et d’économies de ressources, et ont été retenus pour la prestigieuse conférence ICSE 2022.

La majorité des logiciels existe sous de multiples versions à la fois, combinant de nombreux éléments et options. Le build est l’assemblage de ces parties et modules de code, qu’il compile, vérifie et teste en fonction des différents scénarios possibles. Build désigne à la fois le fait de transformer un code source en un logiciel qui fonctionne, et le résultat de cette action.

Les builds jouent ainsi un rôle essentiel dans le développement, et sont au cœur de l’International conference on software engineering (ICSE), considérée depuis 1975 comme la principale conférence mondiale en génie logiciel. La 44e édition s’est tenue tout au long du mois de mai, en visioconférence ainsi qu’en présentiel à Pittsburgh en Pennsylvanie. La seule publication française retenue cette année, dans le programme principal de la conférence, est issue de travaux d’une équipe de l’IRISA.

Cette publication s’intéresse en particulier aux builds de logiciels configurables, c’est-à-dire adaptables aux besoins de l’utilisateur ou aux particularités de la machine sur laquelle le logiciel sera déployé. Les différentes possibilités débouchent sur un nombre de configurations pouvant être colossal. Il faut cependant pouvoir tous les prendre en compte, ou un large échantillon représentatif, pour s’assurer que les prochaines évolutions logicielles seront en cohérence. Ainsi, plus il y a de configurations possibles, et plus les modifications coûtent cher à tester.

« Un système d’exploitation comme Linux offre une multitude d’options, prend comme exemple Djamel Eddine Khelladi, chargé de recherche CNRS à l’IRISA. Si l’on considère que Linux en propose dix mille, alors il existe 210 000 versions différentes possibles : un nombre qui compte plus de 3000 chiffres ! »

Avec un build de dix minutes en moyenne par configuration, tester “seulement” 50 000 configurations prendrait environ une année.
,

Pour faire face à ces problèmes, plusieurs types de builds existent. Le build propre est la version classique, qui repart de zéro pour chaque configuration. Le build incrémental utilise quant à lui les résultats de précédents builds et ne change qu’une partie des fichiers pour chaque version. Cela va donc en théorie plus vite, et ce d’autant plus si les builds sont construits dans un ordre optimal où chaque nouveau build aide au mieux le suivant.

Cependant, il n’est pas toujours possible de recourir à des builds incrémentaux et il n’avait pas encore été prouvé qu’ils étaient vraiment plus efficaces que les builds propres. Les chercheurs de l’IRISA ont donc émis l’hypothèse que, si leur utilisation est possible, les builds incrémentaux offrent d’importants gains de temps et de ressources.

« Dans notre article, nous avons pu confirmer en grande partie nos hypothèses de départ, se réjouit Djamel Eddine Khelladi. Nous avons pu employer des builds incrémentaux dans 78 à 100 % des cas étudiés, et ils accélèrent le temps de build pour 88 % des configurations. Le gain maximal de vitesse est de 11,76 %. En nous basant sur ces résultats, nous avons aussi prouvé qu’il était possible d’établir à l’avance des ordres de builds incrémentaux qui améliorent encore plus leurs performances. »

Nous devons encore le confirmer, mais nous pensons que les règles pourraient être mieux écrites afin de faciliter l’implémentation de builds incrémentaux.
,

Les chercheurs ont également confirmé que si les builds incrémentaux ne peuvent pas toujours être utilisés, c’est principalement à cause de conflits et d’incohérences entre les règles que suivent les builds lors de leur assemblage. Cela peut provoquer un plantage et leur arrêt. Forts de tous ces éléments, l’équipe de l’IRISA voit de nombreuses pistes pour poursuivre ce travail.

« Cette publication s’est construite autour d’un doctorant qui n’en est qu’à sa première année, mais avec qui nous avons déjà obtenu des résultats prometteurs, souligne Djamel Eddine Khelladi. Dans un premier temps, nous allons essayer de répliquer ces résultats sur davantage de systèmes de builds et de langages informatiques. Nous voulons également vérifier si les builds incrémentaux diminuent la consommation d’énergie, ainsi que mieux comprendre les cas où ils ne fonctionnent pas. Enfin, nous espérons trouver des heuristiques pour inférer automatiquement un ordonnancement optimal, selon le nombre de variants à builder. »

 

Référence 

Contact

Djamel Eddine Khelladi
Chargé de recherche CNRS à l'IRISA