[snelting06tosem] | Gregor Snelting, Torsten Robschink, Jens Krinke, Efficient Path Conditions in Dependence Graphs for Software Safety
Analysis, ACM Transactions on Software Engineering and Methodology, Vol. 15, (4), pp. 410--457, October 2006.
|
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.
Download
BibTeX
Authors at the institute
Projects