L’évolution du logiciel dans l’industrie : pourquoi l’ALM ?

Le logiciel est une brique critique de nombreux systèmes industriels. Pourtant, les processus, méthodes et outils qui supportent son développement ne sont pas au niveau de maturité d’autres disciplines historiques de l’ingénierie. La mise en place des processus et principes de la Gestion du Cycle de Vie Logiciel (Application Lifecycle Management = ALM) est une réponse aux besoins des industriels.

 

Le logiciel prend de la valeur dans les produits industriels finaux et son développement coûte de plus en plus

 

Figure 1 : Augmentation de la quantité de code présente dans l'avionique des dernières gammes d'avion de chasse chez Lockheed Martin

Figure 1 : Augmentation de la quantité de code présente dans l’électronique embarquée des dernières gammes d’avion de chasse. Ici chez Lockheed Martin (source: SEI Blog, Carnegie Mellon University)

Dans l’industrie aéronautique-défense, la quantité de code et de calculateurs embarqués a explosé dans les dernières gammes de produits. Un Airbus A350 embarque 2 fois plus de lignes de code qu’un A380, qui lui-même en embarque 2 fois plus qu’un A320. Même constat chez Boeing dans sa dernière gamme à date, le 787 « Dreamliner ». Le logiciel y représente environ 25% des coûts de développement et est en nette augmentation. Cette tendance se vérifie dans les systèmes de défense, les lanceurs, mais aussi dans d’autres industries telles que l’automobile ou encore la distribution. Pour plus d’informations, lire notre article sur le véhicule autonome.

 

Cette explosion du logiciel en termes de volume et de coûts s’explique en 4 points :

  1. Le logiciel offre des possibilités de démarcation concurrentielles par le développement de nouvelles fonctionnalités.
  2. L’augmentation des puissances de calcul et leur accessibilité créent une opportunité.
  3. La gestion de certains besoins fonctionnels – autrefois mécanique ou électrique – est aujourd’hui logicielle.
  4. Pour répondre aux exigences de sécurité, les fonctionnalités logicielles critiques doivent respecter des normes de développement toujours plus strictes, d’où un accroissement de la complexité et du volume.

 

À cette évolution, s’ajoutent des spécificités propres au logiciel dans le monde industriel

Nous utilisons tous chaque année de plus en plus de logiciels et ce dans toutes les activités de notre vie. Mais que différencient les applications de notre téléphone ou de notre ordinateur du logiciel développé par les industriels ?

  • L’application de localisation ou le jeu de votre téléphone peut subitement cesser de fonctionner, alors que le système de navigation de l’avion sur lequel vous venez d’embarquer ne peut pas faillir. Ces systèmes dits « safety critical » ou « mission critical » nécessitent une qualité / sûreté de code supérieure et un taux de défaillance moindre.
  • Le logiciel d’un avion ou d’une voiture est une brique d’un système complexe intégrant également des composantes physiques (mécaniques, électriques). Cette dualité physique-virtuel du système et sa variabilité rendent le design, l’implémentation et les tests plus complexes, plus longs et plus coûteux.
  • L’environnement de l’objet industriel est souvent le monde réel, dont les variables sont nombreuses.

Ces spécificités montrent l’importance de mettre en place des processus, méthodes et outils robustes de développement logiciel, ceci tout au long du cycle de vie du produit.

Les processus de développement logiciel – et leur intégration avec les autres processus du système – peuvent encore progresser

Le logiciel n’est pas qu’une simple brique du système : il influe fortement sur les choix d’architecture, est responsable et gère une grande partie de la complexité produit, et impacte de manière significative les coûts et les délais. De plus, la valeur et la performance du produit final peuvent dépendre fortement de celles du logiciel qu’il embarque.

