MeriseAcide une autre analyse que UML

Publié le 12/08/2008

Alors que nous entendons très souvent parler de UML, beaucoup oubli qu’il existe une autre méthode d’analyse qui permet d’être plus proche des données: l’analyse de Merise. Cette analyse n’a pas beaucoup percé par rapport à UML dans le monde, mais elle est pourtant toujours enseignée dans les écoles d’informatique. Son efficacité n’est pas à prouver, elle est fiable et permet la gestion d’un projet à l’inverse de UML qui ne peut se baser que sur le concept.

C’est justement dans le cadre d’un BTS d’informatique que le logiciel Merise Acide est né. Aujourd’hui sous licence GPL, vous pouvez l’utiliser pour générer les diagrammes essentiels (MCD et MPD, c’est à dire le Modèle Conceptuel de Données et le Modèle Physique de Données) et les scripts SQL de vos bases ainsi que le dictionnaire de données. Ces principales sorties permettent de préparer un projet de développement plus efficacement.

Nous allons voir comment cet outil fonctionne. En premier lieu, rendez vous sur: http://bombela-dev.is-a-geek.org/MeriseAcide pour avoir un aperçut du projet. Ensuite téléchargez la version compilée ici: http://bombela.free.fr/MeriseAcide/ (la version que j’utilise est la 0.4.4). Placez là dans votre “HOME”. Décompresse l’archive dans un répertoire et allons dans ce répertoire.

cd
tar jxvf MeriseAcide.*.tar.bz2
cd MeriseAcide*

Pour des raisons de simplicité, nous travaillerons dans le répertoire du programme, il sera judicieux par la suite de rendre MeriseAcide accessible depuis n’importe quel répertoire… mais pour l’heure, nous ne ferons que tester.

Notre projet

Notre projet est un simple programme de vente de voitures. Après avoir analysé la demande, nous pouvons dégager ce dont nous avons besoin.

Voici le MLD (Modèle Logique de Données) que je veux utiliser. C’est à partir de cela que va se baser mon analyse.

-Client (__id_client__, nom, prenom, adresse, age) -Voiture (__id_voiture__, marque, couleur, prix, __@id_carburant__) -Carburant(__id_carburant__, libelle) -Vente (__id_vente__, __@id_voiture__, __@id_client__,remise)

Ceci étant un exemple, je ne vais pas loin dans le système, l’idée est de vous présenter Merise Acide. Pour ceux qui connaissent mal Merise, les arobase (@) veut dire que le champs est une référence à un autre type de données. Les champs soulignés sont des clés.

Ecrire notre analyse

Nous pouvons commencer, la syntaxe d’un ficher Merise Acide est simple, elle est instinctive et claire. Créons un répertoire pour notre projet, et commençons à écrire:

mkdir analyse1

#sous gnome:
gedit analyse1/analyse.ma

#ou sous KDE:
kwrite analyse1/analyse.ma

Il nous faut expliquer nos données. Nous écrivons les données simple en ne spécifiant pas les références étrangère. Donc on ne défini pas les champs qui ont un arrobas (@) dans notre définition. On désigne nos clefs avec un plus + devant son nom, et on place un caractère de soulignement si on veut laisser MeriseAcide lui ajouter le nom de la table automatiquement. Voici donc nos données:

#nos données
[client]
+id_
nom
prenom
adresse
age

[voiture]
+id_
marque
modele
couleur
prix

[carburant]
+id_
type

[vente]
+id_
remise integer(3)

Remarquez je j’ai implicitement défini que “remise” serait un nombre…

Maintenant, on indique la cardinalité, c’est à dire le nom des relations entre nos données et le nombre de relations possibles. Par exemple, un client n’a pas forcément acheté de voiture. C’est à dire qu’il a de 0 à n ventes… Par contre, une vente est liée à un et un seul client. Nous l’écrivons de cette manière:

client 0,n génère 1,1 vente 

La définition complète est celle-ci:

client 0,n génère 1,1 vente 
voiture 0,n correspond 0,1 vente
voiture 1,1 utilise 0,n carburant 

