Title: Model Generation for Distributed Java Programs
1Model Generation for Distributed Java Programs
- Rabéa Boulifa
- Eric Madelaine
- Oasis Team
- INRIA, Sophia-Antipolis France, I3S, UNSA
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
2Outline
- Distributed Java Applications, the ProActive
Library - Approach
- Models Networks and LTSs
- Model Construction
- Conclusion
scientiFic engIneering of Distributed Java
applIcation
Luxembourg, November 28, 2003
3Context, ProActive library
- Active objects communicate by Remote Method
Invocation. - Each active object
- has a request queue (always accepting incoming
requests) - has a body specifying its behaviour (local state
and computation, service of requests, submission
of requests) - manages the wait by necessity of responses
(futures) -
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
4Approach
Control flow analysis
MCG
ProActive Application
Behavioural Semantics
LTS
- Behavioural model (Labelled Transition Systems),
built in a compositional (structural) manner
One LTS per active object. - Synchronisation based on ProActive semantics
- Usable for Model-checking ? finite / small
models
scientiFic engIneering of Distributed Java
applIcation
Luxembourg, November 28, 2003
5Method Calls informal diagram
Current object
Remote object
!Req_m
!Req_m
?Req_m
- request arriving in
- the queue
?Req_m
!Serv_m
- request served
- (executed and removed)
!Serv_m
!Rep_m
!Rep_m
?Rep_m
?Rep_m
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
6Model Networks of synchronised LTSs
-
- Finite enumeration active objects ? Synchro.
Networks Arnold 80 - Boxes and links computed by static analysis
- Labelled transition systems, LTSs
- 1 LTS per activity LTS behaviour LTS queue.
- LabelsRequests/Responses (meth. name finite
abstract. of param.)
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
7Construction procedure
- Finite network analyse the source code of the
application, by some finite abstraction of
parameters. - For each Active Object Class (with all required
passive classes) - build the Method Call Graph, MCG
- compute the sequential LTS, using the SOS rules
- interleave at each wait by necessity points,
using the Future rule (gt asynchronous LTS). - generate the request queue LTS.
- combine the asynchronous LTS with the queue LTS.
- Property For a finite data abstraction ?
Termination guaranteed
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
8Building of Network
- Enumeration
- O Oi a finite number of active object
classes. - Dom (Oi) a finite number of instantiations of
each class. - (use a finite abstraction of creation
parameters) - Incoming ports (available services) set of
public methods - Outgoing links remote requests
- (use a finite abstraction of message
parameters)
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
9Method Call Graph
MCGltid, V, ?C, ?T , ? gt method name nodes
call edges transfer edges reference to
future nodes ? ent(id), call(id), rep(id),
seq, ret public void getForks()
ObjectForSynchro lf
Forkid.take() ObjectForSynchro lr
Forkright_ind.take()
waitFor(lf) waitFor(lr)
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
10Rules SOS-style
Premisses
ltvpattern, n, A, M, Sc, Smgt ? ltv', n', A, M',
Sc, Smgt
MCG node
method stack
LTS node
Continuation stack
LTS
mapping
At beginning ltvent(runActivity), ?, ?, M, ,
gt
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
11Local Call
We will go and analyse its code, just as if we
where inlining it. We shall not develop loops or
recursive procedures.
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
12Remote Call
v1 ?T v2 Active(O) fresh(n')
R_Call
ltv1call(O.m), n, A, M, Sc, Smgt ?
ltv2, n', A?(n
n ), M ? v1 ? n', Sc, Smgt
!Req_M
O is a remote active object. We simply generate a
send message !Req_M encoding the method name and
its (abstracted) parameters.
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
13Futures
?Rep_M
?(v1)v2 n1M(v1) n2M(v2) A (A ??
)
Fut
ltv1, Agt ? A
Where M is the phantom of M, i.e. the union of
all Ms during the construction procedure
V v O.m1(x) xxx yyy v.f()
scientiFic engIneering of Distributed Java
applIcation
Luxembourg, November 28, 2003
14Example (Philosopher Diner)
- public void runActivity()
- while(true)
- think() getForks()
- eat() putForks()
-
- public void getForks()
- ObjectForSynchro lf
- Forkid.take()
- ObjectForSynchro lr
- Forkright_ind.take()
- waitFor(lf)
- waitFor(lr)
-
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
15MCG ? LTS
Sc
Sm
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
16MCG ? LTS
Sc Sm
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
17MCG ? LTS
Sc Sm
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
18Conclusion
- Behaviour models of ProActive distributed
applications encode asynchronous communication
between distributed objects. - With usual data/structure abstraction, we build
finite, hierarchical, models suitable for
automatic verification. - Prototype implementation based on Soot and
Bandera tools. - Future directions
- Parameterised models can be finitely instantiated
(adapted to each property), or directly fed into
specialised tools. They are more compact and more
flexible. - Other ProActive features group communication,
exceptions. - Behaviour specification for distributed
components.
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
19Properties
- Check properties
- deadlocks, livelock, temporal logic formulas
- Check equivalence with
Luxembourg, November 28 ,2003
scientiFic engIneering of Distributed Java
applIcation
20Model Generation for Distributed Java Programs
- Rabéa Boulifa
- Eric Madelaine
- Oasis Team
- INRIA, Sophia-Antipolis France
- http//www-sop.inria.fr/oasis/Vercors
- http//www-sop.inria.fr/oasis/Proactive
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
21Model Networks of synchronised LTSs(2)
- Labelled transition systems, LTSs
- 1 LTS per activity LTS behaviour LTS queue.
- Labels Requests/Responses
- (method name finite abstraction of
parameters) - Construction by SOS rules, based on the Method
Call Graph.
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation
22MCG ? LTS
Sc
Sm
Luxembourg, November 28, 2003
scientiFic engIneering of Distributed Java
applIcation