<  Back to the Polytechnique Montréal portal

Automated Improvement of Software Design by Search-Based Refactoring

Rodrigo Morales Alvarado

Ph.D. thesis (2017)

Open Access document in PolyPublie
[img]
Preview
Open Access to the full text of this document
Terms of Use: All rights reserved
Download (1MB)
Show abstract
Hide abstract

Abstract

Software maintenance cost is estimated to be more than 70% of the total cost of system, because of many factors, including new user's requirements, the adoption of new technologies and the quality of software systems. From these factors, quality is the one that we can control and continually improved to prevent degradation of performance and reduction of effectiveness (a.k.a. design decay). Moreover, to stay competitive, the software industry hasshortened its release cycles to deliver new products and features faster, which results in more pressure on developer teams and the acceleration of system's design evolution. One way to prevent design decay is the identification and correction of anti-patterns which are indicators of poor design quality. To improve design quality and remove anti-patterns, developers perform small behavior-preserving transformations (a.k.a. refactoring). Manual refactoring isexpensive, as it requires to (1) identify the code entities that need to be refactored; (2) generate refactoring operations for classes identified in the previous step; (3) find the correct order of application of the refactorings generated, to maximize the quality effect and to minimizeconflicts. Hence, researchers and practitioners have formulated refactoring as an optimization problem and use search-based techniques to propose (semi)automated approaches to solve it. In this dissertation, we propose several approaches to tackle some of the major issues inexisting refactoring tools, to assist developers in their maintenance and quality assurance activities.

Résumé

Le coût de maintenance du logiciel est estimé à plus de 70% du coût total du système, en raison de nombreux facteurs, y compris les besoins des nouveaux utilisateurs, l'adoption denouvelles technologies et la qualité des systèmes logiciels. De ces facteurs, la qualité est celle que nous pouvons contrôler et continuellement améliorer pour empêcher la dégradation de la performance et la réduction de l'efficacité (par exemple, la dégradation de la conceptiondu logiciel). De plus, pour rester compétitive, l'industrie du logiciel a raccourci ses cycles de lancement afin de fournir de nouveaux produits et fonctionnalités plus rapidement, ce qui entraîne une pression accrue sur les équipes de développeurs et une accélération de l'évolutionde la conception du système. Une façon d'empêcher la dégradation du logiciel est l'identification et la correction des anti-patrons qui sont des indicateurs de mauvaise qualité de conception. Pour améliorer la qualité de la conception et supprimer les anti-patrons, lesdéveloppeurs effectuent de petites transformations préservant le comportement (c.-à-d., refactoring).Le refactoring manuel est coûteux, car il nécessite (1) d'identifier les entités de code qui doivent être refactorisées ; (2) générer des opérations de refactoring pour les classes identifiées à l'étape précédente ; (3) trouver le bon ordre d'application des refactorings générés,pour maximiser le bénéfice pour la qualité du code et minimiser les conflits. Ainsi, les chercheurs et les praticiens ont formulé le refactoring comme un problème d'optimisation et utilisent des techniques basées sur la recherche pour proposer des approches (semi) automatisées pour le résoudre. Dans cette thèse, je propose plusieurs méthodes pour résoudre les principaux problèmesdes outils existants, afin d'aider les développeurs dans leurs activités de maintenance et d'assurance qualité.Ma thèse est qu'il est possible d'améliorer le refactoring automatisé en considérant de nouvelles dimensions : (1) le contexte de tâche du développeur pour prioriser le refactoring des classes pertinentes ; (2) l'effort du test pour réduire le coût des tests après le refactoring ; (3)l'identification de conflit entre opérations de refactoring afin de réduire le coût de refactoring ; et (4) l'efficacité énergétique pour améliorer la consommation d'énergie des applications mobiles après refactoring.
Department: Department of Computer Engineering and Software Engineering
Program: Génie informatique
Academic/Research Directors: Foutse Khomh, Giuliano Antoniol, Francisco Chicano
PolyPublie URL: https://publications.polymtl.ca/2878/
Institution: École Polytechnique de Montréal
Date Deposited: 23 Feb 2018 13:16
Last Modified: 10 Nov 2022 11:06
Cite in APA 7: Morales Alvarado, R. (2017). Automated Improvement of Software Design by Search-Based Refactoring [Ph.D. thesis, École Polytechnique de Montréal]. PolyPublie. https://publications.polymtl.ca/2878/

Statistics

Total downloads

Downloads per month in the last year

Origin of downloads

Repository Staff Only

View Item View Item