Il y a 3 ans, EURODECISION a commencé à repenser ses process de développement, notamment en homogénéisant les pratiques et en automatisant le contrôle de la qualité des projets. Aurélien Questel, Directeur Technique, nous présente quelques-uns des outils mis à disposition des équipes.
Il est très fréquent que plusieurs développeurs EURODECISION travaillent ensemble sur un même projet. Quels outils sont utilisés pour faciliter l’intégration de leur production ?
Pour développer en parallèle différentes fonctionnalités d’une même solution, il est indispensable de disposer d’un outil de travail collaboratif permettant de partager le code informatique. La solution auparavant utilisée par EURODECISION était vieillissante et nous avons décidé d’opter pour l’outil le plus populaire du marché, le logiciel de gestion de versions Git, en suivant le modèle Git Flow. Cela nous a permis de mieux historiser notre production de code, de faciliter le développement de fonctionnalités en parallèle, quel que soit le langage de développement utilisé (C++, Java, Python). Combiné à l’interface web Gitlab, qui apporte ses nombreuses fonctionnalités (code review, wiki, émission de tickets…) et son système de gestion des droits avancé, nous disposons désormais d’un suivi précis et centralisé de nos projets et de l’ensemble des modifications qui sont apportées.
Comment minimisez-vous le risque que nos solutions logicielles comportent des erreurs ?
Pour s’assurer de la qualité de nos solutions, nous devons tester chaque nouvelle portion de code avant de la publier. Toutefois, lorsqu’il y a plusieurs milliers de lignes de code, des tests manuels sont insuffisants car il est impossible de tout vérifier. Nous procédons à tous les types classiques de tests informatiques (compilation, analyse statique de code, analyse dynamique du code lors de l’exécution de tests unitaires ou fonctionnels) et ce sur toutes les plateformes nécessaires. Pour l’orchestration et l’automatisation de ces différents tests nous avons choisi d’utiliser Jenkins.
Une fois les tests exécutés, les rapports et le code source sont envoyés sur la plateforme SonarQube. Cet outil fait à la fois de l’analyse statique de code et du dashboard. Il nous permet de monitorer la qualité du projet et d’estimer la « dette technique », c’est à dire le temps qu’il faudrait pour que le code soit exempt de bugs et de mauvaises pratiques.
De nombreux projets font appel à des bibliothèques logicielles communes qui, elles aussi, font l’objet d’évolutions régulières. Comment assurez-vous le suivi de leurs différentes versions ?
Il est en effet important de tracer les versions d’une bibliothèque logicielle, car il ne faut pas qu’une modification impacte négativement un projet qui utilise cette boîte à outils. Pour cela, nous utilisons des « gestionnaires de paquets ». Ils fonctionnent comme des serveurs : ils permettent d’accéder à toutes les versions disponibles, stockent les informations relatives à chaque mise à jour et les développeurs peuvent aller y chercher celle dont ils ont besoin. A titre d’exemple, lorsqu’un projet est développé en C++, EURODECISION se sert du gestionnaire de paquets Conan, qui remplit très bien cette fonction.
Quels sont les impacts de cette démarche de modernisation des process de développement ?
En interne, notre gestion de projets est de plus en plus uniformisée. Peu importe l’application finale d’une solution, le développement se déroule de manière identique. Ainsi, lorsqu’un nouvel ingénieur arrive sur une mission, son intégration est grandement facilitée puisqu’il connait déjà les différents outils et pratiques.
De leur côté, nos clients ont des exigences de qualité de plus en plus fortes : auditabilité, traçabilité et explicabilité des algorithmes, notamment si ces algorithmes doivent ensuite être homologués ou certifiés (comme c’est le cas dans le domaine de l’informatique embarquée, en aéronautique, en ferroviaire ou en automobile).
Par ailleurs, dans le cadre d’outils d’aide à la décision opérationnels ou encore de solutions d’Intelligence Artificielle en temps réel, il est impensable de faire l’impasse sur la qualité. C’est devenu un impératif.