Si l'on vient de vous annoncer que votre logiciel doit être conforme au DO-178C, cette page s'adresse à vous. Elle suppose que vous êtes un ingénieur compétent qui n'a jamais travaillé sous une norme de logiciel embarqué, et elle explique ce que la norme exige réellement, ce que vous devrez produire, qui le vérifie, et où les programmes perdent habituellement du temps.

Elle se veut pratique plutôt qu'exhaustive. Des articles ultérieurs traitent chaque volet en détail.

Ce qu'est le DO-178C — et ce qu'il n'est pas

Le DO-178C, Software Considerations in Airborne Systems and Equipment Certification, est publié par la RTCA, et sous la référence ED-12C par l'EUROCAE en Europe. Les autorités de certification — la FAA, l'AESA et l'Aviation civile de Transports Canada — acceptent la conformité à cette norme comme moyen acceptable de démontrer qu'un logiciel embarqué est apte au vol.

Trois choses qu'il n'est pas, et ce sont les premières idées reçues :

  • Ce n'est pas une norme de codage. Elle ne vous interdit jamais une construction de langage précise ni ne limite la longueur des fonctions. Elle exige que vous ayez une norme de codage et que vous démontriez l'avoir respectée.
  • Ce n'est pas un processus de développement. Elle n'impose ni cycle en cascade, ni cycle en V, ni quoi que ce soit d'autre. Elle définit des objectifs et les preuves qui les satisfont ; l'enchaînement des travaux vous appartient, à vous de le planifier et de le justifier.
  • Ce n'est pas une mesure de qualité logicielle. C'est une norme d'assurance de conception. Elle donne l'assurance que les erreurs susceptibles de provoquer une condition non sécuritaire ont été trouvées et éliminées — non pas que le logiciel est élégant, rapide ou facile à maintenir.

D'où vient le niveau d'assurance

Le malentendu le plus fréquent consiste à croire qu'une équipe logicielle choisit elle-même son niveau d'assurance. Il n'en est rien. Le niveau est transmis au logiciel par une évaluation de sécurité menée au niveau de l'aéronef et du système, normalement selon les ARP4754A/B et ARP4761/A.

La chaîne se déroule ainsi. Une évaluation des dangers fonctionnels (FHA) détermine ce qui arrive en cas de défaillance de chaque fonction et quelle en est la gravité. L'évaluation préliminaire de sécurité du système (PSSA) répartit les exigences et les niveaux d'assurance vers les éléments qui réalisent ces fonctions. L'évaluation de sécurité du système (SSA) confirme ensuite, une fois la conception concrète, que les objectifs ont été atteints. L'analyse des causes communes (CCA) se déroule en parallèle afin de vérifier que ce qui est présumé indépendant l'est réellement.

La chaîne d'évaluation de la sécurité de l'aéronef : la FHA, la PSSA et la SSA allouant le DAL jusqu'au logiciel, avec la CCA en parallèle CCA Common Cause Analysis (en parallèle) FHA Functional Hazard Assessment PSSA Preliminary System Safety Assessment SSA System Safety Assessment Allocation du DAL Logiciel Le DAL se répercute sur le développement
La chaîne d'évaluation de la sécurité. Le niveau d'assurance de conception (DAL) du logiciel est un résultat de ce processus, et non un choix de l'équipe logicielle.

Conséquence pratique : si vous estimez que votre niveau est erroné, la discussion se tient avec les équipes systèmes et sécurité, et non avec l'autorité de certification. Une modification architecturale au niveau système — cloisonnement, moniteurs, redondance dissemblable — est la façon légitime de réduire un niveau d'assurance logiciel, et elle coûte bien moins cher que d'en débattre plus tard.

Les cinq niveaux d'assurance de conception

Le DO-178C définit cinq niveaux logiciels, de A à E, déterminés par la gravité de la condition de défaillance à laquelle le logiciel peut contribuer.

