Directeur de l'action | Ghassan Chehaibar (Bull) |
Projets INRIA | VASY-RA (Grenoble)
PAMPA (Rennes) |
Personnels INRIA | Hubert Garavel (Chargé de Recherche)
Claude Jard (Chargé de Recherche, CNRS) César Viho (Chargé de Recherche) |
Ingénieur Expert | Mark Jorgensen |
Post-doctorants INRIA | Hakim Kalhouche (à partir d'août 1997) |
Personnels Bull | Massimo Zendri (à partir de juillet 1997) |
En vue d'un transfert technologique dans Bull, notre cible
d'application, depuis 1995, est le développement des
architectures des multiprocesseurs UNIX
conçus par le centre de développement de Bull à Pregnana
(Milan).
Plus particulièrement, depuis 1996, la cible d'application de
l'action VASY est le protocole de cohérence
des caches de l'architecture multiprocesseur CC-NUMA développée a Bull-Pregnana.
Nous utilisons le langage de spécification formelle LOTOS (norme ISO 8807) et la
boîte à outils CADP développée par l'INRIA Rhône-Alpes, Verimag (et intégrant
dernièrement des outils développés à l'INRIA Sophia-Antipolis).
Une nouvelle description formelle en LOTOS
du protocole de cohérence des caches de Polykid a été
réalisée. Cette activité de modélisation a permis de soulever 13
problèmes dans la spécification de référence : 6 hypothèses non
documentées et 7 erreurs de comportement (1 blocage et 7 pertes
de cohérence des caches). Ces erreurs ont été trouvées avant la
phase de tests des composants réels. Fin 96, nous avions déjà
trouvé 1 blocage et 6 autres incomplétudes dans la
spécification.
Les architectes de Polykid ont proposé des solutions aux
erreurs. Ces corrections ont été incorporées dans la description
formelle en cours : puis nous avons vérifié formellement, au
moyen des outils de CADP, qu'elle ne
contenait plus aucune erreur. Pour s'assurer de la précision de
cette description, nous y avons introduit deux des sept erreurs
trouvées et nous avons vérifié que les outils les détectaient.
Nous avons réussi à générer l'automate correspondant en
utilisant les dernières techniques de vérification
compositionnelle introduites dans CADP. Néanmoins, cette description est simplifiée
et réduite à deux modules, et il est nécessaire de traiter des
configurations plus grandes et plus détaillées. Pour cela, nous
travaillons actuellement à :
La boite à outils CADP a été considérablement améliorée, durant 1997 :
Les algorithmes et les interfaces de la première version de TGV_Lotos implémentée durant 96 ont été améliorés pour prendre en compte les caractéristiques de LOTOS et de l'environnement réel de tests. Une série de tests abstraits a été produite à partir de la première spécification formelle du protocole de cohérence de caches de Polykid.
L'outil TGV_Lotos a été installé mi-97 à l'INRIA Rhône-Alpes où l'on maîtrise bien son utilisation maintenant. Dans un premier temps, nous développons une solution qui automatise la pratique actuelle des tests de premier niveau à Bull-Pregnana qui se font en mode batch. Mais, comme l'avantage essentiel de TGV est de permettre des tests interactifs, nous avons l'intention de mettre courant 98 une solution de test interactive qui permettra de réaliser une plus grande couverture de tests (ceci demandera des modifications dans l'environnement actuel de tests de premier niveau de Bull-Pregnana).
Le travail en cours peut se définir en deux points :
Le programme C d'émulation a été réalisé d'abord par traduction d'une spécification LOTOS en C et une importante couche de fonctions directement écrites en C et appelées à partir du programme LOTOS. Quand les tests du prototype ont commencé, le programme obtenu fonctionnait mais sa vitesse d'exécution était très inférieure à ce qui était exigé par l'environnement de tests. Il a fallu réécrire la partie contrôle de LOTOS en C, tout en gardant la partie données de LOTOS. Ceci a divisé le temps d'exécution par 60. Puis le code C obtenu a été optimisé : temps encore divisé par 30. A la fin, le programme source contenait 8000 lignes de C et 1500 lignes de LOTOS.
Néanmoins, les problèmes de vitesse d'exécution du code généré par le compilateur LOTOS, ont entraîné un travail important d'amélioration des performances de CAESAR (le compilateur de LOTOS) qui a aussi bénéficié à la génération d'automates pour la vérification (voir ci-dessus). L'activité de prototypage à partir d'une spécification en LOTOS a soulevé un autre problème : la sémantique de LOTOS est fondée sur le paradigme fonctionnel ; alors que, dans l'émulation, nous avions de grandes structures de données qu'on a besoin de modifier par des fonctions à effets de bord. De plus, nous avions des fonctions qui dépendaient des variables globales de l'environnement, qui étaient donc déclarées constantes en LOTOS. Toutes ces contraintes nous ont obligé à utiliser certaines constructions mal maîtrisées et qui ont compliqué l'écriture du programme LOTOS.
Une expérience de génération automatique de tests pour un
protocole de cohérence de caches
C.Jard, T.Jeron, P.Morel, C.Viho.
Actes de la conférence TESTING'97 sur
le test de logiciels, Paris, juin 1997