MeriseAcide, un outil d'aide à la modélisation Merise

Posté par  . Modéré par Benoît Sibaud.
0
9
août
2008
Base de données
MeriseAcide, programme sous licence GPL3, permet de faciliter la modélisation et la création de base de données en exploitant la méthode Merise.

Ce programme en interface console prend en entrée un fichier texte définissant un MCD (Modèle Conceptuel de Données) avec une syntaxe très simple. Il est possible d'obtenir le MCD et le MPD (Modèle Physique des Données) sous forme graphique, les éléments étant positionnés de manière entièrement automatique.

Enfin, le dictionnaire des données et le script SQL de création de la base de données peuvent aussi être générés.

MeriseAcide génère les diagrammes graphiques en PNG ou PDF, et positionne les éléments de manière entièrement automatique, grâce à l'utilisation de la bibliothèque Graphviz. Techniquement, MeriseAcide utilise une version dont le module de rendu Pango a été modifié [hacké serait le mot juste]. Avis aux gens qui veulent développer un moteur de rendu, le code est ouvert.

Un mode couleur est disponible, et il est même possible de les changer.

Le format de sortie du dictionnaire de données est au choix un fichier texte ou un tableau latex.

Pour la sortie SQL, les bases de données suivante sont supportées : SQLite, MySQL, PostgreSQL. Il est possible de désactiver la génération des contraintes SQL si nécessaire.

Toutes les options disponibles sont présentée si le programme est exécuté avec le paramètre “-h”.

Le code est en C++ et le programme a été testé sous GNU/Linux sur x86 et x86_64.

Un portage MS Windows a été tenté mais n'a pas abouti parce que je n'ai pas réussi à compiler Graphviz sous cet environnement (et faut dire que je suis mauvais avec cet OS).

Pour terminer, la syntaxe est documentée dans l'exemple fourni dans l'archive du binaire, et évidemment sur le dépôt Subversion. L'explorateur de dépôt du gestionnaire de projet Trac permet de le consulter directement à cette adresse.

(Ce fichier d'exemple ne comporte pas d'accent pour les entités et associations, mais MeriseAcide les supporte très bien)

Ce programme a été développé dans le cadre d'un BTS Informatique de Gestion et m'a été très utile pour travailler avec la méthode Merise et les bases de données pendant ma deuxième année. Peut-être que cela pourra aider d'autres personnes.