Échelle de sévérité des DAL, de Catastrophique (DAL A) jusqu'à Aucun effet sur la sécurité (DAL E) Le plus sévère Le moins sévère DAL A Catastrophique DAL B Dangereuse / majeure grave DAL C Majeure DAL D Mineure DAL E Aucun effet sur la sécurité
La gravité de la condition de défaillance détermine directement le niveau logiciel. C'est entre D et C, puis entre C et A, que se situe le coût.
Niveau Condition de défaillance Signification concrète Objectifs (approx.) Dont avec indépendance
A Catastrophique La défaillance empêcherait la poursuite du vol et l'atterrissage en sécurité 71 30
B Dangereuse / majeure-sévère Forte réduction des marges de sécurité ; blessures graves ou mortelles pour un petit nombre d'occupants 69 18
C Majeure Réduction importante des marges de sécurité ; inconfort, voire blessures légères 62 5
D Mineure Légère réduction des marges de sécurité ; augmentation courante de la charge de travail de l'équipage 26 2
E Aucun effet sur la sécurité Aucun effet sur la capacité opérationnelle ni sur la charge de travail de l'équipage 0 0
Les cinq niveaux. Le nombre d'objectifs provient de l'annexe A du DO-178C et est donné à titre indicatif — validez-le sur votre propre exemplaire de la norme, et notez que l'application d'un supplément comme le DO-331 le modifie.

Deux constats à tirer de ce tableau. D'abord, l'écart entre le niveau C et le niveau D est bien plus grand que celui entre B et A : la plupart des objectifs disparaissent au niveau D. Ensuite, c'est dans la mention « avec indépendance » que se cache le coût en personnel : elle signifie que la personne qui vérifie un élément ne peut être celle qui l'a produit, ce qui, au niveau A, s'applique à une trentaine d'objectifs et détermine la taille de votre équipe.

Le cycle de vie : ce que vous produisez réellement

Le DO-178C organise les travaux en trois groupes : le processus de planification ; les processus de développement — exigences, conception, codage, intégration ; et les processus intégraux — vérification, gestion de configuration, assurance qualité et liaison avec la certification — qui se déroulent en continu, en parallèle de tout le reste, et non comme une phase finale.

Le cycle de vie logiciel du DO-178C : la planification, les étapes de développement, et les processus transverses qui les accompagnent Planification Exigences Conception Code Intégration Les processus transverses accompagnent le développement : vérification, gestion de configuration, assurance qualité, liaison de certification
La planification conditionne le développement ; les quatre processus intégraux se déroulent pendant toute la vie du programme, et non à la fin.

Le mot intégral a ici tout son sens. Les équipes qui découvrent la norme traitent couramment la vérification et la gestion de configuration comme des activités postérieures au codage. Sous le DO-178C, elles commencent dès la planification et ne s'arrêtent jamais ; un programme qui les reporte est un programme qui refera ses preuves.

L'ensemble documentaire

La planification produit cinq plans et trois normes. Tout ce qui suit est jugé par rapport à eux, ce qui fait de la planification l'endroit le moins coûteux où bien faire les choses, et le plus coûteux où les rater.

Élément Ce à quoi il vous engage
PSAC — Plan for Software Aspects of Certification L'entente de haut niveau avec l'autorité de certification : aperçu du système, niveau logiciel, cycle de vie, normes, et mode de démonstration de la conformité
SDP — Software Development Plan Comment les exigences, la conception, le code et l'intégration seront produits, et par qui
SVP — Software Verification Plan Comment les revues, analyses et essais seront menés, y compris l'indépendance et la couverture
SCMP — Software Configuration Management Plan Références de configuration, contrôle des modifications, rapports de problèmes, archivage et restitution
SQAP — Software Quality Assurance Plan Comment la conformité aux plans est auditée, et par qui
Normes d'exigences Règles et notation pour la rédaction des exigences de haut et de bas niveau
Normes de conception Règles et contraintes visant l'architecture et la conception logicielles
Normes de codage Sous-ensemble du langage, nommage, complexité et restrictions de constructions
Les cinq plans et les trois normes exigés par la planification DO-178C.
La carte des artefacts du DO-178C : le PSAC pilotant les plans et normes, les éléments de données qu'ils produisent, et le SAS final PSAC Plan for Software Aspects of Certification 5 plans PSAC · SDP · SVP SCMP · SQAP 3 normes Exigences · Conception · Code Éléments de données produits données d'exigences, de conception et de code, cas de test, résultats de vérification et de traçabilité SAS Software Accomplishment Summary
Du PSAC au sommaire d'accomplissement logiciel (SAS). Le SAS est la plaidoirie finale ; tout ce qui se trouve entre les plans et lui constitue la preuve qu'il invoque.

