SlideShare a Scribd company logo
.lusoftware verification & validation
VVS
Leveraging Natural-language Requirements for
Deriving Better Acceptance Criteria from Models
Alvaro Veizagaa, Mauricio Alfereza,
Damiano Torrea, Mehrdad Sabetzadehba,
Lionel Briandab
aUniversity of Luxembourg, Luxembourg
bUniversity of Ottawa, Canada
October 22nd, 2020
Elene Pitskhelauri
Clearstream, Luxembourg
Context: Acceptance Testing in
Industry
2
Acceptance
Criteria (AC)
Test Engineers
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Natural language (NL)
requirements
Business Analysts
Requirements Analysis Acceptance Testing
Requirements
models
Our Earlier Work on Requirements
Specification
3
AGAC
• Supports the automated generation of AC in Gherkin
• AC automatically generated from models
Rimay
• A language for writing functional requirements
• Helps write more precise requirements
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
AGAC: Automatic Generation of
Acceptance Criteria
4
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Models
Business Analysts
Requirements Analysis Acceptance Testing
NL
Requirements Generation
of AC
Acceptance
Criteria (AC)
Test Engineers
AGAC Example
Requirements Model
Acceptance Criteria
5
Create
Alert
Send
Alert
Receive
Alert
Create
Order
Is data
correct?
[Yes]
[No]
Given order does not exist in System_A
And Is data correct? is equal to Yes
When System_A performs Create Order
Then order exists in System_A
Given alert does not exist in System_A
And Is data correct? is equal to No
When System_A performs Create Alert
Then alert exists in System_A
//Gherkin scenarios for the send and receive actions not shown
AC1AC2
Generation
of AC
Requirements Written in Rimay
6
ACTOR
For each “line of the File”, System must check that
Share_CLass_Identifier.Value contains “line.ISIN”.
SYSTEM RESPONSE
SCOPE (Optional) SYSTEM RESPONSE
ACTOR
When Transfer_System receives a File, Transfer_System must
forward the File to System.
SYSTEM RESPONSE
CONDITION STRUCTURE (Optional)
NL Requirements to Generate AC
Natural-language Requirement:
Acceptance Criteria
7
When System_A creates an alert, then System_A must set the
priotity of the alert to “high”.
Given order does not exist in System_A
And Is data correct? is equal to Yes
When System_A performs Create Order
Then order exists in System_A
Given alert does not exist in System_A
And Is data correct? is equal to No
When System_A performs Create Alert
Then alert exists in System_A
And the property priority of alert is equal to high
//Gherkin scenarios for the send and receive actions not shown
AC1AC2
Main Goal
8
Acceptance
Criteria (AC)
Test Engineers
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
NL
Requirements
Business Analysts
Requirements Analysis Acceptance Testing
Requirements
models
Rimay AGAC
9
Enrich models with information extracted from NL
requirements in order to generate better AC
• Define a set of 13 information extraction rules (RQ1)
• Propose a systematic method that generates
recommendations (RQ2)
• Verify that the recommendations are relevant to AC (RQ3)
Main Goal
Identify Model
Elements to Enrich
Enriched
Model
Acceptance
Criteria
2
3
Create
Recommendations
1 Extract Information
Enrich Model4
Generate
Acceptance Criteria
5
Recommendations
NL
Requirements
Model
Requirements
Specification
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Our Approach
10
Our Approach
11
Identify Model
Elements to Enrich
Enriched
Model
Acceptance
Criteria
2
3
Create
Recommendations
1 Extract Information
Enrich Model4
Generate
Acceptance Criteria
5
Recommendations
NL
Requirements
Model
Requirements
Specification
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Extract Information
12
13 rules to extract AC relevant
information content from NL
requirements
• Derived from manual analysis of
overlaps between meta-models
element and the element types
in Rimay
Category #
Scope 1
Condition
Structure
7
Actor 2
System
Response
3
RQ1: How can we extract AC-related information
from NL requirements?
Rule Scope S1
13
Check
ISIN
more
elements
…
more
elements
…
: File
line
S1: If a prepositional phrase starts by “for each”, and
further mentions: the type A of the collection that will
be iterated over and an item B in the collection, then
extract A and B.
R: For each "line of the File”,
System must check that
Share_Class_Identifier.Value
contains “line.ISIN”.
Type
A
Type
A
Item
B
Item
B
Rule Condition Structure C1
14
C1: If the verb phrase A in a When structure does not
match the name of any of the actions preceding the
traced action, then extract A.
R: When Transfer_System receives a File,
Transfer_System must forward the File to
System.
Forward
File
f: File
more
elements
…
Receive
File
more
elements
…
f: File
Rule Actor A1
15
A1: If an actor A in an NL requirement does not
match the name of any UML actor linked to the
activity partition of the traced action, then extract A.
Create
Alert
: System
…more
elements
follow
more
elements
precede…
R: Before "8:00 am", every "calendar
day”, if System does not receive
the File,
then System must create an "Alert”.
Rule System Response SR1
16
SR1: If a system response creates data A (e.g.,
Report, Instruction, Alarm), then extract A.
Create
Alert
…more
elements
follow
more
elements
precede…
: Alert
R: Before "8:00 am", every "calendar day”, if System
does not receive the File, then System must create an
“Alert" .
Our Approach
17
Identify Model
Elements to Enrich
Enriched
Model
Acceptance
Criteria
2
3
Create
Recommendations
1 Extract Information
Enrich Model4
Generate
Acceptance Criteria
5
Recommendations
NL
Requirements
Model
Requirements
Specification
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Identify Models Elements to Enrich
18
Requirement. When the Order_Issuer (hereafter known as OI) creates an
Order of type Subscription_Order, then the OI must set the settlement_method
of the Order to “FOP”.
Compare text
sequences
Activity Diagrams
Create
Order
…
…more
elements
Class Diagrams (Domain Model)
Use Case Diagrams (Actors)
…
actor
Order_Issuer
…
settlement_date : date
Subscription_Order
act Create subscription order
Identify Models Elements to Enrich
19
6 model elements
to enrich
R1. When the Order_Issuer (hereafter known as OI)
creates an Order of type Subscription_Order, then the OI
must set the settlement_method of the Order to “FOP”.
SR1
actor actor alias
object type
property name
property
valueobject name
A1 A2
SR2 SR3 SR2
Activity Diagrams
…
Class Diagrams (Domain Model)
act Create subscription order
Order : Subscription_Order
settlement_date : date
settlement_method : string
Subscription_Order
Create
Order
…more
elementssettlement_method = “FOP”
Use Case Diagrams (Actors)
…
A2 A1
SR1
SR2
SR2
SR3
«actor»
Order_Issuer
OI : Order_Issuer
…
Our Approach
20
Identify Model
Elements to Enrich
Enriched
Model
Acceptance
Criteria
2
3
Create
Recommendations
1 Extract Information
Enrich Model4
Generate
Acceptance Criteria
5
Recommendations
NL
Requirements
Model
Requirements
Specification
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Create Recommendations
21
ID Description Rule
Rec. 4 Add the property “settlement method” to the
object node of type “Subscription Order"
SR2
Rec. 5 Set the “settlement_method” property’s value
to “FOP”
SR2
… … …
Recommendations
on how to enrich the
model elements
Activity Diagrams
…
Class Diagrams (Domain Model)
act Create subscription order
Order : Subscription_Order
settlement_date : date
settlement_method : string
Subscription_Order
Create
Order
…more
elementssettlement_method = “FOP”
Use Case Diagrams (Actors)
…
A2 A1
SR1
SR2
SR2
SR3
«actor»
Order_Issuer
OI : Order_Issuer
…
Our Approach
22
Identify Model
Elements to Enrich
Enriched
Model
Acceptance
Criteria
2
3
Create
Recommendations
1 Extract Information
Enrich Model4
Generate
Acceptance Criteria
5
Recommendations
NL
Requirements
Model
Requirements
Specification
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Enrich Model
23
Enrich the model
elements following
recommendations
Activity Diagrams
…
Class Diagrams (Domain Model)
act Create subscription order
Order : Subscription_Order
settlement_date : date
settlement_method : string
Subscription_Order
Create
Order
…more
elementssettlement_method = “FOP”
Use Case Diagrams (Actors)
…
A2 A1
SR1
SR2
SR2
SR3
«actor»
Order_Issuer
OI : Order_Issuer
…
RQ2: How can we systematically enrich models with
the (AC-related) information from NL requirements?
ID Description Rule
Rec.
4
Add the property “settlement
method” to the object node of type
“Subscription Order"
SR2
Rec.
5
Set the “settlement_method”
property’s value to “FOP”
SR2
… … …
Our Approach
24
Identify Model
Elements to Enrich
Enriched
Model
Acceptance
Criteria
2
3
Create
Recommendations
1 Extract Information
Enrich Model4
Generate
Acceptance Criteria
5
Recommendations
NL
Requirements
Model
Requirements
Specification
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Generate Acceptance Criteria
25
Generation of AC
Activity Diagrams
act Create subscription order
Order : Subscription_OrderCreate
Order
…more
elementssettlement_method = “FOP”
…
A2 A1
SR1
SR2
SR3
OI : Order_Issuer
@Intent Create
@Requirement_Id: R1
Scenario: Create an Order
Given an Order of type Subscription_Order does not
exist in OI of type Order_Issuer
When OI Create Order,
Then Order exists in OI
And the property settlement_method of Order is equal to FOP
Empirical Evaluation
26
• Assess whether financial analysis benefit from our
solution
• We conducted a case study in collaboration with
Clearstream Luxembourg
Investment Fund
Services
RQ3: Are our recommendations for model enrichment
useful in practice?
Case Study Preparation
27
Q1) Are the recommendations to enrich the model
useful to generate better AC?
Requirements Specification
27 Recommendations
AC from the Model
Enrich Model
AC from Enriched Model
Compare AC and answer Q1
5 Domain Experts
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Results
28
Answer to Q1: the experts found 89% of the
recommendations (24 out of 27) relevant for
generating better Acceptance Criteria
Question Yes No
Q1 24 3
TPs FPs FNs Precision % Recall %
24 3 0 89 100
Results – Model Elements
29
Model Element Original Enriched %Increased
Actions 22 24 9.1%
Events 1 3 200%
Objects 11 15 36.4%
Decision nodes 8 9 12.5%
Fork and join nodes 2 3 50%
Property values 0 75 N/A
The number of instances of all element types increases in the
enriched model
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
P:Participant T2S: Settlement Platform
InterruptibleActivityRegion1
Merge2
ActivityInitial
Sendsettlement
Instruction
Inx:T2SSettlementIns
State =ToValidate
Receive and
Generate InstructionpInx:Participant
SettlementIns
Validate Ins:Validate
Instruction
Inx:T2S
SettlementIns
Settle Instruction
Inx.SettlementDate >
T2S.CurrentDate
Inx.SettlementDate
starts
Merge1
Inx:T2SSettlementIns
State =Settled
Send
Notification
Inx:T2S
SettlementIns
RunMatchingProcess
X
days
passed
Inx:T2SSettlementIns
State =Matched
ProcessInstruction
Rejection
Inx:T2S
SettlementIns Inx:T2SSettlementIns
State =Valid
Inx:T2SSettlementIns
State =Rejected
«localPostcondition» Lp1:....
FlowFinal
Receive
notification
notif:
Participant
Notification
[No]
[Inx.State ==
Valid]
[Yes]
DomainModel(Classdiagram)
Participant Settlement Ins
T2SSettlement Ins
State:T2SInstruction State
Participant Notification
Reason:String [0..1]
Message:String
Settlement Instruction
SettlementDate:Date
«enumeratio...
T2SInstruction
State
ToValidate
Valid
Settled
Rejected
Matched
0..*Participant
Instruction
ucActors
Participant
«actor»
SettlementPlatform
isInitialised:Boolean
«Pre-condition»
{SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
Results – AC Details
30
Enriched model leads to the generation of more precise
and complete AC
AC Details Original Augmented % Increase
Pre-conditions 432 535 22.1%
Post-conditions 325 2262 596%
Gherkin scenarios 156 191 22.4%
Summary
31
Conclusions
32
• Generating AC exclusively from models would miss
critical information that is available only in NL
requirements
• Our industry partner confirmed that the AC resulting
from our approach are more precise and complete
• Take-home message: We need to simultaneously
consider both models and NL requirements to be able
to generate good AC
Future Work
33
• Including semantic analysis for better tracing
NL requirements to models
• Investigating how our approach can be applied to
other domains and information systems that are
commonly modeled using UML
.lusoftware verification & validation
VVS
Leveraging Natural-language Requirements for
Deriving Better Acceptance Criteria from Models
Alvaro Veizagaa, Mauricio Alfereza,
Damiano Torrea, Mehrdad Sabetzadehba,
Lionel Briandab
aUniversity of Luxembourg, Luxembourg
bUniversity of Ottawa, Canada
October 22nd, 2020
Elene Pitskhelauri
Clearstream, Luxembourg

More Related Content

Similar to Leveraging Natural-language Requirements for Deriving Better Acceptance Criteria from Models

Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)
Tom Diederich
 
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Chris Richardson
 
