Objectif
Utiliser les mécanismes d’introspection java pour afficher un diagramme de classes UML.
Introduction
Hier je me suis demandé s’il était faisable de générer un diagramme UML à partir d’une classe de base Java. Après une nuit blanche passée à plancher sur le problème, voici la première version d’un outil développé en 24 heures pouvant se révéler fort pratique et qui va bientôt concurrencer doxygen ou umlGraph ;)
Pseudo cahier des charges
- Traiter toutes les classes dépendantes d’une classe mère ( ou classe de base )
- Ne pas introspecter les packages java natifs ( commençant par java, javax et sun )
- Afficher les superClasses, les interfaces et les classes utilisées par les attributs de classe
- Afficher un diagramme UML global au format PNG à partir de l’outil graphviz
Améliorations ( version 1 )
- Traiter toutes les classes d’une arborescence ( package ou racine )
- Discriminer les interfaces des classes normales
- Mettre les superclasses au dessus des classes spécialisées
Améliorations ( version 2 )
- Faire des sous-graphes par packages
- Gérer en objet les éléments Graphviz
- Paramètres gérés : afficher les détails, détailler les interfaces, afficher les superclasses
Améliorations possibles
- Traiter des jar
- Générer un fichier petal rose
- Remplir un fichier de propriétés avec les informations ( quasiment déjà intégré depuis la version 0 )
Diagramme UML de l’outil ( version 0 )
Diagramme UML de l’outil ( version 1 )
Diagramme UML utilisé pour les tests
Diagrammes UML utilisés pour les tests ( version 2 )
Pour approfondir les sujets
Site doxygen : http://www.stack.nl/~dimitri/doxygen/
Site graphviz : http://www.graphviz.org/
Introspection java : http://download.oracle.com/javase/1.4.2/docs/api/java/lang/reflect/package-summary.html
umlGraph : http://www.umlgraph.org/
umlGraph : http://www.umlgraph.org/