Metrics for Measuring the Quality of Modularization of Large-Scale Object-Oriented Software

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]  François Lustman,et al.  Cohesion as Changeability Indicator in Object-Oriented Systems , 2001, CSMR.

[2]  Christian Borgelt,et al.  EFFICIENT IMPLEMENTATIONS OF APRIORI AND ECLAT , 2003 .

[3]  Emil Sekerinski,et al.  A Study of The Fragile Base Class Problem , 1998, ECOOP.

[4]  Sandro Morasca,et al.  Defining and Validating Measures for Object-Based High-Level Design , 1999, IEEE Trans. Software Eng..

[5]  Richard H. Carver,et al.  An Evaluation of the MOOD Set of Object-Oriented Software Metrics , 1998, IEEE Trans. Software Eng..

[6]  Letha H. Etzkorn,et al.  A Practical Look at the Lack of Cohesion in Methods Metric , 1998, J. Object Oriented Program..

[7]  Matthew J. Parkinson,et al.  The java module system: core design and semantic definition , 2007, OOPSLA.

[8]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

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

[10]  Paul W. Oman,et al.  Construction and testing of polynomials predicting software maintainability , 1994, J. Syst. Softw..

[11]  Yuanyuan Zhou,et al.  CP-Miner: finding copy-paste and related bugs in large-scale software code , 2006, IEEE Transactions on Software Engineering.

[12]  Jonathan Aldrich Selective Open Recursion: Modular Reasoning about Components and Inheritance , 2004 .

[13]  Martin Hitz,et al.  Chidamber & Kemerer's Metrics Suite: a Measurement Theory Perspective , 1996 .

[14]  Ramanath Subramanyam,et al.  Empirical Analysis of CK Metrics for Object-Oriented Design Complexity: Implications for Software Defects , 2003, IEEE Trans. Software Eng..

[15]  Lionel C. Briand,et al.  Dynamic coupling measurement for object-oriented software , 2004, IEEE Transactions on Software Engineering.

[16]  Mohammad Alshayeb,et al.  An Empirical Validation of Object-Oriented Metrics in Two Different Iterative Software Processes , 2003, IEEE Trans. Software Eng..

[17]  Kostas Kontogiannis,et al.  Evaluation experiments on the detection of programming patterns using software metrics , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[18]  Thomas J. Cheatham,et al.  Software metrics for object-oriented systems , 1992, CSC '92.

[19]  Lionel C. Briand,et al.  Exploring the relationships between design measures and software quality in object-oriented systems , 2000, J. Syst. Softw..

[20]  C. Lewerentz,et al.  Metrics based refactoring , 2001, Proceedings Fifth European Conference on Software Maintenance and Reengineering.

[21]  Feng-Jian Wang,et al.  Some complexity metrics for object-oriented programs based on information flow , 1993, 1993 CompEuro Proceedings Computers in Design, Manufacturing, and Production.

[22]  Richard Barker,et al.  A Large-Scale Empirical Comparison of Object-Oriented Cohesion Metrics , 2007, 14th Asia-Pacific Software Engineering Conference (APSEC'07).

[23]  Vijay K. Vaishnavi,et al.  Predicting Maintenance Performance Using Object-Oriented Design Complexity Metrics , 2003, IEEE Trans. Software Eng..

[24]  Wei Li,et al.  Another metric suite for object-oriented programming , 1998, J. Syst. Softw..

[25]  Rakesh Agarwal,et al.  Fast Algorithms for Mining Association Rules , 1994, VLDB 1994.

[26]  Fernando Brito e Abreu,et al.  Candidate metrics for object-oriented software within a taxonomy framework , 1994, J. Syst. Softw..

[27]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[28]  Ronald R. Mourant,et al.  Evaluation of coupling in the context of Java interfaces (poster session) , 2000, OOPSLA '00.

[29]  Martin J. Shepperd,et al.  Towards a conceptual framework for object oriented software metrics , 1995, SOEN.

[30]  Richard Baskerville,et al.  Generalizing Generalizability in Information Systems Research , 2003, Inf. Syst. Res..

[31]  J.-Y. Chen,et al.  A new metric for object-oriented design , 1993, Inf. Softw. Technol..

[32]  Jens H. Weber,et al.  Predicting maintainability with object-oriented metrics -an empirical comparison , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[33]  Ettore Merlo,et al.  Assessing the benefits of incorporating function clone detection in a development process , 1997, 1997 Proceedings International Conference on Software Maintenance.

[34]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[35]  Letha H. Etzkorn,et al.  Clarifying specialized forms of association in UML and OML , 1998 .

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

[37]  W. Shadish,et al.  Experimental and Quasi-Experimental Designs for Generalized Causal Inference , 2001 .

[38]  Tibor Gyimóthy,et al.  Empirical validation of object-oriented metrics on open source software for fault prediction , 2005, IEEE Transactions on Software Engineering.

[39]  Neville Churcher,et al.  Comments on "A Metrics Suite for Object Oriented Design" , 1995, IEEE Trans. Software Eng..

[40]  Gerald C. Gannod,et al.  Recovering Concepts from Source Code with Automated Concept Identification , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[41]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[42]  Letha H. Etzkorn,et al.  A Class Cohesion Metric For Object-Oriented Designs , 1999, J. Object Oriented Program..

[43]  Letha H. Etzkorn,et al.  Empirical Validation of Three Software Metrics Suites to Predict Fault-Proneness of Object-Oriented Classes Developed Using Highly Iterative or Agile Software Development Processes , 2007, IEEE Transactions on Software Engineering.

[44]  Jason Crampton,et al.  The interpretation and utility of three cohesion metrics for object-oriented design , 2006, TSEM.

[45]  Radu Marinescu,et al.  Detecting design flaws via metrics in object-oriented systems , 2001, Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.

[46]  Brian Henderson-Sellers,et al.  Object-Oriented Metrics , 1995, TOOLS.

[47]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[48]  Sallie M. Henry,et al.  Object-oriented metrics that predict maintainability , 1993, J. Syst. Softw..

[49]  Ramakrishnan Srikant,et al.  Fast algorithms for mining association rules , 1998, VLDB 1998.