Coupling-based analysis of object-oriented software

Testing and maintenance of Object-Oriented (OO) software is expensive and difficult. Previous research has shown that complex relationships among OO software components are among the key factors that make testing and maintenance costly and challenging. Thus, measuring the relationships has become a prerequisite to develop efficient techniques for testing and maintenance. Coupling analysis is a powerful technique for assessing relationships among software components. In coupling analysis, two components are coupled if any kind of connection or relationship exists between them. The coupling nature is categorized into different levels or types. Coupling analysis tries, by defining a theoretical model, to capture all the attributes of the relationships among components of a given program. It also quantifies the coupling levels by defining a set of measures. The theoretical model and the measurement set serve as a foundation for exercising complexity analysis on various problems that are related to the interaction among components. This research presents a theoretical model of OO coupling, quantitative analysis techniques to measure coupling, engineering techniques to apply coupling to three specific and well-known testing and maintenance problems, and empirical evaluations based on a tool that was developed as part of this research. The coupling measures are validated theoretically and empirically. Theoretically, coupling measures are validated using a published unified coupling framework. Empirically, the measures are applied to three well known problems and the results are compared with published work in these areas. The result is a collection of coupling measures that quantify basic connections for different high level relationships. These measures are useful in finding solutions to the three specific problems posed in this research. For two of the three problems, Class Integration and Test Order (CITO) and Design Pattern Detection (DPD), this research developed a simpler technique than previous research has arrived upon. For the third problem, Change Impact Analysis (CIA), the resulting impact set from using the proposed coupling measures was more complete than previous research has computed. The importance of this work is in defining couplings in a more comprehensive way. Previous research only considered inheritance relationships. Considering all kinds of relationships is important, because it allows reasoning at different levels of abstractions with coupling measures.

[1]  A. Jefferson Offutt,et al.  Coupling‐based criteria for integration testing , 1998 .

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

[3]  Barbara A. Kitchenham,et al.  Coupling measures and change ripples in C++ application software , 2000, J. Syst. Softw..

[4]  A. Jefferson Offutt,et al.  Coupling-based Testing of O-O Programs , 2004, J. Univers. Comput. Sci..

[5]  Bonnie Berger,et al.  Approximation alogorithms for the maximum acyclic subgraph problem , 1990, SODA '90.

[6]  Kyle G. Brown,et al.  Design reverse-engineering and automated design-pattern detection in Smalltalk , 1996 .

[7]  Pankaj Jalote,et al.  An Integrated Approach to Software Engineering , 1997, Undergraduate Texts in Computer Science.

[8]  J. McC Smith,et al.  Elemental design patterns: a formal semantics for composition of OO software architecture , 2002, 27th Annual NASA Goddard/IEEE Software Engineering Workshop, 2002. Proceedings..

[9]  Lutz Prechelt,et al.  Functionality versus Practicality: Employing Existing Tools for Recovering Structural Design Patterns , 1998, J. Univers. Comput. Sci..

[10]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[11]  David Chenho Kung,et al.  Developing an object-oriented software testing and maintenance environment , 1995, CACM.

[12]  Welf Löwe,et al.  Automatic design pattern detection , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[13]  Paul Van Dooren,et al.  A MEASURE OF SIMILARITY BETWEEN GRAPH VERTICES . WITH APPLICATIONS TO SYNONYM EXTRACTION AND WEB SEARCHING , 2002 .

[14]  Stuart H. Zweben,et al.  Measuring the quality of structured designs , 1981, J. Syst. Softw..

[15]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

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

[17]  Frank Tip,et al.  Chianti: a tool for change impact analysis of java programs , 2004, OOPSLA.

[18]  Erik Arisholm Dynamic coupling measures for object-oriented software , 2002, Proceedings Eighth IEEE Symposium on Software Metrics.

[19]  Elaine J. Weyuker,et al.  Evaluating Software Complexity Measures , 2010, IEEE Trans. Software Eng..

[20]  A. Jefferson Offutt,et al.  A fault model for subtype inheritance and polymorphism , 2001, Proceedings 12th International Symposium on Software Reliability Engineering.

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

[22]  Michele Risi,et al.  Design pattern recovery by visual language parsing , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[23]  Rudolf K. Keller,et al.  Design properties and object-oriented software changeability , 2000, Proceedings of the Fourth European Conference on Software Maintenance and Reengineering.

[24]  A. J. Offutt,et al.  Integration testing based on software couplings , 1995, COMPASS '95 Proceedings of the Tenth Annual Conference on Computer Assurance Systems Integrity, Software Safety and Process Security'.

