12
PyUt1.1 Python UML Tool version 1.1 Rapport de projet edric Dutoit EI6, eivd 17 juillet 2002

PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

Embed Size (px)

Citation preview

Page 1: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt1.1Python UML Tool version 1.1

Rapport de projet

Cedric DutoitEI6, eivd

17 juillet 2002

Page 2: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

Table des matieres

1 Informations generales 3

2 Rappel du cahier des charges 42.1 Etat au debut du projet . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Responsabilites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Fonctionalites a implementer . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Deroulement du developpement 5

4 Etat final du projet 64.1 Correction des bugs de PyUt 1.0 . . . . . . . . . . . . . . . . . . . . . . 64.2 Amelioration de l’edition de classes : Ajout de commentaires . . . . . . 64.3 Ajout de l’edition du diagramme des cas d’utilisation (use-case view) . 64.4 Internationalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64.5 Arbre de projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64.6 Reverse-engineering et generation de code . . . . . . . . . . . . . . . . 64.7 Notes UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.8 XMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.9 Tests automatises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.10 Aide contextuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.11 Localisation des sources . . . . . . . . . . . . . . . . . . . . . . . . . . 8

5 Tests 95.1 Tests unitaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

5.1.1 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 95.1.2 Philosophie des tests unitaires . . . . . . . . . . . . . . . . . . . 95.1.3 Programmes necessaires . . . . . . . . . . . . . . . . . . . . . . 95.1.4 Ecrire de nouveaux tests . . . . . . . . . . . . . . . . . . . . . . 10

5.2 Tests utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Rapport de projet 2 / 12 C.Dutoit, EI6

Page 3: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

Resume

PyUt est un petit editeur UML graphique qui permet la generation, l’impression et l’ex-port de diagrammes de classes et use-cases sous differents formats. Ce document presentele rapport final du projet PyUt 1.1 qui est la suite directe du projet PyUt 1.0.

1 Informations generales

PyUt 1.1 fait suite au projet PyUt 1.0 developpe comme projet de groupe durant lecinquieme semestre de notre formation d’ingenieurs informaticien a l’ecole d’ingenieursd’Yverdon (Suisse). Le projet PyUt 1.1 est egalement developpe a l’EIVD durant lesixieme et dernier semestre de notre formation.

Nom du projet PyUt - Python UML Tool

Site de reference http://pyut.sf.net

Sources du projet Disponible par CVS (cf 4.11 page 8)

Professeur responsable T. Gagnebin <[email protected]>

Membres du groupe

– Laurent Burgbacher <[email protected]>

– Nicolas Dubois <[email protected]>

– Cedric Dutoit <[email protected]>

– Nabil Hamadi <[email protected]>

– Deve Roux <[email protected]>

– Philippe Waelti <[email protected]>

Rapport de projet 3 / 12 C.Dutoit, EI6

Page 4: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

2 Rappel du cahier des charges

2.1 Etat au debut du projet

PyUt 1.0 offre les fonctionalites suivantes :

– Edition de diagrammes de classes UML 1.3

– Enregistrement et chargement dans des formats de fichier proprietaire XML com-presse et XML non compresse (*.put)

– Support de plugins pour l’enregistrement et le chargement de diagrammes declasses

– Aide standard et tutorial (exemple)

– Documentation developpeur grace a pyDoc, outil de generation de documentationdynamique semblable a JavaDOC.

2.2 Responsabilites

Chef de groupe, Site web Cedric Dutoit

Chef de groupe remplacant, CVS, Configuration, Releases : Deve Roux

Documentation, Qualite : Philippe Waelti

Tests : Laurent Burgbacher

Internationalisation : Nicolas Dubois

Feedback : Nabil Hamadi

2.3 Fonctionalites a implementer

Pour le projet PyUt 1.1, nous souhaitons realiser les taches suivantes :

– Correction des bugs de PyUt 1.0

– Amelioration de l’edition de classes : Ajout de commentaires

– Ajout de l’edition du diagramme des cas d’utilisation (use-case view)

– Internationalisation : possibilite de choisir la langue du logiciel parmis l’anglais etle francais, avec extension possible pour d’autres langages

– Ajout de la possibilite d’ouvrir plusieurs fichiers en meme temps (arbre de projet)

– Ajout de Roundtrip (generation de code et reverse engineering) pour les langagesPython et Java. Ajout de la generation de code C++

– Ajout des notes UML dans le diagramme de classes

– Ajout de tests automatises du logiciel

– Ajout d’une aide contextuelle (infobulles)

– Ajout de l’import/export XMI, qui est un format standard d’echange de donneesUML, reconnu entre autre par Rational Rose

Rapport de projet 4 / 12 C.Dutoit, EI6

Page 5: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

3 Deroulement du developpement

