1 irina rychkova alain wegmann laboratory of systemic modeling ecole polytechnique fédérale de...

14
1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne cinemaBIZ Client operation ... Cinem a Cinem a M anagem entTxn <<transaction>> Cinem a M anagem ent Cinem a WebSite Booking O ffice M anager C lerk cinema M anagem ent Cinema WebSite Booking O ffice cinem aM anagem ent w ebM anagem ent bookingTickets M anager C lerk A method for functional alignment verification in hierarchical system models

Post on 21-Dec-2015

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

1

Irina RychkovaAlain Wegmann

Laboratory of Systemic ModelingEcole Polytechnique Fédérale de Lausanne

cinemaBIZ

Clientoperation

... Cinema

CinemaManagementTxn<<transaction>>

CinemaManagement

Cinema

WebSite BookingOffice

Manager Clerk

cinemaManagement

Cinema

WebSite BookingOffice

cinemaManagement

webManagement

bookingTickets

Manager Clerk

A method for functional alignment verification in hierarchical system models

Page 2: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

2

A method for functional alignment verification in hierarchical system models

Overview Graphical specifications at different levels of

abstraction Alignment verification of the specifications Example: Cinema Web Site Abstract State Machine (ASM) operational

semantics Future work

Page 3: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

3

A method for functional alignment verification in hierarchical system models

Specifications at different abstraction levels

?

Concepts

Behavior

Abstract

Abstract

Detailed

Abstract

Detailed

Concrete

The client performs a ticket reservation.

The client performs a ticket reservation by choosing movies from the agenda. The reservation is valid if there are placesfor the movie requested.

The client performs ….The reservation is ….The client adds reservations to thevirtual cart. The system completesreservation after getting commit from the customer.

Page 4: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

4

A method for functional alignment verification in hierarchical system models

Functional alignment verification andoperational semantics

Def: Two systems are considered behaviorally compatible if the first system can be replaced by the second one without the environment being able to notice the difference of the system’s behavior based on a set of criteria. [from RM-ODP]

Booking Tickets ReservationSystemManage

Reservation

BookingTicketsTxn<<transaction>>

Agenda

ManageReservation

ReservationList

PreEnv: 0..1|idList

PostEnv [true]:reservatopnList.nRes =reservatopnList.nRes + idList.nID

ReservationBag

#Reservations{int}

1|nRes

#Movies{int}

1|nMovies

#MovieID{int}1|nID

ManageReservation

WebManagement

GetCommit

Add

BookingTicketsTxn<<transaction>>

Agenda

Seat{0..250}

1|seatsReservationList

0..*1|rList[1]..rList[*]

Cart

ManageReservationsTxn<<transaction>>

Commit{Boolean}

PreEnv: 1|commit

0..*|mList[1]..mList[*]

PostEnv[valid]:ca.cart add agenda.list(mID)seats(agenda.mList(mID)):=seats(agenda.mList(mID))-1 }

PostEnv [commit]:forAll item in cL.cart reservationList add item;

Movie

M_ID{String}

1|id

1..*|mList[1]..mList[*]

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (agenda.mlist(mID)<>null& (agenda.mlist(mID).seats)>0)

PreEnv:0..1|mID

Valid{Boolean}

Behaviorally compatible

Environment

Reservationok!

Spec1 Spec2

Page 5: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

5

A method for functional alignment verification in hierarchical system models

How to align specifications?

BookingTicketsTxn<<transaction>>

Agenda

ManageReservation

ReservationList

PreEnv: 0..1|idList

PostEnv [true]:reservatopnList.nRes =reservatopnList.nRes + idList.nID

ReservationBag

#Reservations{int}

1|nRes

#Movies{int}

1|nMovies

#MovieID{int}1|nID

SEAM concept

Working Object

SEAM notation

AsmL notation

namespace <name>

Property(simple)

cl ass <name> var val ueRef as <t ype_name> <name>( ) <name>( vRef as <t ype_name>) val ueRef : =vRef

Property(complex)

cl ass <name> var a1 as <name1>? / / r ef er ence t o <t 1> var a2 as <name2>? / / r ef er ence t o <t 2> <name>( )

<name>

<name>

<name>{type_name}

<name><name2>

{t2} 1|a2

<name1>{t1}

1|a1

Property(composition)

cl ass <name1>

var l i st as Set of <name2><name1> <name2>

1..*|list[1]..list[*]

