previous up next top index
Précédent : Environnement pour Java sous Centaur Remonter : Environnements de programmation Suivant : Environnements de preuve


Tranches de dépendance dans les programmes annotés

Participants : Ranan Fraer, Yves Bertot

Mots-clés : environnement de programmation,spécification formelle,vérification de programme, fiabilité du logiciel,analyse statique

Le calcul de tranches de dépendance (program slicing ) est une technique de plus en plus répandue dans les outils modernes de mise au point. Une tranche de dépendance par rapport à une variable x et un point donné dans un programme est formée par les instructions du programme qui affectent la valeur de x en ce point.

Il serait donc intéressant d'intégrer un calcul de tranches de dépendance dans un environnement de mise au point de programmes vérifiés. L'outil central, dans ces environnements, est un générateur de conditions de vérification à partir d'un programme annoté avec des assertions sur la valeur des variables du programme. Ces conditions logiques sont ensuite vérifiées par des outils de preuve automatique.

Dans le cas des programmes annotés, le critère d'intérêt n'est plus la valeur d'une variable mais la validité d'une assertion logique en un point du programme. Plus exactement, si cette assertion est fausse cela se traduit par l'insatisfiabilité d'une condition de vérification, et on aimerait isoler les instructions à partir desquelles cette condition a été générée.

La mise en pratique de cette idée est basée sur une extension du calcul des origines sur les conditions de vérification [8]. Afin de trouver les instructions qui contribuent effectivement à la génération d'une condition, on considère la réunion des origines de tous les sous-termes de cette condition. Cette approche produit seulement une approximation grossière, mais elle peut être raffinée afin de calculer avec précision un chemin d'exécution dans le programme (les instructions non significatives en moins) associé à la condition. Un aspect intéressant de ce travail est l'utilisation du générateur de conditions pour le calcul des tranches, alors que la méthode usuelle est basée sur des graphes de dépendance.



previous up next top index Précédent : Environnement pour Java sous Centaur Suivant : Environnements de preuve Remonter : Environnements de programmation