MeriseAcide une autre analyse que UML

Tags:: merise :: uml

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: MCD_err1 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
 

MCD_err2

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
 

MCD_err3

Passons au MPD:


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

MPD_err1

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]

Utilisez le code barre pour ouvrir le ticket dans votre mobile:
This ticket on you mobile
1 Mardi 12 Août 2008 15:10:45, Metal3d

Vous l'avez certainement remarqué mais j'ai fait une bourde dans les relations vente/voiture. Je m'en excuse.

L'idée était de vous montrer comment fonctionne l'outil et non pas de faire une analyse correcte. Je m'empresserai de corriger l'article soit ici, soit dans un errata.

La réalité étant :
vente 1,n correspond 0,1 voiture FAUX

il fallait lire
voiture 0,n correspond 0,1 vente

Avec mes excuses

2 Vendredi 07 Novembre 2008 12:23:28, Fabrice

Bonjour,
Merci pour cet outil que je trouve franchement génial et trés facile à prendre en main,
même pour un naze comme moi.
Une petite question cependant : je n'ai pas trouvé le moyen d'ajouter un commentaire aux entités
(par ex :
[client]
COMMENT "Table des clients"
+id_
...)
pouvant êtres ensuite convertie en commentaire de la table sql générée, alors que pour les champs, ca marche bien.
ex :
[client]
+id_
nom VARCHAR(30) DEFAULT "Machin" COMMENT "Nom du client."

3 Lundi 10 Novembre 2008 11:51:11, Metal3d

@Fabrice > Effectivement il n'y a pas de moyen direct, il faut demander à l'auteur si il peut ajouter cette idée qui me parait logique... A moins qu'il ne l'ait déjà implémenté :)

4 Jeudi 13 Novembre 2008 10:49:35, Fabrice

@Metal3d : Bonne suggestion, je viens d'en faire la demande à l'auteur, et vous fournirai sa reponse si cela vous dit.

5 Vendredi 14 Novembre 2008 12:04:21, Fabrice

Je viens d'avoir la réponse de Bombela à qui j'avais également posé une question sur les champs de type ENUM avec plus de 2 valeurs possibles qui retournent une erreur lors de la création du fichier sql.
Voic donc la réponse de l'auteur :

[...]
Alors pour ce qui est des commentaires, en réalité, ce n'est tout simplement pas prévus.
Tu sembles arriver à en placer car tu fait croire à MeriseAcide que ce sont des champs,
alors, il sont traité comme tels. Il faudrai que je travaille un peu le code pour
ajouter la possibilité de faire suivre des commentaires.

Pour ce qui est de ta deuxième question, c'est un bug de MeriseAcide.
Un check du parser un peu trop simpliste foire.

Le première risque fort de n'être jamais implémenté, mon temps est trop limité,
et pour le deuxième, j'essayerai de m'en occuper dans les jours (comprendre semaines)
à venir.

Voici tes tickets :

http://bombela-dev.is-a-geek.org/MeriseAcide/ticket/95
http://bombela-dev.is-a-geek.org/MeriseAcide/ticket/94

[...]


6 Mardi 03 Février 2009 16:19:49, rillator

bonjour,
Je suis impatient de tester l'outil mais pour le moment si je fait le tuto, lorsque je fait : ./MeriseAcide -f png -m analyse1/MCD.png analyse1/analyse.ma
j'ai l'erreur suivante :
./MeriseAcide_Linux32: error while loading shared libraries: libltdl.so.3: cannot open shared object file: No such file or directory
Avez vous deja eu cela chez vous ?
Merci

sur ubuntu 8.10

7 Lundi 09 Février 2009 17:48:26, Metal3d

Salut,
Pour la librairie libltdl je ne sais pas trop ce qu'il en est sur ubuntu mais tu devrais tenter de voir avec aptitude (ou apt-get) si tu ne la trouve pas...

Ajouter un commentaire
Veuillez répondre à la question suivante : Tapez en minuscule le nom de l'animal qui fait miaou

Trackbacks

Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F103

Tags

Blog Copix Communication PC Config Fedora Vidéo Humour Autre Web Materiel Informatique PHP Développement Mootools HTML Linux WEB IE CSS Vista Microsoft Sympa XHTML Quizz Widget Klik CWE Voeux Bonne année Musique CCRMA Son Audio MAO Reconnaissance vocale Windows Mac Compiz MacOS Mysql Sun Base de données BD Screenlets Screenlet RPM compiz Ubuntu Live FireFox Derambarsh Facebook media informations Sécurité javascript SSH Commande Marketing concours ipod wii QT Trooltech Nokia Libre Logiciels GPL Attali Gnome Dock Compiler Bench undelete reiserfs recovery recover Thread Serveur Optimisation Server Apache Album RSS Flash Air XML Firefox Blender Opensource Orange Internet LiveBox Animaux Droits Logiciels Libres Google Loi RBS netcat Bash Téléphone Spam 3D NIDIA Standards Widgets Merise UML Streaming Developpement Perl MySQL Firewall Parfeu Bayes Novell Réseau Python LVS Salon FTP Dedibox Chrome Administration IRC Gentoo troll video Nouveauté Finance Etudiant spéctacle OpenOffice Javascript Java Info Eclpise ATI design mootools KDE Bureau Design GNU C Pages Jaunes Fun Bijoux Art mail Admin vmware fedora linux VirtualBox VMWare Qemu KVM vim Grep Fglrx Webkit GTK google web JQuery Coup de gueule coup de gueule Lois SVG Raycaster Canvas Hadopi Desktop Jeux Les Sims développement astuces Screen firefox Mobile Safaru Wine bash commande astuce Wave ooc C++ C# Netbook Hercules Bureautique Twitter Safari W3C chrome kazehakaze midori navigateur gecko webkit Links Liens Pyhon Nouvelles Metal Perso Conférence JDLL PCC Roadsend OOC News Acteur Cinéma Chanteur Seven windows orthographe pcc php jdll Slide Application mysql Html twitter python screen curses SVN Android Gphone iPhone OpenGL MindMap Projet Javascrtip Ajax Guitare Tab Tablature JSON firebug Chromium Iphone

  • twitter entries...
follow me on Twitter

Valid XHTML 1.0 Strict