![]()
Précédent : Domaines d'applications Remonter :
Conception et validation de logiciels
Suivant : Résultats nouveaux
Le projet Lande réalise un effort de développement important
dans les deux catégories citées dans la présentation générale de
nos objectifs («amont» et «aval»). Nous détaillons ici le
prototype de générateur de suites de test CASTING
développé en collaboration avec AQL,
COCA un débogueur automatisé pour le langage
C et le compilateur de
Prolog.
Générateur de suites de test CASTING
Correspondant: Lionel Van Aertryck
La méthode de génération de suites de test définie dans la thèse de Lionel Van Aertryck [[13]] a conduit à la réalisation d'un prototype en collaboration avec la société AQL. La méthode elle-même est décrite dans le module 6.1.8; nous nous focalisons ici sur sa mise en oeuvre et les fonctionnalités du prototype.
Nous avons utilisé deux outils principaux pour l'implantation
de CASTING qui sont Precc
(un
compilateur de compilateur permettant de calculer des attributs
hérités et synthétisés) et le solveur de contraintes Ilog
Solver
. La version actuelle
comporte un seul frontal dédié au langage de spécification de la
méthode B (cf. module 6.1.8). Le prototype est constitué
d'une partie générique qui regroupe tous les traitements internes
(élimination des spécifications de cas de test insatisfiables,
génération du graphe d'états symboliques, génération des
hypothèses de test et des suites de test, etc.) et une partie
liée à la spécification pour laquelle le testeur souhaite
engendrer des suites de test (frontal).
Avec ce prototype l'utilisateur a accès à un environnement de génération de suites de test qui lui permet de définir une stratégie de test et de l'appliquer à des spécifications écrites dans un sous-ensemble de B. L'utilisateur dispose de différents moyens de contraindre la recherche de solution (temps alloué au solveur, taux de couverture, etc.) ainsi que la possibilité d'interagir avec le solveur de contraintes de manière à l'orienter directement vers des solutions.
Le développement a été réalisé sous Solaris 2 et il intègre
des codes C, C++ (algorithmes de recherche de chemins et de
génération de données),
Prolog (mise
sous forme normale disjonctive) et tcl/tk (interface graphique).
L'interface réalisée permet d'assister le testeur dans toutes les
phases de la génération des suites de test (choix d'une
stratégie, paramétrage et aide à la résolution, visualisation de
la couverture obtenue, etc.).
Pour plus de renseignements concernant cet outil et son état d'avancement, on peut se reporter à l'adresse : http://www.irisa.fr/lande/vanaertr/bcasting.html ou contacter Lionel Van Aertryck (vanaertr@irisa.fr).
Débogueur COCA
Correspondant: Mireille Ducassé
COCA est un débogueur automatisé pour C où le mécanisme des points d'arrêt est basé sur des événements relatifs à des constructions du langage. Ces événements ont une sémantique, alors que les lignes du code source utilisées par la plupart des débogueurs n'en ont pas.
Une trace est une séquence d'événements. Elle peut être vue comme une relation d'ordre sur une base de données. Les utilisateurs peuvent spécifier exactement les événements qu'ils veulent voir en précisant des valeurs pour les attributs des événements. À chaque événement, les variables visibles peuvent être investiguées. Le langage d'interrogation de trace est Prolog augmenté de quelques primitives.
Le mécanisme d'interrogation de trace cherche dans la trace d'exécution en utilisant à la fois des informations sur le flot de contrôle et sur les données alors que les débogueurs effectuent habituellement leur recherche de manière exclusive en fonction du contrôle ou en fonction des données.
Contrairement aux débogueurs totalement relationnels qui utilisent effectivement une base de données, le mécanisme d'interrogation de trace de COCA repose sur une analyse à la volée: il ne nécessite donc aucun stockage.
COCA est donc plus puissant que les débogueurs dont les points d'arrêt sont des lignes du code source et plus efficace que les débogueurs relationnels [[31]].
Un prototype est opérationnel sous SunOS 5.6 Solaris, avec GCC et GDB ainsi que le système Prolog Eclipse 3.5.2. Il intègre des codes C, ML, Prolog et 2100 lignes de grammaire Bison. Quant à l'intégration de GDB, 400 lignes ont été ajoutées et une cinquantaine modifiées parmi les 221800 lignes de C existantes.
Pour plus de renseignements concernant COCA on peut contacter Mireille Ducassé (ducasse@irisa.fr).
Compilateur
Prolog
Correspondant: Olivier Ridoux
Le compilateur de
Prolog développé à
l'Irisa représente un investissement de plusieurs années (à
l'origine dans le projet MALI). Son schéma est
fondé sur un modèle à continuations [BR93] et sur
la mémoire Mali [Rid91]. Ce système,
appelé Prolog/Mali, implémente le langage
Prolog complet, plus des facilités comme
l'ordonnancement dynamique des buts (freeze), les
captures de continuations (d'échec et de succès), et l'appel de
procédures C depuis
Prolog (et
vice-versa). Il constitue un système flexible qui permet la
coopération de modules écrits en
Prolog
et en d'autres langages. Ce trait est couramment employé dans les
applications un tant soit peu complexes. Le système comporte
aussi un traceur symbolique et un profileur. Ce système a été
développé sous Solaris 1 (SunOs 4) puis porté sous
Solaris 2 (SunOs 5). Il est disponible sous
FTP (ftp://ftp.irisa.fr/local/pm). Les logiciels
Mali et Prolog/Mali ont été déposés à l' APP
(numéros 87-12-005-01 et 92-27-012-00) et sont munis d'une
documentation.
Le compilateur
Prolog est employé en
enseignement, dans des applications de projets de l'Irisa, et
dans d'autres laboratoires plus ou moins distants. Parmi les
applications les plus notables, on peut citer: la reconnaissance
de partitions d'orchestre (Irisa, projet IMADOC),
la coopération entre agents intelligents ( SEPT,
Caen), la recherche de composants systèmes (Irisa, projet
SOLIDOR), la transformation de grammaires
attribuées (Irisa, projet LANDE) et le compilateur
Prolog/Mali, lui-même écrit en Prolog/Mali et en C et C/Motif.
Une équipe de l'université d'Édimbourg l'utilise pour le
développement d'un démonstrateur automatique pour une logique
d'ordre supérieur.
Pour tout renseignement concernant Mali ou Prolog/Mali, le point de contact à l'Irisa est Olivier Ridoux (ridoux@irisa.fr, voir aussi [[9],[3]]).