Partial Interaction

<act i on_name>( x as <name1>) / / met hod

<expr essi on> / / expr essi on supposed t o modi f y t he i nst ance of <name2>

<action_name>

<name2>

PreEnv: 0..1|x

PostEnv [<condition>]:<expression>

<name1>

The client performs a ticket reservation.

The client performs a ticket reservation by choosing movies from the agenda. The reservation is valid if there are placesfor movie requested.

The client performs ….The reservation is ….The client adds reservations to thevirtual cart. The system completesreservation after getting commit from the customer.

ManageReservation

WebManagement

GetCommit

Add

BookingTicketsTxn<<transaction>>

Agenda

Seat{0..250}

1|seatsReservationList

0..*1|rList[1]..rList[*]

Cart

ManageReservationsTxn<<transaction>>

Commit{Boolean}

PreEnv: 1|commit

0..*|mList[1]..mList[*]

PostEnv[valid]:ca.cart add agenda.list(mID)seats(agenda.mList(mID)):=seats(agenda.mList(mID))-1 }

PostEnv [commit]:forAll item in cL.cart reservationList add item;

Movie

M_ID{String}

1|id

1..*|mList[1]..mList[*]

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (agenda.mlist(mID)<>null& (agenda.mlist(mID).seats)>0)

PreEnv:0..1|mID

Valid{Boolean}

BookingTicketsTxn<<transaction>>

Agenda

MovieSeat

{0..250}

ManageReservation

1..*|mList[1]..mList[*]

1|seatsReservationList

0..*|rList[1]..rList[*]

PreEnv: 0..1|idList

PostEnv [valid]:ForAll id in idList reservatopnList add agenda.mList(id) seats(agenda.mList(id)):=seats(agenda.mList(id)-1 }

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (forAll id in idList agenda.mList(id)<>null& agenda.mList(id).seats>0)

M_ID{String}

1|id

ReservationBag

0..*|id[1]..id[*]

S1Manage

Reservation started

S2<param>

ReservationBagReceived

S3Clisent’s

ReservationList Augmented

S4Manage

Reservation finished

S1Manage

Reservation started

S2<param>

MovieIdListReceived

S4Clisent’s

ReservationList Updated;

Agenda Updated

S5Manage

Reservationfinished

S3ReservationBag

Validated

Valid

S1Manage

Reservation started

S2<param>MovieIDReceived

S9Clisent’s

ReservationList Updated;

Agenda Updated

S10Manage

Reservationfinished

S3MovieIDValidated

S4MovieID

PlacedToCart

S8<param>Commit

Received

ValidS5

<param>MovieIDReceived

S6MovieIDValidated

S7MovieID

PlacedToCart

Valid

Text SpecGraphical Spec

Executable

Spec (code)

Page 6: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

6

A method for functional alignment verification in hierarchical system models

Cinema Web Site 1/3WebSite

WebManagement

WebManagementTxn<<transaction>>

ClientAccount

H LogIn LogOut

BookingTickets

HH H

ID{String}

1|reservationList

1|id

PreS: 1|cL

ClientAccountList

0..*|cL[1]..cL[*]

1|agenda

BookingTicketsTxn<<transaction>>

Agenda

ManageReservation

ReservationList

PreEnv: 0..1|idList

PostEnv [true]:reservatopnList.nRes =reservatopnList.nRes + idList.nID

ReservationBag

#Reservations{int}

1|nRes

#Movies{int}

1|nMovies

#MovieID{int}1|nID

The client performs a ticket reservation.

Page 7: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

7

A method for functional alignment verification in hierarchical system models

Cinema Web Site 2/3

BookingTicketsTxn<<transaction>>

Agenda

MovieSeat

{0..250}

ManageReservation

1..*|mList[1]..mList[*]

1|seatsReservationList

0..*|rList[1]..rList[*]

PreEnv: 0..1|idList

PostEnv [valid]:ForAll id in idList reservatopnList add agenda.mList(id) seats(agenda.mList(id)):=seats(agenda.mList(id)-1 }

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (forAll id in idList agenda.mList(id)<>null& agenda.mList(id).seats>0)

M_ID{String}

1|id

ReservationBag

0..*|id[1]..id[*]

The client performs a ticket reservation by choosing movies from the agenda. The reservation is valid if there are placesfor the movie requested.

Page 8: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

8

A method for functional alignment verification in hierarchical system models

