La DO-178C est la norme d'assurance logicielle selon laquelle les systèmes embarqués aéronautiques sont certifiés. En son cœur se trouve une idée que les autorités de certification vérifient sans relâche : la traçabilité. Chaque comportement du logiciel touchant à la sécurité doit pouvoir être relié à une exigence, et chaque exigence doit pouvoir être reliée vers l'aval au code et aux tests qui l'implémentent et la vérifient. Cette page explique à quoi ressemble cette chaîne, ce que signifie concrètement la traçabilité bidirectionnelle, comment les niveaux d'assurance de conception dimensionnent l'effort, et où les équipes rencontrent le plus souvent des difficultés.
Si vous certifiez un logiciel avionique, la traçabilité n'est pas une paperasse produite à la fin. C'est le tissu conjonctif qui permet à un auditeur de suivre n'importe quelle exigence jusqu'à son implémentation, puis de revenir en arrière, et c'est l'un des premiers points qu'un représentant technique agréé ou une autorité va sonder.
La DO-178C, intitulée Software Considerations in Airborne Systems and Equipment Certification, est publiée par la RTCA. Son équivalent européen identique est l'ED-12C, publiée par l'EUROCAE. Les deux documents partagent les mêmes objectifs et le même contenu : un projet conforme à l'un est conforme à l'autre. Aux États-Unis comme en Europe, la FAA et l'EASA reconnaissent la DO-178C / ED-12C comme le moyen de conformité accepté pour le logiciel des systèmes embarqués aéronautiques.
La DO-178C est fondée sur des objectifs plutôt que prescriptive. Au lieu d'imposer un processus de développement unique, elle définit un ensemble d'objectifs que le cycle de vie logiciel doit satisfaire, et laisse le demandeur libre de choisir comment les atteindre. Le demandeur produit ensuite des preuves, sous la forme de données du cycle de vie, montrant que chaque objectif applicable a été atteint. Les données de traçabilité constituent l'un des éléments centraux de ces preuves.
Pour une vue plus large de la certification dans ce domaine, y compris son pendant matériel, consultez notre présentation de l'ingénierie Aérospatiale & Défense et l'article associé Certifications aéronautiques DO-178C & DO-254.
La rigueur exigée par la DO-178C n'est pas la même pour tous les logiciels. Elle est dimensionnée par le niveau d'assurance de conception (DAL, Design Assurance Level), parfois appelé niveau logiciel. Le DAL est attribué en fonction de la gravité de la condition de panne à laquelle le logiciel pourrait contribuer, telle que déterminée par l'évaluation de la sécurité du système. Il existe cinq niveaux, de A (le plus critique) à E (le moins critique) :
| DAL | Condition de panne | Effort relatif en objectifs |
|---|---|---|
| A | Catastrophique (la panne peut empêcher la poursuite d'un vol et d'un atterrissage sûrs) | L'ensemble complet des objectifs s'applique, avec le plus haut degré d'indépendance |
| B | Dangereuse / sévère-majeure | Presque l'ensemble complet, avec une vérification et une indépendance étendues |
| C | Majeure | Un ensemble d'objectifs réduit par rapport aux niveaux A et B |
| D | Mineure | Un ensemble nettement plus restreint, centré sur les objectifs essentiels |
| E | Aucun effet sur la sécurité | Aucun objectif DO-178C ne s'applique une fois le niveau confirmé |
Le principe clé est que le nombre d'objectifs applicables, et le degré d'indépendance requis pour les satisfaire, augmentent avec la criticité. Les niveaux les plus élevés exigent pour l'essentiel l'ensemble complet des objectifs ; les niveaux inférieurs relâchent progressivement à la fois le nombre et les attentes en matière d'indépendance. Une grande partie des objectifs supplémentaires aux niveaux A et B concerne la vérification et la couverture structurelle, précisément là où une traçabilité rigoureuse porte ses fruits.
La traçabilité DO-178C suit le logiciel à mesure qu'il est raffiné, d'un besoin abstrait vers un code exécutable et vérifié. La chaîne parcourt généralement les couches suivantes :
1. Exigences système allouées au logiciel. Elles proviennent du niveau système et définissent ce que le logiciel doit faire.
2. Exigences de haut niveau (HLR). Les exigences logicielles dérivées des exigences système : ce que le logiciel doit faire, sans figer la conception interne.
3. Exigences de bas niveau (LLR) et architecture logicielle. Les exigences détaillées à partir desquelles le code source peut être écrit directement, ainsi que l'architecture qui les organise.
4. Code source. L'implémentation, développée à partir des exigences de bas niveau.
5. Cas de test, procédures et résultats. Les preuves de vérification qui montrent que les exigences sont satisfaites, y compris les résultats de l'exécution des tests et l'analyse de couverture associée.
Chaque maillon de cette chaîne doit être documenté. Une exigence de haut niveau se relie vers l'aval aux exigences de bas niveau qui la décomposent ; chaque exigence de bas niveau se relie au code qui l'implémente ; chaque exigence se relie aux cas de test qui la vérifient et aux résultats de leur exécution. Lue dans l'autre sens, chaque ligne de code et chaque test devraient se relier vers l'amont à une exigence qui justifie leur existence.
La traçabilité bidirectionnelle signifie que les liens de trace peuvent être suivis dans les deux sens, et que ces deux sens sont complets :
La bidirectionnalité est importante parce que les deux sens détectent des problèmes différents. La traçabilité descendante détecte les omissions : des exigences jamais implémentées ou jamais testées. La traçabilité ascendante détecte les ajouts : un comportement présent dans le code mais qu'aucune exigence n'a demandé. Les deux sont des enjeux de sécurité dans un système embarqué, et la DO-178C attend explicitement que les données de trace permettent l'analyse dans les deux sens. Lorsqu'une exigence change, des liens bidirectionnels complets sont aussi ce qui rend l'analyse d'impact exploitable : on voit immédiatement quels éléments de conception, unités de code et tests sont affectés.
La traçabilité est vérifiée, pas seulement déclarée. La vérification DO-178C combine revues, analyses et essais, et la traçabilité sous-tend les trois.
Plus le DAL est élevé, plus cette vérification doit être réalisée avec indépendance, c'est-à-dire par une autre personne que l'auteur de l'élément vérifié.
La DO-178C est accompagnée de quatre suppléments technologiques. Ils ne remplacent pas la norme de base : ils expliquent comment ses objectifs s'appliquent lorsqu'une technique particulière est employée, et ils portent leurs propres attentes de traçabilité.
Quels que soient les suppléments applicables, l'obligation de traçabilité sous-jacente ne disparaît pas : modèles, artefacts générés et spécifications formelles doivent tous continuer à se relier vers les données du cycle de vie environnantes et depuis elles.
Beaucoup d'équipes commencent à tracer les artefacts DO-178C dans des documents de traitement de texte et des tableurs, et nombre d'entre elles découvrent tard dans le programme que cela ne passe pas à l'échelle. Les problèmes récurrents sont :
L'alternative consiste à conserver les exigences, la conception, les références de code et les artefacts de test comme des items liés au sein d'un seul modèle connecté, de sorte qu'un lien de trace soit une relation vivante plutôt qu'un identifiant recopié. Les requêtes bidirectionnelles et l'impact du changement viennent alors gratuitement, et la preuve de certification devient un rapport généré à partir du modèle plutôt qu'un document assemblé à la main.
C'est la capacité de suivre les liens de trace dans les deux sens, ces deux sens étant complets. La trace descendante va de chaque exigence vers la conception, le code et les tests qui la satisfont, prouvant que rien n'est resté non implémenté ou non testé. La trace ascendante va de chaque élément de code ou test vers l'exigence qui le justifie, prouvant que rien d'involontaire n'a été ajouté. La DO-178C attend que les données de trace permettent l'analyse dans les deux sens.
Les niveaux d'assurance de conception (DAL) A à E classent le logiciel selon la gravité de la condition de panne à laquelle il pourrait contribuer. A est catastrophique, B dangereux, C majeur, D mineur et E sans effet sur la sécurité. Le nombre d'objectifs applicables et l'indépendance requise augmentent avec la criticité : les niveaux les plus élevés exigent l'ensemble complet des objectifs, tandis que les niveaux inférieurs en appliquent progressivement moins.
Oui, sur le fond. La DO-178C est publiée par la RTCA et l'ED-12C est son équivalent européen identique publié par l'EUROCAE. Elles partagent les mêmes objectifs et le même texte : la conformité à l'une vaut conformité à l'autre. La FAA et l'EASA acceptent toutes deux la DO-178C / ED-12C comme moyen de conformité pour le logiciel embarqué.
Ils expliquent comment les objectifs de la DO-178C s'appliquent à des techniques précises. La DO-330 couvre la qualification des outils logiciels, la DO-331 le développement et la vérification fondés sur les modèles, la DO-332 les technologies orientées objet et techniques associées, et la DO-333 les méthodes formelles. Ils ajoutent des recommandations propres à chaque technique sans supprimer l'obligation de traçabilité sous-jacente.
Parce que les liens de trace deviennent des identifiants recopiés plutôt que des relations vivantes. Les exigences sont renumérotées et les références se périment, les liens ascendants sont négligés si bien que le code non voulu se cache, et il n'existe aucun moyen automatique de connaître le périmètre de revérification quand une exigence change. Conserver exigences, conception, code et tests comme des items liés dans un seul modèle connecté maintient la trace cohérente et fait découler automatiquement les requêtes bidirectionnelles et l'impact du changement.
Nous construisons un espace Koddex avec vos modèles et votre vocabulaire, sur votre dossier réglementaire, puis nous le parcourons en direct avec votre équipe. Gratuit, 30 minutes.
Réserver ma démo sur mesure →Verbatims : ce que les équipes hardware disent de Koddex.