Dans une ambiance agreable, les developpeurs ont su collaborer tout au long de ceprojet, ainsi qu’assumer leurs roles respectifs.

Le developpement de ce projet s’est deroule dans des conditions parfaitement idylliques,conformement aux planification temporelles prevues en debut de projet. Celui-ci s’estderoule en plusieurs phases, soit une phase d’etude et d’analyse (tres rapide, car il yavait peu de besoin) pour l’etablissement du cahier des charges. Chaque developpeurs’est alors attele a corriger les bugs de la version precedente de PyUt. Une premieredeadline a cloture la correction des bugs et a marque le debut de la phase suivante, soitle developpement des nouvelles fonctionalites.

Durant cette phase, L.Burgbacher a continue a travailler sur les liens entre les classes,qui ne s’affichaient pas comme attendu.

Notons encore l’utilite du systeme CVS (Logiciel de controle et suivi de versions) lorsqueN.Dubois a du s’occuper d’implementer l’internationalisation de PyUt. En effet, il de-vait travailler sur la majorite des fichiers sources sur lesquels les autres developpeurstravaillaient, sans pour autant corrompre ces fichiers. Avec le systeme CVS, nous avonspu declarer que N.Dubois travaillait sur une nouvelle branche du projet et que ses mo-difications etaient compartimentees et memorisees, en vue d’une fusion (merge) plustard avec la branche de developpement principale de PyUt(devel 1 0).

Cette phase de developpement s’est arretee debut juin pour permettre une phase detests d’une seance de cours (2 periodes), suivie par L.Burgbacher, responsable des tests.(Voir rapport de test, section 5)

Les trois seances suivantes ont ete consacrees a la correction des bugs et au developpementde la documentation, ainsi qu’a la creation de la distribution finale de PyUt.

D.Roux, responsable des releases a alors cree toutes les distributions de PyUt1.1 :distribution .exe auto-installable pour Windows, distribution .tar.gz multi-plateforme(sources) et distribution Linux en .RPM.

La session suivante a ete consacree a la preparation de la presentation a la classe, puisla derniere session a la presentation proprement dite. La derniere semaine, PyUt1.1 aegalement ete presente a nos successeurs, soit aux etudiants de deuxieme annee, sectionlogiciel.

Travailler a plusieurs sur un projet tel que PyUt est extremement gratifiant. La moti-vation des membres par rapport au projet amene tous les jours des satisfactions. Parexemple, un jour alors que nous venons de charger depuis le CVS la derniere versionde PyUt, nous constatons qu’une nouvelle fonctionalite s’est ajoutee et est directe-ment employable pour nos laboratoires, pour d’autres cours. Parfois, un collaborateurparticulierement motive travaille tout un week-end sur le projet et le transforme radi-calement vers un ideal. Les elements se montent progressivement comme se monte unchateau de carte, pour construire une unite utile et stable : PyUt1.1 !

Rapport de projet 5 / 12 C.Dutoit, EI6

Page 6: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

4 Etat final du projet

Tous les points du cahier des charges ont ete remplis, exception faite de l’exportationXMI. Cette tache est terminee a 70%; la raison en est donnee a la section 4.8 pagesuivante

4.1 Correction des bugs de PyUt 1.0

Tous les bugs detectes et marques comme capitaux lors de PyUt 1.0 ont ete corriges.Certains bugs detectes par la suite ont ete egalement corriges. Le bug essentiel cor-rige etaient les liens entre les classes qui ne se chargeaient/sauvaient/affichaient pascorrectement.

4.2 Amelioration de l’edition de classes : Ajout de commentaires

Les commentaires de classes ont etes ajoutes et sont disponible a l’edition d’une classe.

4.3 Ajout de l’edition du diagramme des cas d’utilisation (use-case view)

Les acteurs et les systemes ont ete integres dans Pyut. Seul defaut actuel (en est-cevraiment un), la possibilite de mixer le diagramme de classe et le use-case view.

4.4 Internationalisation

La Possibilite de choisir la langue du logiciel parmis l’anglais et le francais a ete rendueposible grace a l’outils standard GNU gettext, outil prevu pour l’internationalisation(i18n). Il est possible d’ajouter rapidement d’autres langues a PyUt . (Voir la sectioni18n dans la documentation developpeurs)

4.5 Arbre de projet

L’arbre de projet a ete code et integre dans PyUt et permet d’ouvrir plusieurs fichiersen meme temps, un seul diagramme par fichier.

4.6 Reverse-engineering et generation de code

– La generation de code Python fonctionne, avec support de commentaires standardspydoc.

Rapport de projet 6 / 12 C.Dutoit, EI6

Page 7: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

