80 likes | 324 Views
Caveat . Un outil d’ analyse statique (synthèse de propriétés) de preuve de propriétés de logiciels écrits en langage C ANSI, utilisé dans l’industrie : Airbus , EdF Jacques.Raguideau@cea.fr. Plan de la présentation . Utilisation chez Airbus Utilisation chez EdF
E N D
Caveat • Un outil • d’analyse statique (synthèse de propriétés) • de preuve de propriétés • de logiciels écrits en langage C ANSI, • utilisé dans l’industrie : Airbus, EdF • Jacques.Raguideau@cea.fr
Plan de la présentation • Utilisation chez Airbus • Utilisation chez EdF • Démonstration de l’outil • Évolutions en cours • Questions
Utilisation chez Airbus • Objectif : Trouver des erreurs au plus tôt en cours de développement • pour réduire les coûts et les délais, sans attendre de pouvoir les tester • Utilisation : • Preuve des fonctions C dès qu’elles sont écrites et spécifiéesSuppression des tests unitaires • Mise en œuvre en plusieurs étapes : • Étude et expérimentation de la technologie • Adaptation au contexte • Expérimentation sur l’A380 (réduction des coûts et délais) • Déploiement sur d’autres réalisations (par exemple l’A400M)
Utilisation chez EdF • Objectif : Constitution de dossiers de sûreté • Utilisation : • Identification de menaces : • division par zéro, indices de tableau hors bornes,… • code mort • Contrôle de la propagation des fautes • Mise en œuvre en plusieurs étapes : • Étude et expérimentation de la technologie • Adaptation au contexte • Utilisation opérationnelle sur des systèmes de sûreté du nucléaire • Déploiement au sein d’EdF et chez des sous-traitants
Démonstration • Synthèse automatique de propriétés : • Opérandes cachés • Pré-conditions (menaces ) • Preuve de propriétés : • Post-conditions • Pré-conditions • Invariants de boucle • Assertions • Transformation interactive de prédicats
Traitement des menaces • Synthèse automatique : • Invariants trop forts non établis avant les boucles échec ou report sur le contexte d’utilisation • Formules trop complexes pour être simplifiées automatiquement • Besoin d’interventions de l’utilisateur : • Donnée d’invariants de boucle • Introduction de coupures (assertions intermédiaires, pré-conditions) • Transformation interactive des conditions générées
Limitations actuelles • C ANSI • Pas d’alias • Pas d’allocation dynamique de mémoire • Pas de fonctions récursives • Pas de pointeurs de fonction • ~ règles de programmation des systèmes de sûreté
Évolutions en cours • Introduction de l’interprétation abstraite pour : • Traitement des alias • Synthèse d’invariants • Passer une difficulté par un calcul approché (sur certains treillis ; interprétation abstraite) et revenir ensuite sur des calculs exacts (sur prédicats ; Hoare) • Objectifs : • Traiter les pointeurs • Réduire le nombre de fausses menaces • Réduire les interactions