Many-Objective Software Remodularization Using NSGA-III

Software systems nowadays are complex and difficult to maintain due to continuous changes and bad design choices. To handle the complexity of systems, software products are, in general, decomposed in terms of packages/modules containing classes that are dependent. However, it is challenging to automatically remodularize systems to improve their maintainability. The majority of existing remodularization work mainly satisfy one objective which is improving the structure of packages by optimizing coupling and cohesion. In addition, most of existing studies are limited to only few operation types such as move class and split packages. Many other objectives, such as the design semantics, reducing the number of changes and maximizing the consistency with development change history, are important to improve the quality of the software by remodularizing it. In this article, we propose a novel many-objective search-based approach using NSGA-III. The process aims at finding the optimal remodularization solutions that improve the structure of packages, minimize the number of changes, preserve semantics coherence, and reuse the history of changes. We evaluate the efficiency of our approach using four different open-source systems and one automotive industry project, provided by our industrial partner, through a quantitative and qualitative study conducted with software engineers.

[1]  Carlos A. Coello Coello,et al.  Online Objective Reduction to Deal with Many-Objective Problems , 2009, EMO.

[2]  Saúl Zapotecas Martínez,et al.  Self-adaptation Techniques Applied to Multi-Objective Evolutionary Algorithms , 2011, LION.

[3]  T. A. Wiggerts,et al.  Using clustering algorithms in legacy systems remodularization , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[4]  Gordon Fraser,et al.  Parameter tuning or default values? An empirical investigation in search-based software engineering , 2013, Empirical Software Engineering.

[5]  Kalyanmoy Deb,et al.  A fast and elitist multiobjective genetic algorithm: NSGA-II , 2002, IEEE Trans. Evol. Comput..

[6]  Gabriele Bavota,et al.  Using structural and semantic measures to improve software modularization , 2012, Empirical Software Engineering.

[7]  Kalyanmoy Deb,et al.  Handling many-objective problems using an improved NSGA-II procedure , 2012, 2012 IEEE Congress on Evolutionary Computation.

[8]  Thomas J. Mowbray,et al.  AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis , 1998 .

[9]  Mark Harman,et al.  Software engineering: an ideal set of challenges for evolutionary computation , 2013, GECCO.

[10]  Lothar Thiele,et al.  A Preference-Based Evolutionary Algorithm for Multi-Objective Optimization , 2009, Evolutionary Computation.

[11]  Houari A. Sahraoui,et al.  Search-Based Refactoring Using Recorded Code Changes , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

[12]  El-Ghazali Talbi,et al.  Metaheuristics - From Design to Implementation , 2009 .

[13]  Jacob Cohen Statistical Power Analysis for the Behavioral Sciences , 1969, The SAGE Encyclopedia of Research Design.

[14]  Lionel C. Briand,et al.  A practical guide for using statistical tests to assess randomized algorithms in software engineering , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[15]  Gabriele Bavota,et al.  Detecting bad smells in source code using change history information , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[16]  Christian General Chair-Alba Enrique Blum,et al.  Proceedings of the 15th annual conference companion on Genetic and evolutionary computation , 2013, Annual Conference on Genetic and Evolutionary Computation.

[17]  Kiyoshi Tanaka,et al.  Objective space partitioning using conflict information for solving many-objective problems , 2014, Inf. Sci..

[18]  Eckart Zitzler,et al.  HypE: An Algorithm for Fast Hypervolume-Based Many-Objective Optimization , 2011, Evolutionary Computation.

[19]  Mark Shtern,et al.  Methods for selecting and improving software clustering algorithms , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[20]  Don Roberts,et al.  Practical analysis for refactoring , 1999 .

[21]  Houari A. Sahraoui,et al.  Modularization Metrics: Assessing Package Organization in Legacy Large Object-Oriented Software , 2011, 2011 18th Working Conference on Reverse Engineering.

[22]  Mark Harman,et al.  Experimental assessment of software metrics using automated refactoring , 2012, Proceedings of the 2012 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement.

[23]  Mohamed Wiem Mkaouer,et al.  Preference-based multi-objective software modelling , 2013, 2013 1st International Workshop on Combining Modelling and Search-Based Software Engineering (CMSBSE).

[24]  William G. Griswold,et al.  Automated support for program refactoring using invariants , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[25]  Kalyanmoy Deb,et al.  An Improved Adaptive Approach for Elitist Nondominated Sorting Genetic Algorithm for Many-Objective Optimization , 2013, EMO.

[26]  Gabriele Bavota,et al.  Putting the Developer in-the-Loop: An Interactive GA for Software Re-modularization , 2012, SSBSE.

[27]  John E. Dennis,et al.  Normal-Boundary Intersection: A New Method for Generating the Pareto Surface in Nonlinear Multicriteria Optimization Problems , 1998, SIAM J. Optim..

