Search-Based Cost-Effective Software Remodularization

被引:0
作者
Rim Mahouachi
机构
[1] University of Manouba,Complex Outstanding Systems Modeling Optimization and Supervision Laboratory National School of Computer Science
来源
Journal of Computer Science and Technology | 2018年 / 33卷
关键词
remodularization; search-based software engineering; refactoring effort; multi-objective optimization; semantics dependency;
D O I
暂无
中图分类号
学科分类号
摘要
Software modularization is a technique used to divide a software system into independent modules (packages) that are expected to be cohesive and loosely coupled. However, as software systems evolve over time to meet new requirements, their modularizations become complex and gradually loose their quality. Thus, it is challenging to automatically optimize the classes’ distribution in packages, also known as remodularization. To alleviate this issue, we introduce a new approach to optimize software modularization by moving classes to more suitable packages. In addition to improving design quality and preserving semantic coherence, our approach takes into consideration the refactoring effort as an objective in itself while optimizing software modularization. We adapt the Elitist Non-dominated Sorting Genetic Algorithm (NSGA-II) of Deb et al. to find the best sequence of refactorings that 1) maximize structural quality, 2) maximize semantic cohesiveness of packages (evaluated by a semantic measure based on WordNet), and 3) minimize the refactoring effort. We report the results of an evaluation of our approach using open-source projects, and we show that our proposal is able to produce a coherent and useful sequence of recommended refactorings both in terms of quality metrics and from the developer’s points of view.
引用
收藏
页码:1320 / 1336
页数:16
相关论文
共 79 条
[1]  
Lehman MM(1984)On understanding laws, evolution, and conservation in the large-program life cycle Journal of Systems and Software 1 213-221
[2]  
Eick SG(2001)Does code decay? Assessing the evidence from change management data IEEE Transactions on Software Engineering 27 1-12
[3]  
Graves TL(2006)On the automatic modularization of software systems using the bunch tool IEEE Transactions on Software Engineering 32 193-208
[4]  
Karr AF(2013)Using structural and semantic measures to improve software modularization Empirical Software Engineering 18 901-932
[5]  
Marron JS(2014)Improving software modularization via automated analysis of latent topics and dependencies ACM Transactions on Software Engineering and Methodology 23 1-33
[6]  
Mockus A(2015)Many-Objective Software Remodularization Using NSGA-III ACM Transactions on Software Engineering and Methodology 24 1-45
[7]  
Mitchell BS(2018)An empirical study of cohesion and coupling: Balancing optimization and disruption IEEE Transactions on Evolutionary Computation 22 394-414
[8]  
Mancoridis S(2016)Multi-Criteria Code Refactoring Using Search-Based Software Engineering ACM Transactions on Software Engineering and Methodology 25 1-53
[9]  
Bavota G(2007)Hierarchical clustering for software architecture recovery IEEE Transactions on Software Engineering 33 759-780
[10]  
de Lucia A(2016)Using Cohesion and Coupling for Software Remodularization ACM Transactions on Software Engineering and Methodology 25 1-28