L'usine logicielle de JTEKT réduit le temps de développement de plusieurs jours à quelques minutes

Intégration continue dans les systèmes de véhicules critiques pour la sécurité


L'industrie automobile est sous pression. Les fabricants accélèrent les délais de développement alors que la complexité des logiciels embarqués dans les véhicules continue d'augmenter de manière exponentielle. Cependant, les systèmes de direction, où les défaillances logicielles peuvent avoir des conséquences catastrophiques, nécessitent toujours des normes de sécurité rigoureuses. Les méthodes de développement traditionnelles, avec leurs workflows séquentiels et leurs processus de test manuels, ne peuvent plus suivre le rythme des exigences de délais du marché. JTEKT, un fournisseur mondial de technologies de direction assistée, a dû adapter sa manière de concevoir et de tester les systèmes. M. Sakata, directeur de la division automobile et directeur technique de JTEKT, a piloté une initiative visant à standardiser et unifier les processus, les méthodes et les outils de développement des ingénieurs en logiciel.

Les ingénieurs de JTEKT avaient besoin d'une nouvelle approche : une usine logicielle. Une usine logicielle est une méthodologie structurée de développement logiciel qui considère la création de logiciels comme un processus de fabrication. Elle utilise des outils standardisés, des modèles et l'automatisation pour produire des logiciels de manière efficace et cohérente.

La transformation de JTEKT, passant de processus manuels à une usine logicielle automatisée basée sur des modèles, a permis à l'entreprise d'accélérer considérablement les cycles de développement tout en maintenant la conformité à la norme ISO® 26262, essentielle pour les systèmes critiques en matière de sécurité. Les équipes sont plus efficaces et des processus qui prenaient autrefois des jours s'achèvent désormais en moins d'une heure. Cette approche démontre sa valeur au-delà des systèmes de direction.

Un système de direction avec un volant en haut, relié à la crémaillère de direction par la colonne de direction, deux joints universels et un arbre intermédiaire.

Système de direction. (Crédit image : JTEKT)

Le point de rupture

Lorsque Nicolas Bertotto, chef de section au département des systèmes et logiciels, a rejoint JTEKT en 2016, le processus de développement reflétait les normes de l'industrie de cette époque. L'architecture logicielle se composait de composants volumineux et monolithiques, rendant chaque modification laborieuse. Les corrections de bugs pouvaient nécessiter plusieurs jours de travail pour les ingénieurs.

« Parfois, il pouvait me falloir un jour ou deux pour corriger un simple bug », déclare Bertotto. « Et lorsque je faisais cela, l’avancement de mes autres tâches était à l’arrêt »

Luc Malrait, ingénieur logiciel principal chez JTEKT, a constaté comment les processus manuels consommaient un temps d’ingénierie précieux. Au-delà du design des modèles, les ingénieurs devaient vérifier manuellement la conformité aux règles de modélisation, confirmer que le code était exempt de bugs et s'assurer que toutes les fonctions bénéficiaient d'une couverture de test adéquate. Ces tâches créaient un réseau d'inefficacités.

Un diagramme montrant un flux de processus de MATLAB vers Simulink, puis à un fichier en C, et enfin au modèle en V. Cette séquence est répétée plusieurs fois selon un motif triangulaire.

Le défi de la gestion des artefacts : un artefact pour un composant et des artefacts pour un projet.

Les projets contenaient des scripts d'automatisation dispersés, souvent avec des noms identiques exécutant des fonctions différentes. La documentation et les vecteurs de test étaient parfois désynchronisés par rapport aux modèles réels. La gestion de la configuration était si complexe que l'intégration d'un nouvel ingénieur à un projet pouvait prendre une journée entière simplement pour établir l'environnement correct.

Ces incohérences se sont accumulées au fil du temps, créant une situation précaire où des composants individuels pouvaient fonctionner parfaitement isolément mais échouer lorsqu'ils étaient assemblés. JTEKT a dû faire évoluer son processus de design.

L'usine logicielle basée sur les modèles livre des résultats

JTEKT a reconnu que des améliorations progressives ne résoudraient pas les problèmes sous-jacents. Il était nécessaire de transformer son architecture logicielle et ses processus de développement.

Le premier changement majeur a consisté à passer à une architecture standard. JTEKT a développé et implémenté un ensemble de directives de modélisation pour Simulink® et Stateflow®, décomposant ses systèmes en unités plus petites et plus faciles à gérer.

« L'approche Model-Based Design avec Simulink s’intègre parfaitement à notre usine logicielle basée sur des modèles. »

« L'essentiel était de repenser notre architecture logicielle pour la rendre plus structurée », déclare Bertotto. « Nous avions besoin d’unités plus petites, comme un composant pour chaque fonction, qui seraient faciles à tester, à maintenir et à comprendre. »

Ce changement a eu des implications profondes pour la certification de sécurité. « La complexité des logiciels a diminué. Les composants plus petits étaient plus faciles à tester et à valider pour la conformité aux normes de sécurité », déclare Bertotto.

