planning-based approach for automating sequence diagram generation
DESCRIPTION
The slideshow I used to defend my Computer Science M.S. Thesis, which at the time of the defense had a terrible title that was later officially changed to Planning-Based Approach for Automating Sequence Diagram Generation.TRANSCRIPT
Planning Messages in Sequence Diagrams and Analyzing the Consistency of Use Cases and
Class Diagrams Automatically using Design by Contract
MS Thesis Defense
Yaser Sulaiman
Advisor
Dr. Moataz Ahmed
December 29, 2012
2 Photo by y.caradec
“I made this [letter] very long, because I did not have the leisure to make it shorter.”
—Blaise Pascal
title
Under the right conditions, sequence diagram generation is a
planning problem
3
4 Photo by roeyahram
5 Photo by Kitty Terwolbeck
Research Questions
Communiqué: A Library for Planning Messages in Sequence Diagrams
Experiments
Conclusions
Background
Sequence Diagram Generation as a Planning Problem
Literature Review
7
System
Function
Behavior Structure
8
System
Use Cases
State Transition Diagrams
Class Diagrams
Sequence Diagrams
9
Use Case Class
Diagram Sequence Diagram
Use Case
Class Diagram
Sequence Diagram
vs.
10
Design by Contract (DbC)
11 Photo by my brother Maher
Contracts (preconditions + postconditions) semantically specify
the relation between routines & callers
The C in DbC
12
DbC (Eiffel) in Action
13
-- A pop routine of a limited-capacity -- stack. pop(): T require not empty do .. ensure not full count = old count - 1 end
Object Constraint Language (OCL)
14
UML DbC OCL
OCL in Action
15
-- Assuming Stack has Boolean -- isEmpty() & isFull() methods & -- integer count attribute. context Stack::pop(): T pre: not self.isEmpty() post: not self.isFull() and self.count = self.count@pre - 1
Automated Planning
16
s0 a1 s1 s2 … sg
a2 a3 ag
Σ = (𝑆, 𝐴, 𝛾)
17
s0 a1 s1 s2 … sg
a2 a3 ag
Forward State-Space Search
18
s0 … sg
Backward State-Space Search
19
s0 … sg
Languages
20
Design by Contract Automated Planning
Eiffel
Object Constraint Language
Stanford Research Institute Problem Solver
Action Description Language
Planning Domain Definition Language
PDDL in Action
21
(:action pop
:parameters (?s Stack)
:precondition (> (count ?s) 0)
:effect (decrease (count ?s) 1)
)
22 Photo by miuenski
Sequence Diagram Generation as a Planning Problem
Correspondence between Planning and DbC
23
Automated Planning Design by Contract
Initial State Use Case Preconditions
Goal Use Case Postconditions
Actions Methods
Action Preconditions Method Preconditions
Action Effects Method Postconditions
States as Object Diagrams
24
25
s0 a1 s1 s2 … sg
a2 a3 ag
27
Paper Focus Main Idea
Liwu Li (2000) Model Generation A parser to translate a manually normalized use case to message records
Köster, Six & Winter (2001)
Consistency Analysis Using refined activity diagrams to couple use cases & class models
Li, Liu & He (2005) Consistency Analysis Using set theory & first-order logic to check consistency between the use case model & the conceptual class model
Long et al. (2005) Consistency Analysis Using a queue & BFS to detect inconsistencies between well-formed class & sequence diagrams
Chanda et al. (2009) Consistency Analysis A context-free grammar for use case, activity & class diagrams
Yue, Briand & Labiche (2010)
Model Generation A systematic review focusing on transforming textual requirements to analysis models in the context of MDD
Yue, Briand & Labiche (2010)
Model Generation A technique to automatically derive analysis models from use cases while maintaining traceability links
Ghezzi, Mocci & Salvaneschi (2010)
Consistency Analysis Using symbolic model checking to cross-validate algebraic specifications against intensional behavior models
de Sousa et al. (2010) Consistency Analysis Using the B method to automatically analyze the consistency of requirements
Vaquero et al. (2011) RE & Automated
Planning itSIMPLE: an IDE for automated planning applications
Sulaiman & Ahmed (2012)
RE & Automated Planning
Using itSIMPLE to demonstrate treating sequence diagram generation as a planning problem
28
Requirements & Knowledge
Engineering
Automated Planning
Vaquero et al.
Sulaiman & Ahmed
29
0: (LOGIN PROFILE) [1] 1: (ACTIVATE ACCOUNT PROFILE) [1] 2: (WITHDRAW ACCOUNT PROFILE AMOUNT) [1] 3: (LOGOUT PROFILE) [1]
Message Receiver Parameter
But what about the Sender?
Q1: How can sequence diagrams be automatically generated from DbC’ed use cases and class diagrams?
Q2: How can that process be used to analyze the
consistency between use cases and class diagrams?
Q3: Which contract language should be used to enable those processes?
Q4: How do the automatically-generated sequence
diagrams compare to the manually-generated ones?
31
32
Communiqué: A Library for Planning Messages in Sequence Diagrams
Available on Github http://git.io/communique
33
Implemented in
Ruby
Logo by Yukihiro Matsumoto
34
Use Case
Class Diagram Instance
Communiqué Sequence Diagram
35
36
Forward-search(s0, g) n ← [s0, the empty plan] Enqueue(n, f(n)) until queue is empty s, π ← Dequeue-min() if s satisfies g then return π applicable ← {m | precond(m) is true in s} if applicable = ϕ then next for each m ϵ applicable n ← [γ(s, m), π.m] Enqueue(n, f(n)) return failure
37
s0
…
… …
sg
…
… …
…
𝑓 𝑛 =
−&𝑔 𝑛 , &&&&&&&&&&&&DFS
&𝑔 𝑛 , &&&&&&&&&&&&BFS
&𝑔 𝑛 + ℎ 𝑛 , A∗
The Evaluation (or Objective) Function
38
Cost so far; depth of n; # of previous message passes
Estimated cost to goal; estimated # of remaining message passes
h(n) = # objects not satisfying their goals
39
h(n) is not admissible: it may overestimate the cost of reaching
the goal
40
h(n) non-admissibility ⇒
planner non-optimality
41
To determine the sender of a message, Communiqué uses the
links between the objects along with some rules of thumb
42
Sender-Selection Assumptions
43
The Actor initiates the use case
Boundary objects interact with the Actor
Dependent objects are responsible for the objects they create
A sender must already be active
A sender must have a link to the receiver
OCL-Like Ruby Expressions for Pre- & Postconditions
44
pop = DbcMethod.new(:pop) pop.precondition = Proc.new { self.is_empty? } pop.postcondition = Proc.new { @count -= 1 }
context Stack::pop(): T pre: not self.isEmpty() post: not self.isFull() and self.count = self.count@pre - 1
The original models were not DbC’ed; I added what I believed to
be commonsense contracts
46
Experiment #1
Simple Sequence Diagrams
47
Properties Management System* – Class Diagram
48 * Aman et al. Senior Project
49
Select Featured Property Delete Property Modify Announcement
Add Property Modify Property
Experiment #2
More Complex Sequence Diagrams
50
Weather Station System* – Class Diagram
51 * Ian Sommerville. Software Engineering
Weather Station System – Sequence Diagram
52
Textbook’s Diagram Communiqué’s Output
2Bwatch* – Class Diagram
53 * Bruegge and Dutoit. OOSE using UML, Patterns & Java
2Bwatch – Sequence Diagram
54
Did you notice something wrong?
55
56
I didn’t*.. until I saw Communiqué’s output
57 * After all, I’m not a software engineer
58
Textbook’s Diagram Communiqué’s Output
59
There is no association to support sending refresh() as
it appears in the book’s sequence diagram
60
Now, what would Communiqué do?
61
Textbook’s Diagram Communiqué’s New Output
63
Textbook’s Diagram Communiqué’s New Output
64 Photo used with permission from Laney G
“Success!”
Experiment #3
Effects of Noise
65
“Irrelevant” methods
66
Always applicable
Does nothing
These methods has an effect similar to that of a large class diagram
67
MeetingsMate* – Class Diagram
68 * Al Akel et al. Senior Project
MeetingsMate – Sequence Diagram
69
70
71
72
DFS explored 𝑂(𝑚) states, but the solution was of length 𝑂(𝑚)
BFS found the optimal solution, but it explored
𝑂(𝑐𝑚) states
Best-first search explored 𝑂(𝑚) and found the optimal solution
73
# of noise methods
Experiment #4
Non-Optimality of Communiqué’s Best-First Search
74
h(n) non-admissibility ⇒
planner non-optimality
75
76
77
Optimal Diagram Communiqué’s Output
78
s0 0 + 3
s2 1 + 1
s3 2 + 1
s1 1 + 3
sg1 2 + 0
satisfy_objects_1_and_2()
prepare_to_satisfy_object_3()
prepare_to_satisfy_all_objects_at_once()
satisfy_all_objects_at_once()
f(n) = g(n) + h(n)
sg2 3 + 0
satisfy_object_3()
79
s0 0 + 3
s2 1 + 1
s3 2 + 1
s1 1 + 3
sg1 2 + 0
satisfy_objects_1_and_2()
prepare_to_satisfy_object_3()
prepare_to_satisfy_all_objects_at_once()
satisfy_all_objects_at_once()
f(n) = g(n) + h(n)
sg2 3 + 0
satisfy_object_3()
Experiment #5
Object Instantiation
80
81
Oh how meta!
82
Experiment #6
Failure Handling
83
If Communiqué fails to find a solution, it points to possible
sources of inconsistencies
84
85
86
88
Action Planners Message-Passing
Planner
State Representation Typically, predefined
state variables A set of objects
Specification Language
STRIPS, ADL, or PDDL OCL-like Ruby
expressions
Constraints Preconditions only Preconditions plus
semantic class relationships
Creation of New State Components
Typically, not supported Object instantiations*
Communiqué Action Planners
State Representation Typically, predefined
state variables A set of objects
Specification Language
STRIPS, ADL, or PDDL OCL - like Ruby
expressions
Constraints Preconditions only
Preconditions plus semantic class relationships
Creation of New State Components
Typically, not supported Object instantiations *
Limitations*
89 * “It’s not a bug; it’s a feature.”
Instantaneous State Transitions
90
Sender-Selection Inaccuracies
91
Textbook’s Diagram Communiqué’s Output
Non-Optimality of Communiqué’s Best-First Search
Limited Message Types
Limited Actor Support
No Support for Combined Fragments
Not Comparing States for Equality
Possible Bias in Experiments
Using Ruby for Inputs and Raw Outputs
Other Limitations
92
Future Work
Handle Time Explicitly
Design a Better Heuristic
Try Other Planning Algorithms & Approaches
Use XMI for Inputs and Outputs
93
…</presentation> <questions>…
94
Sender-Selection Rules
1. If the message is the 1st in the sequence of message passes, select the Actor.
2. If the receiver of the message is a boundary object, select the Actor.
3. If the receiver of the message is a dependency object, select the object’s creator.
4. If the message has more than one candidate sender, select the most recently activated candidate sender.
5. If the message does not have any candidate sender, select the Actor.
95