Change impact analysis of object-oriented software

As the software industry has matured, we have shifted our resources from being devoted to developing new software systems to making modifications in evolving software systems. A major problem for developers in an evolutionary environment is that seemingly small changes can ripple throughout the system to cause major unintended impacts elsewhere. As such, software developers need mechanisms to understand how a change to a software system will impact the rest of the system. Although the effects of changes in object-oriented software can be restricted, they are also more subtle and more difficult to detect. Maintaining the current object-oriented systems is more of an art, similar to where we were 15 years ago with procedural systems, than an engineering skill. We are beginning to see “legacy” object-oriented systems in industry. A difficult problem is how to maintain these objects in large, complex systems. Although objects are more easily identified and packaged, features such as encapsulation, inheritance, aggregation, polymorphism and dynamic binding can make the ripple effects of object-oriented systems far more difficult to control than in procedural systems. The research presented here addresses the problems of change impact analysis for object-oriented software. Major results of this research include a set of object-oriented data dependency graphs, a set of algorithms that allow software developers to evaluate proposed changes on object-oriented software, a set of object-oriented change impact metrics to evaluate the change impact quantitatively, and a prototype tool (ChaT) to evaluate the algorithms. This research also results in efficient regression testing by helping testers decide what classes and methods need to be retested, and in supporting cost estimation and schedule planning.

[1]  David Chenho Kung,et al.  Change impact identification in object oriented software maintenance , 1994, Proceedings 1994 International Conference on Software Maintenance.

[2]  Yih-Feng Hwang Detecting faults in chained-inference rules in information distribution systems , 1998 .

[3]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[4]  Stephen S. Yau,et al.  Some Stability Measures for Software Maintenance , 1979, IEEE Transactions on Software Engineering.

[5]  Dan Harkey,et al.  The Essential Distributed Objects Survival Guide , 1995 .

[6]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..

[7]  Dennis de Champeaux Object-oriented development process and metrics , 1997 .

[8]  Carl H. Smith,et al.  On Weyuker's Axioms For Software Complexity Measures , 1991, IEEE Trans. Software Eng..

[9]  Louise E. Moser Data Dependency Graphs for Ada Programs , 1990, IEEE Trans. Software Eng..

[10]  A. Jefferson Offutt,et al.  An integrated automatic test data generation system , 1991, J. Syst. Integr..

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

[12]  Premkumar T. Devanbu,et al.  Analytical and empirical evaluation of software reuse metrics , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[13]  Hareton Leung,et al.  A firewall concept for both control-flow and data-flow in regression integration testing , 1992, Proceedings Conference on Software Maintenance 1992.

[14]  Malcolm Munro,et al.  An early impact analysis technique for software maintenance , 1994, J. Softw. Maintenance Res. Pract..

[15]  Janusz W. Laski,et al.  Dynamic slicing of computer programs , 1990, J. Syst. Softw..

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

[17]  Gail E. Kaiser,et al.  Intelligent assistance for software development and maintenance , 1988, IEEE Software.

[18]  Gregg Rothermel,et al.  Performing data flow testing on classes , 1994, SIGSOFT '94.

[19]  Shawn A. Bohner,et al.  A graph traceability approach for software change impact analysis , 1996 .

[20]  J. S. Collofello,et al.  A practical software maintenance environment , 1988, Proceedings. Conference on Software Maintenance, 1988..

[21]  Brian A. Malloy,et al.  A Unified Interprocedural Program Representation for a Maintenance Environment , 1993, IEEE Trans. Software Eng..

[22]  Boris Beizer,et al.  Software Testing Techniques , 1983 .

[23]  Shawn A. Bohner,et al.  Impact analysis-Towards a framework for comparison , 1993, 1993 Conference on Software Maintenance.

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

[25]  Norman F. Schneidewind,et al.  The State of Software Maintenance , 1987, IEEE Transactions on Software Engineering.

[26]  Robert Moreton A process model for software maintenance , 1990, J. Inf. Technol..

[27]  David Rine Structural defects in object-oriented programming , 1996, SOEN.

[28]  Norman Wilde,et al.  Maintenance Support for Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[29]  Lawrence J. Henschen,et al.  Efficient Algorithms for the Instantiated Transitive Closure Queries , 1991, IEEE Trans. Software Eng..

[30]  Robert C. Martin Designing Object Oriented C++ Applications Using The Booch Method , 1995 .

[31]  Shawn A. Bohner,et al.  A framework for software maintenance metrics , 1990, Proceedings. Conference on Software Maintenance 1990.

[32]  Lowell Jay Arthur Software evolution: the software maintenance challenge , 1988 .

[33]  Enrique Ivan Oviedo Control flow, data flow and program complexity , 1984 .

[34]  Anneliese Amschler Andrews,et al.  Data flow analysis and its application to software maintenance , 1988, Proceedings. Conference on Software Maintenance, 1988..

[35]  Stephen S. Yau,et al.  Knowledge Representation of Software Component Interconnection Information for Large-Scale Software Modifications , 1987, IEEE Transactions on Software Engineering.

[36]  K. G. Heisler,et al.  An object-oriented maintenance-oriented model for software , 1989, Digest of Papers. COMPCON Spring 89. Thirty-Fourth IEEE Computer Society International Conference: Intellectual Leverage.

[37]  Thierry Bodhuin,et al.  Supporting impact analysis: a semi-automated technique and associated tool , 1995, Proceedings of International Conference on Software Maintenance.

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

[39]  Harry M. Sneed Estimating the costs of software maintenance tasks , 1995, Proceedings of International Conference on Software Maintenance.

[40]  H. D. Rombach,et al.  Improving software maintenance through measurement , 1989 .

[41]  Norman E. Fenton,et al.  Software Metrics: A Rigorous Approach , 1991 .

[42]  David Chenho Kung,et al.  A study on the effect of architecture on maintainability of object-oriented systems , 1995, Proceedings of International Conference on Software Maintenance.

[43]  David Binkley,et al.  Unravel:: a case tool to assist evaluation of high integrity software , 1995 .

[44]  Joseph P. Loyall,et al.  Using dependence analysis to support the software maintenance process , 1993, 1993 Conference on Software Maintenance.

[45]  Stephen S. Yau,et al.  Ripple effect analysis of software maintenance , 1978, COMPSAC.

[46]  Nazim H. Madhavji Environment Evolution: The Prism Model of Changes , 1992, IEEE Trans. Software Eng..

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

[48]  A. Jefferson Offutt,et al.  Constraint-Based Automatic Test Data Generation , 1991, IEEE Trans. Software Eng..

[49]  Gerald W. Both,et al.  Object-oriented analysis and design with applications , 1994 .

[50]  Shari Lawrence Pfleeger,et al.  Software Metrics , 1991 .

[51]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[52]  Wei Li,et al.  An empirical study of maintenance activities in two object-oriented systems , 1995, J. Softw. Maintenance Res. Pract..

[53]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[54]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[55]  A. J. Offutt,et al.  Testing object-oriented software using the category-partition method , 1995 .

[56]  Joseph K. Kearney,et al.  Software complexity measurement , 1986, CACM.