merisedot: mcd definition langage

Merisedot is a script to generate mcd Entity/Relation graphic used in Merise.

Non-french speakers can go away: Merise is just ancient design method that was only used in France. It is still used at college because Merise users that are still alive are all teachers with no contact with reality. That's why the rest of this document is in french only. If you want me to translate this page, ask me ( khatar [at] phear [dot -- ] org)

Pressé ?

téléchargez le le script et regarder un exemple.

Explications

Si vous utilisez déjà Merise, vous savez dejà que la seule partie utile est le MCD. Il n'existe malheureusement pas d'outils libres qui permette de les créer (on comprend le manque d'intéret des éditeurs pour la chose).

merisedot vient combler ce trou. C'est un ensemble de fonctions zsh qui permettent de générer simplement un programme dot. Ce programme pourra ensuite être compilé avec les outils fournis dans Graphviz.

Installation

  1. installez graphviz sur votre système. Sur debian ou ubuntu, par exemple, tappez sudo aptitude install zsh graphviz.
  2. copiez merisedot quelquepart dans votre $PATH. Exemple:
     dest="$HOME/bin"
     echo 'PATH="$PATH:'$dest'" >> ~/.profile'
     if test -d "$dest" || mkdir "$dest"; then
        cd "$dest"
        wget -0merisedot http://oss.phear.org/merisedot/lastest
        chmod +x merisedot
     fi
    	     

Utilisation

Créez un fichier texte dont le nom n'a aucune espèce d'importance (je l'appellerais mcd.zsh pour l'exemple), tappez le texte suivant

with=(
    code_composante ''
    libelle_composante ''
) entity composante
     

Ce source crée une entitée (entity) nommée composante. Cette entité contient les attributs code_composante et libelle_composante dont les types n'ont pas été définis ('' correspond à une chaine vide).

La syntaxe de zsh est assez souple, le seul point important est qu'il ne doit pas y avoir d'espace dans la chaine with=(. J'aurais aussi bien pu écrire:

Enregistrez mcd.zsh et tappez merisedot mcd.zsh. Vous obtiendrez le code suivant:

graph mcd {
    edge  [
    len=2
    labeldistance=2
    ];

"composante" [
    shape=record
    label="{\N|code_composante \llibelle_composante \l}"
];
}
     
que dot peut utiliser pour générer une image. Relancez la commande, mais cette fois en la pipant a dot: Enregistrez mcd.zsh et tappez merisedot mcd.zsh | dot -Tpng -om1.png . Un fichier m1.png vient d'etre créé

Modifions maintenant notre fichier pour créer une deuxième entrée et une relation.

with=(
    code_composante ''
    libelle_composante ''
) entity composante

with=(
    code_annee ''
    libelle_annee ''
    compteur_facture ''
    annee_en_cours ''
) entity annee

with=(
    credit_ouvert ''
    credit_consomme ''
    credit_bloque ''
) between=(
    1,1 composante
    1,n annee
) relation "est creditee pour"
     

compilons ...

la nouveauté est la commande relation qui prend un tableau appellé between et contenant les cardinalités sous la même forme clef/valeur. Notez que la parenthèse fermante du with est sur la même ligne que le between. C'est important!

FAQ

Pourquoi en zsh?
heuu ... c'est un outil qui génère des MCD. Autant dire que ca tombera, en tout cas je l'espère pour l'avenir du genre programmeur, rapidement aux oubliettes. Je ne compte donc pas investir du temps pour ce script. J'ai mis plus de temps a rédiger la présente page web qu'a écrire le script lui-même.