skip to main content
10.1145/1985793.1985898acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Practical change impact analysis based on static program slicing for industrial software systems

Published:21 May 2011Publication History

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.

References

  1. CodeSurfer. GrammaTech Inc. http://www.grammatech.com/products/codesurferGoogle ScholarGoogle Scholar
  2. L. O. Andersen. Program analysis and specialization for the C programming language. PhD thesis. DIKU University of Copenhagen, 1994.Google ScholarGoogle Scholar
  3. 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 ScholarGoogle Scholar
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. E. Ruf. Context-sensitive alias analysis reconsidered. In Proceedings of the Conference on Programming Languages Design and Implementation (PLDI), pages 13--22, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. M. Weiser. Program Slicing. In Proceedings of the International Conference on Software Engineering (ICSE), pages 439--449, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Practical change impact analysis based on static program slicing for industrial software systems

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          ICSE '11: Proceedings of the 33rd International Conference on Software Engineering
          May 2011
          1258 pages
          ISBN:9781450304450
          DOI:10.1145/1985793

          Copyright © 2011 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 21 May 2011

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate276of1,856submissions,15%

          Upcoming Conference

          ICSE 2025

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader