E-CDGM: An Evolutionary Call-Dependency Graph Modularization Approach for Software Systems

Abstract Lack of up-to-date software documentation hinders the software evolution and maintenance processes, as simply the outdated software structure and code could be easily misunderstood. One approach to overcoming such problems is using software modularization, in which the software architecture is extracted from the available source code; such that developers can assess the reconstructed architecture against the required changes. Unfortunately, existing software modularization approaches are not accurate, as they ignore polymorphic calls among system modules. Furthermore, they are tightly coupled to the used programming language. To overcome such problems, this paper proposes the E-CDGM approach. E-CDGM decouples the extracted call dependency graph from the programming language by using the proposed intermediate code language (known as mCode). It also takes into consideration the polymorphic calls during the call dependency graph generation. It uses a new evolutionary optimization approach to find the best modularization option; adopting reward and penalty functions. Finally, it uses statistical analysis to build a final consolidated modularization model using different generated modularization solutions. Experimental results show that the proposed E-CDGM approach provides more accurate results when compared against existing well-known modularization approaches.

[1]  Chung-Horng Lung,et al.  Program restructuring using clustering techniques , 2006, J. Syst. Softw..

[2]  Dalton Serey Guerrero,et al.  Comparison of Graph Clustering Algorithms for Recovering Software Architecture Module Views , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[3]  Outi Räihä,et al.  A survey on search-based software design , 2010, Comput. Sci. Rev..

[4]  Lei Sun,et al.  Object-oriented software architecture recovery using a new hybrid clustering algorithm , 2010, 2010 Seventh International Conference on Fuzzy Systems and Knowledge Discovery.

[5]  Tibor Gyimóthy,et al.  Extracting Facts with Columbus from C++ Code , 2005, Tools for Software Maintenance and Reengineering.

[6]  Peter J. Clarke,et al.  Reveal: a tool to reverse engineer class diagrams , 2002 .

[7]  Chung-Horng Lung,et al.  Applications of clustering techniques to software partitioning, recovery and restructuring , 2004, J. Syst. Softw..

[8]  Saeed Parsa,et al.  A New Encoding Scheme and a Framework to Investigate Genetic Clustering Algorithms , 2005, J. Res. Pract. Inf. Technol..

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

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

[11]  Spiros Mancoridis,et al.  CRAFT: a framework for evaluating software clustering results in the absence of benchmark decompositions [Clustering Results Analysis Framework and Tools] , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[12]  Emden R. Gansner,et al.  A C++ data model supporting reachability analysis and dead code detection , 1997, ESEC '97/FSE-5.

[13]  Frederick Mosteller,et al.  Stochastic Models for Learning , 1956 .

[14]  Adnan Shaout,et al.  Many-Objective Software Remodularization Using NSGA-III , 2015, TSEM.

[15]  Jeffrey L. Korn,et al.  Chava: reverse engineering and tracking of Java applets , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[16]  Laurie J. Hendren,et al.  Practical virtual method call resolution for Java , 2000, OOPSLA '00.

[17]  Tibor Gyimóthy,et al.  Using information retrieval based coupling measures for impact analysis , 2009, Empirical Software Engineering.

[18]  Roger Pressman,et al.  Software Engineering: A Practitioner's Approach, 7Th Edition , 2009 .

[19]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach (McGraw-Hill Series in Computer Science) , 2004 .

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

[21]  Ali Safari Mamaghani,et al.  Clustering of Software Systems Using New Hybrid Algorithms , 2009, 2009 Ninth IEEE International Conference on Computer and Information Technology.

[22]  Erhard Plödereder,et al.  Bauhaus - A Tool Suite for Program Analysis and Reverse Engineering , 2006, Ada-Europe.

[23]  L'ubomír Majtás,et al.  Mining Design Patterns from Existing Projects Using Static and Run-Time Analysis , 2008, CEE-SET.