L'approche modulaire a introduit de nouveaux défis car des composants plus petits impliquaient davantage de travail d'intégration. Mais cela pouvait être résolu par l'automatisation. L'équipe est également passée de dépôts spécifiques par projet, contenant 150 composants logiciels, à des dépôts Git™ individuels pour chaque composant, simplifiant ainsi la réutilisation des composants entre les projets. Avec une base architecturale en place, JTEKT a construit son usine logicielle basée sur des modèles autour d'une automatisation complète. L'élément central est un pipeline d'intégration continue qui transforme l'ensemble du workflow de développement.

« L'approche Model-Based Design avec Simulink s’intègre parfaitement à notre usine logicielle basée sur des modèles », déclare Bertotto.

Le pipeline, implémenté via l'intégration de Jenkins® avec MATLAB® et Simulink, s'exécute en environ 30 minutes au niveau unitaire. Cela inclut tout, de la génération de code à la création d'un modèle de simulation prêt à être intégré sur le marché mondial. Lorsqu'un développeur valide des modifications, le système vérifie automatiquement le modèle par rapport aux normes de codage à l'aide de Simulink Check™, garantissant ainsi la conformité à la norme ISO 26262 dès le départ.

Ensuite, les simulations vérifient la fonctionnalité, génèrent du code C prêt pour la production via Embedded Coder® et exécutent des tests unitaires complets. Enfin, toute la documentation et les rapports requis sont générés et Polyspace Code Prover™ évalue les métriques de qualité.

Pour supporter ce workflow, JTEKT a développé plusieurs toolboxes MATLAB personnalisées. « Nous disposions d’un véritable mini-écosystème MATLAB interne chez JTEKT », déclare Malrait. L'entreprise a également commencé à déployer l'application Process Advisor dans Simulink afin de standardiser les tâches de développement.

Le système a fait ses preuves. En 2023, JTEKT a réalisé environ 3 200 exécutions de pipeline réussies. En 2024, ce nombre avait presque atteint 5 000, représentant des milliers de mises à jour de fonctionnalités et de corrections de bugs livrées avec confiance.

Résultats impressionnants

L'impact se manifeste partout. Lorsqu'une équipe a dû ajouter une fonction de surveillance à travers 40 composants logiciels, le système automatisé leur a permis d'économiser une heure d'effort par composant, soit un total de cinq jours-personnes pour ce qui aurait été un processus manuel fastidieux et long.

Aujourd’hui, les projets complexes nécessitent moins de ressources qu’il y a quelques années. Selon Bertotto, un projet en cours, visant à développer un système steer-by-wire avec une technologie et des fonctionnalités entièrement nouvelles, fonctionne avec 50 % d'ingénieurs en moins sur la couche applicative par rapport à il y a seulement quelques années.

« L'utilisation de Polyspace Access a réduit le temps de revue de 50 % et a rationalisé le stockage des résultats de l'analyse de code. Cette amélioration a réduit le temps de recherche des données d'environ 15 %. »

La vitesse de développement s'est encore accélérée de manière plus spectaculaire. Les processus qui prenaient autrefois des jours sont désormais achevés en quelques heures, voire en quelques minutes. Le prototypage rapide, que ce soit sur des bancs d'essai ou dans des véhicules réels, est devenu remarquablement agile. « Dans la journée, nous pouvons implémenter, intégrer, effectuer quelques tests, puis demander au driver de tester la solution », déclare Bertotto.

L'approche automatisée a également amélioré la capacité de JTEKT à exploiter les ressources mondiales. L'entreprise externalise désormais avec succès les activités de tests unitaires et leur implémentation vers son centre de services en Roumanie, ce que Bertotto a qualifié de « cauchemar » dans l'ancien système.

Diagramme montrant les cinq étapes du développement logiciel : Modélisation de l'architecture AUTOSAR, développement de modèles, vérification des règles de modélisation, génération automatique de code et analyse statique du code.

Processus de développement de composants logiciels.

Les améliorations au niveau de la qualité ont été tout aussi significatives. La génération systématique d'artefacts garantit la cohérence entre les modèles, le code et la documentation. Les ingénieurs qualité et les auditeurs de sécurité reçoivent désormais des rapports fiables, générés automatiquement, au lieu de documents créés manuellement dont la provenance est incertaine. Ces améliorations ont contribué à ce que JTEKT obtienne la certification ASPICE Niveau 2 en 2021, démontrant ainsi la maturité de ses processus de développement logiciel.

Peut-être que l'aspect le plus difficile de la transformation de JTEKT n'était pas technique, mais culturel. Bien qu'un prototype fonctionnel de la chaîne automatisée ait été disponible à la fin de l'année 2018, son adoption généralisée n'a eu lieu qu'en 2020. Les ingénieurs qui avaient passé des années à perfectionner leurs workflows personnels étaient réticents à les abandonner au profit d'un système centralisé.

« Ils ne lui faisaient pas confiance », déclare Malrait. « Ils faisaient confiance à leurs scripts, à leur manière de faire les choses. »

