Information Technology Reference
In-Depth Information
Towards a Generic Non-intrusive Fault
Detection Framework
Jukka Julku and Mika Rautila
VTT Technical Research Centre of Finland,
Espoo, Finland
firstname.lastname@vtt.fi
Abstract. Temporal dependencies between programming library API
operations form a protocol that can be used to automatically detect in-
correct use of abstractions provided by the API. Traditionally, aliasing of
abstraction instances is one of the main problems of detecting this kind of
protocol violations. In this paper we describe our runtime fault detection
approach that uses dynamic data-flow tracking to cope with the alias-
ing problem. In addition, we present a proof-of-concept fault detection
framework for integrating our approach to a development environment.
Keywords: Fault detection, runtime verification, framework, testing.
1 Introduction
Practically all programs use libraries to cope with software complexity and to
reduce development effort. Library APIs usually define abstractions of resources
and sets of operations that can be applied to them. Often abstractions have a
state that the operations may transform. Furthermore, some of the operations
may expect an instance of an abstraction to be in a certain state when they are
applied. Thus, operations have temporal dependencies. Missing a dependency
may result in hard to detect and debug errors.
Nevertheless, verifying that all the required dependencies are satisfied is not
always an easy task: use of an abstraction may be scattered not only in time,
but also over several source code files, making it dicult to reason about all the
possible execution sequences. Furthermore, programmers unfamiliar with APIs
often misunderstand them or make false assumptions about their intended usage.
Temporal dependencies between operations form a pattern, or a protocol,
that describes how an abstraction should be used. Several tools that utilize
such dependencies for detecting violations of specific protocols, such as locking
discipline, exist. A more generic approach, typestate analysis [1], was developed
as an extension of programming language types to identify syntactically legal,
but semantically undefined execution sequences. Originally typestate analyses
were mainly static analyses, but because of diculties in precise static analysis
more recent approaches use runtime monitoring when static properties cannot
be established [2], [3]. Despite the long history of related research, we are not
aware of any of the resulted tools being widely adopted in the industry.
 
Search WWH ::




Custom Search