Petite étude de cas dérivée du projet BOM

Jeudi 06 juin 2002

1) Description des fichiers

Archive Concernée :
Contenu de l'archive :

2) Description de cette petite étude de cas

Dans le projet BOM, l'étude de cas basée sur la modélisation de la JavaCard était divisée en 2 parties :

C'est lors du développement de cette première partie que nous avons décidé de commencer par faire un programme à part, qui servirait d'exemple de modélisation de l'infrastructure de la machine Objet. Ce projet nous permettait de faire un développement en profondeur d'abord.

Ce projet consiste en la réalisation de la fonction "InstanceOf" et de toute l'infrastructure nécessaire à sa mise en oeuvre. En effet, si certains éléments, comme la fonction Super qui renvoie la classe mère d'une classe donnée, ne seront pas à réaliser dans le projet BOM, il faut ici fournir toute l'infrastructure. Le seul but de ce projet est de mettre en place le système d'héritage.

Il y a notamment dans ce projet, un chargeur de classes et la fonction super.

3) Installation et compilation de ce projet sous AtelierB version 3.6

3.1) Installation

  1. Lancez l'atelier 3.6
  2. Cliquez sur le bouton "restore"
  3. Avec les champs "Directories list" et "Archives list" sélectionnez l'archive
  4. Entrez l'adresse du dossier de destination dans "Project Directory"
  5. Selectionnez le type de restauration "B Source Files And Proof Files"
  6. Validez avec le bouton OK.
  7. Sélectionnez le projet créé et cliquer sur "libraries..." --> "Add..."
  8. Sélectionnez la librairie "Library"
  9. Validez avec le bouton OK.
Le projet est maintenant installé avec tous ses fichiers de preuves et ses librairies.

3.2) Vérification et Compilation

Si vous voulez voir le magnifique tableau suivant :
COMPONENT TC POG Obv nPO nUn %Pr BOC C Ada C++ HIA
A_Objects OK OK 2 0 0 100 OK      
A_Objects_imp OK OK 7 9 0 100 OK - - - -
Constantes OK OK 10 0 0 100 OK     
Constantes_imp OK OK 26 20 0 100 OK - - - -
MachineDeTest OK OK 3 0 0 100 OK     
MachineDeTest_imp OK OK 175 108 0 100 OK - - - -
Package_ML OK OK 104 35 0 100 OK     
Package_ML_imp OK OK 165 63 0 100 OK - - - -
Package_ML_ref1 OK OK 133 70 0 100 OK     
Package_ML_ref2 OK OK 120 18 0 100 OK     
TOTAL OK OK 745 323 0 100 OK - - - -

Alors il faut demander à refaire les preuves (Replay).

Ensuite, pour compiler ce projet, il faut sélectionner le fichier "MachineDeTest_imp" et cliquer sur le bouton "Translator". Ensuite, il y a un piège, il faut que les champs "All" et "Heterogeneous" soient cochés. Pour le langage, à vous de choisir. Après validation, la génération de l'exécutable commence. Les fichiers produits seront dans le dossier :

trad/{nom du langage choisi}/

Il faut ensuite compiler ces fichiers :

> cd trad/{nom du langage choisi}/
> make -f makefile

Un exécutable est alors généré dans le meme dossier.

4) Exécution du programme

4.1) Description

Les menus ne sont vraiment pas clairs alors voici un rapide résumé des fonctions et de leur mode d'emploi :

Numéro de fonction Action
0 La fonction Charger Prend en argument le numéro d'une classe déjà présente en mémoire, pour définir le lien de parenté, et le numéro d'une classe non encore présente dans la mémoire. Cette classe est alors chargée en mémoire avec comme classe parente la classe donnée au début.
1 La fonction super. Prend en argument le numéro d'une classe. Si celle-ci est en mémoire, alors la fonction super renvoie le numéro de sa classe parente. Si le numéro donné est 0 alors il y a une erreur car 0 est la classe Object.
2 La fonction InstanceOf. Prend en argument 2 numéros de classe. Si c'est 2 numéros correspondent à des classes déjà chargée en mémoire, alors la fonction dit si la première classe est ou non une descendance de la seconde.
3 La fonction Quitter. Quitte le programme

4.2) Informations complémentaires

4.3) Exemples

a) Chargement de l'arbre des classes suivant :

  0
 / \
2   1
   / \
  3   4
  |
  5

b) Vérification de quelques propriétés :

5) Contacts

En cas de problème, contacter :