SlideShare una empresa de Scribd logo
1 de 85
Architecture As Language Andreas Graf MarkusVoelter www.itemis.degraf@itemis.de www.voelter.devoelter@acm.org
About
1 What is a language?
INFORMAL Set of well-definedterms
INFORMAL Stakeholders agree on meaning
FORMAL Metamodel
FORMAL Metamodel Grammar
FORMAL Metamodel Grammar Notation
A DSL is a focussed, processablelanguagefor describing a specific concernwhen building a system in a specific domain. Theabstractionsandnotationsused are natural/suitablefor the stakeholderswho specify that particular concern.
2 Architecture DSLs
Architecture DSL
As you understand anddevelopyour Architecture…
Develop a languageto express it!
Language resemblesarchitecturalconcepts
We express theapplication(s) withthelanguage.
DEMO I An architectural DSL for embedded systems
3 Benefits
Clear Understanding frombuildingthelanguage
Unambigious Vocabulary
Conceptsindependent from Technology
Programming Model canbedefinedbased on ConceptualArcitecture
Architecture„executable“ (i.e. morethanrulesanddocs)
4 Why Textual?
4 … or:why not graphical?
Languagesand Editors areeasiertobuild
Languagesand Editors areeasiertobuild Evolve Language and simple editorasyou understand anddiscussthearchitecture, in real time!
Integrateseasilywithcurrentinfrastructure: CVS/SVN diff/merge
Model evolutionistrivial, youcanalwaysusegrep. adaptingexistingmodelsasthe DSL evolves
Many Developers  prefertextualnotations
When a graphical notation isbetter, youcanvisualize.
5 Tooling
Severaltoolsavailable. Example:oAWXtext
SpecifyGrammar
AntlrGrammarandParserisgeneratedfromthisspecification
Generated Metamodel
SpecifyConstraints
Generated Editor
DEMO II The language-aware editor for our DSL
6 Generating Code
Sincewealready have a formal model….
Generate API MapsArchitecturalConceptsto Implementationlanguage (non-trivial!)
Implementation Implementationonlydepends onthegeneratedprogramming model API
Programming Model Generated API + Usage Idioms Completely Technology-Independent
Runtime Infrastructure Select based on fit wrt. toarchitectural conceptsand non-functionalrequirements
Glue Code Aka Technology Mapping Code Maps API toselectedplatform
Glue Code ContainsConfiguration Files forPlatform Mightrequire „mix in models“
SeveralPlatforms Different Platforms, not Languages Support forScaling (non-functionalreq) Testing!
Benefits:More EfficientImpl. Technology Independent Consistence/Quality Architecture-Conformance
Code Gen Sequence 1) Generate API 2) Write Impl Code 3) Select Platform 4) GenerateGlue Code
Separate Models forstuff relevant forthe API vs. system/deploymentstuff
DEMO III Generating C for the target device
7 Expressing Variability
Different Variants ofthe System for different customers.
How do I  express this in themodels?
Negative Variability: Conditionallytakingsomethingaway
Negative Variability: Conditionallytakingsomethingaway Feature Models
componentDelayCalculator { provides default: IDelayCalculator requires screens[0..n]: IInfoScreen providesmon: IMonitoringfeature monitoring }
componentDelayCalculator { provides default: IDelayCalculator requires screens[0..n]: IInfoScreen providesmon: IMonitoringfeature monitoring }
namespacemonitoringStufffeature monitoring {   componentMonitoringConsole { requires devices:[*]: IMonitor   } instance monitor: MonitoringConsole dynamicconnectmonitor.devicesquery {     type = IMonitor   }   }
Positive Variability:Conditionallyaddingsomethingto a minimal core
Positive Variability:Conditionallyaddingsomethingto a minimal core Aspects
namespacemonitoring {   componentMonitoringConsole … instance monitor: … dynamicconnectmonitor.devices …   aspect (*) component { providesmon: IMonitoring   } }
componentDelayCalculator {   … } componentAircraftModule {   … } componentInfoScreen {   … }
componentDelayCalculator {   … } componentAircraftModule {   … } componentInfoScreen {   … } componentDelayCalculator {   … providesmon: IMonitoring } componentAircraftModule {   … providesmon: IMonitoring } componentInfoScreen {   … providesmon: IMmonitoring } aspect (*) component { providesmon: IMonitoring  }
Weaver isgeneric: workswith all (container) model elements
aspect (*) <type>     all instancesoftype  aspect (tag=bla)<type>   all instanceswith tag bla aspect (name=S*) <type> all instanceswhosenamestartswith S
AO + Features namespacemonitoring feature monitoring {   componentMonitoringConsole … instance monitor: … dynamicconnectmonitor.devices …   aspect (*) component { providesmon: IMonitoring   } }
DEMO III Adding Variability and connectivity to a feature model to the previous DSL
Based on actualpracticalexperience
Currently in usewithfourofmycustomers
Benchmarkedby suitabilityforuse in today‘sprojects
THE END. Thankyou. Questions?
Architecture As Language

Más contenido relacionado

Similar a Architecture As Language

Sofwear deasign and need of design pattern
Sofwear deasign and need of design patternSofwear deasign and need of design pattern
Sofwear deasign and need of design pattern
chetankane
 
04 iec t1_s1_oo_ps_session_05
04 iec t1_s1_oo_ps_session_0504 iec t1_s1_oo_ps_session_05
04 iec t1_s1_oo_ps_session_05
Niit Care
 
DotNet Introduction
DotNet IntroductionDotNet Introduction
DotNet Introduction
nandhu8124
 
Dot Net Fundamentals
Dot Net FundamentalsDot Net Fundamentals
Dot Net Fundamentals
LiquidHub
 
Concepts of Asp.Net
Concepts of Asp.NetConcepts of Asp.Net
Concepts of Asp.Net
vidyamittal
 
.Net framework
.Net framework.Net framework
.Net framework
Raghu nath
 

Similar a Architecture As Language (20)

The Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelFThe Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelF
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
Wi Fi documantation
Wi Fi documantationWi Fi documantation
Wi Fi documantation
 
Sofwear deasign and need of design pattern
Sofwear deasign and need of design patternSofwear deasign and need of design pattern
Sofwear deasign and need of design pattern
 
Designingapplswithnet
DesigningapplswithnetDesigningapplswithnet
Designingapplswithnet
 
04 iec t1_s1_oo_ps_session_05
04 iec t1_s1_oo_ps_session_0504 iec t1_s1_oo_ps_session_05
04 iec t1_s1_oo_ps_session_05
 
Slide DevSecOps Microservices
Slide DevSecOps Microservices Slide DevSecOps Microservices
Slide DevSecOps Microservices
 
DotNet Introduction
DotNet IntroductionDotNet Introduction
DotNet Introduction
 
DOTNET
DOTNETDOTNET
DOTNET
 
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
 
Component based software development
Component based software developmentComponent based software development
Component based software development
 
Online lg prodect
Online lg prodectOnline lg prodect
Online lg prodect
 
Dot Net Fundamentals
Dot Net FundamentalsDot Net Fundamentals
Dot Net Fundamentals
 
Concepts of Asp.Net
Concepts of Asp.NetConcepts of Asp.Net
Concepts of Asp.Net
 
.Net framework
.Net framework.Net framework
.Net framework
 
OpenDolphin with GroovyFX Workshop at GreachConf, Madrid
OpenDolphin with GroovyFX Workshop at GreachConf, MadridOpenDolphin with GroovyFX Workshop at GreachConf, Madrid
OpenDolphin with GroovyFX Workshop at GreachConf, Madrid
 
Dynamo with robot structural
Dynamo with robot structuralDynamo with robot structural
Dynamo with robot structural
 
Mayuresh Warkhandkar_Resume
Mayuresh Warkhandkar_ResumeMayuresh Warkhandkar_Resume
Mayuresh Warkhandkar_Resume
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Último (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Architecture As Language