Databases Reference
In-Depth Information
4.6.3 Invariant Inference
Another stream of research that relates to our work is invariant inference.
Ernst [14] pioneered dynamic invariant inference. An example of using inferred
invariants for error detection is [17]. Inferred invariants hold at a specific point
during the execution of a program. In contrast, API usage rules are recurring
patterns that can be found in different parts of a program and even different
programs.
4.6.4 Other Related Work
The terminology used for some of our mining techniques, collaborations
and roles that objects play within them is inspired by work in conceptual mod-
eling [37] and program understanding [32]. The problem of learning temporal
patterns from observed events is also relevant for other applications than in-
ferring usage specifications. For example, one can derive FSMs that describe
software development processes [10], use FSMs to reduce space when encoding
method call sequences [31], or detect attacks to systems by learning system
call sequences and checking for anomalies [35].
4.7 Conclusions
Our work addresses the question of how to infer API usage protocols from
executing programs in a practical manner. We present a dynamic analysis that
extracts short sequences of related method calls from large method traces and
summarizes them as FSMs. The inferred FSMs encode typical API method call
sequences that can, for example, be used as documentation for programmers
learning how to use an API, or to check whether a program violates typical
usage rules.
The presented approach contributes by using scalable mining techniques
to find specifications of multiple interacting objects. We abstract program
executions based on the idea that objects participate in collaborations, where
each object plays a certain role. Since each collaboration contains a small
number of runtime events that can be analyzed separately, the runtime of our
analysis scales linearly with the number of runtime events to analyze.
Bibliography
[1] The AspectJ project. http://www.eclipse.org/aspectj .
[2] Graphviz { graph visualization software. http://www.graphviz.org .
 
Search WWH ::




Custom Search