SlideShare a Scribd company logo
Domain Specific LanguagesUsingforProduct Line EngineeringSPLC 2009 TutorialMarkusVoelterIndependent/Itemiswww.voelter.devoelter@acm.org
VariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & Wrapup
VariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & Wrapup
Variability… differencesamongproducts in PL
Variation Point… a pointwhere    a variationcanoccur… must beboundforeachproduct… bind when?… bind how?
Binding Time
VariabilityMechanismsRemoval… optionallytakeawayfromoverallwhole
VariabilityMechanismsRemoval… optionallytakeaway    from overall wholeChallenge:overallwholecanget bigandunwieldy
VariabilityMechanismsInjection… optionallyaddto    minimal core
VariabilityMechanismsInjection… optionallyaddto    minimal coreChallenge:howtopointintothecoreandaddsomethingtoit
VariabilityMechanismsParametrization… definevaluesforpredefinedparams
VariabilityMechanismsParametrization… definevaluesforpredefined paramsChallenge:typesforparameterscanbe non trivial (DSLs)
Configuration vs. CustomizationVariability
VariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & Wrapup
Configuration… selectingoptions… settingparamvalues
ConfigurationFeature Models
ConfigurationFeature ModelsRobin DR-400An aircraft with a low wing, piston engine and made of metal, wood and cloth
ConfigurationFeature ModelsAirbus A 320An aircraft with low wing, jet engine(s) and made of metal.
ConfigurationFeature ModelsSchleicher ASW 27An aircraft with shoulder wing, no engine and made of plastic
ConfigurationFeature Models
ConfigurationFeature Models
VariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & Wrapup
Customization… „real languages“… instantiation… connections
CustomizationLanguages
CustomizationLanguages
CustomizationLanguages
CustomizationLanguages
VariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & Wrapup
programmingstartedclosetothehardwareabstractionscomputingchips
abstractionscomputingbits
abstractionscomputing   C
abstractionscomputing?   Java
abstractionscomputing?   SQL
Model-Driven Development in the context of Software Product Lines
?
Model-Driven Development in the context of Software Product Lines
generalpurpose
domainspecific
tailormadeeffective++specialized, limitedusedbyexpertstogetherwithotherspecializedtools
DSLA DSL is a focussed, processablelanguage for describing a specific concern when building a system in a specific domain. The abstractions and notations used are natural/suitablefor the stakeholders who specify that particular concern.
execute?
map
DSL Program(aka Model)mapautomated!GPL Program
mapGenerationTransformationCompilationInterpretation
Model-Driven Development in the context of Software Product Lines
Automationfaster, deterministic
Increased Qualitywell definedstructuresallthroughthesystem
Meaningful Validationmoresemantics in the model
CaptureDomain Knowledgeformalizedintolanguagesandmodels
SuitableNotationstextual, graphical, tabular
Technology Independencegenerate „technologygluecode“
Abstraction w/oRuntime Overheadgenerator „optimizesaway“
Capture ImplementationStrategyin thegenerators
Everythingis a modelincludingforexamplehardware (some) hardware
VariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & Wrapup
Model-Driven Development in the context of Software Product Lines
EMFEcore meta meta model         +Editing  Transactions    Validation       Query         Distribution/Persistence
EMFMetamodel As Treecan also be editedas UML-like diagram
EMFConstraintswith OCLand dialects
GMFGraphical Box/Line editors based on EMF
TMF / XtextBuilding Textual Editors
TMF / XtextBuilding Textual Editors
M2MModel-to-Model Transformations    INRIA’s ATL    QVTXtend
M2TModel-to-Text Transformations    JET: Java Emitter         TemplatesXpand: oAW’s        template engine
M2TModel-to-Text Transformations     Extensions to modularize complex expressions
openArchitectureWarewww.openarchitectureware.orgOne Stop Toolkit for DSLs + XVersion 5.0 is currentLively ecosystem of tools and extensionsProven track record in various domains & project contextsStable, productive and helpful developer, support and user communitiesIntegration with Eclipse:Part of Eclipse, Working GroupUses EMF as a basisGraphical editors based on GMFAll editors and tooling based on Eclipse
openArchitectureWare
SpecifyGrammar
AntlrGrammarandParserisgeneratedfromthisspecification
Generated Metamodel
SpecifyConstraints
Generated Editor
Generated EditorCode Completion
Generated EditorSyntax ColoringCustom KeywordColoring
Generated EditorRealtimeConstraintValidation
Generated EditorCustomizableOutlines
Generated EditorCode Folding
Generated EditorGoto Definition Find ReferencesCross-File ReferencesModel as EMF
Generated Editor
XtextOverview
DEMOBuilding a sample textual DSL and code generator for a simple domain using Eclipse TMF/openArchitectureWare
Another Tool…?OSLO
Another Tool…?
also do…IntelliJ IDEAResharper
released inQ3 2009licensed underApache 2.0
Build new standalone DSLsBuild DSLs that reuse partsof other languagesJava++(MPS comes with BaseLanguage)extend base languagebuild DSLs that reuse partsof BaseLanguage
Language Extension ExampleOldNewJavaJava + ExtensionReadWriteLock l = …l.readLock().lock();try {  //code} finally {  l.readLock().unlock();}ReadWriteLock l = …lock (l) {  //code}
Structure  Editor   Typesystem  Generator
Structure  Editor   Typesystem  Generator
Structure  Editor   Typesystem  Generator
Structure  Editor   Typesystem  Generator
Structure  Editor   Typesystem  Generator
Structure  Editor   Typesystem  Generator
Structure  Editor   Typesystem  Generator
Structure  Editor   Typesystem  Generator
Language Extension ExampleResult behaves like a nativebase language construct
Language Extension ExampleResult behaves like a nativebase language construct
Language Extension ExampleTranslated to regular Java codebased on the generatorpackage jaxdemo.sandbox.sandbox;import java.util.concurrent.locks.Lock;public class DemoClass {  private Lock lock;  public DemoClass() {    try {      this.getLock().lock();      SharedResouce.instance().doSomething();    } finally {      this.getLock().unlock();    }  }  private Lock getLock() {   return this.lock;  }}
Example LanguagesUI Language
Example LanguagesHTML Templates
Example LanguagesPersistent Classes
VariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & Wrapup
Two Levelsproblemspace   vs. softwarespaceProblem Space:ConfigurationSoftware Space:Customization
Two Levelsproblemspace   vs. softwarespace
Two LevelsRemoval#ifdefined (ACE_HAS_TLI)staticssize_tt_snd_n(       ACE_HANDLE handle,constvoid *buf, size_tlen,        int flags,ACE_Time_Value *timeout = 0,size_t *bytes_transferred = 0);#endif /* ACE_HAS_TLI */
Model-BasedImplementation… customization in    problem space… Problem-Space DSL
Model-BasedImplementation
Model-BasedImplementation
MDSD - Thumbnail
MD-PLE - Thumbnailfewer!
Two LevelsRemoval
Two LevelsRemoval
Two LevelsRemoval
Two LevelsRemoval
Two LevelsInjection
Two LevelsInjectionaspect (*) compnent {providesmon: IMonitoring }
Two LevelsRemoval+Injection
Manual CodeVariabilitypublic class LightDriverImplementation extends LightDriverImplBase {  @Override  protected String getIdInternal() {    return getConfigParamValueForId();  }   …//# dimmableLights  @Override  protected int setLightLevelInternal(int level) {    state().setEffectiveLightLevel(level);    return level;  }//~# dimmableLights}
http://dslvariantmanagement.googlecode.com
DEMOExtending the sample DSL to include feature-based variability connected to an external feature model
VariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & Wrapup
MD-PLE – Thumbnail IImoreoptions
TransformationVariabilitycreate System transformPs2Cbd( Building building ):  …hasFeature("burglarAlarm") ? ( handleBurglarAlarm() -> this) : this;handleBurglarAlarm( System this ):   let conf = createBurglarConfig(): (    configurations.add( conf ) ->    …    conf.connectors.add( connectSimToPanel( createSimulatorInstance(),                                             createControlPanelInstance() ) ) ->hasFeature( "siren" ) ? conf.addAlarmDevice("AlarmSiren") : null ->hasFeature( "bell" ) ? conf.addAlarmDevice("AlarmBell") : null ->hasFeature( "light" ) ? conf.addAlarmDevice("AlarmLight") : null);
TransformationVariability
GeneratorVariability
DEMOIntroducing Variability into the Code Generator built before
VariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & Wrapup
DSLs can be used to effectivelydescribe customization variab.Transformation and Generationcan be used to map PS to SSConfiguration and Customizationcan be sensibly combinedVarious Tools are available,http://eclipse.org/modelinghttp://dslvariantmanagement.googlecode.com/
Domain Specific LanguagesUsingVariabilityConfigurationCustomizationMDD IntroMDD ToolingModel VariabilityTransformation Var.Summary & WrapupforProduct Line EngineeringTHE END.Thankyou.Questions?MarkusVoelterIndependent/Itemiswww.voelter.devoelter@acm.org

More Related Content

PDF
Executable modeling & dynamic adaptation
PPTX
PDF
Close Encounters in MDD: when models meet code
PDF
Change-driven model transformations
PDF
invokedynamic: Evolution of a Language Feature
PDF
Practical C++ Generative Programming
PDF
Practical Multi-language Generative Programming
PPTX
Whats New in Visual Studio 2012 for C++ Developers
Executable modeling & dynamic adaptation
Close Encounters in MDD: when models meet code
Change-driven model transformations
invokedynamic: Evolution of a Language Feature
Practical C++ Generative Programming
Practical Multi-language Generative Programming
Whats New in Visual Studio 2012 for C++ Developers

What's hot (20)

PPTX
L05 Frameworks
PPS
C programming session 08
PPTX
imperative programming language, java, android
 
PDF
Yet another DSL for cross platforms mobile development
PPTX
Evolution of Patterns
PDF
Extending and scripting PDT
PDF
System Verilog Functional Coverage
PPS
10 iec t1_s1_oo_ps_session_14
PDF
Chapter 13.1.11
PDF
BOM2UML: Integrating BOM Specifications into UML-based Development Environments
PPS
05 iec t1_s1_oo_ps_session_07
PPTX
L06 process design
PPTX
Simple insites into JVM
PPS
07 iec t1_s1_oo_ps_session_10
PPS
04 iec t1_s1_oo_ps_session_05
PDF
Doulos coverage-tips-tricks
ODP
Method Handles in Java
PPS
06 iec t1_s1_oo_ps_session_08
PPS
01 iec t1_s1_oo_ps_session_01
PDF
OOPSLA02 BehavioralSemantics.ppt
L05 Frameworks
C programming session 08
imperative programming language, java, android
 
Yet another DSL for cross platforms mobile development
Evolution of Patterns
Extending and scripting PDT
System Verilog Functional Coverage
10 iec t1_s1_oo_ps_session_14
Chapter 13.1.11
BOM2UML: Integrating BOM Specifications into UML-based Development Environments
05 iec t1_s1_oo_ps_session_07
L06 process design
Simple insites into JVM
07 iec t1_s1_oo_ps_session_10
04 iec t1_s1_oo_ps_session_05
Doulos coverage-tips-tricks
Method Handles in Java
06 iec t1_s1_oo_ps_session_08
01 iec t1_s1_oo_ps_session_01
OOPSLA02 BehavioralSemantics.ppt
Ad

Viewers also liked (6)

PDF
Construire une ligne de produit logiciel "toyotisme ou fordisme" ?
PPTX
Software Product Line
PDF
Software Product Lines
PPTX
Software product line
PDF
Software Product Lines
PDF
7 - Architetture Software - Software product line
Construire une ligne de produit logiciel "toyotisme ou fordisme" ?
Software Product Line
Software Product Lines
Software product line
Software Product Lines
7 - Architetture Software - Software product line
Ad

Similar to Model-Driven Development in the context of Software Product Lines (20)

PDF
Jvm internals
PDF
6 - Architetture Software - Model transformation
PDF
Overcoming The Impedance Mismatch Between Source Code And Architecture
PPT
CG2010 Tailored Code Generators
PPTX
Introduction To MDD
PPTX
Real world DSL - making technical and business people speaking the same language
PPT
MDE=Model Driven Everything (Spanish Eclipse Day 2009)
PDF
The Design, Evolution and Use of KernelF
PPTX
KEY
Codegeneration Goodies
PDF
Domain specific languages and Scala
PDF
Miso
PDF
Eclipse Labs for Improving DSL Development - Eclipse DemoCamp Juno 2012 in Na...
PDF
Model driven software engineering in practice book - Chapter 9 - Model to tex...
PDF
Miso-McGill
PDF
MoDisco EclipseCon2010
PPT
Code Generation with MDA and xUML
PPTX
Does Java Have a Future After Version 8? (Belfast JUG April 2014)
PDF
Enabling White-Box Reuse in a Pure Composition Language
Jvm internals
6 - Architetture Software - Model transformation
Overcoming The Impedance Mismatch Between Source Code And Architecture
CG2010 Tailored Code Generators
Introduction To MDD
Real world DSL - making technical and business people speaking the same language
MDE=Model Driven Everything (Spanish Eclipse Day 2009)
The Design, Evolution and Use of KernelF
Codegeneration Goodies
Domain specific languages and Scala
Miso
Eclipse Labs for Improving DSL Development - Eclipse DemoCamp Juno 2012 in Na...
Model driven software engineering in practice book - Chapter 9 - Model to tex...
Miso-McGill
MoDisco EclipseCon2010
Code Generation with MDA and xUML
Does Java Have a Future After Version 8? (Belfast JUG April 2014)
Enabling White-Box Reuse in a Pure Composition Language

More from Markus Voelter (20)

PPTX
Consulting
PDF
Build your own Language - Why and How?
PDF
Deklarative Smart Contracts
PDF
Using language workbenches and domain-specific languages for safety-critical ...
PDF
What's Missing in Language Workbenches
PDF
How Domains Shape Languages
PDF
Why Modeling Suck Sucks
PDF
Fusing Modeling and Programming into Language-Oriented Programming
PDF
The future of DSLs - functions and formal methods
PDF
Lessons Learned from building mbeddr
PDF
Envisioning the Future of Language Workbenches
PPTX
Architecting Domain-Specific Languages
PPTX
Generic Tools - Specific Languages (PhD Defense Slides)
PPTX
Language-Oriented Business Applications
PPTX
Generic Tools, Specific Laguages
PPTX
Domain Specific Language Design
PPTX
From Programming to Modeling And Back Again
PPTX
Faszination Segelfliegen
PPTX
Professional Podcasting Guide
PPTX
DSL Best Practices
Consulting
Build your own Language - Why and How?
Deklarative Smart Contracts
Using language workbenches and domain-specific languages for safety-critical ...
What's Missing in Language Workbenches
How Domains Shape Languages
Why Modeling Suck Sucks
Fusing Modeling and Programming into Language-Oriented Programming
The future of DSLs - functions and formal methods
Lessons Learned from building mbeddr
Envisioning the Future of Language Workbenches
Architecting Domain-Specific Languages
Generic Tools - Specific Languages (PhD Defense Slides)
Language-Oriented Business Applications
Generic Tools, Specific Laguages
Domain Specific Language Design
From Programming to Modeling And Back Again
Faszination Segelfliegen
Professional Podcasting Guide
DSL Best Practices

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
cuic standard and advanced reporting.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Cloud computing and distributed systems.
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Machine learning based COVID-19 study performance prediction
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
MYSQL Presentation for SQL database connectivity
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Electronic commerce courselecture one. Pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
Unlocking AI with Model Context Protocol (MCP)
cuic standard and advanced reporting.pdf
A Presentation on Artificial Intelligence
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Cloud computing and distributed systems.
The AUB Centre for AI in Media Proposal.docx
NewMind AI Monthly Chronicles - July 2025
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Machine learning based COVID-19 study performance prediction
Per capita expenditure prediction using model stacking based on satellite ima...
MYSQL Presentation for SQL database connectivity
NewMind AI Weekly Chronicles - August'25 Week I
Diabetes mellitus diagnosis method based random forest with bat algorithm
Electronic commerce courselecture one. Pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Empathic Computing: Creating Shared Understanding
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Encapsulation_ Review paper, used for researhc scholars

Model-Driven Development in the context of Software Product Lines