Omniprésents dans notre quotidien, les logiciels connaissent quelques fois des bogues. Certains de ces logiciels assurent par exemple les commandes d'un avion. Au CEA, des chercheurs ont développé une technologie innovante pour renforcer la maîtrise de la sûreté des logiciels critiques dans l'industrie.

au sommaire


    Comment renforcer la sûreté des logiciels ?

    Comment renforcer la sûreté des logiciels ?

    Dans les systèmes critiques, l'informatique doit donc être sûre, comme le sont les autres domaines de l'ingénierie (la mécanique, l'électricité, etc.). Cette nécessité est d'autant plus forte au regard de l'informatisation croissante de tous les systèmes qui nous entourent. De fait, dans une automobileautomobile de moyenne gamme actuelle, il y a autant de logiciels que dans une fuséefusée du type ApolloApollo dans les années 60-70.

    Pour s'assurer la sûreté des logiciels critiques, les concepteurs suivent une démarche rigoureuse dans le choix des développeurs (personnel hautement qualifié et expérimenté), des méthodes de développement (choix du langage de développement, du système d'exploitation, etc.) et de la stratégie de vérification.

    Le test est la technique la plus largement utilisée pour la vérification : il consiste à réaliser plusieurs exécutions (on parle alors d'analyse dynamique du logiciel) avec des jeux de données d'entrée estimés représentatifs des cas d'utilisation. Le nombre de tests qu'il faudrait effectuer pour être certain de la vérification du logiciel dépasse les possibilités pratiques (même avec les machines les plus puissantes). On se limite donc au test de cas estimés représentatifs de la réalité d'utilisation du système.

    L'étape de vérification d'un logiciel représente en moyenne la moitié du coût de développement d'un système critique (dans l'aéronautique cela peut aller jusqu'à 80 % du coût). Elle constitue donc un point clé du processus d'industrialisation en terme de maîtrise des coûts et des délais de mise sur le marché. Ces contraintes sont encore accrues par la course à la compétitivité.

    En outre, la correction d'une erreur sur un logiciel coûte infiniment plus cher si elle est détectée tardivement. Une détection précoce d'erreurs peut être faite avant l'étape de test si l'on dispose d'outils d'analyse statique du logiciel, c'est-à-dire sans exécution de celui-ci. Le résultat de l'analyse est valable pour toute exécution du logiciel, quelles que soient les valeurs d'entrée, et non uniquement pour certains jeux de valeurs particulières comme c'est le cas pour le test. C'est précisément sur cette approche que le Laboratoire d'intégration des systèmes et des technologies (List) du CEA a développé une technologie innovante pour renforcer la maîtrise de la sûreté des logiciels critiques dans l'industrie : l'outil Caveat.