La vérification ne se limite pas aux essais

La vérification selon le DO-178C se compose de revues, d'analyses et d'essais. Les essais seuls n'en satisfont qu'une partie. Les essais découlent des exigences — ils ne s'écrivent pas en lisant le code — et chaque cas d'essai est tracé jusqu'à l'exigence qu'il sollicite.

La couverture structurelle est ensuite mesurée pour répondre à une autre question : non pas « le logiciel satisfait-il ses exigences », mais « mes essais fondés sur les exigences ont-ils réellement sollicité le code, et existe-t-il ici du code qu'aucune exigence n'a demandé ? » Une couverture qui refuse de se fermer signale généralement des exigences manquantes, des essais manquants, ou du code qui ne devrait pas exister.

Niveau Couverture des instructions Couverture des décisions MC/DC Traçabilité code source vers code objet
A Exigée Exigée Exigée Exigée
B Exigée Exigée
C Exigée
D
E
Couverture structurelle exigée par niveau. L'analyse du couplage des données et du couplage de contrôle est exigée aux niveaux A, B et C.

Les audits : les stades d'implication 1 à 4

L'autorité de certification, ou son délégué, intervient à quatre moments. Il ne s'agit pas d'inspections-surprises : ce sont des revues planifiées de preuves que vous détenez déjà, et le calendrier en est proposé dans votre PSAC.

Les quatre points d'audit Stage of Involvement positionnés en regard des étapes du cycle de vie qu'ils examinent SOI 1 Planification SOI 2 Développement SOI 3 Vérification SOI 4 Certification état de préparation Points d'audit de certification
Les quatre stades d'implication (SOI), situés en regard des étapes du cycle de vie que chacun examine.
Stade Objet Ce qui est réellement demandé
SOI nº 1 — Planification Plans et normes Le plan est-il crédible, complet et adapté au niveau logiciel ?
SOI nº 2 — Développement Exigences, conception, code, traçabilité Avez-vous respecté vos propres plans et normes ?
SOI nº 3 — Vérification Cas d'essai, procédures, résultats, couverture La preuve de vérification est-elle complète, et se ferme-t-elle réellement ?
SOI nº 4 — Final SAS, SCI, rapports de problèmes ouverts Le logiciel est-il prêt, et les problèmes connus restants sont-ils acceptables ?
Ce que chaque revue de stade d'implication examine.

Les suppléments

Le DO-178C a été publié accompagné de documents connexes. Ils ne remplacent pas la norme de base : ils en modifient et en ajoutent des objectifs pour une technologie donnée.

Document S'applique lorsque Résumé en une ligne
DO-330 Vous vous fiez à un outil pour éliminer, réduire ou automatiser un processus Qualification des outils. Détermine le niveau de qualification (TQL-1 à TQL-5) et les preuves exigées de l'outil lui-même
DO-331 Vous développez ou vérifiez au moyen de modèles Développement fondé sur les modèles. Définit ce qu'est un modèle en termes d'exigences et de conception, et le lien entre couverture des modèles et couverture structurelle
DO-332 Vous utilisez des langages orientés objet ou des techniques connexes Ajoute des objectifs visant l'héritage, le polymorphisme, la gestion dynamique de la mémoire et la sûreté du typage
DO-333 Vous utilisez des méthodes formelles Permet à l'analyse formelle de remplacer certains essais et certaines revues, avec ses propres exigences de preuve
Les suppléments technologiques du DO-178C, et le DO-330 pour les outils.

Où les programmes perdent réellement du temps

