ABSTRACT
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.
- F. B. Abreu and M. Goulão. Coupling and Cohesion as Modularization Drivers: Are We Being Over-Persuaded? In CSMR '01: Proceedings of the Fifth European Conference on Software Maintenance and Reengineering, pages 47--57. IEEE Computer Society, 2001. Google ScholarDigital Library
- P. Andritsos and V. Tzerpos. Information-Theoretic Software Clustering. IEEE Transactions on Software Engineering, 31(2):150--165, 2005. Google ScholarDigital Library
- C. Y. Baldwin and K. B. Clark. Design Rules, Vol. 1: The Power of Modularity. The MIT Press, 1st edition, Mar. 2000. Google ScholarDigital Library
- F. Beck and S. Diehl. Evaluating the Impact of Software Evolution on Software Clustering. In WCRE '10: Proceedings of the 17th Working Conference on Reverse Engineering, pages 99--108. IEEE Computer Society, 2010. Google ScholarDigital Library
- B. Biegel and S. Diehl. Highly Configurable and Extensible Code Clone Detection. In WCRE'10: Proceedings of the 17th Working Conference on Reverse Engineering, pages 237--241. IEEE Computer Society, 2010. Google ScholarDigital Library
- R. A. Bittencourt, G. J. S. Santos, D. D. S. Guerrero, and G. C. Murphy. Improving Automated Mapping in Reflexion Models using Information Retrieval Techniques. In WCRE'10: Proceedings of the 17th Working Conference on Reverse Engineering, pages 163--172. IEEE Computer Society, 2010. Google ScholarDigital Library
- I. T. Bowman and R. C. Holt. Software Architecture Recovery Using Conway's Law. In CASCON '98: Proceedings of the 1998 Conference of the Centre for Advanced Studies on Collaborative Research, pages 6+. IBM Press, 1998. Google ScholarDigital Library
- S. Breu and T. Zimmermann. Mining Aspects from Version History. In ASE '06: Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering, pages 221--230. IEEE Computer Society, 2006. Google ScholarDigital Library
- M. Cataldo, J. D. Herbsleb, and K. M. Carley. Socio-Technical Congruence: a Framework for Assessing the Impact of Technical and Work Dependencies on Software Development Productivity. In ESEM '08: Proceedings of the Second ACM-IEEE International Symposium on Empirical Software Engineering and Measurement, pages 2--11. ACM, 2008. Google ScholarDigital Library
- M. Cataldo, A. Mockus, J. A. Roberts, and J. D. Herbsleb. Software Dependencies, Work Dependencies, and Their Impact on Failures. IEEE Transactions on Software Engineering, 35(6):864--878, Nov. 2009. Google ScholarDigital Library
- M. Conway. How do Committees Invent? Datamation Journal, pages 28--31, 1968.Google Scholar
- M. Harman, S. Swift, and K. Mahdavi. An Empirical Study of the Robustness of two Module Clustering Fitness Functions. In GECCO '05: Proceedings of the 2005 Conference on Genetic and Evolutionary Computation, pages 1029--1036. ACM Press, 2005. Google ScholarDigital Library
- A. Kuhn, S. Ducasse, and T. Girba. Enriching Reverse Engineering with Semantic Clustering. In WCRE '05: Proceedings of the 12th Working Conference on Reverse Engineering, pages 133--142. IEEE Computer Society, 2005. Google ScholarDigital Library
- S. Livieri, Y. Higo, M. Matsushita, and K. Inoue. Very-Large Scale Code Clone Analysis and Visualization of Open Source Programs Using Distributed CCFinder: D-CCFinder. In ICSE '07: Proceedings of the 29th International Conference on Software Engineering, pages 106--115. IEEE Computer Society, 2007. Google ScholarDigital Library
- R. C. Martin. Agile Software Development, Principles, Patterns, and Practices. Prentice Hall, 1st edition, Oct. 2002. Google ScholarDigital Library
- B. Meyer. Object-Oriented Software Construction, 1st editon. Prentice-Hall, 1988.Google Scholar
- B. S. Mitchell and S. Mancoridis. On the Evaluation of the Bunch Search-Based Software Modularization Algorithm. Soft Computing, 12(1):77--93, Aug. 2007. Google ScholarDigital Library
- D. L. Parnas. Information Distribution Aspects of Design Methodology. In IFIP Congress (1), pages 339--344, 1971.Google Scholar
- D. L. Parnas. On the Criteria to be Used in Decomposing Systems into Modules. Communications of the ACM, 15(12):1053--1058, Dec. 1972. Google ScholarDigital Library
- C. K. Roy and J. R. Cordy. A Survey on Software Clone Detection Research. Technical report, Queen's University at Kingston, Ontario, Canada, 2007.Google Scholar
- S. Sarkar, G. M. Rama, and A. C. Kak. API-Based and Information-Theoretic Metrics for Measuring the Quality of Software Modularization. IEEE Transactions on Software Engineering, 33(1):14--32, 2007. Google ScholarDigital Library
- R. W. Schwanke. An Intelligent Tool for Re-Engineering Software Modularity. In ICSE '91: Proceedings of the 13th International Conference on Software Engineering, pages 83--92. IEEE Computer Society, 1991. Google ScholarDigital Library
- W. P. Stevens, G. J. Myers, and L. L. Constantine. Structured Design. IBM Systems Journal, 13(2):115--139, 1974. Google ScholarDigital Library
- P.-N. Tan, M. Steinbach, and V. Kumar. Introduction to Data Mining. Addison Wesley, May 2005. Google ScholarDigital Library
- P. Tarr, H. Ossher, W. Harrison, and S. M. Sutton. N Degrees of Separation: Multi-Dimensional Separation of Concerns. In ICSE '99: Proceedings of the 21st International Conference on Software Engineering, pages 107--119. ACM, 1999. Google ScholarDigital Library
- Z. Wen and V. Tzerpos. Software Clustering based on Omnipresent Object Detection. In IWPC '05: Proceedings of the 13th International Workshop on Program Comprehension, pages 269--278, Washington, DC, USA, 2005. IEEE Computer Society. Google ScholarDigital Library
- A. Wierda, E. Dortmans, and L. L. Somers. Using Version Information in Architectural Clustering - A Case Study. In CSMR '06: Proceedings of the Conference on Software Maintenance and Reengineering, pages 214--228. IEEE Computer Society, 2006. Google ScholarDigital Library
- T. Zimmermann and P. Weißgerber. Preprocessing CVS Data For Fine-Grained Analysis. In MSR '04: Proceedings of the 1st International Workshop on Mining Software Repositories, pages 2--6. IEEE Computer Society, 2004.Google Scholar
Index Terms
- On the congruence of modularity and code coupling
Recommendations
Design module: a modularity vision beyond code: not only program code but also a design model is a module
MiSE '13: Proceedings of the 5th International Workshop on Modeling in Software EngineeringWe propose a new modularity vision to integrate design modeling with programming. A system consists of not only program code but also design models. However, design models such as UML diagrams have been treated as not modules but complementary ...
Automatic modularity conformance checking
ICSE '08: Proceedings of the 30th international conference on Software engineeringAccording to Parnas's information hiding principle and Baldwin and Clark's design rule theory, the key step to decomposing a system into modules is to determine the design rules (or in Parnas's terms, interfaces) that decouple otherwise coupled design ...
Assessing modularity using co-change clusters
MODULARITY '14: Proceedings of the 13th international conference on ModularityThe traditional modular structure defined by the package hierarchy suffers from the dominant decomposition problem and it is widely accepted that alternative forms of modularization are necessary to increase developer's productivity. In this paper, we ...
Comments