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
- MeriseAcide (1164 clics)
- Binaires Linux x86 et x86_64 (257 clics)
- Captures d'écrans (568 clics)
# Merise / UML
Posté par Maxime (site web personnel) . Évalué à 5.
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 Maxime (site web personnel) . Évalué à 3.
[^] # Re: Merise / UML
Posté par François-Xavier Bourlet . Évalué à 6.
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 Ontologia (site web personnel) . Évalué à 2.
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 François-Xavier Bourlet . Évalué à 1.
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 barmic . Évalué à 2.
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 Janfi . Évalué à 3.
[^] # Re: Merise / UML
Posté par letsyl . Évalué à 4.
[^] # Re: Merise / UML
Posté par Spyhawk . Évalué à 4.
[^] # Re: Merise / UML
Posté par Spyhawk . Évalué à 10.
http://www.la-rache.com
[^] # Re: Merise / UML
Posté par LupusMic (site web personnel, Mastodon) . Évalué à 2.
Ce qui n'est pas le cas avec les méthodes modernes.
[^] # Re: Merise / UML
Posté par Dring . Évalué à 9.
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 François-Xavier Bourlet . Évalué à 3.
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 Janfi . Évalué à 3.
Merci beaucoup pour cette news, je n'avais rien trouvé malgré mes recherches.
[^] # Re: Enfin !
Posté par François-Xavier Bourlet . Évalué à 3.
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 rewind (Mastodon) . Évalué à 4.
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.
[^] # Re: Pas mal
Posté par François-Xavier Bourlet . Évalué à 1.
[^] # Re: Pas mal
Posté par Ontologia (site web personnel) . Évalué à 1.
http://analysesi.free.fr/
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
# Remarques & Suggestions
Posté par Dring . Évalué à 3.
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 François-Xavier Bourlet . Évalué à 2.
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 Laurent Besson (site web personnel) . Évalué à 1.
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
[^] # Re: Et qu'est-ce qu'un "Une définition de MCD faite dans un simple fich
Posté par François-Xavier Bourlet . Évalué à 1.
Il est aussi indiqué que ce fichier fait parti de l'archive binaire.
Au plaisir !
[^] # Re: Et qu'est-ce qu'un "Une définition de MCD faite dans un simple fich
Posté par Laurent Besson (site web personnel) . Évalué à 1.
# Autre possibilité
Posté par Bapt (site web personnel) . Évalué à 2.
[^] # Re: Autre possibilité
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3.
[^] # Re: Autre possibilité
Posté par Bapt (site web personnel) . Évalué à 3.
# J'aime bien !
Posté par Laurent Besson (site web personnel) . Évalué à 1.
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.