Un jeu sur tablette qui cesse de fonctionner, le service de géolocalisation d’un téléphone qui bug… c’est embêtant, mais ce n’est pas grave. Par contre, le système de géolocalisation d’un avion n’a pas le droit à l’erreur. Il en est de même pour un dispositif médical! C’est ce qu’on appelle des systèmes critiques (safety critical) ; ils requièrent une qualité avec une sureté de code extrêmement élevée. Pour ce type de logiciels critiques, une bonne gestion des tests – ainsi que des outils adaptés – est indispensable pour assurer une qualité sans failles.


La spécificité des logiciels industriels

Industries des transports, de la défense, des télécoms, du médical, de la domotique… le logiciel est devenue une brique critique, indispensable de nombreux systèmes industriels. Mais, plus qu’une application développée au sein d’une DSI, un composant logiciel industriel est bien plus complexe, tant en termes d’organisation – on travaille sur des projets multimétiers – qu’en termes de chaîne de production de développement.

Les composants logiciels embarqués dans une voiture ou un avion sont des briques de systèmes complexes qui intègrent en plus, des composants physiques, mécaniques, électronique. Les systèmes embarqués ne permettent pas, contrairement aux logiciels « classiques », de séparer le matériel du logiciel. C’est cette dualité physique-virtuel (hardware-software) qui fait la particularité des logiciels industriels et en font des logiciels particulièrement complexes, avec de nombreuses variables à prendre en considérations. En outre, cela implique de plus grands coûts liés à la non réutilisabilité et à la double compétence éléctronicien/informaticien nécessaire au sein des équipes. C’est pourquoi ces projets logiciels sont souvent plus longs et couteux, le développement et l’implémentation plus spécifiques, sans parler de la maintenance…

Ces particularités montrent l’importance de mettre en place des processus de gestion des tests, des méthodes et des outils robustes de développement logiciel, ceci tout au long du cycle de vie du produit. A ce sujet, un outil ALM permet de développer des logiciels conformes aux normes de qualité des marchés industriels. Pour répondre à ces labels exigeants, la clé est d’intégrer le plus étroitement possible et de façon continue les contraintes de la certification au processus de développement des logiciels. En s’inspirant des méthodes agiles, on peut mettre en place une stratégie de « certification continue » qui permet de répondre le plus tôt possible aux exigences de certification applicables au développement des logiciels. En effet, allier agilité et conformité est non seulement possible mais aussi avantageux.

Chez Tuleap, nos clients sont de grandes entreprises industrielles dans différents secteurs : automobile, semi-conducteur, défense, spatiale, médical… Elles ont choisi Tuleap pour gérer le cycle de vie de leurs solutions technologiques : centralisation des outils et des données, traçabilité de bout-en-bout, pérennité de leurs développements.

Normes et qualité logicielle des systèmes critiques

La nécessité de prouver la conformité aux normes

Pour répondre aux exigences de sécurité, les systèmes logiciels critiques doivent respecter des normes de développement très strictes, d’où un accroissement de la complexité.

Les normes régulant les activités de « développement logiciel » définissent les objectifs à atteindre pendant le cycle de vie d’un logiciel à travers la mise en oeuvre d’un ensemble d’activités (cf. un Système de Management de la Qualité – SMQ). Les méthodes et les outils pour organiser et déployer les activités ne sont pas décrites dans la norme. Chaque industrie, chaque entreprise, est donc libre d’élaborer un plan d’assurance qualité qui lui est propre, de choisir les outils qu’elles souhaitent. Dans tous les cas, elle devra démontrer:

  • les règles de développement fixées pour les différentes phases de développement,
  • les spécifications des exigences,
  • la gestion de configuration,
  • les plans d’assurance qualité,
  • les résultats des tests,
  • et bien d’autres aspects encore.

L’Assurance Qualité passe par une Gestion des Tests au coeur des projets 

L’ assurance qualité d’un projet logiciel passe par une bonne stratégie et un bon outil de gestion des tests. Pour être vraiment efficace, il s’agit de « bâtir de la qualité » plutôt que de « contrôler la qualité » à la fin du processus et ainsi transformer l’assurance qualité en moteur de fiabilité. Dans les approches agiles, la gestion des tests est pensée au plus tôt.

Comme vous le savez sans doute, l’enjeu des méthodes Agiles est : produire vite, produire le « bon » produit et produire un produit de « qualité ». Cela nécessite de bien penser sa stratégie qualité, en comprenant les différents types de tests automatiques et manuels.

Mais comment élaborer une stratégie de test efficace ? Lorsque tous les co-équipiers sont mobilisés autour de l’objectif commun d’assurer la satisfaction clients, deux processus vont être menés de front : le processus de développement logiciel et le processus de tests. Mené conjointement, ils forment un processus de production efficace et cohérent de l’avancement du projet. La stratégie qualité consiste ici à élaborer ce processus de testing et à assurer sa symbiose avec le processus de développement. Pour y parvenir, une solution comme Tuleap facilite la mise en place d’un Plan d’Assurance Qualité Logicielle avec les bonnes pratiques Agiles et DevOps.

Système de Management de la Qualité dans différentes industries

La qualité logicielle dans l’industrie de l’automobile

