Evaluating Heuristics for Iterative Impact Analysis

Iterative impact analysis (IIA) is a process that allows developers to estimate the impacted units of a software change. Starting from a single impacted unit, the developers inspect its interacting units via program dependencies to identify the ones that are also impacted, and this process continues iteratively. Experience has shown that developers often miss impacted units and inspect many irrelevant units. In this work, we study propagation heuristics that guide developers to find the actual impacted units and termination heuristics that help to decide whether the estimated impact is complete. The roles of these two kinds of heuristics are complementary and affect both the precision and recall when used during IIA. We investigated several propagation heuristics adapted from previously published papers and combined them with a practical termination heuristic. We developed a reenactment process that simulates the actions of developers who use those heuristics during IIA, and we assessed their performance. The software changes for our reenactment were mined from the repositories of open source projects. We found that IIA provides better recall than the other known impact analysis techniques. However the IIA with the propagation heuristics that we investigated does not supersede IIA combined with a random inspection, and hence these heuristics do not help the IIA.

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

[2]  Hareton K. N. Leung,et al.  Combining concept lattice with call graph for impact analysis , 2012, Adv. Eng. Softw..

[3]  Václav Rajlich,et al.  JRipples: a tool for program comprehension during incremental change , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[4]  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).

[5]  Mithun Acharya,et al.  Practical change impact analysis based on static program slicing for industrial software systems , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[6]  Bixin Li,et al.  Static change impact analysis techniques: A comparative study , 2015, J. Syst. Softw..

[7]  Raúl A. Santelices,et al.  SENSA: Sensitivity Analysis for Quantitative Change-Impact Prediction , 2014, 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation.

[8]  Tibor Gyimóthy,et al.  Computation of Static Execute After Relation with Applications to Software Maintenance , 2007, 2007 IEEE International Conference on Software Maintenance.

[9]  Ahmed E. Hassan,et al.  Supporting software evolution using adaptive change propagation heuristics , 2008, 2008 IEEE International Conference on Software Maintenance.

[10]  Marwan Abi-Antoun,et al.  Inferring ownership domains from refinements , 2018, GPCE.

[11]  Richard C. Holt,et al.  Replaying development history to assess the effectiveness of change propagation tools , 2006, Empirical Software Engineering.

[12]  Denys Poshyvanyk,et al.  Integrating conceptual and logical couplings for change impact analysis in software , 2013, Empirical Software Engineering.

[13]  Václav Rajlich,et al.  Variable granularity for improving precision of impact analysis , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[14]  Giuliano Antoniol,et al.  Identifying the starting impact set of a maintenance request: a case study , 2000, Proceedings of the Fourth European Conference on Software Maintenance and Reengineering.

[15]  Per Runeson,et al.  Supporting Change Impact Analysis Using a Recommendation System: An Industrial Case Study in a Safety-Critical Context , 2017, IEEE Transactions on Software Engineering.

[16]  Marwan Abi-Antoun,et al.  Impact analysis based on a global hierarchical Object Graph , 2015, 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[17]  Hareton K. N. Leung,et al.  A survey of code‐based change impact analysis techniques , 2013, Softw. Test. Verification Reliab..

[18]  Amir Aryani,et al.  Predicting Change Propagation Using Domain-Based Coupling , 2013 .

[19]  Denys Poshyvanyk,et al.  Blending Conceptual and Evolutionary Couplings to Support Change Impact Analysis in Source Code , 2010, 2010 17th Working Conference on Reverse Engineering.

[20]  Philippe Preux,et al.  A learning algorithm for change impact prediction , 2016, RAISE@ICSE.

[21]  Bogdan Dit,et al.  ImpactMiner: a tool for change impact analysis , 2014, ICSE Companion.

[22]  Dana S. Richards,et al.  Steiner tree problems , 1992, Networks.

[23]  Philippe Preux,et al.  A Learning Algorithm for Change Impact Prediction: Experimentation on 7 Java Applications , 2015, ArXiv.

[24]  Huzefa H. Kagdi,et al.  Impact analysis of change requests on source code based on interaction and commit histories , 2014, MSR 2014.

[25]  Raúl A. Santelices,et al.  Abstracting Program Dependencies Using the Method Dependence Graph , 2015, 2015 IEEE International Conference on Software Quality, Reliability and Security.

[26]  Václav Rajlich,et al.  Software Change in the Solo Iterative Process: An Experience Report , 2012, 2012 Agile Conference.

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

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

[29]  Tibor Gyimóthy,et al.  Using information retrieval based coupling measures for impact analysis , 2009, Empirical Software Engineering.

[30]  Tibor Gyimóthy,et al.  Comparison of different impact analysis methods and programmer's opinion: an empirical study , 2010, PPPJ.

[31]  Vaclav Rajlich,et al.  On use of dependency and semantics information in incremental change , 2009 .

[32]  Steffen Lehnert,et al.  A taxonomy for software change impact analysis , 2011, IWPSE-EVOL '11.

[33]  Jonathan I. Maletic,et al.  Journal of Software Maintenance and Evolution: Research and Practice Survey a Survey and Taxonomy of Approaches for Mining Software Repositories in the Context of Software Evolution , 2022 .

[34]  Andreas Zeller,et al.  Mining version histories to guide software changes , 2005, Proceedings. 26th International Conference on Software Engineering.

[35]  Bogdan Dit,et al.  Integrated impact analysis for managing software changes , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[36]  Vaclav Rajlich Software Engineering: The Current Practice , 2011 .