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 2010 Publication 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.
[2]
Formality. Available at http://www.synopsys.com/Tools/Verification/ FormalEquivalence/Pages/Formality.aspx.
[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.
[4]
B. Godlin and O. Strichman. Regression verification. In DAC, pages 466--471, 2009.
[5]
K. J. Hoffman, P. Eugster, and S. Jagannathan. Semantics-aware trace analysis. In PLDI, 2009.
[6]
D. Jackson and D. A. Ladd. Semantic diff: A tool for summarizing the effects of modifications. In ICSM, pages 243--252, 1994.
[7]
M. Kawaguchi, S. K. Lahiri, and H. Rebelo. Conditional equivalence. Technical Report MSR-TR-2010-119, Microsoft Research, 2010.
[8]
M. Kim and D. Notkin. Discovering and representing systematic code changes. In ICSE, pages 309--319, 2009.
[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.
[10]
D. Notkin. Longitudinal program analysis. In PASTE, page 1. ACM, 2002.
[11]
S. Person, M. B. Dwyer, S. G. Elbaum, and C. S. Pasareanu. Differential symbolic execution. In SIGSOFT FSE, pages 226--237, 2008.
[12]
D. Qi, A. Roychoudhury, Z. Liang, and K. Vaswani. Darwin: an approach for debugging evolving programs. In ESEC/SIGSOFT FSE, 2009.
[13]
Satisfiability Modulo Theories Library (SMT-LIB). Available at http://goedel.cs.uiowa.edu/smtlib/.
[14]
A. Srivastava and J. Thiagarajan. Effectively prioritizing tests in development environment. In ISSTA, pages 97--106, 2002.
[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.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

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
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 07 November 2010

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. differential analysis
  2. equivalence checking
  3. regression testing
  4. semantic diff
  5. static analysis

Qualifiers

  • Research-article

Conference

SIGSOFT/FSE'10
Sponsor:

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)41
  • Downloads (Last 6 weeks)4
Reflects downloads up to 15 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)A Pyramid Of (Formal) Software VerificationFormal Methods10.1007/978-3-031-71177-0_24(393-419)Online publication date: 13-Sep-2024
  • (2023)Finding Fixed Vulnerabilities with Off-the-Shelf Static Analysis2023 IEEE 8th European Symposium on Security and Privacy (EuroS&P)10.1109/EuroSP57164.2023.00036(489-505)Online publication date: Jul-2023
  • (2023)Development of feature extraction method based on interval-valued Pythagorean fuzzy decision theoryEngineering Applications of Artificial Intelligence10.1016/j.engappai.2023.106084121:COnline publication date: 1-May-2023
  • (2022)Quantifying permissiveness of access control policiesProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510233(1805-1817)Online publication date: 21-May-2022
  • (2022)Full-program induction: verifying array programs sans loop invariantsInternational Journal on Software Tools for Technology Transfer10.1007/s10009-022-00676-w24:5(843-888)Online publication date: 29-Sep-2022
  • (2021)Fast Change-Based Alarm Reporting for Evolving Software Systems2021 IEEE 32nd International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE52982.2021.00062(546-556)Online publication date: Oct-2021
  • (2021)Applicable Micropatches and Where to Find Them: Finding and Applying New Security Hot Fixes to Old Software2021 14th IEEE Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST49551.2021.00051(394-405)Online publication date: Apr-2021
  • (2021)Automatically Checking Semantic Equivalence between Versions of Large-Scale C Projects2021 14th IEEE Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST49551.2021.00045(329-339)Online publication date: Apr-2021
  • (2021)Relational cost analysis in a functional-imperative settingJournal of Functional Programming10.1017/S095679682100007131Online publication date: 2-Nov-2021
  • (2020)SPIDER: Enabling Fast Patch Propagation In Related Software Repositories2020 IEEE Symposium on Security and Privacy (SP)10.1109/SP40000.2020.00038(1562-1579)Online publication date: May-2020
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media