technical university of eindhoven, 14/01/20101 translating reo to mcrl2 natallia kokash joint work...

34
Technical University of Eindhoven, 14/01/2010 1 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Upload: kimberly-barrett

Post on 13-Dec-2015

218 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 1

Translating Reo to mCRL2

Natallia Kokash

Joint work with

Christian Krause and Erik de Vink

Page 2: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 2

Introduction Motivation Basics of Reo and mCRL2 Translation from Reo to mCRL2

Constraint automata encoding Data flow modeling Timed constraint automata

Context-dependency Intentional automata encoding – approach and problems Encoding based on coloring semantics

Testing new semantics of Reo Reo circuits with data transfer delays

Tool support Conclusions and future work

Page 3: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 3

UML2Reo converter

Motivation: analysis of business processes

BPMN2Reo converter

Page 4: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Formalization of business processes

Technical University of Eindhoven, 14/01/2010 4

Сheck that admissible states reject or sendFormOut are eventually reached G(request → F (reject ∪ sendFormOut))

Reo2ExtendedAutomata converters

Page 5: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Motivation: analysis of business processes

Safety properties “Something bad will not happen”

Liveness properties “Something good will eventually happen”

Control flow analysis Deadlocks/livelocks/temporal constraints in data-agnostic

models Data flow analysis

Deadlocks/livelocks/temporal constraints in data-aware models

Service compatibility checking Check whether a message sent by one service will be accepted

by another service Multiple variables and abstract data types Data transformation

Technical University of Eindhoven, 14/01/2010 5

Page 6: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Reo coordination language

Technical University of Eindhoven, 14/01/2010 66

Components (services) communicate through channels composed to complex connectors

Semantics: Constraint automata Intentional automata (support for context-dependency)

Page 7: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 7

mCRL2

Behavioral specification language Associated toolset

Developed at TU Eindhoven (+ LaQuSo, CWI and Twente University)

Based on the algebra of communicating processes (ACP)

Extended with data and time Built-in data types: Bool, Nat, Pos, Int, Real Algebraic data types

constructors, recognition and projection functions Built-in support for lists, sets and bags User-defined functions (λ calculus)

Number of industrial case studies http://www.mcrl2.org/

Page 8: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 8

mCRL2 specification language

Actions are atomic events (e.g. a firing of a port or a request arrival in a Reo connector)

Processes are the active entities defined as expressions over actions and other processes Multiaction: a|b (synchronized actions) Alternative composition: a + b (nondeterministic choice) Sequence composition: a.b (b started after a) Conditional: exp → a ◊ b (if-then-else) At operator: act (action a happens at time t) Parallel composition: a||b (interleavings a.b + b.a + a|b)

Actions and processes can be parametrized with data Summation: ∑d∈D a(d) (a(d1) + a(d2) + a(d3)…)

Page 9: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 9

mCRL2 specification language

Renaming: ρR(a) where R is a set of renamings of the form b → c, meaning that every occurrence of b in a is replaced by c

Hiding: τH(a) renames all actions of H in a to τ

Restriction (allow): ∇R(a) where R specifies which actions are allowed to occur in a

Blocking: ∂B(a) where B is a set of actions that is not allowed to occur in a

Communication: ΓC(p), where C is a set of allowed communications of the form a0|...|an→ c, n ≥1 which means that every group of actions a0|...|an within a multiaction is replaced by an action c

Page 10: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 10

Example of mCRL2 specification

Dining philosophers

eqn K = 2;map K: Pos;

act get, put, up, down, lock, free: Pos#Pos; eat: Pos;

proc Phil(n: Pos) = get(n, n) . get(n, if (n == K, 1, n+1)). eat(n). put(n,

n) . put(n, if (n == K, 1, n+1)) . Phil(n);

Fork(n: Pos) = sum m: Pos . up(m, n) . down(m, n) . Fork(n);

init allow( { lock, free, eat }, comm( { get|up->lock, put|down->free }, Phil(1) || ... || Phil(K) || Fork(1) ||…|| Fork(K) ));

Page 11: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Example of mCRL2 specification

