dimanche 7 mars 2010

Modélisation Merise : La prise de tête des logiciels

Je ne sais pas si vous avez déjà été face au problème que je vais décrire mais je vous propose un début constructif de solution. Je vais vous parler d'un projet qui me trotte dans la tête et qui a comme sujet la méthode de modélisation Merise.

Mise en situation

Vous êtes étudiant en informatique et on vous demande de modéliser un système d'information que ce soit pour un devoir, un exercice.. Vous prenez alors votre feuille et vous lisez jusqu'à l'épuisement le sujet de votre prof qui en plus de ça est un gros sadique dans ses sujets (tout les profs d'analyse que j'ai vue étaient sadiques, je finirais peut être sadique moi aussi qui sait..). Alors vous commencez par dessiner, puis gommer (car vous avez eu la bonne idée de ne pas utiliser un stylo bille, mais plutôt un crayon de papier :-D ), puis de faire des gros changements, et pour finir vous vous apercevez que la feuille n'est plus assez grande (c'est l'enfer !).

L'informatique : Un outils pratique pour économiser des feuilles

Oui, passons sur l'informatique car cela nous permettra d'économiser quelques bloc notes et nous fera aussi gagner du temps (plus besoin d'effacer et de redessiner un traitement au milieu de la feuille car il n'avait pas sa place à droite..). Pour réaliser tout ça il va nous falloir un logiciel de modélisation. Deux solutions s'offrent à nous
  1. Utiliser un logiciel payant
  2. Utiliser un logiciel gratuit
Comme nous n'avons pas les moyen d'acheter PowerAMC ou WinDesign nous regarderont du coté des logiciels gratuit et que nous propose l'offre ? Pour les MCD, MLD et MPD :
  1. Analyse SI (abandonné depuis 2008)
  2. Devaki NextObject (abandonné depuis 2004)
  3. Open ModelSphere
