On the congruence of modularity and code coupling

Software systems are modularized to make their inherent complexity manageable. While there exists a set of well-known principles that may guide software engineers to design the modules of a software system, we do not know which principles are followed in practice. In a study based on 16 open source projects, we look at different kinds of coupling concepts between source code entities, including structural dependencies, fan-out similarity, evolutionary coupling, code ownership, code clones, and semantic similarity. The congruence between these coupling concepts and the modularization of the system hints at the modularity principles used in practice. Furthermore, the results provide insights on how to support developers to modularize software systems.

[1]  Stéphane Ducasse,et al.  Enriching reverse engineering with semantic clustering , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

[2]  Lou J. Somers,et al.  Using version information in architectural clustering - a case study , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[3]  Jan Venselaar,et al.  DESIGN RULES , 1999 .

[4]  Vassilios Tzerpos,et al.  Software clustering based on omnipresent object detection , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[5]  Katsuro Inoue,et al.  Very-Large Scale Code Clone Analysis and Visualization of Open Source Programs Using Distributed CCFinder: D-CCFinder , 2007, 29th International Conference on Software Engineering (ICSE'07).

[6]  James D. Herbsleb,et al.  Socio-technical congruence: a framework for assessing the impact of technical and work dependencies on software development productivity , 2008, ESEM '08.

[7]  Stephan Diehl,et al.  Highly Configurable and Extensible Code Clone Detection , 2010, 2010 17th Working Conference on Reverse Engineering.

[8]  Thomas Zimmermann,et al.  Preprocessing CVS Data for Fine-Grained Analysis , 2004, MSR.

[9]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[10]  F. Brito e Abreu,et al.  Coupling and cohesion as modularization drivers: are we being over-persuaded? , 2001, Proceedings Fifth European Conference on Software Maintenance and Reengineering.

[11]  Dalton Serey Guerrero,et al.  Improving Automated Mapping in Reflexion Models Using Information Retrieval Techniques , 2010, 2010 17th Working Conference on Reverse Engineering.

[12]  Robert W. Schwanke,et al.  An intelligent tool for re-engineering software modularity , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[13]  M. E. Conway HOW DO COMMITTEES INVENT , 1967 .

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

[15]  Mark Harman,et al.  An empirical study of the robustness of two module clustering fitness functions , 2005, GECCO '05.

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

[17]  Robert C. Martin Agile Software Development, Principles, Patterns, and Practices , 2002 .

[18]  Richard C. Holt,et al.  Software architecture recovery using Conway's law , 1998, CASCON.

[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]  Audris Mockus,et al.  Software Dependencies, Work Dependencies, and Their Impact on Failures , 2009, IEEE Transactions on Software Engineering.

[21]  David Lorge Parnas,et al.  Information Distribution Aspects of Design Methodology , 1971, IFIP Congress.

[22]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

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

[24]  Chanchal K. Roy,et al.  A Survey on Software Clone Detection Research , 2007 .

[25]  Vipin Kumar,et al.  Introduction to Data Mining, (First Edition) , 2005 .

[26]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[27]  Kim B. Clark,et al.  Design Rules: The Power of Modularity Volume 1 , 1999 .

[28]  Miguel Goulão,et al.  Coupling and Cohesion as Modularization Drivers: Are We Being Over-Persuaded? , 2001, CSMR.

[29]  Fabian Beck,et al.  Evaluating the Impact of Software Evolution on Software Clustering , 2010, 2010 17th Working Conference on Reverse Engineering.

[30]  Thomas Zimmermann,et al.  Mining Aspects from Version History , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

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

[32]  Glenford J. Myers,et al.  Structured Design , 1974, IBM Syst. J..