Projet : LANDE

previous up next contents
Précédent : Domaines d'applications Remonter : Conception et validation de logiciels Suivant : Résultats nouveaux


   
Logiciels

 

 

Résumé :

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 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 $ \lambda$Prolog.

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 $ \lambda$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), $ \lambda$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 $ \lambda$Prolog

Correspondant: Olivier Ridoux

Le compilateur de $ \lambda$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 $ \lambda$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 $ \lambda$Prolog (et vice-versa). Il constitue un système flexible qui permet la coopération de modules écrits en $ \lambda$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 $ \lambda$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]]).



Footnotes

... Precc[*]
P.T Breuer et J.P. Bowen. A PREttier Compiler-Compiler: Generating higher order parsers in C, Technical Report PRG-TR-20-92, Oxford University Computing Laboratory, Wolfson Building, Parks Road, Oxford, UK, novembre 1992.
... Solver[*]
Ilog Solver est une marque déposée de Ilog S.A.


previous up next contents
Précédent : Domaines d'applications Remonter : Conception et validation de logiciels Suivant : Résultats nouveaux