Cinema Web Site 3/3

ManageReservation

WebManagement

GetCommit

Add

BookingTicketsTxn<<transaction>>

Agenda

Seat{0..250}

1|seatsReservationList

0..*1|rList[1]..rList[*]

Cart

ManageReservationsTxn<<transaction>>

Commit{Boolean}

PreEnv: 1|commit

0..*|mList[1]..mList[*]

PostEnv[valid]:ca.cart add agenda.list(mID)seats(agenda.mList(mID)):=seats(agenda.mList(mID))-1 }

PostEnv [commit]:forAll item in cL.cart reservationList add item;

Movie

M_ID{String}

1|id

1..*|mList[1]..mList[*]

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (agenda.mlist(mID)<>null& (agenda.mlist(mID).seats)>0)

PreEnv:0..1|mID

Valid{Boolean}

The client performs ….The reservation is ….The client adds reservations to thevirtual cart. The system completesreservation after getting commit from the customer.

Page 9: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

9

A method for functional alignment verification in hierarchical system models

Understandability vs. Precision:Alignment verification problem

Functional Alignment verification

BookingTicketsTxn<<transaction>>

Agenda

ManageReservation

ReservationList

PreEnv: 0..1|idList

PostEnv [true]:reservatopnList.nRes =reservatopnList.nRes + idList.nID

ReservationBag

#Reservations{int}

1|nRes

#Movies{int}

1|nMovies

#MovieID{int}1|nID

BookingTicketsTxn<<transaction>>

Agenda

MovieSeat

{0..250}

ManageReservation

1..*|mList[1]..mList[*]

1|seatsReservationList

0..*|rList[1]..rList[*]

PreEnv: 0..1|idList

PostEnv [valid]:ForAll id in idList reservatopnList add agenda.mList(id) seats(agenda.mList(id)):=seats(agenda.mList(id)-1 }

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (forAll id in idList agenda.mList(id)<>null& agenda.mList(id).seats>0)

M_ID{String}

1|id

ReservationBag

0..*|id[1]..id[*]

ManageReservation

WebManagement

GetCommit

Add

BookingTicketsTxn<<transaction>>

Agenda

Seat{0..250}

1|seatsReservationList

0..*1|rList[1]..rList[*]

Cart

ManageReservationsTxn<<transaction>>

Commit{Boolean}

PreEnv: 1|commit

0..*|mList[1]..mList[*]

PostEnv[valid]:ca.cart add agenda.list(mID)seats(agenda.mList(mID)):=seats(agenda.mList(mID))-1 }

PostEnv [commit]:forAll item in cL.cart reservationList add item;

Movie

M_ID{String}

1|id

1..*|mList[1]..mList[*]

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (agenda.mlist(mID)<>null& (agenda.mlist(mID).seats)>0)

PreEnv:0..1|mID

Valid{Boolean}

Concepts

Behavior

Abstract

Abstract

Detailed

Abstract

Detailed

Concrete

Page 10: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

10

A method for functional alignment verification in hierarchical system models

Functional alignment verification:Semantic rules for model transformation

SEAM concept

Working Object

SEAM notation

AsmL notation

namespace <name>

Property(simple)

cl ass <name> var val ueRef as <t ype_name> <name>( ) <name>( vRef as <t ype_name>) val ueRef : =vRef

Property(complex)

cl ass <name> var a1 as <name1>? / / r ef er ence t o <t 1> var a2 as <name2>? / / r ef er ence t o <t 2> <name>( )

<name>

<name>

<name>{type_name}

<name><name2>

{t2} 1|a2

<name1>{t1}

1|a1

Property(composition)

cl ass <name1>

var l i st as Set of <name2><name1> <name2>

1..*|list[1]..list[*]

Partial Interaction

<act i on_name>( x as <name1>) / / met hod

<expr essi on> / / expr essi on supposed t o modi f y t he i nst ance of <name2>

<action_name>

<name2>

PreEnv: 0..1|x

PostEnv [<condition>]:<expression>

<name1>

Page 11: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

11

A method for functional alignment verification in hierarchical system models

S1Manage

Reservation started

S2<param>

MovieIdListReceived

S4Clisent’s

ReservationList Updated;

Agenda Updated

S5Manage

Reservationfinished

S3MovieIDListValidated

Bag of 2 reservations: idList = {“XMEN3_6.06.2006.18_30”, “MI:III_7.06.2006.21_30”}