Sur les programmes de niveaux DAL A et DAL C, le temps se perd rarement à écrire du code. Il se perd à quatre endroits, tous prévisibles :

  1. La dette de traçabilité. Les liens sont consignés tardivement, à la main, de mémoire. Le travail à refaire n'est pas la mise en lien : c'est de découvrir, des mois plus tard, qu'une exigence n'a jamais été réalisée, ou qu'un morceau de code ne répond à rien.
  2. Les exigences dérivées non retournées à la sécurité. Les exigences inventées pendant la conception doivent retourner à l'évaluation de sécurité. L'omettre constitue un constat, et il se découvre tard.
  3. La couverture découverte à la fin. Une couverture structurelle exécutée pour la première fois vers la fin révèle immanquablement du code mort, des essais manquants et des lacunes d'exigences, tous en même temps, au pire moment.
  4. La qualification tardive des outils. Décider au moment de la vérification que la sortie d'un outil sera tenue pour acquise sans preuve de qualification est une conversation coûteuse à tenir au SOI nº 3.

Aucun de ces problèmes n'est difficile. Ce sont tous des problèmes d'enchaînement, et les quatre s'évitent à peu de frais dès la planification.

Le DO-178C au Canada

Pour les programmes canadiens, l'autorité de certification est l'Aviation civile de Transports Canada. La norme est le même document et les objectifs ne changent pas, mais la voie d'approbation, le recours aux délégués et le traitement des constats diffèrent du modèle de la FAA que suppose la quasi-totalité de la documentation publiée sur le DO-178C. Des ententes bilatérales entre le Canada, les États-Unis et l'Europe régissent en outre la façon dont une approbation accordée par une autorité est validée par une autre — ce qui compte beaucoup si vous êtes un fournisseur canadien qui vend dans un programme étranger, ou l'inverse.

Le sujet est assez vaste, et assez mal servi par la documentation existante, pour faire l'objet de son propre article.

Foire aux questions

Le DO-178C est-il obligatoire ?

Pas en soi. Le DO-178C est un moyen de conformité, non un règlement. Ce qui est obligatoire, c'est de démontrer à l'autorité de certification que votre logiciel embarqué est sécuritaire pour la fonction prévue. Le DO-178C est le moyen que les autorités acceptent couramment, et c'est en pratique ce que l'on attendra de vous.

Combien de temps prend une certification DO-178C ?

Cela dépend presque entièrement du niveau logiciel, et du fait que l'assurance ait été intégrée dès le départ ou ajoutée après coup. Le DO-178C allonge rarement un programme bien planifié autant que les équipes le craignent, et double fréquemment un programme mal planifié. Ajouter les preuves à du code déjà terminé, voilà le cas coûteux.

Peut-on utiliser une approche agile avec le DO-178C ?

Oui, et de nombreux programmes le font. Le DO-178C impose des objectifs et des preuves, non un modèle de cycle de vie. Ce que l'approche agile doit accommoder, c'est que certains éléments doivent être mis sous référence de configuration, revus avec indépendance et tenus en gestion de configuration — la définition de « terminé » d'un incrément doit donc inclure ses preuves.

Quelle est la différence entre le DO-178C et le DO-254 ?

Le DO-178C vise le logiciel embarqué ; le DO-254 vise le matériel électronique embarqué, comme les composants programmables complexes et les FPGA. Ils partagent la philosophie d'assurance de conception, et l'attribution du niveau provient de la même évaluation de sécurité du système, mais les objectifs et les preuves diffèrent.

Le DO-178C s'applique-t-il aux drones et aux aéronefs eVTOL ?

Lorsque l'aéronef fait l'objet d'une certification de type, oui : le même cadre de navigabilité s'applique. Ce qui varie, c'est la gravité de la condition de défaillance attribuée à une fonction donnée sur un aéronef sans équipage ou de conception nouvelle, ce qui peut placer le logiciel à un niveau différent de celui de la fonction équivalente sur un avion de transport.

Si vous cadrez un programme, en héritez d'un, ou préparez une première revue de stade d'implication, c'est exactement le travail que nous faisons — écrivez-nous.