Design and validation of computer protocols
Design and validation of computer protocols
Systematic Formal Verification for Fault-Tolerant Time-Triggered Algorithms
IEEE Transactions on Software Engineering
Bandera: a source-level interface for model checking Java programs
Proceedings of the 22nd international conference on Software engineering
Dynamic Scheduling and Fault-Tolerance: Specification andVerification
Real-Time Systems
Global scheduler properties derived from local restrictions
Proceedings of the 2002 ACM SIGPLAN workshop on Erlang
Validating Requirements for Fault Tolerant Systems using Model Checking
ICRE '98 Proceedings of the 3rd International Conference on Requirements Engineering: Putting Requirements Engineering to Practice
Formal Specification of JavaSpaces Architecture Using µCRL
COORDINATION '02 Proceedings of the 5th International Conference on Coordination Models and Languages
Verifying Erlang Code: A Resource Locker Case-Study
FME '02 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods - Getting IT Right
CADP - A Protocol Validation and Verification Toolbox
CAV '96 Proceedings of the 8th International Conference on Computer Aided Verification
PVS: A Prototype Verification System
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
The syntax and semantics of timed $\mu CRL$
The syntax and semantics of timed $\'mu CRL$
Extending the VoDKA architecture to improve resource modelling
Proceedings of the 2003 ACM SIGPLAN workshop on Erlang
Verification of timed erlang/OTP components using the process algebra μcrl
ERLANG '07 Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop
Verifying Erlang/OTP Components in μCRL
FORTE '07 Proceedings of the 27th IFIP WG 6.1 international conference on Formal Techniques for Networked and Distributed Systems
Verifying Erlang Telecommunication Systems with the Process Algebra μCRL
FORTE '08 Proceedings of the 28th IFIP WG 6.1 international conference on Formal Techniques for Networked and Distributed Systems
Model-checking Erlang: a comparison between EtomCRL2 and McErlang
TAIC PART'10 Proceedings of the 5th international academic and industrial conference on Testing - practice and research techniques
Hi-index | 0.00 |
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.