Architecture As Language
-
Upload
guest2e0b3a -
Category
Technology
-
view
1.433 -
download
3
Transcript of Architecture As Language
![Page 2: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/2.jpg)
![Page 3: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/3.jpg)
About
![Page 4: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/4.jpg)
![Page 5: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/5.jpg)
1
What is a language?
![Page 6: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/6.jpg)
Set of well-defined terms
INFORMAL
![Page 7: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/7.jpg)
Stakeholdersagree on meaning
INFORMAL
![Page 8: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/8.jpg)
MetamodelFORMAL
![Page 9: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/9.jpg)
MetamodelGrammar
FORMAL
![Page 10: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/10.jpg)
MetamodelGrammarNotation
FORMAL
![Page 11: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/11.jpg)
A DSL is a focussed, processable
language for describing a specific
concern when building a system in a
specific domain. The abstractions and
notations used are natural/suitable for
the stakeholders who specify that
particular concern.
![Page 12: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/12.jpg)
![Page 13: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/13.jpg)
2
Architecture DSLs
![Page 14: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/14.jpg)
Architecture
![Page 15: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/15.jpg)
As youunderstandand develop
yourArchitecture…
![Page 16: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/16.jpg)
Develop a language toexpress it!
![Page 17: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/17.jpg)
Language resemblesarchitectural concepts
![Page 18: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/18.jpg)
We express theapplication(s) with
the language.
![Page 19: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/19.jpg)
DEMO I
An architectural DSL for embedded systems
![Page 20: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/20.jpg)
![Page 21: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/21.jpg)
3
Benefits
![Page 22: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/22.jpg)
Clear Understandingfrom building the
language
![Page 23: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/23.jpg)
UnambigiousVocabulary
![Page 24: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/24.jpg)
Concepts independentfrom Technology
![Page 25: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/25.jpg)
Programming Model canbe defined based on
Conceptual Arcitecture
![Page 26: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/26.jpg)
Architecture „executable“(i.e. more than rules and docs)
![Page 27: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/27.jpg)
![Page 28: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/28.jpg)
4
Why Textual?
![Page 29: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/29.jpg)
4
… or: why not graphical?
![Page 30: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/30.jpg)
Languages and Editorsare easier to build
![Page 31: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/31.jpg)
Languages and Editorsare easier to build
Evolve Language and simple editoras you understand and discuss the
architecture, in real time!
![Page 32: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/32.jpg)
Integrates easily withcurrent infrastructure:CVS/SVN diff/merge
![Page 33: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/33.jpg)
Model evolutionis trivial, you canalways use grep.
adapting existingmodels as the DSL evolves
![Page 34: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/34.jpg)
Many Developers prefer textual
notations
![Page 35: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/35.jpg)
When a graphicalnotation
is better, you can
visualize.
![Page 36: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/36.jpg)
![Page 37: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/37.jpg)
5
Tooling
![Page 38: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/38.jpg)
Several tools available.Example: oAW Xtext
![Page 39: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/39.jpg)
Specify Grammar
![Page 40: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/40.jpg)
Antlr Grammar andParser is generated
from this specification
![Page 41: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/41.jpg)
Generated Metamodel
![Page 42: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/42.jpg)
Specify Constraints
![Page 43: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/43.jpg)
Generated Editor
![Page 44: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/44.jpg)
DEMO II
The language-aware editor for our DSL
![Page 45: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/45.jpg)
![Page 46: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/46.jpg)
6
Generating Code
![Page 47: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/47.jpg)
Since we alreadyhave a formal model….
![Page 48: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/48.jpg)
Generate APIMaps Architectural Concepts to
Implementation language (non-trivial!)
Im plem entation
Code
Program m ing
M odel A PI
Runtim e Infrastructure
(Platform /M iddlew are)
G lue Code
![Page 49: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/49.jpg)
ImplementationImplementation only depends on
the generated programming model API
Im plem entation
Code
Program m ing
M odel A PI
Runtim e Infrastructure
(Platform /M iddlew are)
G lue Code
![Page 50: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/50.jpg)
Programming ModelGenerated API + Usage Idioms
Completely Technology-Independent
Im plem entation
Code
Program m ing
M odel A PI
Runtim e Infrastructure
(Platform /M iddlew are)
G lue Code
![Page 51: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/51.jpg)
Runtime InfrastructureSelect based on fit wrt. to architectural
concepts and non-functional requirements
Im plem entation
Code
Program m ing
M odel A PI
Runtim e Infrastructure
(Platform /M iddlew are)
G lue Code
![Page 52: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/52.jpg)
Glue CodeAka Technology Mapping CodeMaps API to selected platform
Im plem entation
Code
Program m ing
M odel A PI
Runtim e Infrastructure
(Platform /M iddlew are)
G lue Code
![Page 53: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/53.jpg)
Glue CodeContains Configuration Files for Platform
Might require „mix in models“
Im plem entation
Code
Program m ing
M odel A PI
Runtim e Infrastructure
(Platform /M iddlew are)
G lue Code
![Page 54: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/54.jpg)
Several PlatformsDifferent Platforms, not Languages
Support for Scaling (non-functional req)
Im plem entation
Code
Program m ing
M odel A PI
Runtim e Infrastructure
(Platform /M iddlew are)
G lue Code
Platform 2
G lue Code 2
Testing!
![Page 55: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/55.jpg)
Benefits:More Efficient Impl.Technology IndependentConsistence/QualityArchitecture-Conformance
![Page 56: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/56.jpg)
Code Gen Sequence
Im plem entation
Code
Program m ing
M odel A PI
P latform
G lue Code
1) Generate API
2) Write Impl Code
3) Select Platform
4) Generate Glue Code
![Page 57: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/57.jpg)
Separate Modelsfor stuff relevant for the APIvs. system/deployment stuff
Program m ing
M odel A PI
M odel 1
(Types)
M odel 2
(System ,
D eploym ent)
G lue Code
![Page 58: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/58.jpg)
DEMO III
Generating C for thetarget device
![Page 59: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/59.jpg)
![Page 60: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/60.jpg)
7
Expressing Variability
![Page 61: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/61.jpg)
Different Variantsof the Systemfor different customers.
![Page 62: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/62.jpg)
How do I express
this in themodels?
![Page 63: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/63.jpg)
Negative Variability:Conditionally taking
something away
![Page 64: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/64.jpg)
Negative Variability:Conditionally taking
something away
Feature Models
![Page 65: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/65.jpg)
System
Failover Monitoring
Graceful
DegradationRedundancy
Data
Management
Centralized Distributed
![Page 66: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/66.jpg)
component DelayCalculator {
provides default: IDelayCalculator
requires screens[0..n]: IInfoScreen
provides mon: IMonitoring feature monitoring
}
![Page 67: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/67.jpg)
component DelayCalculator {
provides default: IDelayCalculator
requires screens[0..n]: IInfoScreen
provides mon: IMonitoring feature monitoring
}
System
Failover Monitoring
Graceful
DegradationRedundancy
Data
Management
Centralized Distributed
![Page 68: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/68.jpg)
namespace monitoringStuff feature monitoring {
component MonitoringConsole {
requires devices:[*]: IMonitor
}
instance monitor: MonitoringConsole
dynamic connect monitor.devices query {
type = IMonitor
}
}
![Page 69: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/69.jpg)
![Page 70: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/70.jpg)
Positive Variability:Conditionally adding
something to a minimal core
![Page 71: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/71.jpg)
Positive Variability:Conditionally adding
something to a minimal core
Aspects
![Page 72: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/72.jpg)
namespace monitoring {
component MonitoringConsole …
instance monitor: …
dynamic connect monitor.devices …
aspect (*) component {
provides mon: IMonitoring
}
}
![Page 73: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/73.jpg)
component DelayCalculator {
…
}
component AircraftModule {
…
}
component InfoScreen {
…
}
![Page 74: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/74.jpg)
component DelayCalculator {
…
}
component AircraftModule {
…
}
component InfoScreen {
…
}component DelayCalculator {
…
provides mon: IMonitoring
}
component AircraftModule {
…
provides mon: IMonitoring
}
component InfoScreen {
…
provides mon: IMmonitoring
}
aspect (*) component {
provides mon: IMonitoring
}
![Page 75: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/75.jpg)
Weaver is generic:
works with all (container)model elements
![Page 76: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/76.jpg)
aspect (*) <type>all instances of type
aspect (tag=bla) <type>all instances with tag bla
aspect (name=S*) <type>all instances whose namestarts with S
![Page 77: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/77.jpg)
namespace monitoring feature monitoring {
component MonitoringConsole …
instance monitor: …
dynamic connect monitor.devices …
aspect (*) component {
provides mon: IMonitoring
}
}
AO + Features
![Page 78: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/78.jpg)
DEMO III
Adding Variability and connectivity to a feature model to the previous DSL
![Page 79: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/79.jpg)
![Page 80: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/80.jpg)
Based on actualpractical experience
![Page 81: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/81.jpg)
Currently in use withfour of my customers
![Page 82: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/82.jpg)
Benchmarked bysuitability for use in today‘s projects
![Page 83: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/83.jpg)
![Page 84: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/84.jpg)
THE END.Thank you.
Questions?
![Page 85: Architecture As Language](https://reader034.fdocuments.net/reader034/viewer/2022052215/559b6de11a28abe75a8b4630/html5/thumbnails/85.jpg)