Mon programme est-il correct ?

Ariane 501

Le 4 juin 1996, le premier vol de la fusée Ariane 5 se termina après 37 secondes par la perte de contrôle de l'engin, suivie de son explosion.

Après analyse des enregistrements des paramètres de vol et du logiciel de commande, cet accident fut attribué à une conception fautive du logiciel de recouvrement d'erreurs dans le module de navigation. Ce module était dupliqué pour faire face à une possible défaillance. Après 37 secondes, une défaillance irrécupérable survint dans le module de secours, qui fut mis hors service. Une fraction de seconde plus tard, la même défaillance se produisit dans le module actif. La défaillance simultanée des deux modules était une situation non prévue, qui donna lieu à une réaction inappropriée : des données de diagnostic d'erreur furent envoyées sur l'entrée des commandes des gouvernes. Ces données, incohérentes dans ce contexte, déclenchèrent un braquage à fond des propulseurs, qui provoqua la désintégration de l'engin et son autodestruction.

Ariane 501

Explosion d'Ariane 501


Les causes de la défaillance initale peuvent être très schématiquement résumées comme suit :

  • Un dispositif de calibrage utilisé dans la fusée Ariane 4 avait été laissé actif, alors qu'il n'était pas utilisé dans Ariane 5.
  • Les conditions de vol étant différentes entre Ariane 4 et Ariane 5, la valeur d'une donnée traitée par ce dispositif se trouvait, dans Ariane 5, dépasser les limites prévues pour Ariane 4.
  • Ce dépassement avait une probabilité jugée négligeable de survenir dans Ariane 4 et aucune récupération d'erreur n'était prévue pour le traiter.
  • En conséquence, selon une politique “normale” dans ce cas de figure, le module de navigation fut mis hors service pour erreur irrécupérable.
  • Le module actif et le module de secours étant identiques et contenant le même logiciel, les mêmes causes produisirent les mêmes effets sur les deux modules, donnant lieu à une situation non prévue. En effet, le module de secours était destiné à compenser une erreur transitoire et aléatoire d'origine matérielle, erreur dont la probabilité était jugée suffisamment faible pour exclure dans la pratique une défaillance simultanée des deux modules.

 


L'accident résulta donc de plusieurs fautes de conception :

  • analyse incorrecte de la transition entre Ariane 4 et Ariane 5.
  • non récupération d'une erreur due à une valeur de donnée hors limites.
  • non prise en compte de la possibilité d'occurrence d'une faute d'origine logicielle, qui, par construction, touche simultanément le module actif et le module de secours.

Le logiciel du module de navigation fut analysé a posteriori par un outil de vérification utilisant l'interprétation abstraite. Si un tel outil avait été utilisé, la faute initiale aurait été détectée et aurait donc pu être corrigée.