Abstract
Impact analysis not only assists developers with change planning and management, but also facilitates a range of other client analyses, such as testing and debugging. In particular, for developers working in the context of specific program executions, dynamic impact analysis is usually more desirable than static approaches, as it produces more manageable and relevant results with respect to those concrete executions. However, existing techniques for this analysis mostly lie on two extremes: either fast, but too imprecise, or more precise, yet overly expensive. In practice, both more cost-effective techniques and variable cost-effectiveness trade-offs are in demand to fit a variety of usage scenarios and budgets of impact analysis.
This article aims to fill the gap between these two extremes with an array of cost-effective analyses and, more broadly, to explore the cost and effectiveness dimensions in the design space of impact analysis. We present the development and evaluation of DiaPro, a framework that unifies a series of impact analyses, including three new hybrid techniques that combine static and dynamic analyses. Harnessing both static dependencies and multiple forms of dynamic data including method-execution events, statement coverage, and dynamic points-to sets, DiaPro prunes false-positive impacts with varying strength for variant effectiveness and overheads. The framework also facilitates an in-depth examination of the effects of various program information on the cost-effectiveness of impact analysis.
We applied DiaPro to ten Java applications in diverse scales and domains, evaluating it thoroughly on both arbitrary and repository-based queries from those applications. We show that the three new analyses are all significantly more effective than existing alternatives while remaining efficient, and the DiaPro framework, as a whole, provides flexible cost-effectiveness choices for impact analysis with the best options for variable needs and budgets. Our study results also suggest that hybrid techniques tend to be much more cost-effective than purely dynamic approaches, in general, and that statement coverage has mostly stronger effects than dynamic points-to sets on the cost-effectiveness of dynamic impact analysis, while static dependencies have even stronger effects than both forms of dynamic data.
- Mithun Acharya and Brian Robinson. 2011. Practical change impact analysis based on static program slicing for industrial software systems. In Proceedings of IEEE/ACM International Conference on Software Engineering. 746--765. Google ScholarDigital Library
- Hiralal Agrawal, Joseph R. Horgan, Edward W. Krauser, and Saul London. 1993. Incremental regression testing. In Proceedings of IEEE International Conference on Software Maintenance. 348--357. Google ScholarDigital Library
- Alfred V. Aho, Monica Lam, Ravi Sethi, and Jeffrey D. Ullman. 2006. Compilers: Principles, Techniques and Tools. Addison-Wesley. Google ScholarDigital Library
- M. Ajrnal Chaumun, Hind Kabaili, Rudolf K. Keller, and François Lustman. 1999. A change impact model for changeability assessment in object-oriented software systems. In Proceedings of European Conference on Software Maintainance and Reengineering. 130--138. Google ScholarDigital Library
- Taweesup Apiwattanapong, Alessandro Orso, and Mary Jean Harrold. 2005. Efficient and precise dynamic impact analysis using execute-after sequences. In Proceedings of IEEE/ACM International Conference on Software Engineering. 432--441. Google ScholarDigital Library
- Linda Badri, Mourad Badri, and Daniel St-Yves. 2005. Supporting predictive change impact analysis: A control call graph based technique. In Proceedings of Asia-Pacific Software Engineering Conference. 167--175. Google ScholarDigital Library
- Shawn A. Bohner and Robert S. Arnold. 1996. An Introduction to Software Change Impact Analysis. In Software Change Impact Analysis, Shawn A. Bohner and Robert S. Arnold (Eds.). IEEE Computer Society Press, Washington, DC, pp. 1--26.Google Scholar
- B. Breech, A. Danalis, Stacey Shindo, and Lori Pollock. 2004. Online impact analysis via dynamic compilation technology. In Proceedings of IEEE International Conference on Software Maintenance. 453--457. Google ScholarDigital Library
- B. Breech, M. Tegtmeyer, and L. Pollock. 2005. A comparison of online and dynamic impact analysis algorithms. In Proceedings of European Conference on Software Maintenance and Reengineering. 143--152. Google ScholarDigital Library
- B. Breech, M. Tegtmeyer, and L. Pollock. 2006. Integrating influence mechanisms into impact analysis for increased precision. In Proceedings of IEEE International Conference on Software Maintenance. 55--65. Google ScholarDigital Library
- Jonathan Buckner, Joseph Buchta, Maksym Petrenko, and Vaclav Rajlich. 2005. JRipples: A tool for program comprehension during incremental change. In Proceedings of IEEE International Workshop on Program Comprehension. 149--152. Google ScholarDigital Library
- Haipeng Cai and Raul Santelices. 2014. Diver: Precise dynamic impact analysis using dependence-based trace pruning. In Proceedings of IEEE/ACM International Conference on Automated Software Engineering. 343--348. Google ScholarDigital Library
- Haipeng Cai and Raul Santelices. 2015a. Abstracting program dependencies using the method dependence graph. In Proceedings of IEEE International Conference on Software Quality, Reliability, and Security. 49--58. Google ScholarDigital Library
- Haipeng Cai and Raul Santelices. 2015b. A comprehensive study of the predictive accuracy of dynamic change-impact analysis. Journal of Systems and Software 103, 248--265. Google ScholarDigital Library
- Haipeng Cai and Raul Santelices. 2015c. A framework for cost-effective dependence-based dynamic impact analysis. In Proceedings of IEEE International Conference on Software Analysis, Evolution, and Reengineering. 231--240.Google ScholarCross Ref
- Haipeng Cai and Raul Santelices. 2015d. TracerJD: Generic trace-based dynamic dependence analysis with fine-grained logging. In Proceedings of IEEE International Conference on Software Analysis, Evolution, and Reengineering. 489--493.Google ScholarCross Ref
- Haipeng Cai, Raul Santelices, and Tianyu Xu. 2014. Estimating the accuracy of dynamic change-impact analysis using sensitivity analysis. In Proceedings of IEEE International Conference on Software Security and Reliability. 48--57. Google ScholarDigital Library
- Gerardo Canfora and Luigi Cerulo. 2005. Impact analysis by mining software and change request repositories. In Proceedings of IEEE International Symposium on Software Metrics. 20--29. Google ScholarDigital Library
- Norman Cliff. 1996. Ordinal Methods for Behavioral Data Analysis. Psychology Press.Google Scholar
- Cleidson R. B. de Souza and David F. Redmiles. 2008. An empirical study of software developers’ management of dependencies and changes. In Proceedings of IEEE/ACM International Conference on Software Engineering. 241--250. Google ScholarDigital Library
- Hyunsook Do, Sebastian Elbaum, and Gregg Rothermel. 2005. Supporting controlled experimentation with testing techniques: An infrastructure and its potential impact. Empirical Software Engineering 10, 4, 405--435. Google ScholarDigital Library
- Sebastian Elbaum, Alexey G. Malishevsky, and Gregg Rothermel. 2002. Test case prioritization: A family of empirical studies. IEEE Transactions on Software Engineering 28, 2, 159--182. Google ScholarDigital Library
- J. Ferrante, K. J. Ottenstein, and J. D. Warren. 1987. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems 9, 3, 319--349. Google ScholarDigital Library
- Malcom Gethers, Bogdan Dit, Huzefa Kagdi, and Denys Poshyvanyk. 2012. Integrated impact analysis for managing software changes. In Proceedings of IEEE/ACM International Conference on Software Engineering. 430--440. Google ScholarDigital Library
- Ahmed E. Hassan and Richard C. Holt. 2006. Replaying development history to assess the effectiveness of change propagation tools. Empirical Software Engineering 11, 3, 335--367. Google ScholarDigital Library
- L. Hattori, D. Guerrero, J. Figueiredo, J. Brunet, and J. Damasio. 2008. On the precision and accuracy of impact analysis techniques. In International Conference on Computer and Information Science. 513--518. Google ScholarDigital Library
- Sture Holm. 1979. A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics 65--70.Google Scholar
- Susan Horwitz, Thomas Reps, and David Binkley. 1990. Interprocedural slicing using dependence graphs. ACM Transactions on Programming Languages and Systems 12, 1, 26--60. Google ScholarDigital Library
- Lulu Huang and Yeong-Tae Song. 2007. Precise dynamic impact analysis with dependency analysis for object-oriented programs. In Proceedings of International Conference on Software Engineering Research, Management and Applications. 374--384. Google ScholarDigital Library
- Daniel Jackson and Martin Rinard. 2000. Software analysis: A roadmap. In Proceedings of the Conference on the Future of Software Engineering. 133--145. Google ScholarDigital Library
- Judit Jász, Árpád Beszédes, Tibor Gyimóthy, and Václav Rajlich. 2008. Static execute after/before as a replacement of traditional software dependencies. In Proceedings of IEEE International Conference on Software Maintenance. 137--146.Google ScholarCross Ref
- Huzefa Kagdi, Malcom Gethers, Denys Poshyvanyk, and Michael L. Collard. 2010. Blending conceptual and evolutionary couplings to support change impact analysis in source code. In Proceedings of IEEE Working Conference on Reverse Engineering. 119--128. Google ScholarDigital Library
- Mariam Kamkar. 1995. An overview and comparative classification of program slicing techniques. Journal of Systems and Software 31, 3, 197--214. Google ScholarDigital Library
- Bogdan Korel. 1990. Automated software test data generation. IEEE Transactions on Software Engineering 16, 8, 870--879. Google ScholarDigital Library
- Patrick Lam, Eric Bodden, Ondrej Lhoták, and Laurie Hendren. 2011. Soot - a Java bytecode optimization framework. In Proceedings of Cetus Users and Compiler Infrastructure Workshop. 1--11.Google Scholar
- James Law and Gregg Rothermel. 2003a. Incremental dynamic impact analysis for evolving software systems. In Proceedings of IEEE International Symposium on Software Reliability Engineering. 430--441. Google ScholarDigital Library
- James Law and Gregg Rothermel. 2003b. Whole program path-based dynamic impact analysis. In Proceedings of IEEE/ACM International Conference on Software Engineering. 308--318. Google ScholarDigital Library
- Bixin Li, Xiaobing Sun, and Jacky Keung. 2013a. FCA--CIA: An approach of using FCA to support cross-level change impact analysis for object oriented Java programs. Information and Software Technology 55, 8, 1437--1449. Google ScholarDigital Library
- Bixin Li, Xiaobing Sun, Hareton Leung, and Sai Zhang. 2013b. A survey of code-based change impact analysis techniques. Software Testing, Verification and Reliability 23, 8, 613--646.Google ScholarCross Ref
- Li Li and A. Jefferson Offutt. 1996. Algorithmic analysis of the impact of changes to object-oriented software. In Proceedings of IEEE International Conference on Software Maintenance. 171--184. Google ScholarDigital Library
- Joseph P. Loyall and Susan A. Mathisen. 1993. Using dependence analysis to support the software maintenance process. In Proceedings of IEEE International Conference on Software Maintenance. 282--291. Google ScholarDigital Library
- Mirna Carelli Oliveira Maia, Roberto Almeida Bittencourt, Jorge Cesar Abrantes de Figueiredo, and Dalton Dario Serey Guerrero. 2010. The hybrid technique for object-oriented software change impact analysis. In Proceedings of European Conference on Software Maintenance and Reengineering. 252--255. Google ScholarDigital Library
- Markus Mock, Darren C. Atkinson, Craig Chambers, and Susan J. Eggers. 2005. Program slicing with dynamic points-to sets. IEEE Transactions on Software Engineering 31, 8, 657--678. Google ScholarDigital Library
- Frederick Mosteller and R. A. Fisher. 1948. Questions and answers. The American Statistician 2, 5, 30--31.Google ScholarCross Ref
- Eugene M. Myers. 1981. A precise inter-procedural data flow algorithm. In Proceedings of ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. 219--230. Google ScholarDigital Library
- Alessandro Orso, Taweesup Apiwattanapong, and Mary Jean Harrold. 2003. Leveraging field data for impact analysis and regression testing. In Proceedings of ACM International Symposium on the Foundations of Software Engineering. 128--137. Google ScholarDigital Library
- Alessandro Orso, Taweesup Apiwattanapong, James B. Law, Gregg Rothermel, and Mary Jean Harrold. 2004. An empirical comparison of dynamic impact analysis algorithms. In Proceedings of IEEE/ACM International Conference on Software Engineering. 491--500. Google ScholarDigital Library
- Maksym Petrenko and Václav Rajlich. 2009. Variable granularity for improving precision of impact analysis. In Proceedings of IEEE International Conference on Program Comprehension. 10--19.Google ScholarCross Ref
- Denys Poshyvanyk, Andrian Marcus, Rudolf Ferenc, and Tibor Gyimóthy. 2009. Using information retrieval based coupling measures for impact analysis. Empirical Software Engineering 14, 1, 5--32. Google ScholarDigital Library
- Václav Rajlich. 2014. Software evolution and maintenance. In Proceedings of the Conference on Future of Software Engineering. 133--144. Google ScholarDigital Library
- Xiaoxia Ren, Fenil Shah, Frank Tip, Barbara G. Ryder, and Ophelia Chesley. 2004. Chianti: A tool for change impact analysis of Java programs. In Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications. 432--448. Google ScholarDigital Library
- Per Rovegard, Lefteris Angelis, and Claes Wohlin. 2008. An empirical study on views of importance of change impact analysis issues. IEEE Transactions on Software Engineering 34, 4, 516--530. Google ScholarDigital Library
- Barbara G. Ryder. 2003. Dimensions of precision in reference analysis of object-oriented programming languages. In Compiler Construction. 126--137. Google ScholarDigital Library
- Raul Santelices, Yiji Zhang, Haipeng Cai, and Siyuan Jiang. 2013. DUA-Forensics: A fine-grained dependence analysis and instrumentation framework based on Soot. In Proceedings of ACM SIGPLAN International Workshop on the State of the Art in Java Program Analysis. 13--18. Google ScholarDigital Library
- Lajos Schrettner, Judit Jász, Tamás Gergely, Árpád Beszédes, and Tibor Gyimóthy. 2013. Impact analysis in the presence of dependence clusters using static execute after in WebKit. Journal of Software: Evolution and Process 26, 6, 569--588. Google ScholarDigital Library
- Xiaobing Sun, Bixin Li, Chuanqi Tao, Wanzhi Wen, and Sai Zhang. 2010. Change impact analysis based on a taxonomy of change types. In Proceedings of IEEE Computer Software and Applications Conference. 373--382. Google ScholarDigital Library
- Yida Tao, Yingnong Dang, Tao Xie, Dongmei Zhang, and Sunghun Kim. 2012. How do software engineers understand code changes? An exploratory study in industry. In Proceedings of ACM International Symposium on the Foundations of Software Engineering. 51:1--51:11. Google ScholarDigital Library
- Paolo Tonella. 2003. Using a concept lattice of decomposition slices for program understanding and impact analysis. IEEE Transactions on Software Engineering 29, 6, 495--509. Google ScholarDigital Library
- G. A. Venkatesh. 1991. The semantic approach to program slicing. In Proceedings of ACM Conference on Programming Language Design and Implementation. 107--119. Google ScholarDigital Library
- Ronald E. Walpole, Raymond H. Myers, Sharon L. Myers, and Keying E. Ye. 2011. Probability and Statistics for Engineers and Scientists. Prentice Hall, Upper Saddle River, NJ.Google Scholar
- M. D. Weiser, John D. Gannon, and Paul R. McMullin. 1985. Comparison of structural test coverage metrics. IEEE Software 2, 2, 80--85. Google ScholarDigital Library
- Xiangyu Zhang and Rajiv Gupta. 2004. Cost effective dynamic program slicing. In Proceedings of ACM Conference on Programming Language Design and Implementation. 94--106. Google ScholarDigital Library
- Thomas Zimmermann, Andreas Zeller, Peter Weissgerber, and Stephan Diehl. 2005. Mining version histories to guide software changes. IEEE Transactions on Software Engineering 31, 6, 429--445. Google ScholarDigital Library
Index Terms
- DiaPro: Unifying Dynamic Impact Analyses for Improved and Variable Cost-Effectiveness
Recommendations
Diver: precise dynamic impact analysis using dependence-based trace pruning
ASE '14: Proceedings of the 29th ACM/IEEE International Conference on Automated Software EngineeringImpact analysis determines the effects that the behavior of program entities, or changes to them, can have on the rest of the system. Dynamic impact analysis is one practical form that computes smaller impact sets than static alternatives for concrete ...
Method-level program dependence abstraction and its application to impact analysis
We develop a new program abstraction that directly models dependencies among methods.We assess the accuracy of the new abstraction model for forward dependence analysis.The proposed approach achieves much greater cost-effectiveness than peer options.The ...
Impact analysis for distributed event-based systems
DEBS '12: Proceedings of the 6th ACM International Conference on Distributed Event-Based SystemsDistributed event-based (DEB) systems contain highly-decoupled components that interact by exchanging messages via implicit invocation, thus allowing flexible system composition and adaptation. At the same time, these inherently desirable properties ...
Comments