Technical University of Eindhoven, 14/01/2010 11

Brief overview of the mCRL2 toolset: Process linearization

mcrl22lps Linear Transition System (LTS)

generation lps2lts

LTS minimization (e.g., branching bisimilarity) ltsconvert

LTS visualization ltsgraph

Other tools (simulation, converters, etc.)

mCRL2 model checker Works on LPS specification lps2pbes –formula=[formula].mcf lpsFile

pbesFile pbes2bool pbesFile

Dining philosophers

Page 12: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 12

Reo to mCRL2 (Constraint automata semantics)

Data flow observed at a channel end = action Synchronous channel, synchronous drain

Sync = A|B.Sync; Non-deterministic synchronous lossy channel

LossySync = (A|B + A).LossySync; Asynchronous drain

AsyncDrain = (A + B).AsyncDrain; FIFO1

FIFO1 = A.B.FIFO1; FullFIFO1 = B.FIFO1; Alternative encoding: FIFO1(f: Bool) = (¬f → A ◊ B).FIFO1(¬f);

Replication node Replicator = X|Y|Z.Replicator;

Merge node Merger = (X|Z + Y|Z).Merger;

Page 13: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 13

Reo to mCRL2: Data supportact A, B: Data Synchronous channel

Sync = ∑d∈Data . A(d)|B(d) . Sync; Synchronous drain

SyncDrain = ∑d1,d2 ∈Data . A(d1)|B(d2) . SyncDrain; Synchronous lossy channel

LossySync = ∑d∈Data . (A(d)|B(d) + A(d)) . LossySync; Asynchronous drain

AsyncDrain = ∑d∈Data . (A(d) + B(d)) . AsyncDrain; Filter

Filter = sum ∑d∈Data . (exp(d) → A(d)|B(d) ◊ A(d)). Filter, where exp(d) is a boolean expression

Transformer Transformer = ∑d∈Data . A(d)|B(f(d)) . Transformer;

Replication node Replicator = ∑d∈Data . X(d)|Y(d)|Z(d) . Replicator;

Merge node Merger = ∑d∈Data . (X(d)|Z(d) + Y(d)|Z(d)) . Merger;

FIFO1 DataFIFO1 = struct empty?isEmpty | full(e:Data)?isFull; FIFO1(f: DataFIFO1) = ∑d∈Data isEmpty(f)→A(d).Fifo1(full(d)) ◊

B(e(f)).FIFO1(empty))

Page 14: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 14

Reo to mCRL2: Global data types

A connector should deal with any data items consumed by its source nodes

Given a set of elementary data types DT1,…,DTn (e.g., inferred from web service interface specifications), the global data type is described as follows: Data = struct D1(e1: DT1)|…|Dn(e1: DTn)

