<  Retour au portail Polytechnique Montréal

Automated Improvement of Software Design by Search-Based Refactoring

Rodrigo Morales Alvarado

Thèse de doctorat (2017)

Document en libre accès dans PolyPublie
[img]
Affichage préliminaire
Libre accès au plein texte de ce document
Conditions d'utilisation: Tous droits réservés
Télécharger (1MB)
Afficher le résumé
Cacher le résumé

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 de nouvelles 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 conception du 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'évolution de 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, les dé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èmes des 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.

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 has shortened 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 is expensive, 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 minimize conflicts. 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 in existing refactoring tools, to assist developers in their maintenance and quality assurance activities.

Département: Département de génie informatique et génie logiciel
Programme: Génie informatique
Directeurs ou directrices: Foutse Khomh, Giuliano Antoniol et Francisco Chicano
URL de PolyPublie: https://publications.polymtl.ca/2878/
Université/École: École Polytechnique de Montréal
Date du dépôt: 23 févr. 2018 13:16
Dernière modification: 24 avr. 2023 00:24
Citer en APA 7: Morales Alvarado, R. (2017). Automated Improvement of Software Design by Search-Based Refactoring [Thèse de doctorat, École Polytechnique de Montréal]. PolyPublie. https://publications.polymtl.ca/2878/

Statistiques

Total des téléchargements à partir de PolyPublie

Téléchargements par année

Provenance des téléchargements

Actions réservées au personnel

Afficher document Afficher document