Efficient path conditions in dependence graphs for software safety analysis
- 1 October 2006
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 15 (4) , 410-457
- https://doi.org/10.1145/1178625.1178628
Abstract
A new method for software safety analysis is presented which uses program slicing and constraint solving to construct and analyze path conditions , conditions defined on a program's input variables which must hold for information flow between two points in a program. Path conditions are constructed from subgraphs of a program's dependence graph, specifically, slices and chops. The article describes how constraint solvers can be used to determine if a path condition is satisfiable and, if so, to construct a witness for a safety violation, such as an information flow from a program point at one security level to another program point at a different security level. Such a witness can prove useful in legal matters.The article reviews previous research on path conditions in program dependence graphs; presents new extensions of path conditions for arrays, pointers, abstract data types, and multithreaded programs; presents new decomposition formulae for path conditions; demonstrates how interval analysis and BDDs (binary decision diagrams) can be used to reduce the scalability problem for path conditions; and presents case studies illustrating the use of path conditions in safety analysis. Applying interval analysis and BDDs is shown to overcome the combinatorial explosion that can occur in constructing path conditions. Case studies and empirical data demonstrate the usefulness of path conditions for analyzing practical programs, in particular, how illegal influences on safety-critical programs can be discovered and analyzed.Keywords
This publication has 33 references indexed in Scilit:
- Undecidability of context-sensitive data-dependence analysisACM Transactions on Programming Languages and Systems, 2000
- Identifying loops in almost linear timeACM Transactions on Programming Languages and Systems, 1999
- PAG - an efficient program analyzer generatorInternational Journal on Software Tools for Technology Transfer, 1998
- Constraint-based array dependence analysisACM Transactions on Programming Languages and Systems, 1998
- REDLOGACM SIGSAM Bulletin, 1997
- Computational geometry problems in REDLOGPublished by Springer Nature ,1997
- Identifying loops using DJ graphsACM Transactions on Programming Languages and Systems, 1996
- Structural operational semantics as a basis for static program analysisACM Computing Surveys, 1996
- Parallelism for freeACM Transactions on Programming Languages and Systems, 1996
- A fast algorithm for finding dominators in a flowgraphACM Transactions on Programming Languages and Systems, 1979