Qualité des développements : reculer les limites ?

Pour Joseph Sifakis, directeur de recherches au CNRS, chaire industrielle Schneider-Inria et Prix Turing 2007 : « Les modèles de programmation actuels ne sont pas les bons. »

Vous êtes l’un des précurseurs des recherches sur la vérification des applications critiques : quels sont les problèmes que l’on rencontre dans ce domaine ?

Joseph Sikakis Je suis arrivé en France en 1970, j’étais ingénieur électricien, et j’ai commencé des études en informatique à l’université de Grenoble. Je suis entré en 1973 au CNRS (Centre national de la recherche scientifique). J’ai travaillé dès le début sur les problématiques de vérification.

Pourquoi est-ce important ? Essentiellement parce que l’informatique est une discipline encore jeune, que l’on ne peut comparer à d’autres comme la physique. Toutes les disciplines basées sur la physique permettent de construire des systèmes relativement fiables, ce qui n’est pas le cas en informatique.

Cela peut conduire à des échecs énormes, notamment pour les grands systèmes complexes. Nous avons besoin de méthodes rigoureuses pour garantir le fonctionnement des systèmes. On ne peut pas se limiter aux tests parce que ceux-ci ne peuvent garantir l’exhaustivité de la validation ou de la vérification d’un système. Il y a toujours une part d’incertitude et il faut énormément de temps pour explorer complètement un système.

Quelle différence faites-vous entre un test et une vérification ?

Joseph Sikakis La différence est importante. Le principe de la vérification consiste à construire un modèle du système, d’appliquer un raisonnement mathématique à ce modèle pour garantir qu’il va fonctionner correctement. Si le modèle est fidèle, cela permet la prédictibilité du comportement du système.

En 1982, nous avons débuté nos travaux pour vérifier que les modèles respectent les exigences fonctionnelles d’un système. Par exemple, en avionique, qu’un train d’atterrissage se rentre lors du décollage d’un avion, ou, dans le domaine du logiciel, que celui-ci répond à ce que l’utilisateur attend.

Autrement dit, on a donc, d’un côté, des exigences et, de l’autre, un modèle : lorsque l’on connaît les deux, on explore le modèle et on vérifie mathématiquement qu’à chaque état les exigences sont satisfaites.

Est-ce difficile ?

Joseph Sikakis On constate deux difficultés. La première est liée au vrai challenge de pouvoir construire des modèles fidèles. Seconde difficulté : avoir des méthodes de comparaison, donc de vérification, des propriétés (exigences) du modèle.

Au début des années 1980, nous vérifiions des systèmes qui, aujourd’hui, paraîtraient d’une complexité ridicule. La technologie est devenue mature dans les années 1990. Au début, les machines étaient lentes, nous ne disposions pas de résultats théoriques et pour vaincre la complexité, il fallait parcourir un nombre très important d’états. Pour être efficace, il faut des machines, puissantes, rapides, des bons algorithmes et des méthodes.

Pendant vingt-cinq ans, nous avons développé des techniques de modélisation et des algorithmes efficaces. Nous avons bien sûr été avantagés par l’accroissement de la vitesse des machines. Les premières applications de vérification concernaient les processeurs parce qu’il était relativement facile de construire des modèles mathématiques.

Par contre, pour les logiciels, il a fallu attendre jusqu’à la fin des années 1990. Aujourd’hui, on utilise ces techniques pour les matériels et les logiciels, mais il reste un challenge important : la difficulté de modéliser des systèmes mixtes qui combinent matériels et logiciels.

Quelles sont les failles les plus courantes dans les systèmes ?

Joseph Sikakis à l’origine, les matériels constituaient les premières sources de défaillance. Maintenant, nous avons affaire à un nombre limité d’architectures et les matériels sont relativement fiables. En tout cas beaucoup plus que par le passé, même si cette situation peut évoluer défavorablement.

Avec la miniaturisation, les matériels risquent d’être à nouveau fragiles. Actuellement, ce sont les logiciels qui posent problème : ils sont hétérogènes et les techniques de développement ne sont pas aussi matures que pour les matériels. Les difficultés naissent lorsque les matériels interagissent avec les logiciels, même si l’état de l’art progresse.

