This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
On the Automatic Modularization of Software Systems Using the Bunch Tool
March 2006 (vol. 32 no. 3)
pp. 193-208
Since modern software systems are large and complex, appropriate abstractions of their structure are needed to make them more understandable and, thus, easier to maintain. Software clustering techniques are useful to support the creation of these abstractions by producing architectural-level views of a system's structure directly from its source code. This paper examines the Bunch clustering system which, unlike other software clustering tools, uses search techniques to perform clustering. Bunch produces a subsystem decomposition by partitioning a graph of the entities (e.g., classes) and relations (e.g., function calls) in the source code. Bunch uses a fitness function to evaluate the quality of graph partitions and uses search algorithms to find a satisfactory solution. This paper presents a case study to demonstrate how Bunch can be used to create views of the structure of significant software systems. This paper also outlines research to evaluate the software clustering results produced by Bunch.

[1] R. Schwanke and S. Hanson, “Using Neural Networks to Modularize Software,” Machine Learning, vol. 15, pp. 137-168, 1998.
[2] S. Choi and W. Scacchi, “Extracting and Restructuring the Design of Large Systems,” IEEE Software, pp. 66-71, 1999.
[3] H. Müller, M. Orgun, S. Tilley, and J. Uhl, “A Reverse Engineering Approach to Subsystem Structure Identification,” J. Software Maintenance: Research and Practice, vol. 5, pp. 181-204, 1993.
[4] C. Lindig and G. Snelting, “Assessing Modular Structure of Legacy Code Based on Mathematical Concept Analysis,” Proc. Int'l Conf. on Software Eng., May 1997.
[5] A.V. Deursen and T. Kuipers, “Identifying Objects Using Cluster and Concept Analysis,” Int'l Conf. Software Eng., pp. 246-255, May 1999, http://citeseer.nj.nec.comvandeursen99building.html .
[6] N. Anquetil, “A Comparison of Graphis of Concept for Reverse Eng.,” Proc. Int'l Workshop Program Comprehension, June 2000.
[7] N. Anquetil and T. Lethbridge, “Recovering Software Architecture from the Names of Source Files,” Proc. Working Conf. Reverse Eng., Oct. 1999.
[8] J. Clark, J. Dolado, M. Harman, R. Hierons, B. Jones, M. Lumkin, B.S. Mitchell, S. Mancoridis, K. Rees, M. Roper, and M. Shepperd, “Reformulating Software Engineering as a Search Problem,” J. IEE Proc. Software, vol. 150, no. 3, pp. 161-175, 2003.
[9] Y. Chen, “Reverse Engineering,” Practical Reusable Unix Software, chapter 6, pp. 177-208, B. Krishnamurthy, ed. New York: John Wiley & Sons, 1995.
[10] Y. Chen, E. Gansner, and E. Koutsofios, “A C++ Data Model Supporting Reachability Analysis and Dead Code Detection,” Proc. Sixth European Software Eng. Conf. and Fifth ACM SIGSOFT Symp. Foundations of Software Eng., Sept. 1997.
[11] J. Korn, Y. Chen, and E. Koutsofios, “Chava: Reverse Engineering and Tracking of Java Applets,” Proc. Working Conf. Reverse Eng., Oct. 1999.
[12] M. Salah and S. Mancoridis, “Reverse Engineering of a Hierarchy of Dynamic Software Views: From Object Interactions to Feature Dependencies,” Proc. IEEE Int'l Conf. Software Maintenance, Sept. 2004.
[13] A. Nijenhuis and H.S. Wilf, Combinatorial Algorithms, second ed. Academic Press, 1978.
[14] B.S. Mitchell, “A Heuristic Search Approach to Solving the Software Clustering Problem,” PhD dissertation, Drexel Univ., 2002.
[15] “The Sun Developer Network,” Javasoft, http:/www.Javasoft. com, 2006.
[16] S. Mancoridis, T. Souder, Y. Chen, E.R. Gansner,, and J.L. Korn, “REportal: A Web-Based Portal Site for Reverse Engineering,” Proc. Working Conf. Reverse Eng., Oct. 2001.
[17] B.S. Mitchell and S. Mancoridis, “Using Interconnection Style Rules to Infer Software Architecture Relations,” Proc. Genetic and Evolutionary Computation Conf., 2004.
[18] M. Traverso and S. Mancoridis, “On the Automatic Recovery of Style-Specific Structural Dependencies in Software Systems,” J. Automated Software Eng., vol. 9, no. 3, 2002.
[19] D. Doval, S. Mancoridis, and B. Mitchell, “Automatic Clustering of Software Systems Using a Genetic Algorithm,” Proc. Software Technology and Eng. Practice, Aug. 1999.
[20] R. Schwanke, “An Intelligent Tool for Re-Engineering Software Modularity,” Proc. 13th Int'l Conf. Software Eng., May 1991.
[21] S. Kirkpatrick, C.D. GelattJr., and M. Vecchi, “Optimization by Simulated Annealing,” Science, vol. 220, pp. 671-680, May 1983.
[22] B.S. Mitchell and S. Mancoridis, “Using Heuristic Search Techniques to Extract Design Abstractions from Source Code,” Proc. Genetic and Evolutionary Computation Conf., July 2002.
[23] E. Gansner, E. Koutsofios, S. North, and K. Vo, “A Technique for Drawing Directed Graphs,” IEEE Trans. Software Eng., vol. 19, no. 3, pp. 214-230, Mar. 1993.
[24] M. Shaw and D. Garlan, Software Architecture: Perspectives on an Emerging Discipline. Prentice-Hall, 1996.
[25] J.D. Foley, A. Van Dam, S.K. Feiner, and J.F. Hughes, Computer Graphics, second ed. Addison-Wesley, 1990.
[26] S. Mancoridis, B. Mitchell, C. Rorres, Y. Chen, and E. Gansner, “Using Automatic Clustering to Produce High-Level System Organizations of Source Code,” Proc. Sixth Int'l Workshop Program Comprehension, June 1998.
[27] S. Mancoridis, B. Mitchell, Y. Chen, and E. Gansner, “Bunch: A Clustering Tool for the Recovery and Maintenance of Software System Structures,” Proc. Int'l Conf. Software Maintenance, pp. 50-59, Aug. 1999.
[28] I.T. Bowman, R.C. Holt, and N.V. Brewster, “Linux as a Case Study: Its Extracted Software Architecture,” Proc. Int'l Conf. Software Eng., May 1999.
[29] A. Buchsbaum, Y.-F. Chen, H. Huang, M. Jankowsky, E. Koutsofos, S. Mancoridis, J. Mocenigo, and A. Rogers, “Enterprise Navigator: A System for Visualizing and Analyzing Software Infrastructures,” IEEE Software, vol. 18, no. 5, 2001.
[30] P. Andritsos and V. Tzerpos, “Software Clustering Based on Information Loss Minimization,” Proc. IEEE Working Conf. Reverse Eng., Nov. 2003.
[31] Z. Wen and V. Tzerpos, “An Effectiveness Measure for Software Clustering Algorithms,” Proc. IEEE Int'l Conf. Software Maintenance, Sept. 2004.
[32] Z. Wen and V. Tzerpos, “Evaluating Similarity Measures for Software Decompositions,” Proc. IEEE Int'l Workshop Program Comprehension, June 2004.
[33] B.S. Mitchell and S. Mancoridis, “Comparing the Decompositions Produced by Software Clustering Algorithms Using Similarity Measurements,” Proc. Int'l Conf. Software Maintenance, Nov. 2001.
[34] “Javasoft Swing Libraries: Java Foundation Classes,” Swing, http://www.javasoft.com/productsjfc, 2001.
[35] I. Sommerville, Software Eng., seventh ed. Addison-Wesley, 2004.
[36] A. Shokoufandeh, S. Mancoridis, and M. Maycock, “Applying Spectral Methods to Software Clustering,” Proc. IEEE Working Conf. on Reverse Eng., pp. 3-10, Oct. 2002.
[37] “Computer and Information Science Papers Citeseer Publications Research Index,” CiteSeer, http:/citeseer.ist.psu.edu, 2006.
[38] “Google Scholar Search Engine,” http:/scholar.google.com, 2006.
[39] A. Buchsbaum, Y.-F. Chen, H. Huang, M. Jankowsky, E. Koutsofios, S. Mancoridis, J. Mocenigo, and A. Rogers, “Enterprise Navigator: A System for Visualizing and Analyzing Software Infrastructures,” IEEE Software, vol. 18, no. 5, pp. 62-70, 2001.
[40] L.A. Belady and C.J. Evangelisti, “System Partitioning and Its Measure,” J. Systems and Software, vol. 2, pp. 23-29, 1981.
[41] D. Hutchens and R. Basili, “System Structure Analysis: Clustering with Data Bindings,” IEEE Trans. Software Eng., vol. 11, no. 8, pp. 749-757, Aug. 1985.
[42] H. Müller, M. Orgun, S. Tilley, and J. Uhl, “A Reverse Eng. Approach to Subsystem Structure Identification,” J. Software Maintenance: Research and Practice, vol. 5, pp. 181-204, 1993.
[43] N. Anquetil and T. Lethbridge, “Extracting Concepts from File Names: A New File Clustering Criterion,” Proc. 20th Int'l Conf. Software Eng., May 1998.
[44] T. Eisenbarth, R. Koschke, and D. Simon, “Aiding Program Comprehension by Static and Dynamic Feature Analysis,” Proc. IEEE Int'l Conf. Software Maintenance, Nov. 2001.
[45] V. Tzerpos and R.C. Holt, “ACDC: An Algorithm for Comprehension-Driven Clustering,” Proc. Working Conf. Reverse Eng., pp. 258-267, Nov. 2000.
[46] V. Tzerpos and R. Holt, “The Orphan Adoption Problem in Architecture Maintenance,” Proc. Working Conf. Reverse Eng., Oct. 1997.
[47] R. Koschke, “Evaluation of Automatic Re-Modularization Techniques and Their Integration in a Semi-Automatic Method,” PhD dissertation, Univ. of Stuttgart, Stuttgart, Germany, 2000.
[48] A. Mockus and D.M. Weiss, “Globalization by Chunking: A Quantitative Approach,” IEEE Software, vol. 18, no. 2, pp. 30-37, 2001.
[49] G. Murphy, D. Notkin, and K. Sullivan, “Software Reflexion Models: Bridging the Gap Between Source and High-Level Models,” Proc. ACM SIGSOFT Symp. Foundations of Software Eng., 1995.
[50] K. Mahdavi, M. Harman, and R. Hierons, “A Multiple Hill Climbing Approach to Software Module Clustering,” Proc. IEEE Int'l Conf. Software Maintenance, Sept. 2003.
[51] B.S. Mitchell and S. Mancoridis, “CRAFT: A Framework for Evaluating Software Clustering Results in the Absence of Benchmark Decompositions,” Proc. Working Conf. Reverse Eng., Oct. 2001.
[52] B.S. Mitchell and S. Mancoridis, “Modeling the Search Landscape of Metaheuristic Software Clustering Algorithms,” Proc. Genetic and Evolutionary Computation Conf., 2003.
[53] “The Drexel University Software Eng. Research Group (SERG),” http:/serg.cs.drexel.edu, 2006.
[54] R. Koschke and T. Eisenbarth, “A Framework for Experimental Evaluation of Clustering Techniques,” Proc. Int'l Workshop Program Comprehension, June 2000.
[55] V. Tzerpos and R.C. Holt, “MoJo: a Distance Metric for Software Clustering,” Proc. Working Conf. Reverse Eng., Oct. 1999.
[56] M. Harman, S. Swift, and K. Mahdavi, “An Empirical Study of the Robustness of Two Module Clustering Fitness Functions,” Proc. Genetic and Evolutionary Computation Conf., 2005.

Index Terms:
Clustering, reverse engineering, reengineering, program comprehension, optimization, maintainability.
Citation:
Brian S. Mitchell, Spiros Mancoridis, "On the Automatic Modularization of Software Systems Using the Bunch Tool," IEEE Transactions on Software Engineering, vol. 32, no. 3, pp. 193-208, March 2006, doi:10.1109/TSE.2006.31
Usage of this product signifies your acceptance of the Terms of Use.