1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de...
-
date post
21-Dec-2015 -
Category
Documents
-
view
217 -
download
1
Transcript of 1 Irina Rychkova Alain Wegmann Laboratory of Systemic Modeling Ecole Polytechnique Fédérale de...
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
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
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.
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
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)
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.
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.
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.
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
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>
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
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
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
Irina Rychkova, Alain Wegmann EPFL – IC - LAMS
14
A method for functional alignment verification in hierarchical system models
Thank you for your attention!