Aller plus loin

  • # Merise / UML

    Posté par  (site web personnel) . Évalué à 5.

    Bonjour,

    Je ne connais n'y l'un ni l'autre (pas encore appris) mais il me semblait que l'UML avait plus ou moins tué Merise. Quand est-il aujourd'hui ? Est-ce que Merise, francofrançais, a son utilité face à l'UML ? Quel avenir pour Merise ?

    Merci.
    • [^] # Re: Merise / UML

      Posté par  (site web personnel) . Évalué à 3.

      s/n'y/ni, désolé pour les blessés.
      • [^] # Re: Merise / UML

        Posté par  . Évalué à 6.

        Effectivement, UML à presque (si ce n'est complètement ?) écrasé Merise, mais cette méthode est toujours enseignée pour la conception de base de données.

        Pendant mes deux ans de cours, je n'ai jamais eu d'UML orienté base de données et nous n'avons jamais eu de lien entre la partie base de données relationnelle et la partie programmation objet.

        Ce programme est donc surtout utile pour les étudiants, mais il peux aussi rendre service pour concevoir des bases de données relationnelle rapidement. Personnellement, j'aime bien la méthode Merise pour ce genre de tâche.

        Pour terminé, je dirais que dans la boite où je termine mon contrat en alternance, je n'ai jamais vu un seul morceau de Merise et encore moins d'UML...
        • [^] # Re: Merise / UML

          Posté par  (site web personnel) . Évalué à 2.

          C'est pas si étonnant que ça. J'ai fait mon alternance dans une petite boite où j'étais d'ailleurs le seul informaticien et où on me demandait donc rien en terme de méthode.
          Puis après le BTS une autre boite où c'était à peu près le même bordel, voire en pire parce qu'on était censé écrire des programmes qu'on était censés vendre. Et là, pas testé, pas de cahier des charges, et des logiciels pas finis, et plein de problèmes.

          Là je suis tombé dans une grosse boite américaine, et comme dans toutes les grosses boites, on en mange de l'UML, des métriques dans tous les sens, des tests unitaires, fonctionnels (tiens d'ailleurs je vais peut être arrêter de coder et plus faire que ça), de la génération de code à partir de modèles, etc, etc....

          Ne croit pas comme je l'ai cru que l'UML est un truc de prof, ça sert des fois. Je me prononcerai pas sur son utilité, et de la preuve de son utilité, ça dépend de beaucoup de facteur et de la situation.

          Effectivement, Merise est mort. On utilise théoriquement UML pour modéliser la base à partir du diagramme de classe, ce qui aide bien vu que la base on est censé ne plus s'en occupé en disant merci au framework de persistance. D'ailleurs c'est pour ça qu'on t'as jamais parlé de lien entre couche objet et couche BDD : t'auras jamais à la coder

          Après, beaucoup de gens (et surtout ceux qui ont fait un BTS, parce que les autres c'est rare qu'ils aient vu Merise), savent pas ce que c'est, mais on l'utilise quand même souvent pour avoir un beau modèle de la base de donnée, qui a elle été modélisée à l'époque en Merise.

          Enfin, ça dépendra de ton parcours :-)

          « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

          • [^] # Re: Merise / UML

            Posté par  . Évalué à 1.

            Je te rassure, je ne crois pas qu'UML est un truc de prof.

            J'avoue n'avoir retenu que le diagramme de classe, que je trouve vraiment pratique pour modéliser un programme et discuter facilement avec d'autre programmeurs, mais mes souvenirs me font penser que le reste doit aussi être utile.

            Au sujet du framework de persistance, j'en coderai probablement jamais, mais il vaut mieux savoir quels sont les principes qui sont derrière non ?

            Cela permet d'appréhender le système et l'utilise correctement. C'est un peu comme savoir qu'un tableau est très pratique pour un accès directe à contrario d'une liste doublement chaînée qui est plus intéressante pour les insertions.
          • [^] # Re: Merise / UML

            Posté par  . Évalué à 2.

            En IUT j'ai appris la méthode mérise aussi.

            Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

          • [^] # Re: Merise / UML

            Posté par  . Évalué à 3.

            Il y a aussi les étudiants de BTS Compta font pas mal de Merise/Merise2. Trop peut-être à mon goût, il y a d'autres thèmes qui me paraissent plus intéressants/importants, mais les référentiels sont ce qu'ils sont...
    • [^] # Re: Merise / UML

      Posté par  . Évalué à 4.

      UML n'est pas une méthode de conception. Comme son nom l'indique, c'est un langage dédié à la modélisation (Unified Modeling Language).
      • [^] # Re: Merise / UML

        Posté par  . Évalué à 4.

        Effectivement, ce qui a "tué" Merise est sans doute RUP (Rational Unified Process), développée par Rational Software d'IBM.
        • [^] # Re: Merise / UML

          Posté par  . Évalué à 10.

          .. ou peut être La Rache, en y repensant, puisque c'est sans soute la méthode de conception logicielle la plus universellement répandue.

          http://www.la-rache.com
    • [^] # Re: Merise / UML

      Posté par  (site web personnel, Mastodon) . Évalué à 2.

      Contrairement aux légendes, Merise est toujours beaucoup utilisé. C'est comme Cobol ou Fortran, leur âge fait que les compétences et la stabilité des développement les valorisent par rapport aux solutions « modernes ». Quant à Merise, la méthode a la côte chez les utilisateurs, puisque cette méthodologie prévois d'intégrer l'utilisateur dans la démarche d'analyse.

      Ce qui n'est pas le cas avec les méthodes modernes.
      • [^] # Re: Merise / UML

        Posté par  . Évalué à 9.

        Mon expérience perso, c'est la suivante :

        UML & Merise ne sont utilisés que pour faire de zolis diagrammes, uniquement MCD et MPD (et généralement obtenu par ingénierie inverse) côté Merise, uniquement diagramme de classe et cas d'utilisation côté UML.

        Les personnes maîtrisant ne serait-ce que 10% de l'un ou l'autre sont bien trop rares pour utiliser l'ensemble des diagrammes et modèles disponibles.

        J'aurais l'air bien fin avec mon diagramme statut/état, ou mon MCT. Aucun utilisateur ou collègue ne saurait le lire, et donc encore moins le valider. Bref, rien ne remplace l'explication de texte pour l'analyse.

        Autre chose : la plupart du temps, ça ne sert qu'un temps. Soit au démarrage du projet, soit lors des refontes et que le besoin de doc se fait sentir.

        Dernière chose : sur la plupart de ces outils (ArgoUML, Rational, PowerDesigner, ...), je passe plus des 3/4 de mon temps à mettre en forme, alors que j'ai déjà une idée très précise de ce que je veux.

        Le temps de configuration est également fastidieux ; je me rappelle de demi-journées passées à paramétrer les PowerDesigner de mes collaborateurs pour que la librairie Java soit bien identifiée, que le pilote ODBC soit bien paramétré, etc.

        En un mot, j'ai un usage super limité de tout ça. UML, je ne m'en sers plus (marre de faire de la pédagogie au lieu d'avancer dans le projet), et je ne fais plus que des MCD. Le reste utilise un formalisme maison qui jusqu'ici convient à tous mes interlocuteurs, et qui est essentiellement textuel, avec des maquettes d'écran, et quelques schémas, mais pas trop.

        L'UML est un échec cuisant. Cela devait réconcilier l'informaticien et ses utilisateurs en fournissant un langage commun. Sauf qu'il n'est enseigné qu'aux informaticiens, et qu'on veut à tout prix en faire un outil de génération de code.

        Ma conclusion tient en peu de mots : c'est de la merde en boîte, dès qu'on va au delà des outils de base (MCD, MPD, Diagramme de classe) et/ou qu'on s'en contente pour communiquer avec les utilisateurs.
        • [^] # Re: Merise / UML

          Posté par  . Évalué à 3.

          Ton analyse est très intéressante et nous avons un peu les mêmes avis.
          Effectivement, je me suis limité à MCD->MPD, et diagramme de classe pour UML.
          Les MCD, MOT, et autres modélisations aux noms barbares sont passée que trop fugitivement dans mon esprits... et ceux de mes camarades, mes collègues, mes parents (non là, je déconne)...

          "Dernière chose : sur la plupart de ces outils (ArgoUML, Rational, PowerDesigner, ...), je passe plus des 3/4 de mon temps à mettre en forme, alors que j'ai déjà une idée très précise de ce que je veux."

          En effet, en cours, c'était PowerDesigner d'imposé... sous MS Windows, avec tous les avantages que tu décris. En ajoutant le désir (que dis-je la nécessité !) d'avoir un rendu vectoriel (pour de beaux documents Latex superbement ignoré par les examinateurs), j'ai alors décidé de créer MeriseAcide :)

          Avec MeriseAcide, tu écris ton MCD en moins de deux, et le plus dur, c'est de se souvenir des paramètres de la ligne de commande.
  • # Enfin !

    Posté par  . Évalué à 3.

    Je n'avais que AnalyseSI qui ne semble plus maintenu depuis un bon moment ! Reste plus qu'à tester, en espérant qu'il ne lui arrivera pas la même chose.

    Merci beaucoup pour cette news, je n'avais rien trouvé malgré mes recherches.
    • [^] # Re: Enfin !

      Posté par  . Évalué à 3.

      J'avais testé AnalyseSI et il ne me convenais pas. J'ai alors décidé de développé mon propre outil. Je voulais quelque chose en langage compilé; en C++ parce que j'aime ce langage; uniquement en ligne de commande, et le plus automatisé possible. Il se peux que dans certain cas, le rendu ne sois pas le plus organisé et rangé possible. Il a l'avantage d'être entièrement automatique.

      Je voulais un programme qui soit le plus rapide à l'exécution, histoire de faire du travail en presque temps réel. Je m'explique, je n'avais pas le temps de développer un outil interactif (et puis pas l'envie non plus). J'utilise le même principe que j'applique avec succès à Latex :
      un Makefile qui relance evince quand la compilation à abouti, et un while sleep 0.5; do make; done pour vérifier périodiquement.

      Pour ce qui est de la maintenance, c'est simple, si attention est porté à MeriseAcide et qu'on m'envoie des mails pour ça, alors, je corrigerais et ajouterai les nouvelles fonctionnalités demandée. De plus, tout le monde peux participer, certes c'est plus facile à dire qu'a faire, mais le code est bien découpé (beaucoup d'interface de classes) et puis je suis toujours là pour expliquer comment il fonctionne. C'est très valorisant de savoir que des gens utilises son programme.
  • # Pas mal

    Posté par  (Mastodon) . Évalué à 4.

    J'ai longtemps cherché un truc de ce genre sans jamais le trouver. Aucun logiciel de conception de base de données ne permet de partir d'un modèle entité-association pour sortir directement le SQL. Personnellement, j'avais fait une DTD pour décrire un schéma entité-association et j'avais écrit un XSLT pour transformer ça en dot et le tracer avec GraphViz. Puis avec un script ruby très rudimentaire et très crade, je transformais le XML en schéma SQL.

    En tout cas, vive le Merise pour la création de base de données, c'est vraiment l'idéal. Et bravo pour ton logiciel.
  • # Remarques & Suggestions

    Posté par  . Évalué à 3.

    Salut,

    Je trouve l'idée très bonne, et j'ai moi aussi longtemps cherché ce type d'outil sans pour autant me décider à en écrire un.

    Je vais tâcher de m'installer un g++ rien que pour pouvoir faire quelques tests de modifications. Ce qui me tenterait :

    * de pouvoir préciser le type des clés (par chez moi, on utilise des varchar(16), jamais des entiers)
    * de pouvoir représenter une partie seulement du modèle (en indiquant par exemple une table de départ et un degré de profondeur, pratique quand on a plusieurs centaines de tables)
    * de pouvoir paramétrer plus la présentation (ajouter des ombres, choisir la police, la taille, la mise en forme des clés primaires, étrangères, ...)
    * de pouvoir avoir des nommages différents entre MPD et MCD (pour coller à un existant) et jouer sur les règles de nommage (utiliser des "_" ou non, tout mettre en maj/min, ...)
    * ...

    Pas mal de choses dépendent aussi de GraphViz, et surtout il faut que ça marche sous Windows, car au taf je n'ai pas le choix.

    Je vais avoir quelques jours en août pour regarder ça...
    • [^] # Re: Remarques & Suggestions

      Posté par  . Évalué à 2.

      Salut,

      Tu peux choisir le type de clé unitairement dans le .ma (Le fichier à la syntaxe MeriseAcide contenant ton MCD). Après, si tu veux changer le type de clé par défaut, effectivement, il faut ajouter un peu de code :)

      Pour ce qui est de limiter l'affichage du modèle, oui c'est possible, tout est sous forme d'arbre, il suffit d'ajouter un peu de code intermédiaire.

      Le paramétrage de la présentation est limité par l'utilisation du moteur de rendu de graphviz. Moteur que j'ai du hacker pour ajouter certaines petites fonctionnalité. Pour faire bien, il faudrai coder un moteur de rendu pour MeriseAcide, cela permettrait en plus de se libérer de la maintenance d'une version personnalisée de la lib graphviz, et de tous les soucis que ça engendre (recompilation, merge avec la lib originale... etc). En utilisant Cairo et Pango, il doit être possible de développer ça sans trop de difficulté, c'est juste qu'il faut du temps...

      Pour rendre plus souple les règles de nommage, quelques lignes de codes suffiront.

      Et oui, j'ai pas réussis à compiler Graphviz pour Windows, et ça... c'est vraiment dommage.
      Contacte moi sur mon adresse jabber si tu veux qu'on en discute. Je pourrais aussi te créer un accès en écriture à Trac et SVN pour te faciliter le développement.

      Merci de l'intérêt que tu porte à MeriseAcide.
  • # Et qu'est-ce qu'un "Une définition de MCD faite dans un simple fichier"

    Posté par  (site web personnel) . Évalué à 1.

    Bonjour,

    Ce qui me gène est la syntax dite simple mais indéfinie :
    "Une définition de MCD faite dans un simple fichier texte à l'aide d'une syntaxe simple et intuitive suffit au programme pour calculer le MPD et générer le fichier SQL de création de la base de donnée. "

    Quelle est t'elle ?

    Car sans cette syntax, rien ne débute !

    Merci
  • # Autre possibilité

    Posté par  (site web personnel) . Évalué à 2.

    Dans le même genre d'outil, il y a MeriseDot que l'on peu trouver ici : http://oss.phear.org/merisedot/ ça utilise aussi graphviz mais la syntaxe c'est du zsh, c'est simple et le MCD optenu est tout beau, par contre ça semble moins complet que MeriseAcide.
  • # J'aime bien !

    Posté par  (site web personnel) . Évalué à 1.

    Bonjour,

    Après ne pas avoir assez pris de café et loupé syntax.ma...
    Je l'ai testé... et bien c'est un outil que j'utiliserais dorénavant à la place de AnalyseSI...(plus besoin d'un wouinwouin)...

    Merci Bombela ;)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.