design principles for reusable, composable and extensible frameworks jilles van gurp
TRANSCRIPT
![Page 1: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/1.jpg)
Design Principles for Reusable, Composable and Extensible
FrameworksJilles van Gurp
![Page 2: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/2.jpg)
Thanks• Axis Communications: Torbjörn Söderberg,
Per Flock
• Ericsson Mobile Applications Lab: Magnus Oestvall
• Jan Bosch (supervisor), Jelte Jansons (Opponent)
• Jan Mark de Haan, Matthew Kenrick, Jeroen Kolner for proofreading
![Page 3: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/3.jpg)
Contents
• Introduction
• Composition & Evolution
• Communication Protocols
• Enhanced State Pattern
• Evaluation & Results
![Page 4: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/4.jpg)
Introduction
• Framework: a partial design and implementation for an application in a given domain.
• Framework Composition: Multiple frameworks are used in an application
• Framework Evolution: Changes that are made to a framework during its ‘Life’
![Page 5: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/5.jpg)
Framework
Desig n
In ter fac es
A b strac t classe s
C o m po n en ts
Ob jec ts
ref lec t
r ef lect
im p lem en t
im ple me n tin h er it
c o llab or ate with
M o re A bstr ac t
M o re im plem ent at io n or ient ed
![Page 6: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/6.jpg)
Problems
• Applications depend on a framework changing the framework affects applications
• Frameworks make assumptions about the applications they’re used in these assumptions clash if more than one FW is used.
![Page 7: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/7.jpg)
Research question
How can Frameworks be designed in such a way that composition and evolution problems are prevented.
How can frameworks in the domain of communication protocols be designed in such a way that evolution and composition problems are prevented
![Page 8: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/8.jpg)
Methodology
• Analysis: how should frameworks in general be developed a set of guidelines
• Analysis of communication protocols problems
• A solution for problems in communication protocol frameworks
• Evaluation
![Page 9: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/9.jpg)
Frameworks
• Whitebox Frameworks– interfaces– abstract classes
• Blackbox Frameworks– components
![Page 10: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/10.jpg)
Composition Problems
• Two frameworks assume to be in control of the application
• Overlap in functionality
• Gap in functionality
• Framework has to work with legacy component
![Page 11: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/11.jpg)
Evolution Problems
• The framework will change over time– Applications have to change too– Framework design is endangered
• Frameworks are often complex– Hard to change– Hard to use
![Page 12: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/12.jpg)
Evolution problems (2)
• Frameworks often have poor documentation
• Frameworks have implicit usage rules
![Page 13: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/13.jpg)
Consequences
• Change is avoided (to protect existing applications)
• Framework is used in the wrong way (resulting in errors, more maintenance work)
• Internal framework structure erodes over time
![Page 14: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/14.jpg)
Guidelines
• 18 guidelines
• Four categories– Process– Design– Component– Implementation
![Page 15: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/15.jpg)
Important guidelines
• Don’t put too much functionality in a FW, specialise the framework.
• Try too achieve loose coupling between components
• Make blackbox configuration easy
![Page 16: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/16.jpg)
Communication Protocols
• Examples: IP, TCP, FTP, HTTP
• Work together in Protocol Stack
![Page 17: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/17.jpg)
ISO OSI
A p pl ica tio n L ay e r
P re sen t atio n L ay e r
Ses s io n La y er
T ra n sp o rt L a ye r
Ne tw o rk L ay e r
D ata lin k L ay e r
P h y sica l L ay e r
A p p lic atio n L ay e r
Pr ese n tati o n L a y er
Se ss io n L ay e r
T ra n sp o rt La y er
N etw o rk L a y er
D at ali nk L a y er
Ph y sic al L a y er
![Page 18: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/18.jpg)
Protocol Frameworks
• x-kernel
• Conduits/Conduits +/Java Conduits
• Axis’ Network Protocol Framework
![Page 19: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/19.jpg)
x-kernel
• Object based, implemented in C
• High modularity
• High performance
![Page 20: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/20.jpg)
Axis Network Protocol Framework
• Based on conduits and own frameworks
• Trades flexibility for performance
![Page 21: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/21.jpg)
Conduits
• Object Oriented
• Very flexible (partly because of the extensive use of design patterns)
• Conduit: a natural or artificial channel through which something (as a fluid) is conveyed (Webster)
![Page 22: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/22.jpg)
Plumbing
• 4 types of Conduits– Adaptor– Protocol/Session– Mux– Conduit Factory
![Page 23: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/23.jpg)
A Conduit graph
I P
TC P UDP
Ad ap tor
Ad ap to r
Ad ap tor
M UX
C on d ui tFacto r y
creates
![Page 24: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/24.jpg)
Benefits of Conduits
• Blackbox protocol stack configuration
• Highly object oriented
• Automated data transport through stack
• Session management
• Scalable through the use of threads
![Page 25: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/25.jpg)
Disadvantages
• Does not support building protocols very much
• Object orientation has a performance price
![Page 26: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/26.jpg)
Conduits & guidelines
• Conduits addresses two domains– protocol stack configuration– protocol implementation
• Loose coupling
• Blackbox configuration
![Page 27: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/27.jpg)
Implementing a Protocol
• Protocols can be represented as Finite State Machines
• Conduits provides the State Pattern to implement protocols
![Page 28: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/28.jpg)
State Pattern
St at eC onte xt S1
S 2 S 3
S 4 S5
S 6
a state machine
![Page 29: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/29.jpg)
An example
SYN R ec eiv e d S YN Sen t
E s tab li she d
FI N W ait ( 1 )
FI N W ait ( 2 ) C los i ng
TI M E W ait C lo sed
C lo se W ait
L as t A ck
C lo sed
L is ten
Pa ss iv e o p encr ea te T C B
C lo sed e lete TC B
C l osed e lete TC B
Ac tiv e Op e ncr eate TC Bsen d SYN
S en dse n d S YN
rcv SY Nsnd SY N, A C K
rc v SYNsen d AC K
C lo sesen d FI N
R ec eiv e A C K o f FIN
R ece iv ed AC K o f S YNR ec eiv e SYN , AC Ksen d AC K
C lo sesen d FI N
R ec eiv e FINsen d AC K
C lo seSe nd FI N
R e ce iv e FI Nse n d A C K
R ec eiv e A C K o f FI NR e cei ve AC K o f FI N
T im eo u t ( 2m s)d el ete T C B
R e ce iv e FI NS en d AC K
![Page 30: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/30.jpg)
Problems with the state pattern
• Complex implementation
• Hard to maintain implementations
![Page 31: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/31.jpg)
Possible causes
• State pattern does not support all FSM concepts (states, input/output events, transitions, behavior)– states, transitions, events and behavior are put
in a single State class
• No blackbox way of building a FSM– you have to inherit from base classes
![Page 32: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/32.jpg)
Finite State Machine Instantiation
• Necessary when the same FW is needed more than once in a system
• Example: – TCP can have thousands of connections at the
same time.– Each connection has it’s own FSM
• Not all objects have to be replicated
![Page 33: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/33.jpg)
An alternative solution
aContext
aState aSta teaTransition
anEvent
anAction
sends anEvent
triggers
has ahas a
has a has a
has aexecutes
se ts state/uses context
![Page 34: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/34.jpg)
An example
TS S
A
Context
E
![Page 35: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/35.jpg)
Advantages
• Blackbox configuration
• More support for FSM concepts
• Easier to maintain
• More reuse possibilities
![Page 36: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/36.jpg)
Implementation
• Blackbox framework for FSMs– object representation of FSM concepts
• Configuration tool– uses xml specification– separates behavior from control flow.
![Page 37: Design Principles for Reusable, Composable and Extensible Frameworks Jilles van Gurp](https://reader038.vdocuments.us/reader038/viewer/2022102906/56649ce25503460f949ad4c1/html5/thumbnails/37.jpg)
Results
• Guidelines
• Analysis of existing frameworks
• Enhanced State Pattern
• Implementation
• Small Evaluation of guideline usage and effectiveness in implementation