Les logiciels nous sont maintenant indispensables dans toutes les sphères de notre vie. Du réveil au coucher, ils nous aident à accomplir nos tâches quotidiennes tant à la maison qu’au travail. Malheureusement, ces logiciels vieillissent et peuvent rapidement devenir obsolètes : ils doivent donc être mis à jour et maintenus régulièrement.
Or modifier des logiciels n’est pas une mince tâche. Selon certains, les logiciels seraient parmi les ouvrages les plus complexes jamais créés par l’humain. Les logiciels comme Netflix ou Amazon sont composés de plusieurs millions de lignes de code et d’autant de lignes liées à la configuration, à la documentation, au test, au code de production, etc. Les changements à apporter sont fréquents et suivent un processus complexe qui peut facilement entraîner des dépassements de coût ou de délai de livraison. Notre équipe de chercheurs œuvre à améliorer la maintenabilité, l’évolution et la qualité des logiciels tout en minimisant les coûts et en améliorant la productivité des équipes de développement.
Processus de développement d’un logiciel
La figure suivante présente une version simplifiée du processus de développement d’un logiciel.
Tout commence par un développeur ou une développeuse qui écrit un bout de code ou change un bout code existant. Il ou elle doit ensuite effectuer une vérification préliminaire au moyen d’un système d’alerte précoce. Si tout se passe bien, une équipe de révision passe le code en revue afin d’identifier des défaillances ou des anomalies d’implémentation ou de conception. Si encore là aucun problème n’est détecté, on atteint l’étape de construction de l’application à partir du code source.
Toutefois, si un problème survient à l’une de ces étapes, le développeur ou la développeuse doit retourner à sa planche à dessin et soumettre son code de nouveau aux mêmes étapes de vérification. On comprend donc qu’il est essentiel de mettre en œuvre des techniques et des outils performants et intelligents pour effectuer les modifications nécessaires aux mises à jour des logiciels.
Pour y arriver, nous nous basons, entre autres, sur des techniques liées à l’intelligence artificielle et d’analytiques de données afin de soutenir le cycle de vie volatil des logiciels tout en adoptant des méthodes qui gèrent et réduisent la complexité croissante de ces systèmes. L’objectif ultime est de développer des outils intelligents et efficaces pour augmenter la productivité des équipes de développement et réduire substantiellement les coûts de maintenance des logiciels, qui représentent typiquement plus de 70 % du budget total.
Conclusion
Nous devons mettre au point de bonnes pratiques d’implémentation et de conception de logiciels afin d’éviter les écueils qu’ont connus certains projets logiciels. Il est important de continuellement moderniser et faire évoluer les environnements de développement et d’offrir des outils conviviaux, robustes et pratiques pour faciliter la tâche aux équipes de développement.