Patrons de conception et
identification automatique

Responsables

Yann-Gael Guéhéneuc, local 2345, poste 6782, guehene@iro.umontreal.ca
Naouel Moha, local 2355, poste 1805, mohanaou@iro.umontreal.ca

1 Bénéfices attendus

En choisissant ce projet, les étudiants approfondiront leur connaissance de la programmation orientée-objets et du langage de programmation Java. Ils approfondiront également leur connaissance des patrons de conception, des techniques de retro-conception des programmes et de programmation par contraintes. De plus, ils apprendront à utiliser l'environnement Eclipse.
Ces connaissances apporteront aux étudiants un avantage indéniable sur le marché du travail ou dans la poursuite de leurs études : les patrons de conception sont un sujet important dans la recherche et un gage de développements de qualité dans l'industrie. De plus, Eclipse est devenue la plateforme de développement de référence dans l'industrie (IBM WebSphere) et dans les milieux universitaires. La retro-conception est omniprésente dans tout projet logiciel moderne et la programmation par contraintes est une technique très répandue dans de nombreux domaines (aide à la décision, génie logiciel, finance. . .)
Du point de vue des responsables du projet, le travail réalise permettra de répondre rigoureusement à la question des caractéristiques de qualité des solutions des patrons de conception, de leur identification automatique et de leur impact sur la qualité des programmes à objets.

2 Contexte

La qualité est un facteur essentiel de la pérennité des programmes. Des programmes avec de bonnes caractéristiques de qualité coutent moins cher car ils prennent moins de temps à développer et sont plus faciles a maintenir.
La maintenance représentant maintenant 90% du cout des programmes, la qualité des programmes à un impact direct sur leur cout !
La qualité des programmes se mesure à l'aide de métriques directes, telles la complexité cyclomatique, et de modèles prédictifs de qualité qui permettent d'interpréter les résultats des métriques directes pour donner une mesure indirecte de la qualité des programmes : stabilité, maintenabilite, extensibilité...
Depuis plusieurs années, la qualité des programmes a été grandement améliorer par l'introduction des patrons de conception [2]. Les patrons de conception décrivent de bonnes solutions à des problèmes récurrents de conception des programmes à objets. Les solutions proposées par les patrons de conception sont reconnues comme ayant de bonne caractéristiques de qualité.

3 Constat

Pourtant, à ce jour et à notre connaissance, aucune étude n'a pu prouver positivement l'impact des patrons de conception sur la qualité des programmes à objets. Au contraire, plusieurs études (par exemple [3]) ont montre qu'une utilisation abusive des patrons de conception dégradait la maintenabilite des programmes.
De plus, il est reconnu que l'utilisation de patrons de conception dégrade les métriques orientées-objets traditionnelles (par exemple Chidamber et Kemerer [1]) et qu'aucun modèle prédictif de qualité ne rend compte de la présence des patrons de conception d'une manière positive.
C'est pourquoi il est aujourd'hui important de caractériser clairement l'impact des patrons de conception sur la qualité des programmes à objets.

4 Travail demande

D'abord, le travail consiste µa analyser (possiblement un sous ensemble) des programmes Java :
{ Gantt Project v1.10.2 (cf. ganttproject.sourceforge.net/) ;
{ HolubSQL v1.0 (cf. www.holub.com/software/holubSQL/) ;
{ JSettlers v1.0.5 (cf. sourceforge.net/projects/jsettlers) ;
{ JTans v1.0 (cf. jtans.sourceforge.net/) ;
{ Juzzle v0.5 (cf. www.juzzle.com/) ;
{ Risk v1.0.7.5 (cf. sourceforge.net/projects/jrisk) ;
et d'identifier manuellement (par analyse manuelle, au travers de la documentation. . .) les patrons de conception utilises pour la conception et l'implantation de ces programmes.
Ensuite, âpres avoir identifie les patrons de conception utilises, le travail consiste à comparer les patrons de conception identifies manuellement avec ceux identifies automatiquement par l'outil Ptidej (cf. www.ptidej.net) puis d'expliquer les raisons pour lesquelles certains patrons sont identifies automatiquement la ou il n'y en a pas et pour lesquelles certains patrons ne sont pas identifies automatiquement.
Enfin, il s'agit de proposer des solutions pour améliorer les systèmes de contraintes de Ptidej pour améliorer les mécanismes d'identification automatique.

5 Environnement de travail

Le travail sera effectue par autant de groupes possible d'au plus quatre étudiants, en Java, avec l'environnement de développement pour Java fourni avec la plate-forme Eclipse.

References

[1] Shyam R. Chidamber and Chris F. Kemerer. A metrics suite for object- oriented design. Technical report E53-315, MIT Sloan School of Man- agement, December 1993.
[2] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns { Elements of Reusable Object-Oriented Software. Addison-Wesley, 1st edition, 1994. isbn: 0-201-63361-2.
[3] Peter Wendorff. Assessment of design patterns during software reengineering: Lessons learned from a large commercial project. In Pedro Sousa and Jurgen Ebert, editors, proceedings of 5th Conference on Soft- ware Maintenance and Reengineering, pages 77{84. IEEE Computer Society Press, March 2001.
RESULTAS