[25]  Federico Bergenti IMPROVING UML DESIGNS USING AUTOMATIC DESIGN PATTERN DETECTION , 2001 .

[26]  Javam C. Machado,et al.  The prediction of faulty classes using object-oriented design metrics , 2001, J. Syst. Softw..

[27]  David Chenho Kung,et al.  A test strategy for object-oriented programs , 1995, Proceedings Nineteenth Annual International Computer Software and Applications Conference (COMPSAC'95).

[28]  Marek Vokác Defect frequency and design patterns: an empirical study of industrial code , 2004, IEEE Transactions on Software Engineering.

[29]  Lionel C. Briand,et al.  Using genetic algorithms and coupling measures to devise optimal integration test orders , 2002, SEKE '02.

[30]  Kathy Sierra,et al.  Head First Design Patterns , 2004 .

[31]  Sallie M. Henry,et al.  Software quality metrics based on interconnectivity , 1981, J. Syst. Softw..

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

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

[34]  Claudia Raibulet,et al.  Elemental Design Patterns Recognition In Java , 2005, 13th IEEE International Workshop on Software Technology and Engineering Practice (STEP'05).

[35]  Steven J. Zeil Perturbation Techniques for Detecting Domain Errors , 1989, IEEE Trans. Software Eng..

[36]  A. Jefferson Offutt,et al.  A software metric system for module coupling , 1993, J. Syst. Softw..

[37]  Ian Warren,et al.  The Renaissance of Legacy Systems , 1999, Practitioner Series.

[38]  John D. McGregor,et al.  Incremental testing of object-oriented class structures , 1992, ICSE '92.

[39]  Victor R. Basili,et al.  Understanding and predicting the process of software maintenance releases , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[40]  Yann-Gaël Guéhéneuc,et al.  Recovering binary class relationships: putting icing on the UML cake , 2004, OOPSLA.

[41]  Hassan Gomaa,et al.  Designing concurrent, distributed, and real-time applications with UML , 2000, ICSE.

[42]  Rudolf Ferenc,et al.  Mining design patterns from C++ source code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[43]  Austin Melton,et al.  Deriving structurally based software measures , 1990, Journal of Systems and Software.

[44]  Lionel C. Briand,et al.  Using coupling measurement for impact analysis in object-oriented systems , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[45]  Victor R. Basili,et al.  System Structure Analysis: Clustering with Data Bindings , 1985, IEEE Transactions on Software Engineering.

[46]  A. Jefferson Offutt,et al.  An Approach to Fault Modeling and Fault Seeding Using the Program Dependence Graph , 1997, J. Syst. Softw..

[47]  François Lustman,et al.  A change impact model for changeability assessment in object-oriented software systems , 2002, Sci. Comput. Program..

[48]  Kuo-Chung Tai,et al.  Test order for inter-class integration testing of object-oriented software , 1997, Proceedings Twenty-First Annual International Computer Software and Applications Conference (COMPSAC'97).

[49]  Jing-Yang Jou,et al.  On computing the minimum feedback vertex set of a directed graph bycontraction operations , 2000, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[50]  Giuliano Antoniol,et al.  Object-oriented design patterns recovery , 2001, J. Syst. Softw..

[51]  Peter J. Clarke,et al.  A parameterized cost model to order classes for class-based testing of C++ applications , 2003, 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003..

[52]  William E. Howden,et al.  Reliability of the Path Analysis Testing Strategy , 1976, IEEE Transactions on Software Engineering.

[53]  A. Jefferson Offutt,et al.  An analysis tool for coupling-based integration testing , 2000, Proceedings Sixth IEEE International Conference on Engineering of Complex Computer Systems. ICECCS 2000.

[54]  Robert S. Arnold,et al.  Software Change Impact Analysis , 1996 .

[55]  Neville Churcher,et al.  CodeRank: a new family of software metrics , 2006, Australian Software Engineering Conference (ASWEC'06).

[56]  N. P. Capper,et al.  The Impact of Object-Oriented Technology on Software Quality: Three Case Histories , 1994, IBM Syst. J..

[57]  Yann-Gaël Guéhéneuc,et al.  Fingerprinting design patterns , 2004, 11th Working Conference on Reverse Engineering.

[58]  Li Li,et al.  Algorithmic analysis of the impact of changes to object-oriented software , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[59]  Richard C. Waters,et al.  The Programmer's Apprentice: a research overview , 1988, Computer.

[60]  David E. Goldberg,et al.  Genetic Algorithms in Search Optimization and Machine Learning , 1988 .

[61]  Victor R. Basili,et al.  Analyzing Error-Prone System Structure , 1991, IEEE Trans. Software Eng..

[62]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.