Software modularization operators

There exists a number of large business critical software systems written in newer languages such as C and Java that are fast becoming legacy and increasingly difficult to maintain. Unlike older monolithic systems, where modularization primarily involves splitting the monolithic code base into modules, for such newer systems which already have some basic modular structure, code decomposition is only one of the many possible activities. Even though the area of software modularization has received considerable attention over these past years, there are hardly any case studies documented in literature on modularizing large C and Java systems. We still do not fully comprehend the activities experienced developers perform when they have to modularize such newer systems. The goal of this paper is to learn from past software modularization projects and identify common recurring patterns. This paper formalizes 6 such patterns, which we term as modularization operators, that are likely to be the basic building blocks of any software modularization activity. The operators presented in this paper are validated using modularization case studies of open source software systems and a proprietary software system and several observations and insights are presented.

[1]  Kim B. Clark,et al.  The power of modularity , 2000 .

[2]  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).

[3]  Richard C. Holt,et al.  MoJo: a distance metric for software clusterings , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[4]  Girish Maskeri Rama,et al.  A desiderata for refactoring-based software modularity improvement , 2010, ISEC.

[5]  Carolyn Seaman,et al.  Practical Software Maintenance , 2000, J. Softw. Maintenance Res. Pract..

[6]  Kamran Sartipi,et al.  Component clustering based on maximal association , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[7]  Paul J. Layzell,et al.  Facilitating program comprehension by mining association rules from source code , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

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

[9]  Spiros Mancoridis,et al.  Search based reverse engineering , 2002, SEKE '02.

[10]  Andrew D. King Graph clustering with restricted neighbourhood search , 2004 .

[11]  K. Rangarajan,et al.  Modularization of a Large-Scale Business Application: A Case Study , 2009, IEEE Software.

[12]  Ali Shokoufandeh,et al.  Spectral and meta-heuristic algorithms for software clustering , 2005, J. Syst. Softw..

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

[14]  Avinash C. Kak,et al.  API-Based and Information-Theoretic Metrics for Measuring the Quality of Software Modularization , 2007 .

[15]  Periklis Andritsos,et al.  Information-theoretic software clustering , 2005, IEEE Transactions on Software Engineering.

[16]  Avinash C. Kak,et al.  On combining graph-partitioning with non-parametric clustering for image segmentation , 2004, Comput. Vis. Image Underst..

[17]  Mark H. Needleman Rdf , 2001 .

[18]  L. Erlikh,et al.  Leveraging legacy system dollars for e-business , 2000 .

[19]  Kim B. Clark,et al.  The Option Value of Modularity in Design: An Example From Design Rules, Volume 1: The Power of Modularity , 2000 .

[20]  Thomas M. Pigoski Practical Software Maintenance: Best Practices for Managing Your Software Investment , 1996 .

[21]  Nicolas Anquetil,et al.  Recovering software architecture from the names of source files , 1999, J. Softw. Maintenance Res. Pract..

[22]  Vassilios Tzerpos,et al.  Software clustering based on dynamic dependencies , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[23]  Adrian Kuhn Semantic Clustering: Making Use of Linguistic Information to Reveal Concepts in So , 2006 .

[24]  Paolo Tonella,et al.  Concept Analysis for Module Restructuring , 2001, IEEE Trans. Software Eng..