Pour les autres diagrammes : MOT, MCT, Diagramme acteur flux..
  1. Microsoft Viso (raté j'avais dit gratuit)
  2. Dia
  3. Inkscape
  4. The Gimp
  5. Paint..
Comme vous pouvez le constater il a quelques logiciels cependant (et j'insiste) ils ne répondent généralement pas au formalisme Merise/2.

Concernant la modélisation des données, Analyse SI est très pratique pour faire de petites modélisation mais ne gère pas les association réflexives ainsi que les extensions (premier problème). NextObject (dont j'ai réalisé la traduction et le port vers Java 1.6) est plus complet mais ne supporte pas  lui non plus les extensions de Merise/2 (deuxième problème). Open ModelSphere est ma foie assez bien fait mais là encore ... (ou alors les extensions comme les association d'ordre N (2 généralement) sont cachée et le logiciel est complètement in-intuitif).

Coté traitement c'est encore pire ! enfin il faut relativiser ce propos, pour réaliser un diagramme Acteur/Flux ont peut utiliser sans problème un soft comme Gimp ou Paint par contre pour concevoir un MCT ou un MOT c'est une autre paire de manche (dans un MCT les cases de traitement n'ont pas forcement la même taille donc faire des graphiques générique n'est pas une solution).

Qu'est ce qu'on apprend en regardant les logiciels de modélisation de données ? Ils sont tous codés en Java, n'est ce qu'une Coïncidence ? J'y reviendrais.

Est-on le mieux servie que par soie même ?

C'est pour cela que je fait des études dans le développement logiciel donc voilà ce que je propose : Concevoir un logiciel de modélisation Merise/2 avec ses extensions (ça ne servirait strictement à rien sinon) gratuit pour tous. Examinons un début de cahier des charges :

Coté données :
  1. Modèle conceptuel de données : MCD (Héritage, Associations d'ordre 2, Contraintes (exclusivité, partition, etc..)
  2. Modèle logique de données : MLD
  3. Modèle physique de données : MPD
  4. Génération de script SQL (compatible MySQL)
Coté traitement :
  1. Modèle conceptuel de traitements
  2. Modèle opérationnel de traitements
Coté graphique :
  1. Digramme Acteur/Flux
Il serait fort intéressent que le logiciel soit disponible sous Windows, Linux et Mac et bien entendu qu'il soit gratuit. Vers quelle technologie se tourner ?

Coté technologies

Java : C'est une bonne plateforme, j'étudie actuellement certaines choses mais il est claire que coté déploiement ça serait le pied et on pourrait toucher un maximum de personne (en local, sur le web via une applet ou via JavaWebStart). Je suis donc à la recherche d'une (ou plusieurs 1,n) API ou framework permettant de réaliser des dessins de manière relativement simple, souple et portable.

C#/.Net : Au risque d'en étonner plus d'un, je ne pense pas que la plateforme .Net soit un bon choix pour ce type d'application, car même si le développement serait largement facilité par le contenu du framework .Net et de ses outils (Visual Studio), un port vers Linux et Mac ne se ferait qu'avec l'utilisation de Mono et sans doutes GTK#. Les options de déploiements sont intéressantes avec .Net mais Java est encore largement supérieur sur ce point.

Python/PyQT4 : Cela pourrait être une très bonne idée car le langage python est relativement simple et souple et l'utilisation du framework Qt4 permettrais d'avoir un rendu coté fenêtre impeccable. Coté déploiement nous serons obligés de distribuer Python et PyQt4 avec la version windows ce qui à mon sens est lourd (en plus là je part du principe qu'on n'utilise que Python ET Qt4 et rien d'autre..)

C++/Qt4 : Je ferais les mêmes remarques pour le coté Qt par contre pour le coté C++ les exécutables seront compilés pour chaque plateformes et il faudra s'assurer que chaque plateformes est compatible avec le code, la difficulté est bien plus grande.

PHP/technos Web : Cela peut être encore plus intéressent car à l'heure du cloud je vois assez bien sur le net un mini AGL simple d'accès (comme le son les outils en ligne de google). On pourrais aussi l'installer en local sur un serveur apache/php. Dans tous les cas nous n'aurions pas à nous soucier du code, car ça sera au navigateur de faire le boulot de rendu ! (il faudra peut être prendre en compte de vieux navigateurs comme IE7.. mais c'est sans doute un des seuls inconvénients) 

Coté APIs/Framework j'ai déjà parlé de Qt4 mais on peut aussi penser à OpenGL et à DirectX (Une entité qu'est ce que c'est ? au final c'est 6 vertex avec une texture 2D qui contient le texte à afficher).


C'est donc un projet intéressent qui rendrait service à plus d'une personne, que ce soit un étudiant qui n'a pas les moyens de s'acheter un PowerAMC ou une jeune entreprise qui à besoin de modéliser son système d'information de manière efficace. 

N'hésitez pas à réagir !

Contrat Creative Commons

13 commentaires:

  1. tu pourrais essayer avec GWT pour java qui est utilisé par google pour réaliser leur applications. cela relie ton envie de coder en java pour la facilité et le déploiement sur le web (enfin il me semble).

    tiens moi au courant cela m'intéresse.

    Nico

    RépondreSupprimer
  2. J'ai vue que côté GWT il y avait de quoi faire, mais même si java est une bonne solution, je ne l'utiliserais sans doutes pas pour une telle application. Je pense que HTML5/CSS3 et tout ce qui va avec (ajax, etc...) serait bien plus pratique en terme de code, de déploiement etc...

    Une question, pourquoi un éditeur Merise t'intéresse t'il ? lourd constat comme moi que pour un étudiant c'est difficile ? ou perspective professionnel ?

    RépondreSupprimer
  3. en gros je suis entre les deux je suis développeur en alternance et ai déjà vu pas mal d'outils pour faire de la modélisation mais toujours payants (très cher et pas accessible du tout aux petit budgets) et toujours très chiant d'utilisation... De plus les entreprises ne sont pas toutes des entreprises de développement donc n'ont pas le budget pour payer de tels logiciels (je parle en connaissance de cause actuelle)

    Et actuellement je suis a la recherche d'un outil pour mon mémoire sachant que j'ai un MCD gigantesque a faire...

    Après pour en revenir au sujet, le développement web avec HTML5/CSS3, etc... perso je trouve ca un peu lourd a programmer mais qui peut être est beaucoup plus léger que JAVA pour faire ca surtout pour une application en ligne.

    mais je dis ca de suite en dev web ca va être galère.

    mais je reste très intéressé par le sujet (surtout si c'est fait en web a mon avis ce serait très prisé par beaucoup d'étudiants et personnes n'ayant pas accès a ces outils).

    Je campe sur le sujet !

    RépondreSupprimer
  4. Pour le moment je termine mes épreuves (BTS Info Gestion) et après il est possible que je planche correctement sur le sujet. D'autres étudiants sont aussi intéressés par un projet comme celui ci. Après comme tu le souligne c'est aussi pas mal pour des entreprises qui ne font pas forcement que du dev mais qui ont besoin d'outils (au moins basic et fonctionnels) pour réaliser une analyse de SI.

    Si je lance un projet ça se verra sur le blog. Sinon je n'ai pas expulsé java (encore), mais je ne connais pas du tout GWT (c'est un framework utilisable côté client aussi ? il me semble que c'est réservé au Web et java pour le web je n'y crois pas pour les petits budgets)

    @ bientôt peut être

    RépondreSupprimer
  5. petite question: tu n'étais pas a Dijon avant?

    RépondreSupprimer
  6. Si si, en DUT informatique, une année ;) toi aussi ? tu est le nicolas qui était dans mon groupe en 1ère année ? (groupe A avec M. Germain ?)

    RépondreSupprimer
  7. yes ! bien vu ! :D

    pas mal tes petites appli avec xna ! :)

    RépondreSupprimer
  8. Tu a jeté un oeil à mon site alors ;) c'est ce que j'ai fait pour prendre en main le framework, là (si tu a lu ma news) je code un mini framework au dessus de XNA (compatible Xbox 360 aussi) qui permet de créer du contenu pour des jeux XNA assez rapidement. Mais bon le je m'éloigne du sujet du billet...

    RépondreSupprimer
  9. Bonjour,

    Pourquoi ne pas contribué à AnalyseSI, il répond à tout les critères que tu a cité.
    De plus le projet n'est pas mort, la dernière version date du 29/08/2010

    RépondreSupprimer
  10. Où en est tu de ce projet ? Je suis en train de faire des recherches pour monter un tel logiciel en Open Source, trop besoin dans mon taf.

    RépondreSupprimer
  11. Salut,

    Le projet n'a pas démarré car pour mes études j'ai fais avec les moyens du bord (donc c'était assez chaotique) et là ça fait plus d'un an que je bosse et on utilise rarement Merise donc du coup...

    Perso j'utilise toujours la démarche quand on a une partie analyse car je trouve ça vraiment bien comme méthode mais je suis le seul...

    Tu voudrais partir sur quel type de techno pour développer le soft ? Quand j'étais dans mes études je ne jugerais que par les langages compilés mais depuis que je bosse dans le web et que je m'oriente jeux mobile/webapps je pense que faire une webapps, genre intégrée dans chrome pourrait être pas mal du tout. Qu'en pense tu ?

    RépondreSupprimer
  12. Architecte fonctionnel sur les progiciels d'assurance de personne j'ai utilisé AMC et WD.
    Suis candidat si vous lancez ce projet pour y participer en phase de conception, validation de l'ergonomie et recette.
    Quelques idées en vrac:
    Prendre en compte plus en amont les process interruptifs, les noeuds de traçabilité, la gestion de la vie des entités historisation / périodisation , la volumetrie
    Traiter la gestion complète du reverse ingenering
    ...

    RépondreSupprimer
  13. Salut,

    Cet article est assez vieux et je n'ai plus l'utilité d'un tel logiciel aujourd'hui (enfin même si ça serait magique d'avoir un truc pour faire des BDD facilement et rapidement avec la méthode merise).

    RépondreSupprimer