Preserving Software Quality Characteristics from Requirements ...
Preserving Software Quality Characteristics from Requirements ...
Preserving Software Quality Characteristics from Requirements ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
<strong>Preserving</strong> <strong>Software</strong> <strong>Quality</strong> <strong>Characteristics</strong><br />
<strong>from</strong> <strong>Requirements</strong> Analysis to Architectural Design<br />
EWSA 2006<br />
Holger Schmidt and Ina Wentzlaff<br />
University Duisburg-Essen · Faculty of Engineering<br />
Department of Computer Science · <strong>Software</strong> Engineering<br />
Germany<br />
September 5th, 2006<br />
1 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Motivation: Handling of <strong>Quality</strong> <strong>Characteristics</strong><br />
➠ <strong>Software</strong> systems have quality characteristics<br />
➠ such as usability and security<br />
Problems:<br />
➠ many established mechanisms to provide quality<br />
characteristics, but choosing a suitable mechanism for a<br />
certain aspect is difficult<br />
➠ adequate handling of quality characteristics at different<br />
stages of the software life cycle is a very challenging task<br />
Contribution:<br />
➠ pattern-based software development method for building<br />
high quality software<br />
➠ preserving quality characteristics using a role-driven<br />
mapping of requirements analysis documents to<br />
architectural design artifacts<br />
2 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Problem Frames<br />
in general<br />
➠ invented by Michael Jackson (no, not the singer )<br />
➠ patterns considering different classes of software<br />
development problems<br />
➠ means for requirements engineering<br />
for quality<br />
➠ localize quality characteristics in relation to a subset of<br />
overall system functionality<br />
➠ Usability: HCI Frames<br />
➠ Security: security problem frames and<br />
concretized security problem frames<br />
3 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Pattern Example: Problem Frame<br />
“Commanded Workpiece Display”<br />
CWPD<br />
machine<br />
WP!Y2<br />
MA!E1<br />
MA!E2<br />
workpiece<br />
display<br />
Y5<br />
Y4<br />
OP!E3<br />
operator<br />
E3<br />
Req.<br />
E3 {operator events}<br />
E1 {machine commands}<br />
Y2 {workpiece status} corresponds to desired status Y4<br />
3 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Application Example: Chat<br />
System Mission<br />
Duck<br />
Elephant Mouse<br />
A text-message-based communication platform shall be<br />
developed which allows multi-user communication via private<br />
I/O-devices.<br />
4 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Overview: <strong>Software</strong> Development Method<br />
Step 1 Understand the problem situation<br />
Step 2 Decompose complex problem into<br />
several simple subproblems<br />
Step 3 Fit subproblems to problem frames<br />
Step 3a Identify quality characteristics<br />
Step 3b Classify subproblems according to<br />
quality demands<br />
Step 3c Resolve conflicting<br />
quality characteristics<br />
Step 4 Instantiate corresponding architectural styles and<br />
design patterns<br />
Step 5 Compose final software out of several subsolutions<br />
Result abstract implementation concept which constitutes<br />
a starting point for further development<br />
5 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Pattern Example: Problem Frame<br />
“Commanded Workpiece Display”<br />
(simplified diagram)<br />
CWPD<br />
machine<br />
workpiece<br />
display<br />
operator<br />
Req. On behalf of an operator<br />
workpiece changes will be executed<br />
and indicated on a display.<br />
Req.<br />
6 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Pattern Example: HCI Frame<br />
“Commanded Workpiece Display”<br />
CWPD<br />
machine<br />
Usability concerns:<br />
workpiece<br />
meta inform.<br />
workpiece<br />
display<br />
operator<br />
1. Information about a workpiece shall be provided.<br />
2. The operator of a workpiece shall be indicated.<br />
Usability<br />
Req.<br />
6 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Instance Example: HCI Frame Diagram<br />
“Commanded Workpiece Display”<br />
CWPD<br />
machine<br />
Chat<br />
ID<br />
Text−<br />
message<br />
Display<br />
User<br />
workpiece<br />
meta inform.<br />
workpiece<br />
display<br />
operator<br />
R1 Users can phrase text-messages,<br />
Elephant<br />
which are shown on their private graphical displays.<br />
Usability<br />
R5 Each text-message is related to its respective user, so<br />
that the originator of a message can be identified. 6 / 15<br />
R5<br />
R1
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Instance Example:<br />
Security Problem Diagram for Anonymity<br />
Chat<br />
User<br />
ID<br />
Receiving<br />
users<br />
Security concern (Anonymity):<br />
subject<br />
identity<br />
malicious subject<br />
Duck<br />
Elephant<br />
SR User’s ID shall be unknown to receiving users.<br />
SR<br />
Mouse<br />
7 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Identify Conflicting <strong>Quality</strong> <strong>Characteristics</strong><br />
Conflict at interface Chat ID<br />
Security concern:<br />
The identity of an operator<br />
shall be anonymous<br />
Usability demand:<br />
The operator of a workpiece<br />
shall be indicated<br />
CWPD<br />
machine<br />
Chat<br />
ID<br />
Text−<br />
message<br />
Display<br />
User<br />
display<br />
vs.<br />
workpiece<br />
meta inform.<br />
workpiece<br />
operator<br />
Security<br />
SR<br />
Usability<br />
R5<br />
R1<br />
8 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Instance Example: Concretized Security Problem<br />
Diagram for Pseudonymity<br />
Chat<br />
User<br />
ID<br />
subject<br />
identity<br />
pseudonym<br />
Nickname<br />
malicious subject<br />
Receiving<br />
users<br />
Duck<br />
CSR User’s nickname shall be known,<br />
but ID shall be unknown to receiving users.<br />
Elephant<br />
CSR<br />
blue animal<br />
Mouse<br />
8 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Deriving Design<br />
Aim: smooth transition <strong>from</strong> analysis to design<br />
➠ Maintaining identified quality characteristics<br />
➠ Role-driven mapping of problem frames to architectural<br />
styles and design patterns<br />
machine<br />
...<br />
model<br />
Controller Chat<br />
Textmessage<br />
myModel<br />
myView<br />
initialize(Model,View)<br />
handleEvent<br />
update<br />
phraseTM<br />
sendTM<br />
signUpChatSession<br />
model<br />
view<br />
ID<br />
Display<br />
➠ Each found frame instance assigns values to accordant<br />
subsolution patterns<br />
➠ Composing final software out of several subsolutions<br />
9 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Model-View-Controller Architecture<br />
of Chat Application (Usability)<br />
CWPD<br />
machine<br />
Chat<br />
ID<br />
Text−<br />
message<br />
Display<br />
User<br />
workpiece<br />
meta inform.<br />
workpiece<br />
display<br />
operator<br />
Usability<br />
R5<br />
R1<br />
10 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Model-View-Controller Architecture<br />
of Chat Application (Usability)<br />
CWPD<br />
machine<br />
Chat<br />
phraseTM<br />
sendTM<br />
signUpChatSession<br />
control<br />
ID<br />
Text−<br />
message<br />
Display<br />
user<br />
workpiece<br />
meta inform.<br />
workpiece<br />
display<br />
operator<br />
Usability<br />
R5<br />
R1<br />
10 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Model-View-Controller Architecture<br />
of Chat Application (Usability)<br />
Chat<br />
phraseTM<br />
sendTM<br />
signUpChatSession<br />
control<br />
ID<br />
Text−<br />
message<br />
Display<br />
user<br />
workpiece<br />
meta inform.<br />
workpiece<br />
display<br />
Usability<br />
R5<br />
R1<br />
10 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Model-View-Controller Architecture<br />
of Chat Application (Usability)<br />
attach<br />
call service<br />
Model<br />
Chat<br />
phraseTM<br />
sendTM<br />
signUpChatSession<br />
control<br />
ID<br />
Identity<br />
Textmessage<br />
MessageText<br />
TMMeta:ID<br />
editTM<br />
workpiece<br />
meta inform.<br />
user<br />
workpiece<br />
display<br />
Usability<br />
R5<br />
Display R1<br />
10 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Model-View-Controller Architecture<br />
of Chat Application (Usability)<br />
attach<br />
call service<br />
Model<br />
Chat<br />
phraseTM<br />
sendTM<br />
signUpChatSession<br />
control<br />
ID<br />
Identity<br />
Textmessage<br />
MessageText<br />
TMMeta:ID<br />
editTM<br />
user<br />
display<br />
Usability<br />
R5<br />
Display R1<br />
10 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Model-View-Controller Architecture<br />
of Chat Application (Usability)<br />
attach<br />
call service<br />
Model<br />
Chat<br />
phraseTM<br />
sendTM<br />
signUpChatSession<br />
control<br />
ID<br />
Identity<br />
Textmessage<br />
MessageText<br />
TMMeta:ID<br />
editTM<br />
getData<br />
attach<br />
create Display<br />
manip.<br />
display<br />
user<br />
TMDisplay<br />
Usability<br />
R5<br />
R1<br />
10 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Model-View-Controller Architecture<br />
of Chat Application (Usability)<br />
attach<br />
call service<br />
Model<br />
Chat<br />
phraseTM<br />
sendTM<br />
signUpChatSession<br />
control<br />
ID<br />
Identity<br />
Textmessage<br />
MessageText<br />
TMMeta:ID<br />
editTM<br />
getData<br />
attach<br />
create Display<br />
manip.<br />
user<br />
TMDisplay<br />
10 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Proxy Architecture<br />
of Chat Application (Security)<br />
User!sendTM<br />
Chat<br />
User<br />
ID<br />
subject<br />
identity<br />
pseudonym<br />
Nickname<br />
malicious subject<br />
Receiving<br />
users<br />
CSR<br />
11 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Proxy Architecture<br />
of Chat Application (Security)<br />
RealSubject<br />
Chat_if<br />
sendTM(Subject,TM)<br />
Chat<br />
sendTM(Nickname,TM)<br />
User!sendTM<br />
User<br />
ID<br />
Nickname<br />
ChatProxy<br />
sendTM(ID,TM)<br />
subject<br />
Identity<br />
Pseudonym<br />
Proxy<br />
CSR<br />
sendTM(id : ID,tm : TM){<br />
Chat.sendTM(getNickname(id),tm);<br />
}<br />
11 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Summary of Chat Application Architecture<br />
ChatApplication<br />
Model<br />
network<br />
send/receive messages use display services user input<br />
Nickname<br />
ID<br />
Textmessage<br />
MessageText<br />
TMMeta<br />
editTM<br />
View<br />
Display<br />
display user<br />
Controller<br />
Chat<br />
read data <strong>from</strong> model execute user control<br />
use model services<br />
phraseTM<br />
sendTM<br />
signUpChatSession<br />
ChatProxy<br />
sendTM<br />
12 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Conclusion<br />
➠ Patterns help<br />
◮ avoiding omissions<br />
◮ covering functional as well as quality characteristics<br />
➠ Method allows stepwise solution of given development problem:<br />
◮ Understanding the problem situation and<br />
decomposing it into several subproblems<br />
◮ Identifying functional and quality characteristics and<br />
instantiating accordant (specialized) patterns as<br />
HCI Frames, and (concretized) security problems frames<br />
◮ Deal with conflicting quality characteristics<br />
◮ Instantiate corresponding architectural styles and<br />
design patterns by a role-driven mapping preserving<br />
specified quality characteristics<br />
➠ Result is a starting point for low-level design and<br />
implementation<br />
13 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
Future Work<br />
➠ Elaborate more on<br />
◮ conflict resolution<br />
◮ role-driven mapping<br />
◮ influence of domain knowledge<br />
➠ Develop (relatively) complete pattern catalogues<br />
◮ especially for software quality characteristics<br />
➠ Consider later phases of software development life cycle,<br />
e.g. low-level design and coding<br />
◮ integration of component technology<br />
◮ and aspect-orientation<br />
➠ Formalize description of frames<br />
◮ extension of pattern language<br />
➠ Tool-Support<br />
14 / 15
EWSA06<br />
Schmidt,<br />
Wentzlaff<br />
Introduction<br />
Problem Frames<br />
Application<br />
Example: Chat<br />
<strong>Software</strong><br />
Development<br />
Method<br />
<strong>Quality</strong><br />
Frames<br />
HCIFrames<br />
(Concretized)<br />
Security<br />
Problem Frames<br />
Conflict<br />
Resolution<br />
Derive Design<br />
Composed<br />
Architecture<br />
Conclusion &<br />
Future Work<br />
THE END of talk, but time for a chat<br />
Let’s talk it over!<br />
15 / 15