Avions et Informatique embarquée : « plus un système est complexe moins on voit ses limites »

Alors que se poursuit l’enquête sur le crash, début juin, du vol Air France 447, certains évoquent la possibilité d’une défaillance informatique. L’occasion de revenir, avec Cyrille Comar, directeur exécutif de l’éditeur AdaCore, spécialiste du développement logiciel critique pour l’embarqué. Cyrille Comar participe en outre à l’élaboration du standard qui devra succéder au DO-178B relatif au logiciel de l’avionique.

Dans un entretien accordé à nos confrères de Metro, Sylvain Maier, avocat de l’association des victimes du vol AF447 évoque un possible «  bug de l’ordinateur de bord » généré par « un problème sur les sondes Pitot ». Une hypothèse déjà relevée par nos confrères du Wall Street Journal. Mais justement, quelle place le développement logiciel pour systèmes critiques, comme l’avionique, laisse-t-il à de possibles bugs ? Cyrille Comar est directeur exécutif d’AdaCore, un éditeur d’outils de développement d’applications critiques avec le langage Ada : « contrôle aérien, avionique, nucléaire, systèmes d’arme, etc. Ada a été conçu pour les systèmes critiques. » Cyrille Comar explique que, pour qu’un avion soit autorisé à voler en Europe ou aux Etats-Unis, son logiciel embarqué doit être certifié suivant un standard international, le DO-178B : « le but est de s’assurer de la fiabilité du code. » Un processus qui va au-delà de la simple chasse aux bugs et exige notamment une tracabilité du code au fil de son développement pour s'assurer « du respect d’exigences de haut ou de bas niveau ». Des exigences fixées à la conception de l’avion par les équipes d’ingénierie et qui touchent donc aux capacités opérationnelles de l’appareil. Ce standard, que Cyrille Comar décrit comme « très pragmatique » impose en outre « des niveaux d’exigence vis-à-vis du test logiciel et de l’ampleur du code couvert en fonction du niveau de criticité. » Et, plus les « conditions [d’exécution d’un branchement algorithmique] sont complexes, plus l’on fait de tests. » 

Un standard en cours de révision 

Le standard DO-178B est en cours de révision, dans le cadre des travaux d’un comité international ouvert qui se réunit « depuis 4 à 5 ans ». Une démarche tellement ouverte qu’elle vient de donner à une initiative open-source baptisée Open-DO. « Participent au comité les autorités, les développeurs, les fournisseurs d’outils logiciels, etc. » Leurs travaux visent particulier à moderniser un standard « qui ne couvre pas bien certaines technologies comme le développement orienté objet. Ils impliquent aussi une réflexion sur l’amélioration des protocoles de test avec notamment la mise en oeuvre des méthodes formelles, ces techniques de validation mathématique du code informatique par rapport à ses spécifications.

Des procédures d'urgence irréalistes?

Le rapport préliminaire du Bureau Enquêtes et Analyses (BEA) sur le crash du vol AF447 fait apparaître que l’informatique embarquée, détectant des incohérences de mesure sur les trois sondes anémométriques (tubes Pitot) de l’Airbus A330, a déconnecté les automatismes de vol. En plus, faute de données fiables sur la vitesse de l’appareil, elle a limité le débattement de la dérive et privé l’équipage d’informations essentielles telles que l’enveloppe – les vitesses minimale et maximale pour l’avion continue de voler, notamment. Un processus qui peut inquiéter mais qui se justifie, selon le syndicat Alter représentant les personnels naviguant techniques d’Air France, dont les pilotes : « il y a tellement d’inconnues qu’un remède décidé par le logiciel seul peut être pire que le mal […] les conditions extérieures de température ou de pression de l’air peuvent changer significativement très vite […] Dans ces conditions, on vole ‘aux fesses’, en sentant l’avion. » Et l’on suit une procédure spécifique décrite par Airbus dans le manuel de vol de l’A330, procédure dite d’IAS douteuse, dont Alter juge que « clairement, non, elle n’est pas réaliste sur le plan opérationnel. » Reste que, pour un représentant de ce syndicat, « il y a toujours des vols où il se passe des choses imprévues et… pas à priori réalistes. »

En particulier, le développement orienté objet « faisait un peu peur au monde de l’avionique ; il a longtemps été perçu comme produisant du code plus difficile à tester, voire non déterministe. En outre, il y a un fort besoin de contrôle des bornes temporelles d’exécution des algorithmes. » Et puis, « que veut dire "une couverture de code raisonnable en programmation orientée objet ?" Y a-t-il des vulnérabilités spécifiques ? » En particulier, alors que le risque de dépassement de pile était inexistant en programmation classique, « c’est un nouveau problème que l’on peut rencontrer avec la programmation orientée objet. » 

A cela s’ajoutent aussi des réflexions sur la conception basée sur les modèles, la généralisation du standard aux équipements au sol – « qui sont appelés à communiquer avec l’embarqué » –, ou encore « l’adaptation face aux anomalies qui ont pu être rapportées depuis plus de 15 ans », date à laquelle le standard a été révisé pour la dernière fois. Reste que, « s’il n’existe pas de preuve formelle que le standard couvre toutes les situations, il fonctionne plutôt bien depuis le début. » Au point que d’autres industries s’en seraient inspirées. « 

Un problème d’horizon 

» Mais pour Cyrille Comar, la plus importante question touche à « un problème d’horizon : plus un système d’information grossit et se complexifie, moins on arrive à en voir les limites. » Et c’est vrai aussi avec l’avionique. Dans les premières versions de l’informatique embarquée de l’Airbus A380, il faut compter avec quelque 18 millions de lignes de code, un chiffre « très probablement appelé à doubler voire tripler au fil des évolutions. » Et, pour ne rien gâcher, s’ajoute à cela une ouverture de plus en plus grande de certains systèmes : à priori, l’informatique embarquée de divertissement n’a rien à voir avec l’avionique, « mais il y a de plus en plus d’échanges d’informations, pour l’affichage de l’altitude, du temps de vol restant estimé, etc. Le tout dans un système largement réparti donc plus complexe. » En particulier, « quand le DO-178B a été conçu, il n’y avait pas problème de sécurité logicielle – le soft était flashé en dur et fermé – ; plus le système communique, plus il faut tenir compte de risques de malveillance logicielle ». Reste une question qui touche à la conception des procédures selon lesquelles sont développés les logiciels : « pour chaque panne, il y a un scénario de prévu. Mais lorsque trois pannes s’enchaînent en cascade, il n’est pas sûr que les scénarios vont pouvoir s’imbriquer ; ce n’est pas abordé par le standard. » 

Pour autant il ne faudrait pas désespérer  des systèmes informatiques embarqués dans les avions : malgré leur mise en cause par certains dans des crash récents, les commandes de vol informatiques retenues par Airbus depuis l’A320, et aujourd'hui adoptées par son concurrent Boeing, ont probablement aidé à sauver des avions, à commencer par celui de la compagnie US Airways que son commandant de Bord, Chesley Sullenberger, est parvenu à faire amerrir sur l’Hudson, le long de Manhattan, le 15 janvier dernier.

Pour approfondir sur Architectures logicielles et SOA

Close