On pourrait alors penser que l’articulation entre les processus, méthodes et outils du logiciel et ceux des autres fonctions – à travers l’ingénierie système – est une mécanique bien huilée. Ou encore que les processus logiciel sont désormais au niveau de maturité des autres disciplines. Mais dans les faits, l’intégration entre le logiciel et le reste du système reste un challenge pour bon nombre d’entreprises. D’autre part, les processus de développement logiciel peuvent encore progresser notamment en couvrant l’ensemble de son cycle de vie, de la gestion de portefeuille de fonctionnalités jusqu’à la maintenance.

L’ingénierie mécanique bénéficie de centaines d’années de développement, le logiciel seulement de quelques décennies.

L’ALM permet de structurer le développement de logiciel

L’Application Lifecycle Management (ALM – Gestion du cycle de vie du logiciel) est un ensemble de processus standards nécessaires au développement et à la maintenance d’une application. L’un de ses enjeux clés est l’intégration des processus avec ceux des autres disciplines. 

Figure 2 – Une représentation du macro-processus de développement de logiciel

L’ALM inclut l’aspect Gouvernance et permet de gérer un portefeuille de projets et de fonctionnalités. Il comprend également les processus de développement logiciel, tout au long de son « cycle en V ».

sw-development-vcycle

Figure 3 – Le cycle en V du développement de logiciel (source : GitHub)

Enfin, l’ALM intègre les Opérations, avec le déploiement et la maintenance.

L’ALM permet de répondre aux défis que rencontrent les industriels dans le développement et l’intégration de logiciel

Les industriels utilisent certaines briques d’ALM, mais peuvent rencontrer les défis suivants : 

 Défi  Bénéfice de l’ALM
 Les processus de Développement de Logiciel ne couvrent pas l’ensemble du cycle en V de manière continue. L’intégration de chaque “artefact” ou morceau unitaire du développement dans un contexte (il correspond à telle exigence client, il est associé à tel test, etc.) permettrait aux équipes de comprendre les impacts d’un changement sur le reste du système ou encore de détecter l’origine d’un logiciel défectueux.
 La gestion de configuration est complexe ou nécessite des opérations manuelles lourdes. Un ALM permettrait de gérer efficacement les variantes multiples et livraisons fréquentes. Les bénéfices seraient un gain de temps et une réduction des erreurs de configuration.
 Le Développement n’est pas intégré verticalement avec la Gouvernance et la gestion de portefeuille de projets et de fonctionnalités. Une telle intégration permettrait à l’entreprise de gérer de manière optimale (en terme de retour sur investissement) son portefeuille de projets et de fonctionnalités.
 Le Développement n’est pas non plus intégré avec les Opérations. Prendre en compte les contraintes du déploiement lors du développement permettrait de faire réaliser d’importantes économies à l’entreprise.
 L’ingénierie logiciel n’a pas accès facilement aux exigences et contraintes aux interfaces des autres systèmes. L’existence d’interfaces standardisées permettrait une collaboration facilitée avec les autres disciplines.

 

En plus de ces bénéfices d’efficience et de qualité, un des apports majeurs de l’ALM est un gain de productivité. L’accès à l’information est facile et en temps réel, les standards de développement sont partagés entre les équipes.

Et maintenant ? Quelles prochaines étapes ?

Les solutions ALM matures existent et proviennent à la fois d’éditeurs tiers et du monde Open Source. Néanmoins, l’évolutivité (« scalability »), la couverture fonctionnelle et la facilité d’intégration varient selon les outils. Le choix d’une solution ou d’une autre n’est donc pas neutre.

Figure 4 : Quelques exemples d’éditeurs de suites ALM

 

Avant de parler de méthodes et d’outils, c’est bien par l’amélioration de ses processus que l’entreprise doit démarrer. La première étape est la définition d’un modèle de données cohérent et intégré avec les autres domaines d’ingénierie. Ce modèle doit répondre à des points de blocage et à des difficultés de l’organisation.

Newsletter

Recevez notre newsletter bi-mensuelle

Commenter