Evolve – Advanced Topics
description
Transcript of Evolve – Advanced Topics
![Page 1: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/1.jpg)
Andrew McVeighJeff MageeJeff KramerImperial College, LondonFeb 2010
![Page 2: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/2.jpg)
ContentsBrief overview of the formal model structures
Advanced extensibility featuresPort type inferenceHyperports, factories, state machines
The Evolve toolset
Future work
![Page 3: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/3.jpg)
![Page 4: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/4.jpg)
StructureModel is described in the Alloy logic language [Jac02]Built up in layers
Stratum, resemblance, replacement, deltas
Components & interfaces
Structural rules
![Page 5: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/5.jpg)
Strata
sig Stratum{
dependsOn: set Stratum,nestedStrata: set Stratum,exportsStrata: set Stratum,ownedElements: set Element,...
B
C
D
A
![Page 6: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/6.jpg)
CD
Desk̀(replaces :: desk 1.0 :: Desk)
combined
Desk̀(replaces :: desk 1.0 :: Desk)
desk 1.0
Desk
turntable
Desk̀(replaces :: desk 1.0 :: Desk)
Desk
Desk̀ (CD)
Desk̀ (combined)
Desk̀ (turntable)
abstract sig Element{
home: Stratum,replaces: lone Element,resembles: set Element,resembles_e: Element -> Stratum,
...
Elements and Resemblance
![Page 7: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/7.jpg)
Components & Interfacessig Component extends Element {
parts: lone Parts/Deltas,ports: lone Ports/Deltas,connectors: lone Connectors/Deltas,attributes: lone Attributes/Deltas,implementation: lone Implementation/Deltas,
...
sig Interface extends Element {operations: lone Operations/Deltas,implementation: lone Implementation/Deltas,
...
![Page 8: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/8.jpg)
• Port type inference• Hyperports• Factories• State Machines
![Page 9: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/9.jpg)
Inferring port typesPorts of composites have their interfaces inferred
Propagates local changes globally without further deltasExposes interfaces on one port back to “surface”
IBaseIBase
B
C
: A : B
IMore
A
IMore
![Page 10: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/10.jpg)
Cutting through the hierarchyHyperports are auto-connected down the hierarchyMore flexible & general singleton approach [Rum96]
![Page 11: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/11.jpg)
Isomorphic factoriesComponents with lazily instantiated insides [MDEK95]
Use with resemblance and evolutionCan be nested arbitrarily
TransitionsWindowFactory
extension : String
: TransitionsWindow
extension = extension
IWindow
window
IActionListener IJCheckBoxMenuItem
bigFont
ICreate
creator
![Page 12: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/12.jpg)
Executable state machinesComponent variant of state pattern
Big switch componentUse with resemblance and evolutionCombine with conventional components
Advantages over OO approachDon’t get me started!Explicit transitionsExtensible for states and transitionsRich context available for each state
![Page 13: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/13.jpg)
Executable state machines (2)
RentalState
: Start
a : Available r : Rented
IRentalEvent
ITransition
in
stateEvents
purchased
return rental
rent
![Page 14: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/14.jpg)
(+ current focus on Java)
![Page 15: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/15.jpg)
![Page 16: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/16.jpg)
Diagrams versus underlying models
![Page 17: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/17.jpg)
Code generationLossless forward generation
Create bean setters and getters (ports too)Reverse generation
Import beans as full componentsNone of this is mandatory ;-)
Bean.java
Beans.jar
![Page 18: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/18.jpg)
Importing beans as components
RentalCarDetails.java
IRentalCarDetails
RentalCarDetails
model : Stringpurchased : Date
IRenterDetails
renter
details
![Page 19: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/19.jpg)
Running an Evolve application
OR
Generate backbone &run in BB interpreter...
Generate Java wiring code
![Page 20: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/20.jpg)
Other featuresScales to very large models
Diagrams are updated lazilyLessons learnt from UML toolsUses Eclipse UML2/EMF metamodel
Support top-down and bottom-up design approachTolerant of errors in design phase
Team editionMultiple developers working on same model concurrentlyAdvanced object database
![Page 21: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/21.jpg)
Capabilities and challenges
![Page 22: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/22.jpg)
Extensible feature diagramsUsed to define requirements
Product line techniqueResemblance and replacement to extend feature graph
![Page 23: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/23.jpg)
Extensible protocols & goalsBased on behavior protocols for components [PV02]
Aim: allow extension to enforce semantic guarantees
Sequence diagram, ports are actorsCurrently convert to labeled transition systemAnalyse via LTSA [MK06]Find a way to allow extension to “extend”Automatically assemble sequence diagram of composites
![Page 24: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/24.jpg)
Extensible protocols (2)
![Page 25: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/25.jpg)
Backwards compatibilityReverse dependencies
Compresses deltasOlder systems are now deltas against newer system
![Page 26: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/26.jpg)
Replacement for plugin architectureBest of both worlds...
application
DeveloperUser
![Page 27: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/27.jpg)
Some other areas...Reengineering a legacy application
Actually easier than it looks
Active components for concurrencyROOM actor model? [SGW94]
Apply to different environmentsAndroidC#? C++?Hierarchical grid workflows
![Page 28: Evolve – Advanced Topics](https://reader036.fdocuments.net/reader036/viewer/2022081506/56814c58550346895db9768e/html5/thumbnails/28.jpg)
References Jac02
Jackson, D.Alloy: A Lightweight Object Modelling NotationACM Transactions on Software Engineering and Methodology (TOSEM), ACM Press, 2002, 11, 256-290
Rum96Rumbaugh, J.OMT Insights: Perspectives on ModelingJournal of Object-Oriented Programming, Cambridge University Press, 1996, 123
MDEK9Magee, J.; Dulay, N.; Eisenbach, S. & Kramer, J.Specifying Distributed Software ArchitecturesEsec, 1995, 989, 137-153
MK06Concurrency (State Models and Java Programs)Magee, J. & Kramer, J.John Wiley and Sons Ltd, 2006
PV02Behavior Protocols for Software Components Plasil, F. & Visnovsky, S.IEEE Transactions on Software Engineering, IEEE Press, 2002
SGW94Real-Time Object-Oriented ModelingSelic, B.; Gullekson, G. & Ward, P.John Wiley & Sons, 1994