Verification of software systems is a very hard problem due to the large size of program state-space. The traditional techniques (like model checking) do not scale; since they include the whole state-space by inlining the library function codes. Current research avoids these problem by creating a lightweight representation of the library in form of an "interface graph" (call sequence graph). In this paper we introduce a new algorithm to compute a safe, permissive interface graph for C-type functions. In this modular analysis, each function transition is summarized following three-valued abstraction semantics. There are two kinds of abstraction used here. The global abstraction contains predicates over global variables only; however the local abstraction inside each function may also contain the local variables. The abstract summary needs refinement to guarantee safety and permissiveness. We have implemented the algorithms in TICC tool and compared this algorithm with some related interface generation algorithms. We also discuss the application of interface as an offline test-suite. We create an interface from the model program (specification) and the interface will act as a test-suite for the new implementation-under-test (IUT).
[1]
Thomas A. Henzinger,et al.
Permissive interfaces
,
2005,
ESEC/FSE-13.
[2]
E. Emerson,et al.
Tree Automata, Mu-Calculus and Determinacy (Extended Abstract)
,
1991,
FOCS 1991.
[3]
Axel Legay,et al.
Sociable Interfaces
,
2005,
FroCoS.
[4]
Pavol Cerný,et al.
Synthesis of interface specifications for Java classes
,
2005,
POPL '05.
[5]
Luca de Alfaro,et al.
Solving games via three-valued abstraction refinement
,
2007,
Inf. Comput..
[6]
Radha Jagadeesan,et al.
Three-valued abstractions of games: uncertainty, but with precision
,
2004,
LICS 2004.
[7]
Radha Jagadeesan,et al.
Three-valued abstractions of games: uncertainty, but with precision
,
2004,
Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science, 2004..
[8]
Thomas A. Henzinger,et al.
Algorithms for Interface Synthesis
,
2007,
CAV.
[9]
Thomas A. Henzinger,et al.
Three Algorithms for Interface Synthesis: A Comparative Study
,
2006
.