# DO-178

Les normes ED-12C et DO-178C (Software considerations in airborne systems and equipment certification) développées en commun et éditées respectivement par EUROCAE et RTCA Inc., fixent les conditions de sécurité applicables aux logiciels critiques de l'avionique dans l'aviation commerciale et l'aviation générale. Elles précisent notamment les contraintes de développement liées à l'obtention de la certification d'un logiciel d'avionique.

## Définition des niveaux de criticité

Elles présentent 5 niveaux de criticité (de A à E) définis comme suit :
* Niveau A : Un défaut du système ou sous-système étudié peut provoquer un problème catastrophique - Sécurité du vol ou atterrissage compromis - Crash de l'avion
* Niveau B : Un défaut du système ou sous-système étudié peut provoquer un problème dangereux entraînant des dégâts sérieux voire la mort de quelques occupants
* Niveau C : Un défaut du système ou sous-système étudié peut provoquer un problème majeur entraînant un dysfonctionnement des équipements vitaux de l'appareil
* Niveau D : Un défaut du système ou sous-système étudié peut provoquer un problème mineur sans effet sur la sécurité du vol
* Niveau E : Un défaut du système ou sous-système étudié peut provoquer un problème sans effet sur la sécurité du vol
Ces 5 niveaux sont aussi appelés niveaux DAL (Design Assurance Level).
Les Niveaux sont établis par les études de sûreté de fonctionnement. Ces études fixent alors le niveau DAL pour le matériel et le logiciel conformément aux normes de sécurité (Eurocae ED-79 et SAE ARP4754 "Certification considerations for Highly-Integrated and Complex Aicraft Systems") ou directives de l'avionneur (ABD100, ABD200,...). Le niveau DAL d'un sous-système peut être différent du niveau système à la condition que le niveau DAL du système soit atteint par une architecture matérielle/logicielle adéquate.

## Objectifs à atteindre

Plus le niveau de criticité est proche du niveau A, plus le nombre d'objectifs à tenir est élevé. Ainsi :
* Niveau E :
** Le développement logiciel n'est soumis à aucune contrainte particulière.
* Niveau D :
** Le logiciel doit être documenté ; la liste de documents à fournir est fixée par la norme (voir plus bas).
** Préalablement au développement, des plans doivent être établis pour fixer les méthodes de développement, de vérification, de gestion de configuration, d'assurance qualité.
** Il faut assurer et vérifier la traçabilité entre les spécifications du système, les spécifications de haut niveau du logiciel, et les vérifications.
** Tout ce qui est spécifié doit être formellement vérifié : la couverture fonctionnelle doit être assurée. Les documents doivent aussi être formellement vérifiés.
** Le logiciel doit être géré en configuration, par exemple toutes les évolutions du code source doivent être justifiées
** Un service Qualité indépendant doit assurer le respect de la norme en inspectant les sorties du cycle de vie du logiciel.
* Niveau C : en plus des contraintes du niveau D :
** Des règles de développement doivent être fixées au préalable (sur les phases de spécification, conception et codage)
** Les contraintes de traçabilité et de vérification s'appliquent également aux phases de conception et de codage du logiciel.
** Les exigences de bas niveau (ou exigences de conception) doivent être formellement vérifiées.
** La couverture structurelle, ou couverture de code, doit être vérifiée et analysée : toutes les instructions du code doivent avoir été exécutées et testées, tous les écarts doivent être justifiés. Ces contraintes amènent souvent à devoir passer des tests unitaires.
* Niveau B : en plus des contraintes du niveau C :
** La couverture de code au niveau "décision" est requise.
** Les activités de développement et de vérification doivent être confiées à des équipes indépendantes.
* Niveau A : en plus des contraintes du niveau B :
** La couverture de code au niveau "condition"/"décision" est requise.

## Documents à fournir

Les processus liés au développement de logiciels embarqués aéronautiques soumis aux normes ED-12C / DO-178C s'accompagnent de l'édition de plusieurs documents (les titres sont donnés à titre indicatif) :
Avant le développement, phase de planification :
* Plan des aspects logiciels relatifs à la certification : en particulier ce document précise le niveau de criticité retenu, et par quels moyens on prévoit de remplir les objectifs des normes ED-12C / DO-178C
* Plan de développement logiciel
* Plan de vérification du logiciel
* Plan de gestion de configuration du logiciel
* Plan d'assurance qualité du logiciel
* Règles de spécifications du logiciel
* Règles de conception du logiciel
* Règles de codage du logiciel
Concernant le processus de développement proprement dit :
* Spécifications des exigences du logiciel
* Description de la conception du logiciel
Concernant le processus de vérification :
* Cas et procédures de vérification du logiciel
* Résultats de la vérification du logiciel :
** Résultats de tests unitaires
** Résultats de tests d'intégration
** Résultats de tests
** Analyse de la couverture de code
** Revue de chaque document du logiciel
Concernant le processus de gestion de configuration :
* Index de la configuration du logiciel
* Index de l'environnement du cycle de vie du logiciel
Concernant le processus d'assurance qualité :
* Enregistrements relatifs à la qualité
* Compte-rendu de revue de conformité
* Résumé des travaux réalisés

## Évolutions entre la DO-178B et la DO-178C

La norme DO-178B a été publiée en 1992 et est utilisée depuis. En 2004, les groupes de travail EUROCAE WG71 et RTCA Special Committee 205 (SC-205) ont travaillé à sa mise à jour pour clarifier certains points du DO-178B et permettre l'intégration de nouvelles techniques de génie logiciel jugées suffisamment matures pour être utilisées dans les systèmes aéronautiques et leur certification. La section 3 de l'annexe A résume les points principaux qui ont notamment été modifiés ou ajoutés :
* Les aspects relatifs à la qualification des outils ont été retirés du DO-178C et placés dans un document dédié, le DO-330 « Software Tool Qualification Considerations ». Il y a désormais trois catégories d'outils qualifiés (au lieu de 2 dans la DO-178B) et les niveaux de qualification, désormais appelés TQL-1 à TQL-5, ne correspondent plus exactement aux DAL-A à DAL-E.
* De même, les aspects relatifs aux développement basés sur les modèles ont été placés dans un document dédié, le DO-331 « Model-Based Development and Verification Supplement to DO-178C and DO-278A ».
* De même, les considérations spécifiques aux développements orientés objets ont été placés dans un document dédié, le DO-332 « Object-Oriented Technology and Related Techniques Supplement to DO-178C and DO-278A ».
* La place des méthodes formelles dans la certification passe de 2 paragraphes dans le DO-178B à une annexe entière, le DO-333 « Formal Methods Supplement to DO-178C and DO-278A »
* Deux objectifs de certification sont apparus dans les tables aux DAL-A, DAL-B et DAL-C
* La taxonomie utilisée dans le DO-178C a été clarifiée par rapport à celle du DO-178B (nouvelle définition des « exigences dérivées » et du « MC/DC »...)
* Les errata du DO-178B ont été intégrées au DO-178C.
* Les « Parameter Data Item File » sont une nouveauté du DO-178C.

## Révisions du texte

* DO-178 : 01/1982
* DO-178A : 01/03/1985
* DO-178B : 01/12/1992
* DO-178C : 01/05/2012
Une révision du texte a été effectuée le 6 août 2009 par Gilbert Amato, Secrétaire Général d'EUROCAE