1,33333333
une approximation qui peut coûter cher !
Contraints de tronquer des nombres pour les intégrer dans leur processus de traitement, certains logiciels créent à cette occasion des erreurs parfois désastreuses et souvent sous-estimées. Fluctuat, un logiciel développé par une équipe du CEA/LIST, traque ces pièges et aide les concepteurs à trouver les sources d'erreur.
Faut-il vraiment se tracasser pour une septième décimale après la virgule ? Dans la vie courante, pas vraiment. Mais en informatique, où la représentation des nombres est approximée, la question mérite d'être posée. Car si ce nombre est traité à de nombreuses reprises par un logiciel de calcul numérique (exemple : une donnée d'entrée acquise périodiquement dans un système opérant en continu), l'addition des imprécisions peut avoir des effets dévastateurs.
"Ces dernières années, on a cité des missiles qui ont raté leur cible, une plate-forme pétrolière sous dimensionnée qui s'est abmée en mer, des rappels produits à très grande échelle, énumère Eric Goubault, du CEA/LIST. Malgré la robustesse des algorithmes de contrôle, l'impact potentiel des erreurs dues aux approximations s'accroît car la taille des codes et la vitesse des traitements augmentent."
Dans le domaine des applications critiques pour la sécurité, le problème se pose en particulier lors de la phase de certification ; raison pour laquelle le LIST collabore avec des industriels du nucléaire et de l'aéronautique. Mais le logiciel Fluctuat intéresse aussi des secteurs fortement exposés à la pression du client et du marché : rien de pire pour ternir une image qu'un logiciel au comportement erratique.
En pratique, Fluctuat prend en compte le code source de l'application, le modélise, en déduit les propriétés de calcul numérique et identifie les erreurs de précision induites par les nombres à virgule flottante, fixe, ou les incertitudes des entrées. Il détermine pour chaque variable les lignes de programme responsables de l'imprécision de calcul.
Conçu pour ne laisser passer aucune erreur, l'outil peut être pessimiste. Il faut ensuite interagir avec lui pour écarter les éventuelles fausses alarmes. "Les développeurs savent alors quand leur code est juste et ont une vision complète de ce qui doit être éventuellement réécrit."
L'idéal est bien sûr de mener ces investigations en cours de développement, voire avant pour intégrer certains principes de codage. Fluctuat peut aussi scruter des applicatifs déjà en service.
A ce jour, le LIST dispose d'un "quasi-produit" proposé dans le cadre de contrats de recherche : "nous formons les utilisateurs, nous les aidons dans l'interprétation des résultats et nous revenons si nécessaire."
Ces collaborations seront poursuivies car ce type de détection d'erreurs s'appuie sur un état de l'art très récent. En parallèle, le laboratoire cherche à transférer sa technologie vers un éditeur. "Nous travaillons encore sur des améliorations, par exemple l'évaluation précise de l'impact des erreurs, ou la modélisation du monde physique dans les boucles de contrôle commande, pour mieux modéliser les valeurs des variable d'entrées."