[28]  J. Dennis,et al.  NORMAL-BOUNDARY INTERSECTION: AN ALTERNATE METHOD FOR GENERATING PARETO OPTIMAL POINTS IN MULTICRITERIA OPTIMIZATION PROBLEMS , 1996 .

[29]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[30]  Kalyanmoy Deb,et al.  Towards a Link between Knee Solutions and Preferred Solution Methodologies , 2010, SEMCCO.

[31]  Kalyanmoy Deb,et al.  Multi-objective optimization using evolutionary algorithms , 2001, Wiley-Interscience series in systems and optimization.

[32]  Tim Menzies,et al.  On the value of user preferences in search-based software engineering: A case study in software product lines , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[33]  Yuanyuan Zhang,et al.  Search-based software engineering: Trends, techniques and applications , 2012, CSUR.

[34]  Soon-Thiam Khu,et al.  An Investigation on Preference Order Ranking Scheme for Multiobjective Evolutionary Optimization , 2007, IEEE Transactions on Evolutionary Computation.

[35]  Tapabrata Ray,et al.  A Decomposition Based Evolutionary Algorithm for Many Objective Optimization with Systematic Sampling and Adaptive Epsilon Control , 2013, EMO.

[36]  Johannes Stammel,et al.  Search-based determination of refactorings for improving the class structure of object-oriented systems , 2006, GECCO.

[37]  Houari A. Sahraoui,et al.  Automatic Package Coupling and Cycle Minimization , 2009, 2009 16th Working Conference on Reverse Engineering.

[38]  Betty H. C. Cheng,et al.  On the use of genetic programming for automated refactoring and the introduction of design patterns , 2010, GECCO '10.

[39]  Jens Palsberg,et al.  Scalable propagation-based call graph construction algorithms , 2000, OOPSLA '00.

[40]  Tapabrata Ray,et al.  A Pareto Corner Search Evolutionary Algorithm and Dimensionality Reduction in Many-Objective Optimization Problems , 2011, IEEE Transactions on Evolutionary Computation.

[41]  Yann-Gaël Guéhéneuc,et al.  Decor: a tool for the detection of design defects , 2007, ASE.

[42]  Khaled Ghédira,et al.  The r-Dominance: A New Dominance Relation for Interactive Evolutionary Multicriteria Decision Making , 2010, IEEE Transactions on Evolutionary Computation.

[43]  Mark Harman,et al.  A New Representation And Crossover Operator For Search-based Optimization Of Software Modularization , 2002, GECCO.

[44]  Lily Rachmawati,et al.  Multiobjective Evolutionary Algorithm With Controllable Focus on the Knees of the Pareto Front , 2009, IEEE Transactions on Evolutionary Computation.

[45]  Spiros Mancoridis,et al.  On the evaluation of the Bunch search-based software modularization algorithm , 2007, Soft Comput..

[46]  Houari A. Sahraoui,et al.  Design Defects Detection and Correction by Example , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[47]  Houari A. Sahraoui,et al.  Towards automatically improving package structure while respecting original design decisions , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[48]  Qingfu Zhang,et al.  Objective Reduction in Many-Objective Optimization: Linear and Nonlinear Algorithms , 2013, IEEE Transactions on Evolutionary Computation.

[49]  Tim Menzies,et al.  Scalable product line configuration: A straw to break the camel's back , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[50]  Jouni Lampinen,et al.  Ranking-Dominance and Many-Objective Optimization , 2007, 2007 IEEE Congress on Evolutionary Computation.

[51]  Spiros Mancoridis,et al.  On the automatic modularization of software systems using the Bunch tool , 2006, IEEE Transactions on Software Engineering.

[52]  Eckart Zitzler,et al.  Indicator-Based Selection in Multiobjective Search , 2004, PPSN.

[53]  Giovanni Denaro,et al.  ACM Transactions on Software Engineering and Methodology : Volume 22, Nomor 4, 2013 , 2014 .

[54]  Kalyanmoy Deb,et al.  Reference point based multi-objective optimization using evolutionary algorithms , 2006, GECCO.

[55]  Houari A. Sahraoui,et al.  Maintainability defects detection and correction: a multi-objective approach , 2013, Automated Software Engineering.

[56]  Miryung Kim,et al.  Identifying and Summarizing Systematic Code Changes via Rule Inference , 2013, IEEE Transactions on Software Engineering.

[57]  Yann-Gaël Guéhéneuc,et al.  DECOR: A Method for the Specification and Detection of Code and Design Smells , 2010, IEEE Transactions on Software Engineering.

[58]  Mel Ó Cinnéide Automated application of design patterns : a refactoring approach , 2001 .

[59]  Mark Harman,et al.  Not going to take this anymore: Multi-objective overtime planning for Software Engineering projects , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[60]  Qingfu Zhang,et al.  MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition , 2007, IEEE Transactions on Evolutionary Computation.

[61]  Houari A. Sahraoui,et al.  The use of development history in software refactoring using a multi-objective evolutionary algorithm , 2013, GECCO '13.

