This Article 
 Bibliographic References 
 Add to: 
Metrics for Measuring the Quality of Modularization of Large-Scale Object-Oriented Software
Sept.-Oct. 2008 (vol. 34 no. 5)
pp. 700-720
Santonu Sarkar, Infosys Technologies Ltd, Bangalore
Avinash C. Kak, Purdue University, West Lafayette
Girish Maskeri Rama, Infosys Technologies Ltd, Bangalore
The metrics formulated to date for characterizing the modularization quality of object-oriented software have considered module and class to be synonymous concepts. But a typical class in object oriented programming exists at too low a level of granularity in large object-oriented software consisting of millions of lines of code. A typical module (sometimes referred to as a superpackage) in a large object-oriented software system will typically consist of a large number of classes. Even when the access discipline encoded in each class makes for "clean" class-level partitioning of the code, the intermodule dependencies created by associational, inheritance-based, and method invocations may still make it difficult to maintain and extend the software. The goal of this paper is to provide a set of metrics that characterize large object-oriented software systems with regard to such dependencies. Our metrics characterize the quality of modularization with respect to the APIs of the modules, on the one hand, and, on the other, with respect to such object-oriented inter-module dependencies as caused by inheritance, associational relationships, state access violations, fragile base-class design, etc. Using a two-pronged approach, we validate the metrics by applying them to popular open-source software systems.