Join node Join = ∑ d1,d2 ∈Data. (X(d1)|Y(d2)|Z(tuple(d1, d2)).Join;

For m-join node tuple(e1: Data, e2: Data,…, em: Data) is added to the Data description, e.g., Data = struct D1(e1: DT1)|…|Dn(e1: DTn) |tuple(e1: Data, e2: Data)

Note: expressions for filter and transformer channels become dependent on the structure of the Reo connector

Page 15: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Reo to mCRL2: Timed constraint automata T-timer with off- and reset- options

Reacts differently to different data inputs: DataTimer = struct reset?isReset | off?isOff | timeout | other(e: Data)?

isOther Has two states

State = struct OFF?isOFF | ON?isON State s (timer ON or OFF), current time x, timer delay t

Timer(s: State, x: Real, t: Real ) = isOFF(s)→∑d∈DataTimer isOther(d)→A(d).Timer(ON, 0, t) + isON (s) → ((x < t) → ∑d∈DataTimer

isReset(d) → A(d).Timer(ON, 0, t) + isOff (d) → A(d).Timer(OFF, x, t) + tickcx.Timer(ON, x + 1, t))

◊ B(timeout).Timer(OFF, x, t)

Technical University of Eindhoven, 14/01/2010 15

Page 16: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 16

Reo to mCRL2: Composition

Problem Reduce the size of the state space while building the LTS for the

mCRL2 specification of a Reo connector Idea

Iterated connector construction

A A

B

DA

B

A

B

C

D

1. P0 = ∂ends of connected channels(Γhandshaking at Node1(Node1 || Sync1 || LossySync1 || LossySync2 || SyncDrain1))

2. P1 = ∂ends of connected channels(Γhandshaking at Node2(Node2 || Sync2 || Sync3 || P0 ))

3. P2 = ∂ends of connected channels (Γhandshaking at Node3(Node3 || Sync4 || P1 ))

4. P3 = ∂ends of connected channels (Γhandshaking at Node4(Node4 || Sync5 || P2 ))

A B

Synchronize and hide actions corresponding to the connected channels

C D A B|C →τ D

Page 17: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Performance evaluation

Technical University of Eindhoven, 14/01/2010 17

Page 18: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Correctness of the mapping: proof idea

Technical University of Eindhoven, 14/01/2010 18

Example: synchronous FIFO1

Axiomatization and SOS semantics of mCRL2:Groote, J.F., Mathijssen, A., Reniers, M., Usenko, Y., van Weerdenburg, M.: The formal specification language mCRL2. In: Proc. Methods for Modelling Software Systems. Number 06351 in Dagstuhl Seminar Proceedings (2007)

Page 19: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 19

Intentional automata encoding Two types of actions:

A channel end is ready to write/read (iA) Data flow observed at a channel end (oA)

Synchronous channel, synchronous drain Sync(a: Bool, b: Bool) =

¬a → iA.Sync(¬a, b) + ¬b → iB.Sync(a, ¬ b) + (a ⋀ b) → oA|oB.Sync(¬a, ¬b);

Context independent lossy channel LossySync(a: Bool, b: Bool) =

¬a → iA. LossySync(¬a, b) + ¬b → iB. LossySync(a, ¬ b) + a → (b → oA|oB. LossySync(¬ a, ¬b) +

oA. LossySync (¬a, b)); Context dependent lossy channel

LossySync(a: Bool, b: Bool) = ¬a → iA. LossySync(¬a, b) + ¬b → iB. LossySync(a, ¬ b) + a → (b → oA|oB. LossySync(¬ a, ¬b) +

¬b → oA. LossySync (¬a, b));

Page 20: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Intentional automata encoding: problems

By default channels do not transmit data and need explicit commands to do so (request arrival actions)

One request arrival action per time Many extra states are generated that show the propagation of

the information about request arrival Restriction operator is needed

Technical University of Eindhoven, 14/01/2010 20

Solutions: Encoding of coloring semantics using mCRL2 actions with data

(Christian) By default each channel transmits data, an explicit command is

needed to block certain ports (generated when some FIFO1 becomes full), and unblock them later (when some FIFO1 becomes empty) – similar to the coloring semantics, but several different actions are without data are used.

LossySync can lose data because

it does not know that

the buffer became empty

(iC|iB has to happen first)

Page 21: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Encoding based on coloring semanticsSort Colored = struct flow(data : Data) | noflowG | noflowRAct A,B: Colored; Synchronous channel

Sync = (∑d∈Data . A(flow(d)) | B(flow(d)) + . A(noflowG) | B(noflowR) +

. A(noflowR) | B(noflowG) + . A(noflowG) | B(noflowG)) .Sync;

Lossy channel LossySync = (∑d∈Data . A(flow(d)) | B(flow(d)) +

. A(flow(d)) | B(noflowG) + . A(noflowG) | B(noflowR) + . A(noflowG) | B(noflowG)) .LossySync;

Merge nodeMerger = (∑d∈Data . A(flow(d)) | B(noflowR) | C(flow(d)) +

A(noflowR) | B(flow(d)) | C(flow(d)) + A(noflowG) |B(noflowG) | C(noflowR) + A(noflowR) | B(noflowR) | C(noflowG)) .Merger

Technical University of Eindhoven, 14/01/2010 21

Page 22: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Coloring semantics

Technical University of Eindhoven, 14/01/2010 22

Two colors

Three colors

Page 23: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Lossy FIFO1

Technical University of Eindhoven, 14/01/2010 23

Constraint automata

Coloring semantics

Page 24: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Lossy FIFO1

Technical University of Eindhoven, 14/01/2010 24

Page 25: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Synchronous transactions with explicit data flow modeling

Technical University of Eindhoven, 14/01/2010 25

t2

t1

t3

t2

t1

t3

t4

t5

t2 >> t1

This automaton does not allow multiple transitions {A,B} while C is reading data.

Data transfer delay: max(t1, t2)+max(t3,t4,t5) or max(t1+max(t3,t4), t2+max(t3,t5))

Page 26: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Synchronous transactions with explicit data flow modeling

Actions observed in a port A: block (bA) start data flow (sA) finish data flow (fA) unblock (uA) Port behavior: bA.sA.fA.uA

Synchronous channel bA|bB.sA|sB.fA|fB.uA|uB

LossySync bA|bB.sA|sB.fA|fB.uA|uB + bA.sB.fB.uB

FIFO1 (empty) bA.sA.fA.uA.bB.bB.sB.fB.uB

SyncDrain bA|bB.(sA.fA || sB.fB).uA|uB

AsyncDrain bA.sA.fA.uA + bB.sB.fB.uB

Technical University of Eindhoven, 14/01/2010 26

Sync

LossySync

FIFO1

SyncDrain

AsyncDrain

Page 27: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Synchronous transactions with explicit data flow modeling

“Block” and “unblock” actions are synchronized as in constraint automata

Source/source sA|sB

Sink/Source fA|sB

Sink/sink Merge node

bX|bZ.sX|sZ.fX|fZ.uX|uZ + bY|bZ.sY|sZ.fY|fZ.uY|uZ

Performance analysis: Port A pumps data = state between sA and fA Time delays can be assigned to “finish” actions

Technical University of Eindhoven, 14/01/2010 27

Merge node

A

B

A B

Page 28: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Automata with data flow constraints

Technical University of Eindhoven, 14/01/2010 28

A B

C D

X

Y

Z

t2

t1

t3

Page 29: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 29

Tool support

Page 30: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 30

Data-flow analysis with mCRL2

No deadlock: [true*]<true>true

No livelock: [true*]mu X.[tau]X

Loan request is always denied or approved: Data agnostic:

nu X.[true]X && mu Y.([!(denied || approved)]Y && <true>true)

Data aware: nu X.[true]X && forall d:Data. mu Y.([!(denied(d) || approved(d))]Y && <true>true)

Page 31: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 31

Loan request scenario: different instances

Salary = 1000

Salary = 2000 Salary = 3000

Page 32: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 32

Comparison of model checking tools for Reo

Vereofy (University of Dresden) Advantages:

Developed for Reo and Constraint Automata Counterexamples

Disadvantages: No support for abstract data types Global domain for all components Primitive data constraint specification language (for filter

channels) mCRL2

Advantages: Powerful support for data Rich property specification format

Disadvantages: Hard to extract counterexamples For infinite domains model checker often does not terminate if

data constraints present in formula being verified (problems with algorithms for formulae rewriting?)

Page 33: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 33

Conclusions

Full featured model checking for Reo Control + data flow analysis

Abstract data types Complete tool support

Automated generation of mCRL2 code from graphical models

First implemented plug-in that deals with filter and transformer channels

Eclipse Coordination Tools Interesting toolset for business process and service

composition analysis Good alternative to Petri nets Better suits service-oriented computing paradigm

Page 34: Technical University of Eindhoven, 14/01/20101 Translating Reo to mCRL2 Natallia Kokash Joint work with Christian Krause and Erik de Vink

Technical University of Eindhoven, 14/01/2010 34

Future Work

Work on tools usability Analysis across several connectors Obtaining data types from WSDL specifications Describe arbitrary components in mCRL2 (not only

readers/writers) LTS to LPS conversion? Integrate other verification tools (e.g., CADP, simulators)

Timed Reo Implement the converter What properties can be checked with mCRL2?

Reo with data transfer delays Implement the converter How can we support performance analysis?