Une salle de TP
20-12
2019

Projet interfaces graphiques - UML-Editor

But Le but visé est de réaliser un éditeur de diagrammes UML ainsi qu’un générateur de code correspondant. S’il est demandé de se focaliser principalement sur l’interface de l’outil, il ne faut éviter de négliger par trop les aspects fonctionnels. Le logiciel devra être écrit en Java. Pour trouver l’inspiration on peut conseiller de regarder les outils suivants (liste non exhaustive) : ArgoUML, Bouml, Umbrello…

Fonctionnalités UML

L’éditeur doit permettre d’éditer au minimum des diagrammes de classes et des relations de composition/agrégation et des liens d’associations simples. L’édition d’une classe doit permettre d’y ajouter des attributs et des méthodes. Quelques types simples doivent être supportés (int, string) afin de typer les attributs, les valeurs de retour ou les paramètres des méthodes.

Fonctionnalités génération de code

L’outil devra permettre de générer du code correspondant à un diagramme en cours d’édition. Le langage qui devra être supporté par défaut est le langage Java. Attention, le code généré doit être un code pouvant être compilé sans erreur, ni modification! Attention donc à générer des instructions renvoyant des valeurs pour les méthodes censées en renvoyer… D’autre part, on prendra soin d’implanter systématiquement des getters/setters pour les attributs.

Fonctionnalités de l’interface

L’interface devra comporter un menu permettant d’ouvrir/sauver un diagramme. Le format de sauvegarde n’est pas défini, mais l’emploi de la sérialisation Java est conseillé. Le menu devra aussi conserver un petit historique des derniers fichiers-diagrammes utilisés.

Un menu d’édition devra exister proposant des choix utiles dont : de quoi permettre d’annuler/refaire les dernières opérations sur le diagramme, de quoi couper/copier/coller des éléments du diagramme. D’autre menus pourront exister afin de proposer le contrôle de diverses fonctionnalités : ajout d’objets, génération de code, export sous forme d’image, préférences, etc.

Une barre d’outils devra d’aller y pêcher les composants les plus essentiels des diagrammes : classe, relation, etc.

La partie « édition » proposera à l’utilisateur une zone d’édition dans laquelle seront placés les composants représentant les classes et les relations entre classes. Dans cet espace, il devra être permis de déplacer une classe (les relations qui y sont attachées devront « suivre », de sélectionner un élément en vue de le supprimer (par menu, touche clavier) ou le déplacer. D’autre part, la sélection d’un élément devra faire apparaître en un autre endroit de l’interface, un inspecteur de l’objet, c’est-à-dire un formulaire d’édition adapté à l’objet.

On veillera aussi à introduire la localisation de l’interface, les raccourcis claviers, etc.

Notes informatives

Important : une bonne analyse préalable devrait aider très sensiblement la construction de l’outil. Il peut-être utile de consulter les enseignants en cas de doute ou pour validation. Si les extensions ne sont que des propositions pour aller plus loin, il est toutefois recommandé de ne pas toutes les négliger lors de la construction, quitte à n’implémenter que le minimum demandé.

Très important : un soin tout particulier devra aussi être porté sur l’ergonomie. L’outil doit être conçu dès le départ comme un outil utilisable! Y réfléchir en préalable est aussi fortement recommandé!

Réalisation

Le projet devra être réalisé par groupe de trois étudiants au plus (sans exception). Il devra être accompagné d’une documentation utilisateur (page web avec captures d’écran lorsque nécessaire - sans toutefois exagérer car cela doit rester utile.) Les dates des soutenances seront précisées ultérieurement.

Extensions intéressantes à considérer

  • Valeurs par défaut pour les attributs
  • Langage C++, SQL
  • La visibilité des attributs et méthodes
  • Support pour diagrammes géants
  • (dur) Sérialisation des diagrammes selon le format XML Metadata Interchange
  • (dur) Interface de branchement pour plugins « langages »