Cruz: Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Cruz:Application-Transparent Distributed Checkpoint-Restart on Standard Oper...Cruz:Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Cruz: Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Mark J. Feldman
 
Improve Security Visibility with AlienVault USM Correlation Directives
Improve Security Visibility with AlienVault USM Correlation DirectivesImprove Security Visibility with AlienVault USM Correlation Directives
Improve Security Visibility with AlienVault USM Correlation Directives
AlienVault
 
Kafka summit SF 2019 - the art of the event-streaming app
Kafka summit SF 2019 - the art of the event-streaming appKafka summit SF 2019 - the art of the event-streaming app
Kafka summit SF 2019 - the art of the event-streaming app
Neil Avery
 
The art of the event streaming application: streams, stream processors and sc...
The art of the event streaming application: streams, stream processors and sc...The art of the event streaming application: streams, stream processors and sc...
The art of the event streaming application: streams, stream processors and sc...
confluent
 
Compiler Design Unit 4
Compiler Design Unit 4Compiler Design Unit 4
Compiler Design Unit 4
Jena Catherine Bel D
 
Automating End-to-End Business Scenario Testing
Automating End-to-End Business Scenario TestingAutomating End-to-End Business Scenario Testing
Automating End-to-End Business Scenario Testing
TechWell
 
Self-adaptive container monitoring with performance-aware Load-Shedding policies
Self-adaptive container monitoring with performance-aware Load-Shedding policiesSelf-adaptive container monitoring with performance-aware Load-Shedding policies
Self-adaptive container monitoring with performance-aware Load-Shedding policies
NECST Lab @ Politecnico di Milano
 
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
confluent
 