Valid

Simulation and Alignment Verification

BookingTicketsTxn<<transaction>>

Agenda

ManageReservation

ReservationList

PreEnv: 0..1|idList

PostEnv [true]:reservatopnList.nRes =reservatopnList.nRes + idList.nID

ReservationBag

#Reservations{int}

1|nRes

#Movies{int}

1|nMovies

#MovieID{int}1|nID

Bag of 2 reservations: idList.nID = 2

S1Manage

Reservation started

S2<param>

ReservationBagReceived

S3Clisent’s

ReservationList Augmented

S4Manage

Reservation finished

BookingTicketsTxn<<transaction>>

Agenda

MovieSeat

{0..250}

ManageReservation

1..*|mList[1]..mList[*]

1|seatsReservationList

0..*|rList[1]..rList[*]

PreEnv: 0..1|idList

PostEnv [valid]:ForAll id in idList reservatopnList add agenda.mList(id) seats(agenda.mList(id)):=seats(agenda.mList(id)-1 }

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (forAll id in idList agenda.mList(id)<>null& agenda.mList(id).seats>0)

M_ID{String}

1|id

ReservationBag

0..*|id[1]..id[*]

ManageReservation

WebManagement

GetCommit

Add

BookingTicketsTxn<<transaction>>

Agenda

Seat{0..250}

1|seatsReservationList

0..*1|rList[1]..rList[*]

Cart

ManageReservationsTxn<<transaction>>

Commit{Boolean}

PreEnv: 1|commit

0..*|mList[1]..mList[*]

PostEnv[valid]:ca.cart add agenda.list(mID)seats(agenda.mList(mID)):=seats(agenda.mList(mID))-1 }

PostEnv [commit]:forAll item in cL.cart reservationList add item;

Movie

M_ID{String}

1|id

1..*|mList[1]..mList[*]

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (agenda.mlist(mID)<>null& (agenda.mlist(mID).seats)>0)

PreEnv:0..1|mID

Valid{Boolean}

S1Manage

Reservation started

S2<param>MovieIDReceived

S9Clisent’s

ReservationList Updated;

Agenda Updated

S10Manage

Reservationfinished

S3MovieIDValidated

mId =“MI:III_7.06.2006.21_30”

S4MovieID

PlacedToCart

S8<param>Commit

Received

ValidS5

<param>MovieIDReceived

mId =“XMEN3_6.06.2006.18_30”

S6MovieIDValidated

S7MovieID

PlacedToCart

Valid

Page 12: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

12

A method for functional alignment verification in hierarchical system models

Functional alignment verification:Method and tools SeamCAD tool for

graphical SEAM model development

XML specification of the graphical model

Set of mapping rules for AsmL interpretation of SEAM model stored in XML

SEAM-AsmL translator for automated AsmL spec generation out of SEAM graphical model

BookingTicketsTxn<<transaction>>

Agenda

ManageReservation

ReservationList

PreEnv: 0..1|idList

PostEnv [true]:reservatopnList.nRes =reservatopnList.nRes + idList.nID

ReservationBag

#Reservations{int}

1|nRes

#Movies{int}

1|nMovies

#MovieID{int}1|nID

BookingTicketsTxn<<transaction>>

Agenda

MovieSeat

{0..250}

ManageReservation

1..*|mList[1]..mList[*]

1|seatsReservationList

0..*|rList[1]..rList[*]

PreEnv: 0..1|idList

PostEnv [valid]:ForAll id in idList reservatopnList add agenda.mList(id) seats(agenda.mList(id)):=seats(agenda.mList(id)-1 }

M_ID{String}

Valid{Boolean}

Emergent: 1|validvalid = (forAll id in idList agenda.mList(id)<>null& agenda.mList(id).seats>0)

M_ID{String}

1|id

ReservationBag

0..*|id[1]..id[*]

Asmlt

M1.xml M2.xml

SeamCAD

SEAM_AsmL Translator

Transformation rules

M1.asml M2.asml

Page 13: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

13

A method for functional alignment verification in hierarchical system models

Future work SEAM-AsmL translator v.1.1 release Scalability checking Use of Scala language as an operational

semantics for SEAM Organizational alignment verification

Page 14: 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de Lausanne A method for functional alignment verification

Irina Rychkova, Alain Wegmann EPFL – IC - LAMS

14

A method for functional alignment verification in hierarchical system models

Thank you for your attention!