Autrefois, les systèmes, par exemple les mainframes, étaient relativement isolés mais, aujourd’hui, ils sont de plus en plus ouverts. La technologie a évolué plus rapidement que notre savoir-faire en intégration. Ceux qui construisent les systèmes doivent penser non seulement aux bonnes fonctionnalités mais également aux interactions des systèmes, en prenant aussi en compte les contraintes de débit, de temps réel et de qualité de service : c’est une question qui ne se posait pas avec les systèmes fermés.

A quelles conditions peut-on construire des modèles fiables ?

Joseph Sikakis Pour construire des modèles fidèles, il faut se fixer des restrictions, qui vont permettre qu’un logiciel, par construction, soit vérifiable. Une certaine discipline dans la structuration s’impose. Cela dit, on sait bien qu’il existe des systèmes moins robustes que d’autres.

C’est une question de coût : celui de la ligne de logiciel pour concevoir un avion est sans commune mesure avec celui de la ligne d’un logiciel ordinaire. Simplement parce qu’il faut appliquer des méthodologies qui font que la programmation s’avère beaucoup plus coûteuse. Les logiciels critiques, eux, ne sont pas développés selon les mêmes méthodes que les logiciels de type « best effort ». Exemple : les logiciels dans le domaine des télécommunications sont développés dans cette logique de « best effort ».

Si le réseau a une défaillance, le système « fera de son mieux » pour satisfaire les exigences, mais si il n’y parvient pas, tant pis… En revanche, pour un système critique, cela peut coûter très cher, y compris en vies humaines.

La notion de criticité n’est d’ailleurs pas uniquement technologique, elle peut être business. Par exemple, pour un fabricant de microprocesseurs, un développement bogué est susceptible de mettre en péril l’existence même de l’entreprise. Intel a ainsi créé un laboratoire de vérification après les incidents qu’a connus le Pentium en 1994..

Ce principe de vérification ne peut-il pas s’appliquer à tous les logiciels ?

Joseph Sikakis Non, car il existe une limitation pour pouvoir appliquer les techniques de vérification : le problème de la complexité et de la modélisation.

Pour les systèmes complexes comme le Web ou même certains systèmes d’exploitation, on ne sait pas comment ils sont construits, probablement de façon anarchique. On n’en connaît donc pas le degré de complexité et ces systèmes complexes sont développés par itérations, par couches : on constate donc des interférences entre les différentes couches et les développements les plus anciens, alors que ces systèmes auraient dus être construits avec des briques, à l’image des immeuble ou des circuits électriques. Les impératifs de coûts font que les systèmes sont développés trop rapidement.

Par exemple, dans le domaine des télécommunications, les ingénieurs connaissent bien l’effet dit de « feature interaction ». Un logiciel, pas très complexe, est intégré à un réseau et il interagit avec le reste des éléments du système et, s’il n’a pas été développé avec des méthodes structurées, l’interaction peut créer des dysfonctionnements.

Quel est selon vous le système le plus complexe ?

Joseph Sikakis Il n’y a pas de système « le » plus complexe. Tout dépend de la manière de mesurer la complexité et des exigences que l’on s’impose. Aujourd’hui, plus de 95 % des processeurs sont enfouis, embarqués. Il en existe des dizaines dans les voitures ou les appareils numériques. Ce que l’on ne voit pas est bien plus important que ce que l’on voit.

Quel est le challenge ? L’’intégration des systèmes ! Ainsi, le Web constitue un système gigantesque, un moyen d’accès à des documents et des connaissances. Et deviendra un système encore plus complexe avec le « Web des objets » (Web of things), l’idée étant d’utiliser la même technologie (le protocole IP) pour accéder à des documents mais aussi à des objets…

Cela signifie que le Web doit assurer des services robustes et sera un système ultracomplexe, avec de multiples sous-systèmes. Or, le risque, lorsque l’on fait communiquer des systèmes de fiabilités différentes, est que l’un, le moins fiable, « contamine » les autres.

On ne parviendra jamais à fiabiliser toutes les infrastructures, le challenge sera de faire coopérer les systèmes critiques avec les autres en évitant des dégâts. Et de bâtir des systèmes à des prix abordables. Autrement dit, par exemple, incorporer les technologies des avions dans les voitures pour assurer une meilleure sécurité. Pour l’heure, les coûts restent très importants et les constructeurs automobiles qui ont souhaité s’engager dans cette voie ont abandonné, du fait de coûts dissuasifs.