– Le reverse-engineering Python fonctionne pour plusieurs fichiers. Le programmelit les fichiers et demande de selectionner les classes a analyser puis genere lesdiagrammes de classe UML. L’heritage est reconnu, mais le reverse-engineeringd’agregation et de composition n’est pas realise, car il engendre trop de problemespolitiques (Par exemple, faut-il afficher une agregation pour l’agregation d’uneclasse realisee seulement dans une procedure?)

– La generation de code C++ fonctionne avec generation de fichiers .h et .cpp dansdes dossiers distincts, et avec support du systeme de documentation standarddoxygen. (support = generation des tags de commentaires pour les en-tetes deprocedure, de classe, ...)

– La generation de code Java fonctionne avec support du systeme de documentationautomatique JAVADOC.

– Le reverse engineering Java fonctionne pour un seul fichier a la fois. L’implemen-tation d’interface et l’heritage sont implementes, en plus du reverse engineeringdes elements standards : methodes, donnees-membres, classes, ...

4.7 Notes UML

Les notes UML ont ete ajoutees dans PyUt et permettent de documenter les classespresentes dans le diagramme de classe, comme tout autre element graphique.

4.8 XMI

Ajout de l’import/export XMI : l’importation fonctionne pour des fichiers XMI simples,et l’exportation ne fonctionne pas actuellement, mais il manque peu de chose pourqu’elle fonctionne. XMI est un format de fichier complexe qui demande beaucoup delignes de code par classe sauvee et pour cette raison, l’exportation ne fonctionne pas.La moindre ligne de code XML oubliee entraıne une lecture impossible, ou refusee d’unlecteur XMI. (Par exemple, le lecteur XMI de Rational Rose). Nous esperons que cettefonctionalite sera developpee pour la prochaine version de PyUt.

4.9 Tests automatises

Une serie de tests automatises par canevas de test ont ete mis en place et sont dispo-nibles dans le dossier src/tests. Lancer testall.py ou chaque fichier independamment.Les tests s’executent et retournent le resultat de test a l’ecran.

4.10 Aide contextuelle

Une aide contextuelle s’affiche lorsque l’utilisateur reste avec la souris sur un elementgraphique de PyUt , comme un bouton de commande (sous le menu).

Rapport de projet 7 / 12 C.Dutoit, EI6

Page 8: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

4.11 Localisation des sources