Kakfa summit london 2019 - the art of the event-streaming app
Kakfa summit london 2019 - the art of the event-streaming appKakfa summit london 2019 - the art of the event-streaming app
Kakfa summit london 2019 - the art of the event-streaming app
Neil Avery
 
Adaptive Data Cleansing with StreamSets and Cassandra (Pat Patterson, StreamS...
Adaptive Data Cleansing with StreamSets and Cassandra (Pat Patterson, StreamS...Adaptive Data Cleansing with StreamSets and Cassandra (Pat Patterson, StreamS...
Adaptive Data Cleansing with StreamSets and Cassandra (Pat Patterson, StreamS...
DataStax
 
Adaptive Data Cleansing with StreamSets and Cassandra
Adaptive Data Cleansing with StreamSets and CassandraAdaptive Data Cleansing with StreamSets and Cassandra
Adaptive Data Cleansing with StreamSets and Cassandra
Pat Patterson
 
ETSI NFV#13 NFV resiliency presentation - ali kafel - stratus
ETSI NFV#13   NFV resiliency presentation - ali kafel - stratusETSI NFV#13   NFV resiliency presentation - ali kafel - stratus
ETSI NFV#13 NFV resiliency presentation - ali kafel - stratus
Ali Kafel
 
Multisensor data fusion in object tracking applications
Multisensor data fusion in object tracking applicationsMultisensor data fusion in object tracking applications
Multisensor data fusion in object tracking applicationsSayed Abulhasan Quadri
 
The constrained application protocol (co ap) implementation-part4-1
The constrained application protocol (co ap) implementation-part4-1The constrained application protocol (co ap) implementation-part4-1
The constrained application protocol (co ap) implementation-part4-1
Hamdamboy (함담보이)
 
NTCIP Device Tester
NTCIP Device TesterNTCIP Device Tester
NTCIP Device Tester
guestd76ad1
 
CQRS and Event Sourcing
CQRS and Event SourcingCQRS and Event Sourcing
CQRS and Event Sourcing
Sergey Seletsky
 
Keptn: Unbreakable Continuous Delivery - Berlin CI/CD Meetup
Keptn: Unbreakable Continuous Delivery - Berlin CI/CD MeetupKeptn: Unbreakable Continuous Delivery - Berlin CI/CD Meetup
Keptn: Unbreakable Continuous Delivery - Berlin CI/CD Meetup
Jürgen Etzlstorfer
 

Similar to Leveraging Natural-language Requirements for Deriving Better Acceptance Criteria from Models (20)

Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)
 
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
 
Rajeshkanna_Resume
Rajeshkanna_ResumeRajeshkanna_Resume
Rajeshkanna_Resume
 
Cruz: Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Cruz:Application-Transparent Distributed Checkpoint-Restart on Standard Oper...Cruz:Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
Cruz: Application-Transparent Distributed Checkpoint-Restart on Standard Oper...
 
Improve Security Visibility with AlienVault USM Correlation Directives
Improve Security Visibility with AlienVault USM Correlation DirectivesImprove Security Visibility with AlienVault USM Correlation Directives
Improve Security Visibility with AlienVault USM Correlation Directives
 
Kafka summit SF 2019 - the art of the event-streaming app
Kafka summit SF 2019 - the art of the event-streaming appKafka summit SF 2019 - the art of the event-streaming app
Kafka summit SF 2019 - the art of the event-streaming app
 
The art of the event streaming application: streams, stream processors and sc...
The art of the event streaming application: streams, stream processors and sc...The art of the event streaming application: streams, stream processors and sc...
The art of the event streaming application: streams, stream processors and sc...
 
Compiler Design Unit 4
Compiler Design Unit 4Compiler Design Unit 4
Compiler Design Unit 4
 
Automating End-to-End Business Scenario Testing
Automating End-to-End Business Scenario TestingAutomating End-to-End Business Scenario Testing
Automating End-to-End Business Scenario Testing
 
Self-adaptive container monitoring with performance-aware Load-Shedding policies
Self-adaptive container monitoring with performance-aware Load-Shedding policiesSelf-adaptive container monitoring with performance-aware Load-Shedding policies
Self-adaptive container monitoring with performance-aware Load-Shedding policies
 
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
 
Kakfa summit london 2019 - the art of the event-streaming app
Kakfa summit london 2019 - the art of the event-streaming appKakfa summit london 2019 - the art of the event-streaming app
Kakfa summit london 2019 - the art of the event-streaming app
 
Adaptive Data Cleansing with StreamSets and Cassandra (Pat Patterson, StreamS...
Adaptive Data Cleansing with StreamSets and Cassandra (Pat Patterson, StreamS...Adaptive Data Cleansing with StreamSets and Cassandra (Pat Patterson, StreamS...
Adaptive Data Cleansing with StreamSets and Cassandra (Pat Patterson, StreamS...
 
Adaptive Data Cleansing with StreamSets and Cassandra
Adaptive Data Cleansing with StreamSets and CassandraAdaptive Data Cleansing with StreamSets and Cassandra
Adaptive Data Cleansing with StreamSets and Cassandra
 
ETSI NFV#13 NFV resiliency presentation - ali kafel - stratus
ETSI NFV#13   NFV resiliency presentation - ali kafel - stratusETSI NFV#13   NFV resiliency presentation - ali kafel - stratus
ETSI NFV#13 NFV resiliency presentation - ali kafel - stratus
 
Multisensor data fusion in object tracking applications
Multisensor data fusion in object tracking applicationsMultisensor data fusion in object tracking applications
Multisensor data fusion in object tracking applications
 
The constrained application protocol (co ap) implementation-part4-1
The constrained application protocol (co ap) implementation-part4-1The constrained application protocol (co ap) implementation-part4-1
The constrained application protocol (co ap) implementation-part4-1
 
NTCIP Device Tester
NTCIP Device TesterNTCIP Device Tester
NTCIP Device Tester
 
CQRS and Event Sourcing
CQRS and Event SourcingCQRS and Event Sourcing
CQRS and Event Sourcing
 
Keptn: Unbreakable Continuous Delivery - Berlin CI/CD Meetup
Keptn: Unbreakable Continuous Delivery - Berlin CI/CD MeetupKeptn: Unbreakable Continuous Delivery - Berlin CI/CD Meetup
Keptn: Unbreakable Continuous Delivery - Berlin CI/CD Meetup
 

More from Lionel Briand

Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
Lionel Briand
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
Lionel Briand
 
Metamorphic Testing for Web System Security
Metamorphic Testing for Web System SecurityMetamorphic Testing for Web System Security
Metamorphic Testing for Web System Security
Lionel Briand
 
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Lionel Briand
 
Fuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation TestingFuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation Testing
Lionel Briand
 
Data-driven Mutation Analysis for Cyber-Physical Systems
Data-driven Mutation Analysis for Cyber-Physical SystemsData-driven Mutation Analysis for Cyber-Physical Systems
Data-driven Mutation Analysis for Cyber-Physical Systems
Lionel Briand
 
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled SystemsMany-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
Lionel Briand
 
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
Lionel Briand
 
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
Lionel Briand
 
PRINS: Scalable Model Inference for Component-based System Logs
PRINS: Scalable Model Inference for Component-based System LogsPRINS: Scalable Model Inference for Component-based System Logs
PRINS: Scalable Model Inference for Component-based System Logs
Lionel Briand
 
Revisiting the Notion of Diversity in Software Testing
Revisiting the Notion of Diversity in Software TestingRevisiting the Notion of Diversity in Software Testing
Revisiting the Notion of Diversity in Software Testing
Lionel Briand
 
Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Applications of Search-based Software Testing to Trustworthy Artificial Intel...Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Lionel Briand
 
Autonomous Systems: How to Address the Dilemma between Autonomy and Safety
Autonomous Systems: How to Address the Dilemma between Autonomy and SafetyAutonomous Systems: How to Address the Dilemma between Autonomy and Safety
Autonomous Systems: How to Address the Dilemma between Autonomy and Safety
Lionel Briand
 
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
Lionel Briand
 
Reinforcement Learning for Test Case Prioritization
Reinforcement Learning for Test Case PrioritizationReinforcement Learning for Test Case Prioritization
Reinforcement Learning for Test Case Prioritization
Lionel Briand
 
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
Lionel Briand
 
On Systematically Building a Controlled Natural Language for Functional Requi...
On Systematically Building a Controlled Natural Language for Functional Requi...On Systematically Building a Controlled Natural Language for Functional Requi...
On Systematically Building a Controlled Natural Language for Functional Requi...
Lionel Briand
 
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
Lionel Briand
 
Guidelines for Assessing the Accuracy of Log Message Template Identification ...
Guidelines for Assessing the Accuracy of Log Message Template Identification ...Guidelines for Assessing the Accuracy of Log Message Template Identification ...
Guidelines for Assessing the Accuracy of Log Message Template Identification ...
Lionel Briand
 
A Theoretical Framework for Understanding the Relationship between Log Parsin...
A Theoretical Framework for Understanding the Relationship between Log Parsin...A Theoretical Framework for Understanding the Relationship between Log Parsin...
A Theoretical Framework for Understanding the Relationship between Log Parsin...
Lionel Briand
 

More from Lionel Briand (20)

Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Metamorphic Testing for Web System Security
Metamorphic Testing for Web System SecurityMetamorphic Testing for Web System Security
Metamorphic Testing for Web System Security
 
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
 
Fuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation TestingFuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation Testing
 
Data-driven Mutation Analysis for Cyber-Physical Systems
Data-driven Mutation Analysis for Cyber-Physical SystemsData-driven Mutation Analysis for Cyber-Physical Systems
Data-driven Mutation Analysis for Cyber-Physical Systems
 
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled SystemsMany-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
 
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
 
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
 
PRINS: Scalable Model Inference for Component-based System Logs
PRINS: Scalable Model Inference for Component-based System LogsPRINS: Scalable Model Inference for Component-based System Logs
PRINS: Scalable Model Inference for Component-based System Logs
 
Revisiting the Notion of Diversity in Software Testing
Revisiting the Notion of Diversity in Software TestingRevisiting the Notion of Diversity in Software Testing
Revisiting the Notion of Diversity in Software Testing
 
Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Applications of Search-based Software Testing to Trustworthy Artificial Intel...Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Applications of Search-based Software Testing to Trustworthy Artificial Intel...
 
Autonomous Systems: How to Address the Dilemma between Autonomy and Safety
Autonomous Systems: How to Address the Dilemma between Autonomy and SafetyAutonomous Systems: How to Address the Dilemma between Autonomy and Safety
Autonomous Systems: How to Address the Dilemma between Autonomy and Safety
 
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
 
Reinforcement Learning for Test Case Prioritization
Reinforcement Learning for Test Case PrioritizationReinforcement Learning for Test Case Prioritization
Reinforcement Learning for Test Case Prioritization
 
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
 
On Systematically Building a Controlled Natural Language for Functional Requi...
On Systematically Building a Controlled Natural Language for Functional Requi...On Systematically Building a Controlled Natural Language for Functional Requi...
On Systematically Building a Controlled Natural Language for Functional Requi...
 
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
 
Guidelines for Assessing the Accuracy of Log Message Template Identification ...
Guidelines for Assessing the Accuracy of Log Message Template Identification ...Guidelines for Assessing the Accuracy of Log Message Template Identification ...
Guidelines for Assessing the Accuracy of Log Message Template Identification ...
 
A Theoretical Framework for Understanding the Relationship between Log Parsin...
A Theoretical Framework for Understanding the Relationship between Log Parsin...A Theoretical Framework for Understanding the Relationship between Log Parsin...
A Theoretical Framework for Understanding the Relationship between Log Parsin...
 

Recently uploaded

Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
abdulrafaychaudhry
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 

Recently uploaded (20)

Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 

Leveraging Natural-language Requirements for Deriving Better Acceptance Criteria from Models

  • 1. .lusoftware verification & validation VVS Leveraging Natural-language Requirements for Deriving Better Acceptance Criteria from Models Alvaro Veizagaa, Mauricio Alfereza, Damiano Torrea, Mehrdad Sabetzadehba, Lionel Briandab aUniversity of Luxembourg, Luxembourg bUniversity of Ottawa, Canada October 22nd, 2020 Elene Pitskhelauri Clearstream, Luxembourg
  • 2. Context: Acceptance Testing in Industry 2 Acceptance Criteria (AC) Test Engineers P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} Natural language (NL) requirements Business Analysts Requirements Analysis Acceptance Testing Requirements models
  • 3. Our Earlier Work on Requirements Specification 3 AGAC • Supports the automated generation of AC in Gherkin • AC automatically generated from models Rimay • A language for writing functional requirements • Helps write more precise requirements P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
  • 4. AGAC: Automatic Generation of Acceptance Criteria 4 P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} Models Business Analysts Requirements Analysis Acceptance Testing NL Requirements Generation of AC Acceptance Criteria (AC) Test Engineers
  • 5. AGAC Example Requirements Model Acceptance Criteria 5 Create Alert Send Alert Receive Alert Create Order Is data correct? [Yes] [No] Given order does not exist in System_A And Is data correct? is equal to Yes When System_A performs Create Order Then order exists in System_A Given alert does not exist in System_A And Is data correct? is equal to No When System_A performs Create Alert Then alert exists in System_A //Gherkin scenarios for the send and receive actions not shown AC1AC2 Generation of AC
  • 6. Requirements Written in Rimay 6 ACTOR For each “line of the File”, System must check that Share_CLass_Identifier.Value contains “line.ISIN”. SYSTEM RESPONSE SCOPE (Optional) SYSTEM RESPONSE ACTOR When Transfer_System receives a File, Transfer_System must forward the File to System. SYSTEM RESPONSE CONDITION STRUCTURE (Optional)
  • 7. NL Requirements to Generate AC Natural-language Requirement: Acceptance Criteria 7 When System_A creates an alert, then System_A must set the priotity of the alert to “high”. Given order does not exist in System_A And Is data correct? is equal to Yes When System_A performs Create Order Then order exists in System_A Given alert does not exist in System_A And Is data correct? is equal to No When System_A performs Create Alert Then alert exists in System_A And the property priority of alert is equal to high //Gherkin scenarios for the send and receive actions not shown AC1AC2
  • 8. Main Goal 8 Acceptance Criteria (AC) Test Engineers P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} NL Requirements Business Analysts Requirements Analysis Acceptance Testing Requirements models Rimay AGAC
  • 9. 9 Enrich models with information extracted from NL requirements in order to generate better AC • Define a set of 13 information extraction rules (RQ1) • Propose a systematic method that generates recommendations (RQ2) • Verify that the recommendations are relevant to AC (RQ3) Main Goal
  • 10. Identify Model Elements to Enrich Enriched Model Acceptance Criteria 2 3 Create Recommendations 1 Extract Information Enrich Model4 Generate Acceptance Criteria 5 Recommendations NL Requirements Model Requirements Specification P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} Our Approach 10
  • 11. Our Approach 11 Identify Model Elements to Enrich Enriched Model Acceptance Criteria 2 3 Create Recommendations 1 Extract Information Enrich Model4 Generate Acceptance Criteria 5 Recommendations NL Requirements Model Requirements Specification P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
  • 12. Extract Information 12 13 rules to extract AC relevant information content from NL requirements • Derived from manual analysis of overlaps between meta-models element and the element types in Rimay Category # Scope 1 Condition Structure 7 Actor 2 System Response 3 RQ1: How can we extract AC-related information from NL requirements?
  • 13. Rule Scope S1 13 Check ISIN more elements … more elements … : File line S1: If a prepositional phrase starts by “for each”, and further mentions: the type A of the collection that will be iterated over and an item B in the collection, then extract A and B. R: For each "line of the File”, System must check that Share_Class_Identifier.Value contains “line.ISIN”. Type A Type A Item B Item B
  • 14. Rule Condition Structure C1 14 C1: If the verb phrase A in a When structure does not match the name of any of the actions preceding the traced action, then extract A. R: When Transfer_System receives a File, Transfer_System must forward the File to System. Forward File f: File more elements … Receive File more elements … f: File
  • 15. Rule Actor A1 15 A1: If an actor A in an NL requirement does not match the name of any UML actor linked to the activity partition of the traced action, then extract A. Create Alert : System …more elements follow more elements precede… R: Before "8:00 am", every "calendar day”, if System does not receive the File, then System must create an "Alert”.
  • 16. Rule System Response SR1 16 SR1: If a system response creates data A (e.g., Report, Instruction, Alarm), then extract A. Create Alert …more elements follow more elements precede… : Alert R: Before "8:00 am", every "calendar day”, if System does not receive the File, then System must create an “Alert" .
  • 17. Our Approach 17 Identify Model Elements to Enrich Enriched Model Acceptance Criteria 2 3 Create Recommendations 1 Extract Information Enrich Model4 Generate Acceptance Criteria 5 Recommendations NL Requirements Model Requirements Specification P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
  • 18. Identify Models Elements to Enrich 18 Requirement. When the Order_Issuer (hereafter known as OI) creates an Order of type Subscription_Order, then the OI must set the settlement_method of the Order to “FOP”. Compare text sequences Activity Diagrams Create Order … …more elements Class Diagrams (Domain Model) Use Case Diagrams (Actors) … actor Order_Issuer … settlement_date : date Subscription_Order act Create subscription order
  • 19. Identify Models Elements to Enrich 19 6 model elements to enrich R1. When the Order_Issuer (hereafter known as OI) creates an Order of type Subscription_Order, then the OI must set the settlement_method of the Order to “FOP”. SR1 actor actor alias object type property name property valueobject name A1 A2 SR2 SR3 SR2 Activity Diagrams … Class Diagrams (Domain Model) act Create subscription order Order : Subscription_Order settlement_date : date settlement_method : string Subscription_Order Create Order …more elementssettlement_method = “FOP” Use Case Diagrams (Actors) … A2 A1 SR1 SR2 SR2 SR3 «actor» Order_Issuer OI : Order_Issuer …
  • 20. Our Approach 20 Identify Model Elements to Enrich Enriched Model Acceptance Criteria 2 3 Create Recommendations 1 Extract Information Enrich Model4 Generate Acceptance Criteria 5 Recommendations NL Requirements Model Requirements Specification P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
  • 21. Create Recommendations 21 ID Description Rule Rec. 4 Add the property “settlement method” to the object node of type “Subscription Order" SR2 Rec. 5 Set the “settlement_method” property’s value to “FOP” SR2 … … … Recommendations on how to enrich the model elements Activity Diagrams … Class Diagrams (Domain Model) act Create subscription order Order : Subscription_Order settlement_date : date settlement_method : string Subscription_Order Create Order …more elementssettlement_method = “FOP” Use Case Diagrams (Actors) … A2 A1 SR1 SR2 SR2 SR3 «actor» Order_Issuer OI : Order_Issuer …
  • 22. Our Approach 22 Identify Model Elements to Enrich Enriched Model Acceptance Criteria 2 3 Create Recommendations 1 Extract Information Enrich Model4 Generate Acceptance Criteria 5 Recommendations NL Requirements Model Requirements Specification P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
  • 23. Enrich Model 23 Enrich the model elements following recommendations Activity Diagrams … Class Diagrams (Domain Model) act Create subscription order Order : Subscription_Order settlement_date : date settlement_method : string Subscription_Order Create Order …more elementssettlement_method = “FOP” Use Case Diagrams (Actors) … A2 A1 SR1 SR2 SR2 SR3 «actor» Order_Issuer OI : Order_Issuer … RQ2: How can we systematically enrich models with the (AC-related) information from NL requirements? ID Description Rule Rec. 4 Add the property “settlement method” to the object node of type “Subscription Order" SR2 Rec. 5 Set the “settlement_method” property’s value to “FOP” SR2 … … …
  • 24. Our Approach 24 Identify Model Elements to Enrich Enriched Model Acceptance Criteria 2 3 Create Recommendations 1 Extract Information Enrich Model4 Generate Acceptance Criteria 5 Recommendations NL Requirements Model Requirements Specification P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
  • 25. Generate Acceptance Criteria 25 Generation of AC Activity Diagrams act Create subscription order Order : Subscription_OrderCreate Order …more elementssettlement_method = “FOP” … A2 A1 SR1 SR2 SR3 OI : Order_Issuer @Intent Create @Requirement_Id: R1 Scenario: Create an Order Given an Order of type Subscription_Order does not exist in OI of type Order_Issuer When OI Create Order, Then Order exists in OI And the property settlement_method of Order is equal to FOP
  • 26. Empirical Evaluation 26 • Assess whether financial analysis benefit from our solution • We conducted a case study in collaboration with Clearstream Luxembourg Investment Fund Services RQ3: Are our recommendations for model enrichment useful in practice?
  • 27. Case Study Preparation 27 Q1) Are the recommendations to enrich the model useful to generate better AC? Requirements Specification 27 Recommendations AC from the Model Enrich Model AC from Enriched Model Compare AC and answer Q1 5 Domain Experts P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
  • 28. Results 28 Answer to Q1: the experts found 89% of the recommendations (24 out of 27) relevant for generating better Acceptance Criteria Question Yes No Q1 24 3 TPs FPs FNs Precision % Recall % 24 3 0 89 100
  • 29. Results – Model Elements 29 Model Element Original Enriched %Increased Actions 22 24 9.1% Events 1 3 200% Objects 11 15 36.4% Decision nodes 8 9 12.5% Fork and join nodes 2 3 50% Property values 0 75 N/A The number of instances of all element types increases in the enriched model P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)} P:Participant T2S: Settlement Platform InterruptibleActivityRegion1 Merge2 ActivityInitial Sendsettlement Instruction Inx:T2SSettlementIns State =ToValidate Receive and Generate InstructionpInx:Participant SettlementIns Validate Ins:Validate Instruction Inx:T2S SettlementIns Settle Instruction Inx.SettlementDate > T2S.CurrentDate Inx.SettlementDate starts Merge1 Inx:T2SSettlementIns State =Settled Send Notification Inx:T2S SettlementIns RunMatchingProcess X days passed Inx:T2SSettlementIns State =Matched ProcessInstruction Rejection Inx:T2S SettlementIns Inx:T2SSettlementIns State =Valid Inx:T2SSettlementIns State =Rejected «localPostcondition» Lp1:.... FlowFinal Receive notification notif: Participant Notification [No] [Inx.State == Valid] [Yes] DomainModel(Classdiagram) Participant Settlement Ins T2SSettlement Ins State:T2SInstruction State Participant Notification Reason:String [0..1] Message:String Settlement Instruction SettlementDate:Date «enumeratio... T2SInstruction State ToValidate Valid Settled Rejected Matched 0..*Participant Instruction ucActors Participant «actor» SettlementPlatform isInitialised:Boolean «Pre-condition» {SettlementPlatform.allInstances()->forAll (t/t.isInitialised=true)}
  • 30. Results – AC Details 30 Enriched model leads to the generation of more precise and complete AC AC Details Original Augmented % Increase Pre-conditions 432 535 22.1% Post-conditions 325 2262 596% Gherkin scenarios 156 191 22.4%
  • 32. Conclusions 32 • Generating AC exclusively from models would miss critical information that is available only in NL requirements • Our industry partner confirmed that the AC resulting from our approach are more precise and complete • Take-home message: We need to simultaneously consider both models and NL requirements to be able to generate good AC
  • 33. Future Work 33 • Including semantic analysis for better tracing NL requirements to models • Investigating how our approach can be applied to other domains and information systems that are commonly modeled using UML
  • 34. .lusoftware verification & validation VVS Leveraging Natural-language Requirements for Deriving Better Acceptance Criteria from Models Alvaro Veizagaa, Mauricio Alfereza, Damiano Torrea, Mehrdad Sabetzadehba, Lionel Briandab aUniversity of Luxembourg, Luxembourg bUniversity of Ottawa, Canada October 22nd, 2020 Elene Pitskhelauri Clearstream, Luxembourg