La bascule s’est opérée grâce à une combinaison de communication, de démonstration et de support de la direction. Selon Malrait, l'équipe de direction a reconnu le potentiel de gain de temps et a intégré l'adoption dans les objectifs annuels des développeurs. Une fois l'adoption commencée, elle est rapidement devenue auto-renforçante. Les ingénieurs qui ont constaté les avantages sont devenus des défenseurs du système. Aujourd'hui, le changement culturel est achevé.

« Je ne pense pas que qui que ce soit ferait marche arrière aujourd’hui », déclare Malrait. « Jenkins est devenu si essentiel à notre travail que nous investissons dans nos systèmes informatiques afin d’éliminer toute possibilité d’interruption. »

S’appuyer sur les fondations de l’usine logicielle

Le succès de l'usine logicielle basée sur un modèle de JTEKT dans la transformation du développement des systèmes de direction a attiré l'attention d'autres divisions au sein de l'entreprise. Le projet d'électrification des vélos, dans le cadre de la stratégie de diversification de JTEKT, a offert une occasion idéale de valider l'approche au-delà de son domaine d'origine.

« Le support de MathWorks, pour standardiser et unifier les processus, les méthodes et les outils de développement des ingénieurs en logiciel, a été crucial. »

Contrairement à l'équipe des systèmes de direction, qui a évolué progressivement sur plusieurs années, l'équipe d'électrification des vélos a adopté dès le départ l'approche de l’usine logicielle. Selon Bertotto, l'adoption rapide par l'équipe a démontré une intégration naturelle des nouveaux processus.

Selon Malrait, l'équipe vélo pouvait exploiter les tâches d'automatisation existantes, y compris les routines de vérification de modèles et les modèles de génération de code qui n’avaient pas été spécifiquement conçus pour les projets de direction. En utilisant des conteneurs Docker® pour leurs agents Jenkins, ils ont rendu le système encore plus évolutif et facile à maintenir.

Ce workflow amélioré a également été implémenté par l'équipe de direction assistée électrique au Japon. Selon M. Keisuke Nagashima, ingénieur logiciel chez JTEKT, le nouveau workflow a permis à l'équipe d'améliorer la vérification de leur code. « L'utilisation de Polyspace Access™ a réduit le temps de revue de 50 % et a rationalisé le stockage des résultats de l'analyse de code », a-t-il déclaré. « Cette amélioration a réduit le temps de recherche des données d'environ 15 %. »

JTEKT continue d'améliorer son usine logicielle basée sur des modèles. Le déploiement de Process Advisor dans toutes les équipes permettra de standardiser encore davantage les workflows. La conteneurisation de l'ensemble de la chaîne d'outils promet une meilleure évolutivité et une maintenance facilitée, le succès de l'équipe d'électrification des vélos avec les conteneurs Docker servant de modèle pour une implémentation plus large.

JTEKT renforce ses capacités de surveillance sur deux fronts. Les outils d'observabilité du système pistent les performances de Jenkins, les temps de démarrage de MATLAB, ainsi que d'autres métriques afin de prévenir les ralentissements du développement. Pendant ce temps, les tableaux de bord de qualité offrent une visibilité en temps réel sur la qualité des composants, mettant les problèmes directement devant les développeurs.

« Plus vous rapprochez l'information du développeur, plus il est probable qu'il la corrigera », déclare Malrait.

Même avec des objectifs ambitieux, les ingénieurs qui ont passé des années à lutter contre un code monolithique et des tests manuels ont du mal à croire ce qu'ils ont déjà accompli.

Diagramme en anneau montrant les résultats de la compilation : Réussi (3 435), Échoué (1 529), Autre (1 510) et Instable (437). Il y a eu un total de 6 911 compilations au cours d'une année, avec une durée moyenne des compilations réussies de 33 minutes, totalisant 1 946 heures.

Résultats de compilation pour une plateforme logicielle sur une période d'un an, montrant la répartition des compilations réussies, échouées, instables et autres, ainsi que la durée totale et moyenne des compilations réussies.

« Si l'on nous avait demandé de faire cela il y a quelques années, je ne pense pas que nous aurions imaginé que cela soit possible », déclare Bertotto.

« Le support de MathWorks, pour standardiser et unifier les processus, les méthodes et les outils de développement des ingénieurs en logiciel, a été crucial », selon M. Sakata.


Consulter d'autres témoignages

Navigation dans l'interface

L'engin spatial Orion se dirige vers la Lune, propulsé par le lanceur SLS

Le programme Artemis de la NASA vise une présence lunaire à long terme

Navigation dans l'interface

Application de l’approche Model-Based Design aux architectures orientées services automobiles

Renault fait progresser le prototypage ADAS avec ROS Toolbox et l'intégration de Simulink

Navigation dans l'interface

Tata Motors accélère le diagnostic des véhicules grâce à un assistant de chat basé sur LLM

L'application ServiceSage améliore la rapidité et la précision du service