skip to main content
10.1145/1882362.1882405acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

Differential static analysis: opportunities, applications, and challenges

Published:07 November 2010Publication History

ABSTRACT

It is widely believed that program analysis can be more closely targeted to the needs of programmers if the program is accompanied by further redundant documentation. This may include regression test suites, API protocol usage, and code contracts. To this should be added the largest and most redundant text of all: the previous version of the same program. It is the differences between successive versions of a legacy program already in use which occupy most of a programmer's time. Although differential analysis in the form of equivalence checking has been quite successful for hardware designs, it has not received as much attention in the static program analysis community.

This paper briefly summarizes the current state of the art in differential static analysis for software, and suggests a number of promising applications. Although regression test generation has often been thought of as the ultimate goal of differential analysis, we highlight several other applications that can be enabled by differential static analysis. This includes equivalence checking, semantic diffing, differential contract checking, summary validation, invariant discovery and better debugging. We speculate that differential static analysis tools have the potential to be widely deployed on the developer's toolbox despite the fundamental stumbling blocks that limit the adoption of static analysis.

References

  1. R. E. Bryant. Graph-based algorithms for Boolean function manipulation. IEEE Transactions on Computers, C-35(8):677--691, August 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Formality. Available at http://www.synopsys.com/Tools/Verification/ FormalEquivalence/Pages/Formality.aspx.Google ScholarGoogle Scholar
  3. P. Godefroid, N. Klarlund, and K. Sen. DART: Directed automated random testing. In Programming Language Design and Implementation (PLDI '05), pages 213--223. ACM, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. B. Godlin and O. Strichman. Regression verification. In DAC, pages 466--471, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. K. J. Hoffman, P. Eugster, and S. Jagannathan. Semantics-aware trace analysis. In PLDI, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. D. Jackson and D. A. Ladd. Semantic diff: A tool for summarizing the effects of modifications. In ICSM, pages 243--252, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. M. Kawaguchi, S. K. Lahiri, and H. Rebelo. Conditional equivalence. Technical Report MSR-TR-2010-119, Microsoft Research, 2010.Google ScholarGoogle Scholar
  8. M. Kim and D. Notkin. Discovering and representing systematic code changes. In ICSE, pages 309--319, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. K. Lahiri and S. Qadeer. Back to the future: revisiting precise program verification using SMT solvers. In Principles of Programming Languages (POPL '08), pages 171--182, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Notkin. Longitudinal program analysis. In PASTE, page 1. ACM, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. S. Person, M. B. Dwyer, S. G. Elbaum, and C. S. Pasareanu. Differential symbolic execution. In SIGSOFT FSE, pages 226--237, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. D. Qi, A. Roychoudhury, Z. Liang, and K. Vaswani. Darwin: an approach for debugging evolving programs. In ESEC/SIGSOFT FSE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Satisfiability Modulo Theories Library (SMT-LIB). Available at http://goedel.cs.uiowa.edu/smtlib/.Google ScholarGoogle Scholar
  14. A. Srivastava and J. Thiagarajan. Effectively prioritizing tests in development environment. In ISSTA, pages 97--106, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. K. Taneja, T. Xie, N. Tillmann, J. de Halleux, and W. Schulte. Guided path exploration for regression test generation. In ICSE Companion, pages 311--314. IEEE, 2009.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Differential static analysis: opportunities, applications, and challenges

              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
                FoSER '10: Proceedings of the FSE/SDP workshop on Future of software engineering research
                November 2010
                460 pages
                ISBN:9781450304276
                DOI:10.1145/1882362

                Copyright © 2010 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: 7 November 2010

                Permissions

                Request permissions about this article.

                Request Permissions

                Check for updates

                Qualifiers

                • research-article

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader