|
Clémentine Nebut
Clémentine Nebut bureau E3.16 |
Stage de Master recherche - Refactoring de modèles de cas d'utilisation et de scénarios
SujetPour permettre au logiciel d'évoluer facilement, malgré sa complexité fonctionnelle et technologique croissante, il est communément admis qu'il convient de procéder régulièrement à des phases de restructuration. Il s'agit, sans modifier la sémantique du logiciel, d'en améliorer un certain nombre de qualités internes comme sa lisibilité, sa simplicité, le couplage de ses éléments, etc. On parle alors de refactoring (OJ90,Opd92, Fow99) : le refactoring est le procédé permettant de changer un système logiciel sans altérer le comportement externe du code mais en améliorent sa structure interne ("Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure" Fow99.). Un refactoring se présente sous forme d'un problème ou un symptôme de mauvaise conception, et d'une solution de refactoring adaptée. Tout d'abord dédié au code, le refactoring est maintenant également proposé au niveau des modèles. Ainsi, en 2001, Sunyé et al. proposaient des refactorings de modèles UML SPLJ01 pour l'évolution perfective des modèles ou leur conception progressive. Plusieurs travaux ont également été proposés pour le refactoring de cas d'utilisation (Iss07,RB03, DNHR10), pour simplifier les cas d'utilisation en y apportant des généralisations ou en factorisant certains comportements associés. La référence Iss07 propose de refactoriser les scénarios associés aux cas d'utilisation, par exemple en séparant un cas d'utilisation en deux. La référence RB03 synthétise les divers métamodèles de cas d'utilisation en un métamodèle détaillant notamment les différentes relations mises en oeuvre, puis propose un certain nombre de refactorings de base comme l'ajout d'un cas d'utilisation, d'un acteur, etc. La référence DNHR10 propose une méthode globale de refactorisation de diagramme de cas d'utilisation. L'idée est d'appliquer de manière systématique des refactorings unitaires comme l'ajout de cas d'utilisation plus général, ou la généralisation d'acteurs, en se basant sur l'analyse formelle ou relationnelle de concepts pour détecter le besoin de refactoring. Le stage s'inscrit dans la poursuite des travaux publiés dans DNHR11 et DNHR10, et basés en partie sur un outil développé l'année dernière lors d'un TER RDE10. Ces travaux proposent un refactoring des cas d'utilisation sur la base des relations qu'entretiennent les cas d'utilisation entre eux, ainsi que sur celles qu'ils entretiennent avec les acteurs. Or un cas d'utilisation est également largement caractérisé par les scénarios qui le décrivent, de façon textuelle ou à l'aide de diagrammes dynamiques. Les scénarios décrivent en effet les interactions ayant lieu entre le système et ses acteurs pour accomplir le cas d'utilisation. Ces scénarios doivent être pris en compte pour restructurer les cas d'utilisation. On pourra suivre plusieurs pistes lors de ce stage :
Dans le cas de diagrammes de séquence, on dispose d'un outil développé lors d'un TER de M1 en 2011, et qui implémente pour UML2.0 les travaux publiés dans LMZS06 pour la détection de segments communs. Il faut maintenant travailler à l'intégration de la connaissance des segments communs de scénarios dans le processus de refactorisation des cas d'utilisation. On envisagera également d'adapter ce type d'approche pour des scénarios textuels, ainsi que des approches de type alignement de séquences.
[DNHR11] Xavier Dolques, Clémentine Nebut, Marianne Huchard, and Philippe Reitz. Fixing generalization defects in uml use case diagrams. To appear in Fundamenta Informaticae, 2011. [DNHR10] Xavier Dolques, Clémentine Nebut, Marianne Huchard, and Philippe Reitz. Fixing generalization defects in uml use case diagrams. In Proceedings of CLA'2010 (conference on Concept Lattice and their Applications), 2010. [Fow99] Martin Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, 1999. [Iss07] Ayman Issa. Utilising refactoring to restructure use-case models. In Proc. of the World Congress on Engineering, 2007, LNCS, pages 523527, 2007. [LMC] Miguel A. Laguna, Jose M. Marqués, and Yania Crespo. On the semantics of the extend relationship in use case models: Open-closed principle or clairvoyance? In CAISE'10. [LMZS06] Hui Liu, Zhiyi Ma, Lu Zhang, and Weizhong Shao. Detecting duplications in sequence diagrams based on sux trees. In APSEC '06: Proceedings of the XIII Asia Pacic Software Engineering Conference, pages 269276, Washington, DC, USA, 2006. IEEE Computer Society. [OJ90] William F. Opdyke and Ralph E. Johnson. Refactoring: An aid in designing application frameworks and evolving object-oriented systems. In Proceedings of the Symposium on Object Oriented Programming Emphasizing Practical Applications (SOOPPA), 1990. [Opd92] William F. Opdyke. Refactoring: A Program Restructuring Aid in Designing Object-Oriented Application Frameworks. PhD thesis, University of Illinois at Urbana-Champaign, 1992. [RB03]Kexing Rui and Greg Butler. Refactoring use case models : The metamodel. In ACSC'03, volume 16 of CRPIT, pages 301308. ACS, 2003. [RDE+ 10] Julio RUIZ SIMARI, Iliass DAGHA, Hatim EL Assam, Mohamed EL ASRI, and Khalid BOUZROUD. Correction automatique de diagrammes de cas d'utilisation UML, 2010. [SPLJ01] Gerson Sunyé, Damien Pollet, Yves Le Traon, and Jean-Marc Jézéquel. Refactoring UML models. In Proceedings of the 4th International Conference on The Unified Modeling Language, Modeling Languages, Concepts, and Tools, pages 134148. Springer, 2001. |