Modularization Metrics: Assessing Package Organization in Legacy Large Object-Oriented Software

There exist many large object-oriented software systems consisting of several thousands of classes that are organized into several hundreds of packages. In such software systems, classes cannot be considered as units for software modularization. In such context, packages are not simply classes containers, but they also play the role of modules: a package should focus to provide well identified services to the rest of the software system. Therefore, understanding and assessing package organization is primordial for software maintenance tasks. Although there exist a lot of works proposing metrics for the quality of a single class and/or the quality of inter-class relationships, there exist few works dealing with some aspects for the quality of package organization and relationship. We believe that additional investigations are required for assessing package modularity aspects. The goal of this paper is to provide a complementary set of metrics that assess some modularity principles for packages in large legacy object-oriented software: Information-Hiding, Changeability and Reusability principles. Our metrics are defined with respect to object-oriented dependencies that are caused by inheritance and method call. We validate our metrics theoretically through a careful study of the mathematical properties of each metric.

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

[2]  James M. Bieman,et al.  Cohesion and reuse in an object-oriented system , 1995, SSR '95.

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

[4]  Alistair Cockburn,et al.  Agile Software Development , 2001 .

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

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

[7]  Vojislav B. Misic,et al.  Cohesion is structural, coherence is functional: different views, different measures , 2001, Proceedings Seventh International Software Metrics Symposium.

[8]  James M. Bieman,et al.  Measuring Design-Level Cohesion , 1998, IEEE Trans. Software Eng..

[9]  Denys Poshyvanyk,et al.  The conceptual cohesion of classes , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[10]  Audris Mockus,et al.  Does Code Decay? Assessing the Evidence from Change Management Data , 2001, IEEE Trans. Software Eng..

[11]  M. Gladwell The Tipping Point , 2000 .

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

[13]  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..

[14]  William G. Griswold,et al.  Automated assistance for program restructuring , 1993, TSEM.

[15]  Martin Fowler Reducing Coupling , 2001, IEEE Softw..

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

[17]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[18]  Avinash C. Kak,et al.  Metrics for Measuring the Quality of Modularization of Large-Scale Object-Oriented Software , 2008, IEEE Transactions on Software Engineering.

[19]  Oscar Nierstrasz,et al.  Using Context Information to Re-architect a System , 2006 .

[20]  William C. Chu,et al.  A measure for composite module cohesion , 1992, International Conference on Software Engineering.

[21]  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.

[22]  Edwin Hautus,et al.  IMPROVING JAVA SOFTWARE THROUGH PACKAGE STRUCTURE ANALYSIS , 2002 .

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

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

[25]  Stéphane Ducasse,et al.  Package Fingerprints: A visual summary of package interface usage , 2010, Inf. Softw. Technol..

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

[27]  Lionel C. Briand,et al.  A Unified Framework for Cohesion Measurement in Object-Oriented Systems , 2004, Empirical Software Engineering.

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

[29]  François Lustman,et al.  Cohesion as Changeability Indicator in Object-Oriented Systems , 2001, CSMR.

[30]  Taghi M. Khoshgoftaar,et al.  Measuring coupling and cohesion of software modules: an information-theory approach , 2001, Proceedings Seventh International Software Metrics Symposium.

[31]  JaatunMartin Gilje,et al.  Agile Software Development , 2002, Comput. Sci. Educ..

[32]  Houari A. Sahraoui,et al.  Automatic Package Coupling and Cycle Minimization , 2009, 2009 16th Working Conference on Reverse Engineering.

[33]  R. Alves Redol,et al.  Coupling and Cohesion as Modularization Drivers: Are we being over-persuaded? , 2001 .

[34]  T. J. Emerson A discriminant metric for module cohesion , 1984, ICSE '84.

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

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

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

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

[39]  Stéphane Ducasse,et al.  Package Surface Blueprints: Visually Supporting the Understanding of Package Relationships , 2007, 2007 IEEE International Conference on Software Maintenance.

[40]  Diego Rasskin-Gutman,et al.  Modularity. Understanding the Development and Evolution of Natural Complex Systems , 2005 .

[41]  Lionel C. Briand,et al.  An object-oriented high-level design-based class cohesion metric , 2010, Inf. Softw. Technol..

[42]  Brian Henderson-Sellers,et al.  Object-oriented metrics: measures of complexity , 1995 .

[43]  Al DallalJehad,et al.  An object-oriented high-level design-based class cohesion metric , 2010 .