[1] “JSR-277: JavaModule System,” Technical Report 2006, Sun Microsystems, Inc.,, 2008.
[2] “JSR-294: Improved Modularity Support in the Java Programming Language,” Technical Report 2007, Sun Microsystems, Inc.,, 2008.
[3] R. Strnisa, P. Sewell, and M. Parkinson, “The Java Module System: Core Design and Semantic Definition,” Proc. ACM SIGPLAN Conf. Object-Oriented Programming Systems, Languages and Applications, vol. 42, no. 10, pp. 499-514, 2007.
[4] S. Sarkar, G.M. Rama, and A.C. Kak, “API-Based and Information-Theoretic Metrics for Measuring the Quality of Software Modularization,” IEEE Trans. Software Eng., vol. 33, no. 1, pp. 14-32, Jan. 2007.
[5] S.R. Chidamber and C.F. Kemerer, “A Metrics Suite for Object Oriented Design,” IEEE Trans. Software Eng., vol. 20, pp. 476-493, 1994.
[6] N. Churcher and M. Shepperd, “Towards a Conceptual Framework for Object-Oriented Software Metrics,” ACM SIGSOFT Software Eng. Notes, vol. 20, no. 2, pp. 69-75, 1995.
[7] C.J. Coppick and T.J. Cheatham, “Software Metrics for Object-Oriented Systems,” Proc. ACM Ann. Computer Science Conf., pp.317-322, 1992.
[8] M.H. Halstead, Elements of Software Science. Elsevier, 1977.
[9] T.J. McCabe and A.H. Watson, “Software Complexity,” Crosstalk, J. Defense Software Eng., vol. 7, no. 12, pp. 5-9, Dec. 1994.
[10] F. Brito e Abreu and R. Carapuca, “Candidate Metrics for Object-Oriented Software within a Taxonomy Framework,” J. Systems and Software, vol. 26, pp. 87-96, 1994.
[11] J.-Y. Chen and J.-F. Lum, “A New Metric for Object-Oriented Design,” Information of Software Technology, vol. 35, pp. 232-240, 1993.
[12] Y.-S. Lee, B.-S. Liang, and F.-J. Wang, “Some Complexity Metrics for Object-Oriented Programs Based on Information Flow,” Proc. Sixth IEEE Int'l Conf. Computer Systems and Software Eng., pp. 302-310, 1993.
[13] M. Lorenz and J. Kidd, Object-Oriented Software Metrics: A Practical Approach. Prentice Hall, 1994.
[14] W. Li and S. Henry, “Object Oriented Metrics that Predict Maintainability,” J. Systems and Software, vol. 23, pp. 111-122, 1993.
[15] W. Li, “Another Metric Suite for Object-Oriented Programming,” J. Software and Systems, vol. 44, pp. 155-162, 1998.
[16] B. Henderson-Sellers, Object-Oriented Metrics: Measures of Complexity. Prentice Hall, 1996.
[17] L.C. Briand, S. Morasca, and V.R. Basili, “Defining and Validating Measures for Object-Based High-Level Design,” IEEE Trans. Software Eng., vol. 25, no. 5, pp. 722-743, Sept./Oct. 1999.
[18] F. Brito e Abreu, “The MOOD Metrics Set,” Proc. Ninth European Conf. Object-Oriented Programming Workshop Metrics, 1995.
[19] F.B. e Abreu, M. Goulao, and R. Estevers, “Towards the Design Quality Evaluation of OO Software Systems,” Proc. Fifth Int'l Conf. Software Quality, 1995.
[20] R. Harrison, S.J. Counsell, and R.V. Nithi, “An Evaluation of the MOOD Set of Object-Oriented Software Metrics,” IEEE Trans. Software Eng., vol. 24, no. 6, pp. 491-496, June 1998.
[21] S. Counsell, S. Swift, and J. Crampton, “The Interpretation and Utility of Three Cohesion Metrics for Object-Oriented Design,” ACM Trans. Software Eng. and Methodology, vol. 15, no. 2, pp. 123-149, 2006.
[22] J. Bansiya, L. Etzkorn, C. Davis, and W. Li, “A Class Cohesion Metric for Object-Oriented Designs,” J. Object Oriented Program, vol. 11, no. 8, pp. 47-52, 1999.
[23] S. Counsell, E. Mendes, S. Swift, and A. Tucker, “Evaluation of an Object-Oriented Cohesion Metric through Hamming Distances,” Technical Report BBKCS-02-10, Birkbeck College, Univ. of London, 2002.
[24] M.D. Ghassemi and R.R. Mourant, “Evaluation of Coupling in the Context of Java Interfaces,” Proc. ACM SIGPLAN Conf. Object-Oriented Programming Systems, Languages and Applications, pp. 47-48, 2000.
[25] M. Hitz and B. Montazeri, “Chidamber and Kemerers Metrics Suite: A Measurement Theory Perspective,” IEEE Trans. Software Eng., vol. 22, pp. 267-271, 1996.
[26] N. Churcher and M. Shepperd, “Comments on “A Metrics Suite for Object-Oriented Design”,” IEEE Trans. Software Eng., vol. 21, no. 3, pp. 263-265, Mar. 1995.
[27] R.K. Bandi, V.K. Vaishnavi, and D.E. Turk, “Predicting Maintenance Performance Using Object-Oriented Design Complexity Metrics,” IEEE Trans. Software Eng., vol. 29, no. 1, pp. 77-86, Jan. 2003.
[28] L. Etzkorn, C. Davis, and W. Li, “A Practical Look at the Lack of Cohesion in Methods Metrics,” J. Object Oriented Programming, vol. 11, no. 5, pp. 27-34, 1998.
[29] L.C. Briand, J.W. Daly, and J.K. Wust, “A Unified Framework for Coupling Measurement in Object-Oriented Systems,” IEEE Trans. Software Eng., vol. 25, no. 1, pp. 91-121, Jan./Feb. 1999.
[30] H. Kabaili, R.K. Keller, and F. Lustman, “Cohesion as Changeability Indicator in Object-Oriented Systems,” Proc. Fifth European Conf. Software Maintenance and Reengineering, pp. 39-46, 2001.
[31] P. Oman and J. Hagemeister, “Constructing and Testing of Polynomials Predicting Software Maintainability,” J. Systems and Software, vol. 24, no. 3, pp. 251-266, Mar. 1994.
[32] M. Dagpinar and J.H. Jahnke, “Predicting Maintainability with Object-Oriented Metrics—An Empirical Comparison,” Proc. 10th Working Conf. Reverse Eng., p. 155, 2003.
[33] R. Marinescu, “Detecting Design Flaws via Metrics in Object Oriented Systems,” Proc. 39th Int'l Conf. and Exhibition on Technology of Object-Oriented Languages and Systems, pp. 173-182, 2001.
[34] B. Lague, D. Proulx, E.M. Merlo, J. Mayrand, and J. Hudepohl, “Assessing the Benefits of Incorporating Function Clone Detection in a Development Process,” Proc. Int'l Conf. Software Maintenance, 1997.
[35] K. Kontogiannis, “Evaluating Experiments on the Detection of Programming Patterns Using Software Metrics,” Proc. Working Conf. Reverse Eng., pp. 44-54, 1997.
[36] V.R. Basili, L.C. Briand, and W. Melo, “A Validation of Object Oriented Design Metrics as Quality Indicators,” IEEE Trans. Software Eng., vol. 22, pp. 751-761, 1996.
[37] L.C. Briand, J.K. Wust, J.W. Daly, and D.V. Porter, “Exploring the Relationships between Design Measures and Software Quality in Object-Oriented Systems,” J. Systems and Software, vol. 51, pp. 245-273, 2000.
[38] T. Gyimothy, R. Ferenc, and I. Siket, “Empirical Validation of Object-Oriented Metrics on Open Source Software for Fault Prediction,” IEEE Trans. Software Eng., vol. 31, no. 10, pp. 897-910, Oct. 2005.
[39] R. Subramanyam and M. Krishnan, “Empirical Analysis of CK Metrics for Object-Oriented Design Complexity: Implications for Software Defects,” IEEE Trans. Software Eng., vol. 29, 2003.
[40] H.M. Olague, L.H. Etzkorn, S. Gholston, and S. Quattlebaum, “Empirical Validation of Three Software Metrics Suites to Predict Fault-Proneness of Object-Oriented Classes Developed Using Highly Iterative or Agile Software Development Processes,” IEEE Trans. Software Eng., vol. 33, no. 6, pp. 402-419, June 2007.
[41] R. Barker and E. Tempero, “A Large-Scale Empirical Comparison of Object-Oriented Cohesion Metrics,” Proc. 14th Asia-Pacific Software Eng. Conf., pp. 414-421, 2007.
[42] F. Simon, F. Steinbruckner, and C. Lewerentz, “Metrics Based Refactoring,” Proc. Fifth European Conf. Software Maintenance and Reengineering, pp. 30-38, 2001.
[43] M. Alshayeb and W. Li, “An Empirical Validation of Object-Oriented Metrics in Two Different Iterative Software Processes,” IEEE Trans. Software Eng., vol. 29, no. 11, pp. 1043-1049, Nov. 2003.
[44] M.M. Carey and G.C. Gannod, “Recovering Concepts from Source Code with Automated Concept Identification,” Proc. 15th IEEE Int'l Conf. Program Comprehension, 2007.
[45] E. Arisholm, L.C. Briand, and A. Fyen, “Dynamic Coupling Measurement for Object-Oriented Software,” IEEE Trans. Software Eng., vol. 30, no. 4, pp. 491-506, Apr. 2004.
[46] R.E. Johnson and B. Foote, “Designing Reusable Classes,” J.Object-Oriented Programming, vol. 1, no. 2, pp. 22-35, 1988.
[47] L. Mikhajlov and E. Sekerinski, “A Study of the Fragile Base Class Problem,” Proc. 12th European Conf. Object Oriented Programming, pp. 355-383, 1998.
[48] J. Aldrich and K. Donnelly, “Selective Open Recursion: Modular Reasoning about Components and Inheritance,” Proc. Third Workshop Specification and Verification of Component-Based Systems, 2004.
[49] R. Martin, “Design Principles and Design Patterns,” www., 2000.
[50] R. Agarwal and R. Srikant, “Fast Algorithms for Mining Association Rules,” Proc. 20th Int'l Conf. Very Large Data Bases, pp. 487-499, 1994.
[51] K. Sartipi and K. Kontogiannis, “Component Clustering Based on Maximal Association,” Proc. Eighth Working Conf. Reverse Eng., p.103, 2001.
[52] Z. Li, S. Lu, S. Myagmar, and Y. Zhou, “CP-Miner: Finding Copy-Paste and Related Bugs in Large-Scale Software Code,” IEEE Trans. Software Eng., vol. 32, no. 3, pp. 176-192, Mar. 2006.
[53] C. Borgelt, “Efficient Implementations of Apriori and Eclat,” Proc. IEEE ICDM Workshop Frequent Itemset Mining Implementations, 2003.
[54] A.S. Lee and R.L. Baskerville, “Generalizing Generalizability in Information Systems Research,” Information Systems Research, vol. 14, no. 3, pp. 221-243, 2003.
[55] T.D. Cook, W. Shadish, and D. Campbell, Experimental and Quasi-Experimental Designs for Generalized Causal Inference. Houghton Mifflin, 2002.

Index Terms:
Metrics/Measurement, Maintainability, Modules and interfaces, Object-oriented programming, Coupling, Maintenance and Enhancement, Large-Scale Software
Santonu Sarkar, Avinash C. Kak, Girish Maskeri Rama, "Metrics for Measuring the Quality of Modularization of Large-Scale Object-Oriented Software," IEEE Transactions on Software Engineering, vol. 34, no. 5, pp. 700-720, Sept.-Oct. 2008, doi:10.1109/TSE.2008.43
Usage of this product signifies your acceptance of the Terms of Use.