L’automobile et plus largement les transports, voilà une industrie où l’on retrouve bien cette dualité « physique-virtuel » dont nous venons de parler. La course à la sortie d’un véhicule autonome est la démonstration que le logiciel prend une part de plus en plus importante dans la valeur d’un produit.

Dans l’attente, un grand nombre d’ équipements automobiles embarquent désormais du logiciel, imposant de nouvelles mesures de contrôle qualité. Rigueur et fiabilité commandent la mise au point des calculateurs électroniques. Analyses de sûreté de fonctionnement, simulations virtuelles et réelles pour le contrôle de trajectoire, la surveillance de la pression des pneus ou les radars anticollisions, font désormais partie du développement automobile.

 Les enjeux sont de taille:

  • Assurer la sécurité des personnes et des biens, sans conteste la première garantie à apporter,
  • Sécuriser la transmission des informations,
  • Réduire les délais de développement des systèmes.

Dans ce contexte, la sûreté de fonctionnement du logiciel vous permettra de produire un logiciel sûr, conforme à ses objectifs fonctionnels critiques et aux normes internationales telles que IEC 61508 (norme générique), EN 50128 pour le ferroviaire, ISO 26262 pour l’automobile, ainsi qu’aux modèles de référence tel que ASPICE. Grâce à des processus normalisés et des outils de gestion des tests, vous pourrez ainsi attester du niveau de sécurité du logiciel par rapport à la norme choisie.


La qualité logicielle dans l’industrie du Médical

Dans le domaine médical, les logiciels jouent un rôle important et la qualité du logiciel est essentielle pour élaborer un dispositif médial sécurisé. Il en va de la sécurité des patients! Les dispositifs médicaux doivent être développés avec de bonnes pratiques d’ingénierie et  les entreprises sur le marché des appareils médicaux doivent assurer la plus haute qualité de développement de leurs logiciels.  

 ISO 13485, ISO 14971, IEC 62304 . Ces normes appliquées dans le secteur médical sont exigeantes et incontournables pour garantir à la fois la sécurité du patient et le succès d’un produit. Elles impliquent donc la réalisation de tests rigoureux, de critères d’acceptation et de traçabilité. Sans outils appropriés, répondre à ces exigences est impossible.


La qualité logicielle dans l’industrie Aéronautique, Spatiale, Défense

« 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… »

Voilà de quoi donner le tournis, tant aux architectes logiciels qu’aux responsables qualité de ces produits hyper-critiques. L’industrie aéronautique est une industrie d’une importance majeure tant par sa taille (effectifs) que pour les applications induites et son rôle économique et stratégique. Ce secteur se caractérise par une réglementation lourde et technique.

Il s’agit ici aussi et avant tout d’assurer la sûreté de fonctionnement des logiciels aérospatiaux pour éviter les accidents qui représentent des coûts financiers et matériels importants. Exemple, en 2000, dans le Zenit 3SL, une erreur logiciel a éteint une fonctionnalité qui a empêché le satellite d’atteindre son orbite. Coût = plus de 360 millions de dollars.

L’assurance qualité et une stratégie de gestion des tests efficace est également nécessaire pour des raisons économiques. Les avions étant souvent utilisés pendant plusieurs décennies, il est crucial de s’assurer que les logiciels aient bien les caractéristiques de fiabilité, stabilité et facilité de maintenance. La maintenance est souvent une grande source de coûts. Ceci est d’ailleurs valable dans l’aéronautique mais bien plus généralement dans toute maintenance d’applications logiciels.

A noter, qu’en plus, les projets logiciels dans l’aéronautique doivent imposer une grande rigueur pour éviter au maximum les retards, qui impliquent également de grands surcoûts.

Côté techniques, les éléments embarqués au sein d’un appareil doivent aussi prendre en compte les caractéristiques de temps réel, de consommation énergétique…

Les équipes de développement doivent se soumettre aux normes de sécurités applicables aux logiciels critiques de l’avionique. Elles doivent donc respecter les normes ED-12C et DO-178C ou encore la norme européenne EN 9100 qui cadre un système d’assurance de la qualité pour le marché aéronautique et spatial. Obtenir ce label est crucial car il permet d’être référencé dans la base de donnée OASIS (Online Aerospace Supplier Information System) qui répertorie toutes les entreprises mondiales certifiées AS 9100 ou EN 9100 ou JISQ 9100.


La qualité logicielle dans l’industrie des Composants High-Tech

Semi-conducteurs, composants électroniques, pour des raisons évidentes de sécurité et de confidentialité, il n’est pas question de développer un produit logiciel, puis, en cours d »usage, d’en identifier et corriger les incidents. Tout doit être prévu en amont afin que les logiciels embarqués soient le plus fiables possible.

Ce souci de qualité est d’autant plus important que les logiciels embarqués deviennent omniprésents dans les appareils comportant de l’électronique. Ainsi, la complexité des logiciels embarqués impose aux industriels de vérifier le comportement du système dans son environnement afin d’anticiper les anomalies.

Les industriels de la carte à puce se sont donc engagés dans une véritable course technologique contre les hackers, qui malmènent leurs barrières de sécurité logicielles. La qualité du programme sous-tend ici confidentialité et sécurité.