L’Usage des Patrons de Conception dans la Réeingénierie Logicielle




Réalisé par: Yassine Al Harek
Supervisé par: Dr. Ali El Merzouqi
Prof. Anna Fabijańska

Introduction

Cet thèse se penche sur la question de la maintenance du logiciel, en étudiant l'état de l'art des solutions automatisées pour la détection et le réusinage de code. Une solution est proposée dans ce travail, qui a comme but de planter une graine d'une solution de refqctoring robuste dans la platforme Netbeans

Définitions préliminaires

  • Patron de Conception(Design Pattern): est une solution standard de problèmes récurrents dans le développement des logiciels, dans un contexte précis.
  • Code Smell: est une indication superficielle d'un problème plus profond dans le système.
  • Réusinage de code(Refactoring): est le processus de changer la structure du code ou de la conception  de manière à améliorer le logiciel sans changer son comportement

état de l'art

  • Prechlet et al.(2001) - Met en test la fameuse idée de toujours préférer les design patterns à autres solutions plus simple
  • Demeyer (2005) -  Discute l'efficacité des fonctions virtuelle en termes de performance, et discute la validité de l'idée disant que le polyphormisme améliore la maintenabilité du code au détriment de la performance
  • Balachandran (2013) - Propose un outil de détection automatique des code smells en combinant les fameux outils existant (CheckStyle, PMD et FindBugs)

énoncé du problème

  • Les principes du design orienté objet sont généralement négligés 
  • La procédure du refactoring est coûteuse
  • La platforme Netbeans a un manque d'outils de refactoring
  • Les outils existants ne proposent pas un refactoring automatique
  • Les outils existants ne profitent pas pleinement des avantages des design patterns

Solution proposée

Un plugin pour netbeans qui détecte le code smell et propose un refactoring et l'effectue automatiquement
Pour un commencement, le code smell Type Checking a été traiter. Le plugin detect le code smell en se basant sur les critères établies par Tsantalis et Chatzigeorgiou, l'outil effectue un refactoring au Strategy Design Pattern

Futurs Travaux

  • Traiter d'autres refactoring
  • Améliorer la détection pour éviter les "false positive"
  • Fournir une visualisation (UML entre autres) du changement effectué
  • Créer une base de donnée des refactorings acceptés par les utilisateurs, pour améliorer la détection

conclusion

Références

  • L. Prechelt, B. Unger, W.F. Tichy, P. Brossler, and L.G. Votta. A controlled ex-periment in maintenance: comparing design patterns to simpler solutions. Software Engineering, IEEE Transactions on, 27(12):1134–1144, Dec 2001. ISSN 0098-5589.
  • S. Demeyer. Refactor conditionals into polymorphism: what’s the performance cost of introducing virtual calls? In Software Maintenance, 2005. ICSM’05. Proceedings of the 21st IEEE International Conference on, pages 627–630, Sept 2005.
  • V. Balachandran. Reducing human effort and improving quality in peer code reviews using automatic static analysis and reviewer recommendation. In Software Engineering (ICSE), 2013 35th International Conference on, pages 931–940, May 2013.
  • Nikolaos Tsantalis and Alexander Chatzigeorgiou. Identification of refactoring opportunities introducing polymorphism . Journal of Systems and Software, 83(3): 391 – 404, 2010. ISSN 0164-1212.

deck

By Yassine Al Harek

deck

  • 432