ABSTRACT
Change impact analysis, i.e., knowing the potential consequences of a software change, is critical for the risk analysis, developer effort estimation, and regression testing of evolving software. Static program slicing is an attractive option for enabling routine change impact analysis for newly committed changesets during daily software build. For small programs with a few thousand lines of code, static program slicing scales well and can assist precise change impact analysis. However, as we demonstrate in this paper, static program slicing faces unique challenges when applied routinely on large and evolving industrial software systems. Despite recent advances in static program slicing, to our knowledge, there have been no studies of static change impact analysis applied on large and evolving industrial software systems. In this paper, we share our experiences in designing a static change impact analysis framework for such software systems. We have implemented our framework as a tool called Imp and have applied Imp on an industrial codebase with over a million lines of C/ C++ code with promising empirical results.
- CodeSurfer. GrammaTech Inc. http://www.grammatech.com/products/codesurferGoogle Scholar
- L. O. Andersen. Program analysis and specialization for the C programming language. PhD thesis. DIKU University of Copenhagen, 1994.Google Scholar
- D. Binkley. The application of program slicing to regression testing. Information and Software Technology (IST) Special Issue on Program Slicing, 40(11--12), pages 583--594, 1998.Google Scholar
- D. Binkley, M. Harman. A large-scale empirical study of forward and backward static slice size and context sensitivity. In Proceedings of the International Conference on Software Maintenance (ICSM), pages 44--53, 2003. Google ScholarDigital Library
- D. Binkley, M. Harman. Analysis and visualization of predicate dependence on formal parameters and global variables. IEEE Transactions on Software Engineering (TSE), 30(11), pages 715--735, 2004. Google ScholarDigital Library
- D. Binkley, M. Harman, Y. Hassoun, S. Islam, Z. Li. Assessing the impact of global variables on program dependence and dependence clusters. Journal of Software Systems (JSS), 83(1), pages 96--107, 2010. Google ScholarDigital Library
- D. Binkley, M. Harman, J. Krinke. Empirical study of optimization techniques for massive slicing. ACM Transactions on Programming Languages and Systems (TOPLAS), 30(1), pages 3:1--3:33, 2007. Google ScholarDigital Library
- D. Binkley, N. Gold, M. Harman. An empirical study of static program slice size. ACM Transactions on Software Engineering and Methodology (TOSEM), 16(2), pages 2:1--2:32, 2007. Google ScholarDigital Library
- D. Callahan. The program summary graph and flow-sensitive interprocedural data flow analysis. In Proceedings of the Conference on Programming Languages Design and Implementation (PLDI), pages 47--56, 1988. Google ScholarDigital Library
- G. Canfora, L. Cerulo. Fine grained indexing of software repositories to support impact analysis. In Proceedings of Workshop on Mining Software Repositories (MSR), pages 105--111, 2006. Google ScholarDigital Library
- J. D. Choi, M. Burke, P. Carini. Efficient flow sensitive interprocedural computation of pointer induced aliases and side effects. In Proceedings of the Conference on Principles of Programming Languages (POPL), pages 232--245, 1993. Google ScholarDigital Library
- M. Emami, R. Ghiya, L. Hendren. Context sensitive interprocedural points-to analysis in the presence of function pointers. In Proceedings of the Conference on Programming Languages Design and Implementation (PLDI), pages 242--256, 1994. Google ScholarDigital Library
- W. Landi, B. Ryder. A safe approximate algorithm for interprocedural pointer aliasing. In Proceedings of the Conference on Programming Languages Design and Implementation (PLDI), pages 235--248, 1992. Google ScholarDigital Library
- J. Law, G. Rothermel. Whole program path-based dynamic impact analysis. In Proceedings of the International Conference on Software Engineering (ICSE), pages 308--318, 2003. Google ScholarDigital Library
- A. Orso, T. Apiwattanapong, M. J. Harrold. Leveraging field data for impact analysis and regression testing. In Proceedings of the Symposium on Foundations of Software Engineering (ESEC/FSE), pages 128--137, 2003. Google ScholarDigital Library
- A. Orso, T. Apiwattanapong, J. Law, G. Rothermel, M. J. Harrold. An empirical comparison of dynamic impact analysis algorithms. In Proceedings of the International Conference on Software Engineering (ICSE), pages 491--500, 2004. Google ScholarDigital Library
- T. Reps, S. Horwitz, M. Sagiv, G. Rosay. Speeding up slicing. In Proceedings of the Symposium on Foundations of Software Engineering (FSE), pages 11--20, 1994. Google ScholarDigital Library
- E. Ruf. Context-sensitive alias analysis reconsidered. In Proceedings of the Conference on Programming Languages Design and Implementation (PLDI), pages 13--22, 1995. Google ScholarDigital Library
- M. Shapiro, S. Horwitz. Fast and accurate flow-insensitive points-to analysis. In Proceedings of the Conference on Principles of Programming Languages (POPL), pages 1--14, 1997. Google ScholarDigital Library
- M. Sheriff, L. Williams. Empirical software change impact analysis using singular value decomposition. In Proceedings of the International Conference on Software Testing (ICST), pages 268--277, 2008. Google ScholarDigital Library
- B. Steensgard. Points-to analysis in almost linear time. In Proceedings of the Conference on Principles of Programming Languages (POPL), pages 32--41, 1996. Google ScholarDigital Library
- M. Weiser. Program Slicing. In Proceedings of the International Conference on Software Engineering (ICSE), pages 439--449, 1981. Google ScholarDigital Library
- R. Wilson, M. Lam. Efficient context-sensitive pointer analysis for C programs. In Proceedings of the Conference on Programming Languages Design and Implementation (PLDI), pages 1--12, 1995. Google ScholarDigital Library
- A. Ying, G. Murphy, R. Ng, M. Chu-Carroll. Predicting source code changes by mining change history. IEEE Transactions on Software Engineering (TSE), 30(9), pages 574--586, 2004. Google ScholarDigital Library
- S. Yong, S. Horwitz, T. Reps. Pointer analysis for programs with structures and casting. In Proceedings of the Conference on Programming Languages Design and Implementation (PLDI), pages 91--103, 1999. Google ScholarDigital Library
- S. Zhang, B. Ryder, W. Landi. Programming decomposition for pointer aliasing: a step towards practical analyses. In Proceedings of the Symposium on Foundations of Software Engineering (FSE), pages 81--92, 1996. Google ScholarDigital Library
- T. Zimmermann, P. Weissberger, S. Diehl, A. Zeller. Mining version histories to guide software changes. In Proceedings of the International Conference on Software Engineering (ICSE), pages 563--572. 2004. Google ScholarDigital Library
Index Terms
- Practical change impact analysis based on static program slicing for industrial software systems
Recommendations
Practical change impact analysis based on static program slicing for industrial software systems
FSE '12: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software EngineeringChange impact analysis, i.e., knowing the potential consequences of a software change, is critical for the risk analysis, developer effort estimation, and regression testing of evolving software. Static program slicing is an attractive option for ...
Do Programmers do Change Impact Analysis in Debugging?
"Change Impact Analysis" is the process of determining the consequences of a modification to software. In theory, change impact analysis should be done during software maintenance, to make sure changes do not introduce new bugs. Many approaches and ...
Comments