|
ABSTRACT
In this paper we target the verification of fault tolerant aspects of distributed applications written in Erlang. Erlang is unusual in several respects. First, it is one of a few functional languages that is used in industry. Secondly the programming language contains support for concurrency and distribution as well as including constructs for handling fault-tolerance.Erlang programmers, of course, mostly work with ready-made language components. Our approach to verification of fault tolerance is to verify systems built using two central components of most Erlang software, a generic server component with fault tolerance handling, and a supervisor component that restarts failed processes.To verify Erlang programs built using these components we automatically translate them into processes of the μCRL process algebra, generate their state spaces, and use a model checker to determine whether they satisfy correctness properties specified in the μ-calculus.The key observation of this paper is that, due to the usage of these higher-level design patterns (supervisors and generic servers) that structure process communication and fault recovery, the state space generated from a Erlang program, even with failures occurring, is relatively small, and can be generated automatically. Moreover the method is independent from the actual Erlang program studied, and is thus reusable.We demonstrate the approach in a case study where a server, built using the generic server component, implements a locking service for a number of client processes, and show that the server tolerates client failures.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
T. Arts, C. B. Earle, and J. J. Sánchez-Penas. Translating erlang to μcrl. In Fourth International Conference on Application of Concurrency to System Design, June 2004.
|
| |
2
|
|
| |
3
|
|
 |
4
|
|
 |
5
|
James C. Corbett , Matthew B. Dwyer , John Hatcliff , Roby, Bandera: a source-level interface for model checking Java programs, Proceedings of the 22nd international conference on Software engineering, p.762-765, June 04-11, 2000, Limerick, Ireland
[doi> 10.1145/337180.337625]
|
| |
6
|
CWI. μmcrl: A language and tool set to study communicating processes with data, February 1999.
|
| |
7
|
Building a better bug-trap. Economist Technology Quarterly, June 2003.
|
| |
8
|
E. Emerson and C.-L. Lei. Efficient model checking in fragments of the propositional mu-calculus. In Proc. LICS, pages 267--278, 1986.
|
| |
9
|
Jean-Claude Fernandez , Hubert Garavel , Alain Kerbrat , Laurent Mounier , Radu Mateescu , Mihaela Sighireanu, CADP - A Protocol Validation and Verification Toolbox, Proceedings of the 8th International Conference on Computer Aided Verification, p.437-440, August 03, 1996
|
| |
10
|
H. Garavel, F. Lang, and R. Mateescu. An overview of cadp 2001. European Association for Software Science and Technology (EASST) Newsletter, 4:13--24, August 2002.
|
| |
11
|
|
| |
12
|
J. F. Groote, W. Fokking, and M. Reiniers. Modelling concurrent systems: Protocol verification in μCRL, April 2000.
|
| |
13
|
K. Havelund and T. Pressburger. Model checking java programs using java pathfinder. STTT, 2(4):366--381, March 2000.
|
| |
14
|
|
| |
15
|
|
| |
16
|
D. Kozen. Results on the propositional μ-calculus. TCS, 27:333--354, 1983.
|
| |
17
|
R. Mateescu. Local model-checking of an alternation-free value-based modal mu-calculus. In Proceedings of the International Workshop on Software Tools for Technology Transfer STTT'98, Aalborg, Denmark, July 1998.
|
| |
18
|
|
| |
19
|
|
 |
20
|
|
| |
21
|
|
| |
22
|
|
| |
23
|
A. G. Wouters. Manual for the μcrl tool set (version 2.8.2). Technical Report SEN-R0130, CWI, Amsterdam, 2001.
|
|