[62]  Xin Yao,et al.  Software Module Clustering as a Multi-Objective Search Problem , 2011, IEEE Transactions on Software Engineering.

[63]  Nicolas Anquetil,et al.  Experiments with clustering as a software remodularization method , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[64]  Kalyanmoy Deb,et al.  An Evolutionary Many-Objective Optimization Algorithm Using Reference-Point-Based Nondominated Sorting Approach, Part I: Solving Problems With Box Constraints , 2014, IEEE Transactions on Evolutionary Computation.

[65]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[66]  Peter J. Fleming,et al.  Preference-Inspired Coevolutionary Algorithms for Many-Objective Optimization , 2013, IEEE Transactions on Evolutionary Computation.

[67]  Peter Beike,et al.  Beyond Anova Basics Of Applied Statistics , 2016 .

[68]  A. E. Eiben,et al.  Parameter tuning for configuring and analyzing evolutionary algorithms , 2011, Swarm Evol. Comput..

[69]  Khaled Ghédira,et al.  Estimating nadir point in multi-objective optimization using mobile reference points , 2010, IEEE Congress on Evolutionary Computation.

[70]  Marouane Kessentini,et al.  On the Use of Machine Learning and Search-Based Software Engineering for Ill-Defined Fitness Function: A Case Study on Software Refactoring , 2014, SSBSE.

[71]  Aiko Fallas Yamashita,et al.  Do code smells reflect important maintainability aspects? , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[72]  Mark Harman,et al.  Pareto optimal search based refactoring at the design level , 2007, GECCO '07.

[73]  Kalyanmoy Deb,et al.  Reference point-based evolutionary multi-objective optimization for industrial systems simulation , 2012, Proceedings Title: Proceedings of the 2012 Winter Simulation Conference (WSC).

[74]  Xin Yao,et al.  Performance Scaling of Multi-objective Evolutionary Algorithms , 2003, EMO.

[75]  Xin Yao,et al.  Multi-Objective Approaches to Optimal Testing Resource Allocation in Modular Software Systems , 2010, IEEE Transactions on Reliability.

[76]  Mark Kent O'Keeffe,et al.  Search-based refactoring for software maintenance , 2008, J. Syst. Softw..

[77]  Ivo F. Sbalzariniy,et al.  Multiobjective optimization using evolutionary algorithms , 2000 .

[78]  Gabriele Bavota,et al.  Software Re-Modularization Based on Structural and Semantic Metrics , 2010, 2010 17th Working Conference on Reverse Engineering.

[79]  Eckart Zitzler,et al.  Are All Objectives Necessary? On Dimensionality Reduction in Evolutionary Multiobjective Optimization , 2006, PPSN.

[80]  Eckart Zitzler,et al.  Objective Reduction in Evolutionary Multiobjective Optimization: Theory and Applications , 2009, Evolutionary Computation.

[81]  Kalyanmoy Deb,et al.  Solving clustering problems using bi-objective evolutionary optimisation and knee finding algorithms , 2013, 2013 IEEE Congress on Evolutionary Computation.

[82]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[83]  Emden R. Gansner,et al.  Using automatic clustering to produce high-level system organizations of source code , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[84]  Matthias Biehl,et al.  Search-based improvement of subsystem decompositions , 2005, GECCO '05.

[85]  Carlos A. Coello Coello,et al.  Multi-Objective Particle Swarm Optimizers: An Experimental Comparison , 2009, EMO.

[86]  Hürevren Kiliç,et al.  Search-Based Parallel Refactoring Using Population-Based Direct Approaches , 2011, SSBSE.

[87]  Kiyoshi Tanaka,et al.  Objective Space Partitioning Using Conflict Information for Many-Objective Optimization , 2010, PPSN.

[88]  Miryung Kim,et al.  Template-based reconstruction of complex refactorings , 2010, 2010 IEEE International Conference on Software Maintenance.

[89]  Günther Ruhe,et al.  Search Based Software Engineering , 2013, Lecture Notes in Computer Science.

[90]  Onaiza Maqbool,et al.  Hierarchical Clustering for Software Architecture Recovery , 2007, IEEE Transactions on Software Engineering.

[91]  Mohamed Salah Hamdi SOMSE: A semantic map based meta-search engine for the purpose of web information customization , 2011, Appl. Soft Comput..

[92]  Kiyoshi Tanaka,et al.  Adaptive Control of the Number of Crossed Genes in Many-Objective Evolutionary Optimization , 2012, LION.

[93]  Khaled Ghédira,et al.  Searching for knee regions of the Pareto front using mobile reference points , 2011, Soft Comput..

[94]  Houari A. Sahraoui,et al.  Search-based refactoring: Towards semantics preservation , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[95]  Carlos A. Coello Coello,et al.  Preference incorporation to solve many-objective airfoil design problems , 2011, 2011 IEEE Congress of Evolutionary Computation (CEC).