Voici donc le fichier complet:

#données

[client]
+id_
nom
prenom
adresse
age

[voiture]
+id_
marque
modele
couleur
prix

[carburant]
+id_
type

[vente]
+id_
remise integer(3)


client 0,n génère 1,1 vente 
voiture 0,n correspond 0,1 vente
voiture 1,1 utilise 0,n carburant 

Génération des documents

Enregistrez le fichier, puis quitter l’éditeur. Retournez dans votre terminal.

Nous allons générer les Documents donc nous avons besoin pour coder notre projet. A savoir, -notre MCD qui est le modèle conceptuel des données. On saura donc les associations qu’il existe entre nos données -notre MPD qui est le modèle physique de données, cela nous permet de voir nos tables telles qu’elle sont proposées dans la base -note dictionnaire de données, qui va nous permettre de lister tous les champs pour que nous puissions coder correctement dans le langage souhaité.

Réalisons, en premier lieu, le MCD:

./MeriseAcide -f png -m analyse1/MCD.png analyse1/analyse.ma

Ce qui nous génère dans le répertoire n’analyse: L’image est en noir et blanc, pratique pour l’impression… mais pas très jolie. Vous pouvez demander de la couleur en ajoutant l’option -c

./MeriseAcide -f png -c -m analyse1/MCD.png .analyse1/analyse.ma

Vous pouvez changer les couleurs avec -E pour les entités, -A pour les associations et -B pour les tables (dans le MPD, voir la suite). On peut tout aussi bien modifier la taille des liens avec -e, par défaut le PDF est utilisé, mais je préfère utilise le PNG pour vous afficher les exemples:

./MeriseAcide -c -E "#c49696" -A "#bbc496" -B "#96c4c1" -f png -m analyse1/MCD.png  -e 0.6 analyse1/analyse.ma

Passons au MPD:

./MeriseAcide -c -E "#c49696" -A "#bbc496" -B "#96c4c1" -f png -p analyse1/MPD.png analyse1/analyse.ma

Puis notre dictionnaire de données:

./MeriseAcide -d analyse1/dictionnay .analyse1/analyse.ma

Cela nous donne un fichier contenant:

 +id_client
 nom_client
 prenom_client
 adresse_client
 age_client
 +id_voiture
 marque_voiture
 modele_voiture
 couleur_voiture
 prix_voiture
 +id_carburant
 type_carburant
 +id_vente
 remise_vente

Et le SQL de données, par défaut MySQL:

./MeriseAcide -s analyse1/datas.sql analyse1/analyse.ma
#pour sqlite:
./MeriseAcide -t SQLIte -s analyse1/datas.sql analyse1/analyse.ma
#pour postgresql:
./MeriseAcide -t PostGreSQL -s analyse1/datas.sql analyse1/analyse.ma

Evidamment, vous pouvez combiner toutes les options et gérérer tout à la volée:

./MeriseAcide -s analyse1/datas.sql -c -E "#c49696" -A "#bbc496" -B "#96c4c1" -e 0.6 -f png -m analyse1/MCD.png  -p analyse1/MPD.png -d analyse1/dictionnay analyse1/analyse.ma 

Cela vous produira l’ensemble des documents utiles à votre projet.

Vérification

Vérifiez le fichier SQL généré, si les types ne vous conviennent pas, changez les directement dans le fichier analyse.ma et regénérez le tout. Je vous conseil de toujours suffixer les noms de champs soit par votre propre nomenclature, soit par un caractère de soulignement _ pour laisser MeriseAcide ajoute le nom de la table pour vous.

Par exemple pour la table “carburant”, le champs “type” peut créer une erreur puisque c’est un mot clef MySQL. Appelez ce champs type_carburant, ou simplemen “type_”, MeriseAcide vous le rebaptisera automatiquement.

Bilan

Concrètement, MeriseAcide est un tout petit projet qui avance à son rythme, mais il peut être très utile pour la rédaction d’un cahier des charges fonctionnel ou simplement pour un démarrer un projet convenablement.

[Corrigé après relecture]

comments powered by Disqus