Choreography-Based Analysis of Distributed Message Passing Programs

We report on the analysis of gen_server, a popular Erlang library to build client-server applications. Our analysis uses a tool based on choreographic models. We discuss how, once the library has been modelled in terms of communicating finite state machines, an automated analysis can be used to detect potential communication errors. The results of our analysis suggest how to properly use gen_server in order to guarantee the absence of communication errors.

[1]  Frank S. de Boer,et al.  Modular Verification of a Component-Based Actor Language , 2005, J. Univers. Comput. Sci..

[2]  Moe Thandar Wynn,et al.  Synthesis of Orchestrators from Service Choreographies , 2009, APCCM.

[3]  Axel Legay,et al.  TransDPOR: A Novel Dynamic Partial-Order Reduction Technique for Testing Actor Programs , 2012, FMOODS/FORTE.

[4]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[5]  Emilio Tuosto,et al.  From Communicating Machines to Graphical Choreographies , 2015, POPL.

[6]  Elvira Albert,et al.  SACO: Static Analyzer for Concurrent Objects , 2014, TACAS.

[7]  John Derrick,et al.  Inferring extended finite state machine models from software executions , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[8]  Laura Giordano,et al.  Specifying and verifying interaction protocols in a temporal action logic , 2007, J. Appl. Log..

[9]  Samik Basu,et al.  Deciding choreography realizability , 2012, POPL '12.

[10]  Akinori Yonezawa,et al.  Abstracting Object Interactions Using Composition Filters , 1993, ECOOP Workshop.

[11]  Koen Claessen,et al.  Finding race conditions in Erlang with QuickCheck and PULSE , 2009, ICFP.

[12]  Koushik Sen,et al.  Automated Systematic Testing of Open Distributed Programs , 2006, FASE.

[13]  Frank Huch,et al.  Verification of Erlang programs using abstract interpretation and model checking , 1999, ICFP '99.

[14]  John Derrick,et al.  Automatic Inference of Erlang Module Behaviour , 2013, IFM.

[15]  Daniel Brand,et al.  On Communicating Finite-State Machines , 1983, JACM.

[16]  Konstantinos Sagonas,et al.  Detection of Asynchronous Message Passing Errors Using Static Analysis , 2011, PADL.

[17]  T. D. Fletcher,et al.  Web Services Choreography Description Language Version 1.0, W3C , 2004 .

[18]  Gul A. Agha,et al.  A Language Framework for Multi-Object Coordination , 1993, ECOOP.

[19]  Richard Carlsson Towards a deadlock analysis for Erlang programs , 1997 .

[20]  Alkis Gotovos,et al.  Test-driven development of concurrent programs using concuerror , 2011, Erlang '11.

[21]  Konstantinos Sagonas,et al.  Static Detection of Race Conditions in Erlang , 2010, PADL.

[22]  Nobuko Yoshida,et al.  Multiparty Session Types Meet Communicating Automata , 2012, ESOP.

[23]  Thomas Noll,et al.  Abstraction and Model Checking of Core Erlang Programs in Maude , 2006, WRLA.