Les sources du projet sont disponibles sur le site WEB de pyut (http://pyut.sf.net),sur Sourceforge(http://www.sf.net/projects/pyut) ou par CVS.

CVS est un logiciel de gestion de versions de documentation puissant, beaucoup utilisedans le monde libre et par des entreprises de developpements consequentes (ELCA).

L’acces aux sources par CVS 1 se fait par les lignes de commandes suivantes, en consolede type unix (Unix, Linux, Cygwin) :

cvs -d :pserver:[email protected]:/cvsroot/pyut login

cvs -z3 -d :pserver:[email protected]:/cvsroot/pyut co pyut

Si CVS demande un mot de passe, entrer un mot de passe vide (return). Pour ob-tenir la documentation, effectuer les memes commandes en remplacant co pyut parco pyutDoc.

1. http://www.cvshome.org

Rapport de projet 8 / 12 C.Dutoit, EI6

Page 9: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

5 Tests

Deux sortes de tests ont ete realises sur PyUt : des tests unitaires et des tests utilisateurs.

5.1 Tests unitaires

5.1.1 Fonctionnement

Les tests unitaires sont automatises. Ils sont realises avec le module Python standardunittest. Ces tests sont pratiques une fois realises, car ils peuvent etre lances tres facile-ment, et leur resultat est immediat et binaire : reussi ou echoue. unittest est derive ducanevas de tests JUnit 2 qui est le canevas de reference, ecrit en Java. Pour plus d’infor-mations, voir le document “Unit : Canevas de tests” 3 realise par Laurent Burgbacherserviteur dans le cadre d’un projet personnel.

En pratique, peu de tests unitaires ont ete realises, du fait qu’ils sont relativementmal adaptes a des projets axes sur l’interface graphique. Comme PyUt fait tres peu dechoses en dehors de la gestion d’objets graphiques, les seuls tests unitaires concernentles classes :

– Singleton

– FlyweightString

– PyutPreferences

Ces derniers sont disponibles dans le repertoire src/tests. L’execution du fichierTestAll.py lance tous les tests et affiche un petit rapport.

5.1.2 Philosophie des tests unitaires

Le but des tests unitaires est de verifier en tout temps l’etat du programme developpede maniere rapide et automatique. Ainsi, on lancera les tests le plus souvent possible,de maniere a reperer au plus vite la modification qui aura fait echouer un des tests.

Il est bon de commencer le developpement d’un module en ecrivant tout d’abord sestests. Ainsi, le developpeur devra fixer l’interface du module avant de le developper, etsaura en tout temps quelles sont les parties qui ne respectent pas encore les tests.

5.1.3 Programmes necessaires

unittest est un module standard Python, donc tout ce qu’il faut se resume a unedistribution Python.

2. http://www.junit.org3. http://www.alawa.ch/eivd/unit/unit report.pdf

Rapport de projet 9 / 12 C.Dutoit, EI6

Page 10: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

5.1.4 Ecrire de nouveaux tests

S’il vous venait l’envie (excellente) de creer de nouveaux tests, un fichier template.pyfourni un modele, toujours dans le repertoire src/tests. Le fichier TestAll.py creeune suite de tests en chargeant tous les fichiers nommes TestXXX.py (ou XXX est le nomde la classe que vous testez) et en les executant.

5.2 Tests utilisateurs

Le mercredi 12 juin 2002 a ete consacre aux tests. Chaque developpeur a utilise PyUtdans le but de trouver des erreurs, et un systeme de “bug reports” a ete mis en placede la maniere suivante :

– Detection d’un bug

– Annonce du bug au responsable tests

– Reponse positive

– Creation d’un rapport de bug selon le fichier modele (src/bugs/template.txt)dans un nouveau fichier

– Ajout du fichier au CVS

– Catalogage du bug par le responsable tests et assignation a un developpeur

– Reponse negative

– Le bug a deja ete declare, un rapport de bug existe, suite de la recherche

Le mercredi suivant a commence par la correction des bugs les plus importants. Chaquebug corrige est consigne dans le rapport correspondant et verifie par le responsable tests.Les rapports sont disponible dans src/bugs.

Rapport de projet 10 / 12 C.Dutoit, EI6

Page 11: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

6 Ouvertures

Voici les elements a implementer dans PyUt pour les versions ulterieures :

– Ajout d’edition d’autres diagrammes UML

– Possibilite d’enregistrer plusieurs diagrammes par fichier

– Support de plus de langages (reverse-engineering et generation de code)

– Compatibilite et support d’autres logiciels (XMI)

– Ajouter des preferences dans les preferences existantes

– Realiser une bounding box pour l’exportation Bitmap, pour n’exporter que ce quiest utile

– Ameliorer les plugins, proposer des templates pour la generation de code (danslesquels on peut mettre les conventions de codage, par exemple)

– Supporter plus de langages : C#, Visual Basic, ADA, SQL, ...

– Ameliorer la methode de travail dans PyUt : Ajout de racourcis clavier, ajoutde creation rapide de methodes de classes en entrant un texte du style ”int me-thode(param1:type, param2:type)”

– Permettre la realisation de liens qui se ’crochent’ sur des liens

– Elargir le champ d’horizon des plugins, proposer un tutorial pour la creationde plugins et stimuler les etudiants de l’EIVD ou le monde de l’Open-Source adevelopper des plugins (comme projet de semestre, par exemple)

– Ameliorer la structure de base des donnees pour mieux aprehender la complexitefuture du developpement de PyUt. (=Refactoring)

7 References

– Site de Sourceforge : http://www.sourceforge.net

– CVS (Concurrent Versions System) : http://www.cvshome.org

– Python : http://www.python.org

– wxPython : http://www.wxpython.org

– Site du projet : http://pyut.sf.net

Rapport de projet 11 / 12 C.Dutoit, EI6

Page 12: PyUt1.1 Python UML Tool version 1.1 Rapport de projet …pyut.sourceforge.net/pyut1.1/report-pyut11.pdf · Python UML Tool version 1.1 Rapport de projet C edric Dutoit EI6, eivd 17

PyUt 1.1

8 Conclusion

Dans le cadre du premier projet de groupe, nous avons realise le logiciel PyUt1.0, editeurde classes UML code en Python. Ce projet y fait suite et sous le numero de version 1.1,ce projet implemente des fonctionalites supplementaires, comme le Roundtrip Java etPython ainsi que la generation C++.

D’autres fonctionalites ajoutees lors de ce projet ont ete l’integration d’un arbre deprojet, la possibilite d’importer les donnees a partir du format XMI, reconnu dansRational Rose.

Ce projet a connu un vif succes puisque la premiere version, PyUt1.0, a ete telechargeeplus de 5000 fois. La version Alpha de PyUt1.1 a ete telechargee plus de 360 fois sansque nous ayons fait aucune publicite (compteurs du 9 juillet 2002).

Ce projet interessant et utile merite d’etre poursuivi, par exemple lors des travaux degroupe ou de semestre de nos successeurs a l’EIVD.

Nous tenons a remercier ici l’EIVD pour son support et pour nous avoir permis dedevelopper ce projet une annee durant notre formation, comme projet de groupe.

Rapport de projet 12 / 12 C.Dutoit, EI6