Mise à jour

2005/03/19

Suite au test effectué en 2004, plusieurs facteurs ont été améliorés depuis, grâce au travail effectué par KDO. Ainsi, avec la version 0.94 de Dia sous Linux (Fedora Core3), voici la liste de corrections apportés:

  1. Bien qu'on ne puisse pas modifier la position des multiplicités, rôles et noms d'associations, leur positionnement est meilleur. Les nombres et les noms évitent d'être par dessus les lignes des association ou trop collés sur les classes. Mais pas toujours, les associations qui parte du haut ou du coin gauche haut, on encore de la diffuculté à se placer correctement. De plus, il existe des problèmes de rafraîchissement.
  2. La fenêtre de propriété des classes et des associations est, il me semble, beaucoup plus claire que celle de Umbrello ou Poseidon. Il est aisé d'ajouter des attributs avec la souris et le clavier (Alt+A, Alt+N, Tab), ce qui n'est pas vraiment le cas dans Umbrello où les nombreux popups nuisent à la saisie en masse...
  3. L'exportation vers PNG fonctionne bien avec les deux choix offerts dans le menu d'exportation.
  4. À propos du fichier uml2php5-2.1.0.tar.gz, on peut l'extraire dans le répertoire personnel ~/.dia/xslt/ en créant le répertoire préalablement si et seulement si on efface le fichier /usr/share/dia/xslt/stylesheets.xml. La version 2.1.0 de uml2php5 ne contient pas toutes les feuilles de style ajoutées à dia 0.94.

Appliquons des patrons

Je vais tenter de dessiner les patrons du livres "Applying UML And Patterns", An Introduction to Object-Oriented Analyis and Design and the Unified Process (second edition) de Craig Larman avec le logiciel dia et ensuite d'exporter le tout en php5.

Test 1 : diagramme de classe

2004/06/05 13:10

Premier test, figure 1.3 (à la page 8). Il s'agit d'une relation simple entre trois classes.

Premier problème, je ne connais pas la manière d'afficher la section attribut d'une classe avec une hauteur raisonable sans ajouter un attribut vide. Le résultat fait laid présentement. Il faudrait que je trouve une sorte de min-height par défaut pour les sections attributs et méthodes des classes.

Deuxième problème, les noms des associations se retrouve trop prêt de la ligne de l'association. Il devrait y avoir un moyen de sélectionner le nom et de le remonter un peu.

Troisième problème, les cardinalités sont presqu'invisible dans certains cas. Et aucun moyen de les déplacer manuellement.

Quatrième problème, il devrait y avoir un moyen de faire des lignes droites pour les associations (de spécifier qu'il ne doit pas y avoir de cassures).

Cinquième problème, le menu du diagramme devrait être en haut et non en menu contextuel.

Résultat: diagramme avec trois classes Player, Die et DiceGamediagramme avec trois classes Player, Die et DiceGame

L'exportation en PNG (Portable Network Graphics) ne fonctionne pas très bien comme vous le voyez sur la première image.

Exportation en php5

2004/06/05 13:27

Exportation: Clique droit, File > Export... > Determine file type: XSL Transformation filter (*.code).

Pas très évident puisqu'il est tout à fait en bas, et qu'il n'y pas de PHP dans le nom.

Ensuite, on sélectionne From: UML-CLASSES-EXTENDED To: PHP5 et on clique sur OK. from uml-classes-extended to php5

Étrangement l'exportation génère un fichier .code vide. On a par ailleurs 3 fichiers php avec le nom de nos classes. Regardons le code généré (Attention, il utilise les retours de ligne Unix, même sous Windows. Donc ne l'ouvrez pas avec notepad.). Avec wordpad, par contre, la présentation est correcte.

DiceGame.class.php

<?php
/**
 * 
 * Code skeleton generated by dia-uml2php5 plugin
 * written by KDO kdo@zpmag.com 
 * @author     undefined
 * @copyright  undefined
 * @license    undefinedDiceGame
 */
require_once('Player.class.php');
require_once('Die.class.php');

class DiceGame {



}
?>

Die.class.php

<?php
/**
 * 
 * Code skeleton generated by dia-uml2php5 plugin
 * written by KDO kdo@zpmag.com 
 * @author     undefined
 * @copyright  undefined
 * @license    undefinedDie
 */
require_once('Player.class.php');
require_once('DiceGame.class.php');

class Die {


	/**
	 * 
	 * @var 
	 * @access 
	 */

	private  $faceValue;


}
?>

Player.class.php

<?php
/**
 * 
 * Code skeleton generated by dia-uml2php5 plugin
 * written by KDO kdo@zpmag.com 
 * @author     undefined
 * @copyright  undefined
 * @license    undefinedPlayer
 */
require_once('Die.class.php');
require_once('DiceGame.class.php');

class Player {


	/**
	 * 
	 * @var 
	 * @access 
	 */

	private  $name;


}
?>

Première impression: où peut-on entrer le nom de l'auteur, enlever le copyright et la license? Peut-on avoir le gererated by en français? À quoi servent les lignes @var et @access?

Test 2 : Diagramme d'intéraction

2004/06/05 14:04

Je tient à dire que pour créer une instance de classe, il faut utiliser l'icône [Obj] de la barre d'outils.

Problème 6, lorsqu'on double-clique sur un objet, on dirait qu'on n'obtient jamais le focus sur le premier champ texte. Ça devient long...

Problème 7, un lifeline ne contient qu'une seul petite case. Il aurait bien de pouvoir en créer plusieurs sur la même ligne. Si on crée deux lifeline, une par dessus l'autre, on ne peut plus sélectionner celle d'en dessous. De plus, la sélection d'une case bouge la ligne et non pas la case étrangement.

Exportation UML2PHP5 : 0, rien, nada, seulement un fichier .code de 0 octets.

Il est assez étrange aussi que je n'ai pas vu d'outils pour les projets. C'est à dire utiliser plusieurs classes parmis plusieurs diagrammes. Si chaque partie du diagramme spécifie des détails sur l'implémentation, on devrait être capable de gérer des projets ou des ensembles de diagrammes non?

Cette fois-ci, j'ai utiliser le format .png (mais de GtkPixbuf Bitmap). Remarquer les lignes pointillées (lifeline) sur certaines cases causées par les doubles objets lifeline.

diagramme d'intéraction