Thèse soutenue

Application des specifications algebriques a la retro-ingenierie de codes fortran

FR
Auteur / Autrice : Nicola Williams
Direction : Michel Bidoit
Type : Thèse de doctorat
Discipline(s) : Sciences et techniques
Date : Soutenance en 2000
Etablissement(s) : Cachan, Ecole normale supérieure

Résumé

FR

Nous proposons une methode de retro-ingenierie de vieux codes fortran77 a l'aide de specifications algebriques : une specification concrete decrit les structures de donnees specialisees et les algorithmes efficaces du code et une specification abstraite decrit la finalite du calcul dans les termes du domaine d'application. Les deux sont liees par des specifications intermediaires integrant un par un les choix successifs d'implementation qui expliquent le passage de la specification abstraite a la specification concrete. La construction de la specification concrete est rendue difficile par de nombreuses caracteristiques de fortran77, largement exploitees par les programmeurs de l'epoque. Nous proposons diverses analyses et transformations du code et notamment une methode d'inference automatique des profils des operations specifiant les sous-programmes fortran. La specification abstraite est une description de la comprehension intuitive du code acquise par le retro-ingenieur pendant la partie de l'analyse qui doit etre effectuee a la main. La specification concrete doit etre suffisamment proche du code pour assurer qu'elle en est une description exacte et la specification abstraite doit etre justifiee par une comparaison avec la specification concrete. Pour des raisons pratiques, l'elaboration des specifications et la justification de la specification abstraite sont effectuees sur un fragment a la fois du code entier. Les abstractions que nous desirons exprimer ne satisfont pas toujours l'inverse de la relation d'implementation correcte entre les deux specifications du fragment de code. C'est pourquoi nous proposons une nouvelle relation, appelee abstraction correcte, entre specifications algebriques. Nous avons teste notre methode sur de nombreux exemples extraits de codes reels fournis par edf et presentons les specifications concrete et abstraite, ainsi que les sept specifications intermediaires, du fragment de code qui constitue notre exemple principal.