Parvenir à des coûts abordables est-il quand même possible à terme ?

Joseph Sikakis Oui, c’est possible. La fiabilité excellente des systèmes avioniques peut se décliner pour des systèmes de taille plus modeste, par exemple pour la télémédecine. Le challenge, répétons-le, est d’intégrer des systèmes hétérogènes. Et il se peut que l’on ne parvienne pas à intégrer au-delà d’une certaine limite.

Exemple de système de systèmes que l’on ne parvient pas à réaliser : le contrôle aérien de nouvelle génération. Les Américains travaillent sur ce dossier depuis les années 1980 et ont dépensé plusieurs milliards de dollars. Le problème est une gestion optimale de l’espace aérien.

Aujourd’hui, il est géré statiquement : un avion décolle avec une route prédéfinie : son départ retardé peut entraîner le retard d’autres avions, ce qui est loin d’être une méthode optimale de gestion ! L’idée était de donner une autonomie à l’avion et à son pilote de sorte que la route soit recalculée dynamiquement en fonction des routes des autres avions. Mais, pour l’heure, on ne peut pas garantir la robustesse globale de ce « système de systèmes ».

Les méthodes de vérification pour les systèmes critiques peuvent-elles se décliner pour les systèmes d’information de gestion ?

Joseph Sikakis L’idée fait son chemin, on la retrouve dans le génie logiciel, avec des principes de structuration et les notions de composants logiciels. Tous les logiciels complexes sont construits à partir de composants : c’est un premier pas vers la vérification. à mon avis, les modèles de programmation actuels ne sont pas les bons et ne permettent pas aux ingénieurs une bonne maîtrise de ce qu’ils font, surtout lorsqu’il faut prendre en compte des exigences de sûreté et de sécurité. La productivité est certes un critère important et tout est question de compromis.

Vous avez reçu le Prix Turing, décerné par la prestigieuse ACM (Association for Computing Machinery) : comment jugez-vous la recherche américaine ?

Joseph Sikakis Il y a incontestablement une suprématie américaine dans le domaine de la recherche en informatique. Par rapport à la France, les différences sont énormes : la R&D américaine est très puissante et les institutions de recherche (MIT, Carnegie Mellon, Berkeley…) réalisent la meilleure recherche fondamentale et, surtout, couvrent tout le spectre, jusqu’à la recherche appliquée.

Ces établissements sont des véritables machines de guerre, caractérisées par une étroite collaboration avec les industriels et un recrutement des meilleurs chercheurs et étudiants. Même lorsque ce sont les Européens qui trouvent des résultats, ce sont souvent les Américains qui les transforment en technologies commerciales.

En revanche, l’un des grands avantages du système français est que l’on peut travailler dans la continuité sans être perturbé par les modes. La France a besoin d’organismes de recherche, tant que les universités ne sont pas suffisamment fortes et que l’industrie manque de capacités.

Les pays émergents acquièrent-ils des compétences pointues ?

Joseph Sikakis Le modèle est plutôt d’inspiration américaine, c’est très clair en Chine : les Chinois cherchent à mettre en place des établissements puissants et autonomes, avec des moyens pour attirer les chercheurs d’origine chinoise implantés aux états-Unis. Je suis très impressionné par les progrès de la Chine et de l’Inde.

Ces pays produisent des ingénieurs de très bonne qualité avec un coût du travail compétitif. Potentiellement, c’est une menace.

Les Américains vous ont-ils fait des offres pour que vous alliez travailler outre-Atlantique ?

Joseph Sikakis Il y a eu des opportunités mais je préfère travailler en France.


Les principes du Model Checking

Le concept de Model Checking, issu de la recherche fondamentale, est désormais devenu une procédure standard pour garantir la qualité. Il a permis aux concepteurs et industriels de mettre au point des processus de vérification des problèmes qui touchent les matériels et les logiciels. Il a également autorisé les industriels à valider mathématiquement le fait que leurs systèmes complexes tiennent compte de leurs spécifications tout en renforçant la sécurité autour de leurs applications communes et critiques.