using specific languages productproductlineline engineering · 24.06.2009 1 using domain specific...
TRANSCRIPT
![Page 1: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/1.jpg)
24.06.2009
1
UsingUsingDomain Specific LanguagesDomain Specific Languages
ProductProduct Line Line EngineeringEngineeringforfor
[email protected]@acm.org
MarkusMarkus VoelterVoelterIndependent/ItemisIndependent/Itemis
SPLCSPLC 2009 Tutorial2009 Tutorial
@ g@ g
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
![Page 2: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/2.jpg)
24.06.2009
2
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
Variability… differences amongproducts in PL
![Page 3: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/3.jpg)
24.06.2009
3
Variation Point… a point wherea variation can occur
… must be bound forh d teach product
… bind when?… bind how?
Binding Time
![Page 4: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/4.jpg)
24.06.2009
4
RemovalVariability Mechanisms
… optionally take awayfrom overall whole
RemovalVariability Mechanisms
… optionally take awayfrom overall whole
Challenge:goverall whole canget big and unwieldy
![Page 5: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/5.jpg)
24.06.2009
5
InjectionVariability Mechanisms
… optionally add tominimal core
InjectionVariability Mechanisms
… optionally add tominimal core
Challenge:ghow to point into the coreand add something to it
![Page 6: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/6.jpg)
24.06.2009
6
ParametrizationVariability Mechanisms
… define values forpredefined params
ParametrizationVariability Mechanisms
… define values forpredefined params
Challenge:gtypes for parameters canbe non trivial (DSLs)
![Page 7: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/7.jpg)
24.06.2009
7
VariabilityConfiguration vs. Customization
Routine Configuration
CreativeConstruction
Feature-ModelBased
Graph-LikeLanguages
ManualProgramming
Guidance,Efficiency
Complexity,Flexibility
ConfigurationParameters
Framworks
Wizards
Property FilesConfiguration
g g
TabularConfigurations
g g
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
![Page 8: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/8.jpg)
24.06.2009
8
Configuration… selecting options… setting param values
Feature ModelsConfiguration
Engine
Aircraft
Wing
mandatory optional
alternativeor (n of m)
Materials
mandatory
or (n of m)
high shoulder low Jet Piston
(1 of m)or (n of m)
woodmetal cloth plastic
![Page 9: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/9.jpg)
24.06.2009
9
Ai ft
Feature ModelsConfiguration
Engine
Aircraft
Wing
high shoulder low Jet Piston
mandatory optional
alternative(1 of m)or (n of m)
Materials
woodmetal cloth plastic
mandatory
or (n of m)
Robin DR‐400An aircraft with a low wing, piston engine and made of metal, wood and cloth
Ai ft
Feature ModelsConfiguration
Engine
Aircraft
Wing
high shoulder low Jet Piston
mandatory optional
alternative(1 of m)or (n of m)
Materials
woodmetal cloth plastic
mandatory
or (n of m)
Airbus A 320An aircraft with low wing, jet engine(s) and made of metal.
![Page 10: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/10.jpg)
24.06.2009
10
Ai ft
Feature ModelsConfiguration
Engine
Aircraft
Wing
high shoulder low Jet Piston
mandatory optional
alternative(1 of m)or (n of m)
Materials
woodmetal cloth plastic
mandatory
or (n of m)
Schleicher ASW 27An aircraft with shoulder wing, no engine and made of plastic
Feature ModelsConfiguration
Stack
Optimization
Counter
Size
Fixed Dynamic
ElementType[open]
int Stringfloat
Speed MemoryUsage
AdditionalFeatures
ThreadSafety
BoundsCheck
Type Check
value
![Page 11: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/11.jpg)
24.06.2009
11
Feature ModelsConfiguration
Client/Server Message-based
Synchronous Asynchronous
CAN Local
Technology
ReceiverSender
[incomplete]
Paradigm
Connector
Synchronous Asynchronous
Polling CallbackTimeout
Blocking Non-blocking
Receiver
PushPull
Queued Non-queued
Sender[incomplete]
[incomplete] [incomplete]
[incomplete]
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
![Page 12: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/12.jpg)
24.06.2009
12
Customization… „real languages“… instantiation… connections
LanguagesCustomization
![Page 13: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/13.jpg)
24.06.2009
13
LanguagesCustomization
LanguagesCustomization
![Page 14: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/14.jpg)
24.06.2009
14
LanguagesCustomization
Measuring
measure
start
stop
Created Ready
stop
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
![Page 15: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/15.jpg)
24.06.2009
15
programming
close to the hardwarestarted
close to the hardware
abstractionsabstractionscomputingcomputing∼∼
chips
abstractionsabstractionscomputingcomputing∼∼
bits
![Page 16: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/16.jpg)
24.06.2009
16
C
abstractionsabstractionscomputingcomputing∼∼
Java
abstractionsabstractionscomputingcomputing??∼∼
![Page 17: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/17.jpg)
24.06.2009
17
SQL
abstractionsabstractionscomputingcomputing??∼∼
![Page 18: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/18.jpg)
24.06.2009
18
?
![Page 19: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/19.jpg)
24.06.2009
19
general purpose
domain specific
![Page 20: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/20.jpg)
24.06.2009
20
tailor made
effective++
specialized, limited
d bused by experts
together with otherspecialized tools
A DSL is a focussed, processablelanguage for describing a specific g g g pconcern when building a system in a specific domain. The abstractions and notations used are natural/suitable for h k h ld h if hthe stakeholders who specify that particular concern.
![Page 21: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/21.jpg)
24.06.2009
21
execute?
map
![Page 22: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/22.jpg)
24.06.2009
22
DSL Program(aka Model)
map
automated!
GPL Program
map
GenerationTransformationCompilation
Interpretation
![Page 23: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/23.jpg)
24.06.2009
23
AutomationAutomationfasterfaster, , deterministicdeterministic
![Page 24: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/24.jpg)
24.06.2009
24
IncreasedIncreased QualityQualitywell well defineddefined structuresstructures allthroughallthrough thethe systemsystem
MeaningfulMeaningful ValidationValidationmoremore semanticssemantics in in thethe modelmodel
![Page 25: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/25.jpg)
24.06.2009
25
CaptureCaptureDomain Domain KnowledgeKnowledgeformalizedformalized intointo languageslanguages andand modelsmodels
SuitableSuitable NotationsNotationstextualtextual, , graphicalgraphical, , tabulartabular
![Page 26: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/26.jpg)
24.06.2009
26
Technology IndependenceTechnology Independencegenerategenerate „„technologytechnology glueglue codecode““
AbstractionAbstraction w/ow/oRuntimeRuntime OverheadOverhead
generatorgenerator „„optimizesoptimizes awayaway““
![Page 27: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/27.jpg)
24.06.2009
27
ImplementationImplementation StrategyStrategyCapture Capture
in in thethe generatorsgenerators
EverythingEverything isis a modela modelincludingincluding forfor exampleexample hardwarehardware ((somesome) ) hardwarehardware
![Page 28: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/28.jpg)
24.06.2009
28
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
![Page 29: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/29.jpg)
24.06.2009
29
EMF
Ecore meta meta modelEcore meta meta model+
EditingTransactionsValidationValidationQueryDistribution/Persistence
EMF
Metamodel As TreeMetamodel As Tree
can also be editedas UML‐like diagram
![Page 30: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/30.jpg)
24.06.2009
30
EMF
ConstraintsConstraints
with OCLand dialects
GMF
GraphicalGraphical Box/Line editors based on EMF
![Page 31: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/31.jpg)
24.06.2009
31
TMF / Xtext
BuildingBuilding Textual Editors
TMF / Xtext
BuildingBuilding Textual Editors
![Page 32: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/32.jpg)
24.06.2009
32
M2M
Model‐to‐ModelModel to Model TransformationsINRIA’s ATLQVTXtend
M2T
Model‐to‐TextModel to Text TransformationsJET: Java Emitter Templates
Xpand: oAW’stemplate engine
![Page 33: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/33.jpg)
24.06.2009
33
M2T
Model‐to‐Text TransformationsModel to Text TransformationsExtensions to modularize complex expressions
openArchitectureWare
One Stop Toolkit for DSLs + X
www.openarchitectureware.org
Version 5.0 is current
Lively ecosystem of tools and extensions
Proven track record in various domains & project contexts
Stable, productive and helpful developer, support and user communities
Integration with Eclipse:Part of Eclipse, Working GroupUses EMF as a basisGraphical editors based on GMFAll editors and tooling based on Eclipse
![Page 34: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/34.jpg)
24.06.2009
34
openArchitectureWare
SpecifySpecify GrammarGrammar
![Page 35: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/35.jpg)
24.06.2009
35
A tlA tl GG ddAntlrAntlr GrammarGrammar andandParserParser isis generatedgenerated
fromfrom thisthis specificationspecificationfromfrom thisthis specificationspecification
GeneratedGenerated MetamodelMetamodel
![Page 36: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/36.jpg)
24.06.2009
36
SpecifySpecify ConstraintsConstraints
GeneratedGenerated EditorEditor
![Page 37: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/37.jpg)
24.06.2009
37
GeneratedGenerated EditorEditor
Code Code CompletionCompletion
GeneratedGenerated EditorEditor
Syntax Syntax ColoringColoringCustom Custom KeywordKeyword ColoringColoring
![Page 38: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/38.jpg)
24.06.2009
38
GeneratedGenerated EditorEditor
RealtimeRealtime ConstraintConstraintValidationValidation
GeneratedGenerated EditorEditor
CustomizableCustomizableCusto ab eCusto ab eOutlinesOutlines
![Page 39: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/39.jpg)
24.06.2009
39
GeneratedGenerated EditorEditorCode Code FoldingFolding
GeneratedGenerated EditorEditor
GotoGoto Definition Definition Find ReferencesFind ReferencesCrossCross‐‐File ReferencesFile ReferencesModel as EMFModel as EMF
![Page 40: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/40.jpg)
24.06.2009
40
GeneratedGenerated EditorEditor
XtextXtext OverviewOverview
![Page 41: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/41.jpg)
24.06.2009
41
DEMO
Building a sample textual DSL and code generator for a simple domain using Eclipse TMF/openArchitectureWare
AnotherAnother Tool…?Tool…?
OSLOOSLO
![Page 42: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/42.jpg)
24.06.2009
42
AnotherAnother Tool…?Tool…?
also doalso do
IntelliJ IDEAIntelliJ IDEAResharperResharper
also do…also do…
![Page 43: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/43.jpg)
24.06.2009
43
released inreleased in
Q3 2009Q3 2009released inreleased in
licensed underlicensed under
Apache 2.0Apache 2.0
Build new Build new standalonestandalone DSLsDSLsBuild DSLs that Build DSLs that reusereuse partsparts
of other languagesof other languagesg gg g
(MPS comes with (MPS comes with BaseLanguage)BaseLanguage)
extendextend base languagebase language
Java++Java++
extendextend base languagebase languagebuild DSLs that build DSLs that reusereuse partsparts
of of BaseLanguageBaseLanguage
![Page 44: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/44.jpg)
24.06.2009
44
Java Java + Extension
Language Extension ExampleLanguage Extension Example
OldOld NewNewReadWriteLock l = …l.readLock().lock();try {//code
} finally {l readLock() unlock();
ReadWriteLock l = …lock (l) {//code
}
l.readLock().unlock();}
StructureStructure Editor Editor Typesystem Typesystem GeneratorGenerator
![Page 45: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/45.jpg)
24.06.2009
45
Structure Structure EditorEditor Typesystem Typesystem GeneratorGenerator
Structure Structure EditorEditor Typesystem Typesystem GeneratorGenerator
![Page 46: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/46.jpg)
24.06.2009
46
Structure Structure Editor Editor TypesystemTypesystem GeneratorGenerator
Structure Structure Editor Editor Typesystem Typesystem GeneratorGenerator
![Page 47: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/47.jpg)
24.06.2009
47
Structure Structure Editor Editor Typesystem Typesystem GeneratorGenerator
Structure Structure Editor Editor Typesystem Typesystem GeneratorGenerator
![Page 48: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/48.jpg)
24.06.2009
48
Structure Structure Editor Editor Typesystem Typesystem GeneratorGenerator
Language Extension ExampleLanguage Extension ExampleResult behaves like a nativeResult behaves like a native
base language constructbase language construct
![Page 49: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/49.jpg)
24.06.2009
49
Language Extension ExampleLanguage Extension ExampleResult behaves like a nativeResult behaves like a native
base language constructbase language construct
Language Extension ExampleLanguage Extension ExampleTranslated to regular Java codeTranslated to regular Java code
based on the generatorbased on the generator
package jaxdemo.sandbox.sandbox;
import java.util.concurrent.locks.Lock;
public class DemoClass {
private Lock lock;
bli l () {public DemoClass() {try {this.getLock().lock();SharedResouce.instance().doSomething();} finally {this.getLock().unlock();}}
private Lock getLock() { return this.lock; }
}
![Page 50: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/50.jpg)
24.06.2009
50
Example LanguagesExample LanguagesUI LanguageUI Language
Example LanguagesExample LanguagesHTML TemplatesHTML Templates
![Page 51: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/51.jpg)
24.06.2009
51
Example LanguagesExample LanguagesPersistent ClassesPersistent Classes
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
![Page 52: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/52.jpg)
24.06.2009
52
Two Levels∼ problem spacevs software spacevs. software space
Problem Space:ConfigurationConfiguration
Software Space:Customization
Two Levels∼ problem spacevs software spacevs. software space
![Page 53: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/53.jpg)
24.06.2009
53
Two Levels#if defined (ACE HAS TLI)
Removal
#if defined (ACE_HAS_TLI)static ssize_t t_snd_n (
ACE_HANDLE handle,const void *buf, size_t len, int flags,ACE_Time_Value *timeout = 0,size_t *bytes_transferred = 0);
#endif /* ACE_HAS_TLI */
Model‐BasedImplementation
i i i… customization inproblem space
… Problem‐Space DSL
![Page 54: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/54.jpg)
24.06.2009
54
Model‐BasedImplementation
Model‐BasedImplementation
![Page 55: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/55.jpg)
24.06.2009
55
MDSD MDSD ‐‐ ThumbnailThumbnail
MDMD‐‐PLE PLE ‐‐ ThumbnailThumbnail
fewerfewer!!
![Page 56: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/56.jpg)
24.06.2009
56
Two LevelsParty
NeedsStatePhone
Removal
Persistence
XML JDOHibernate
MultipleAddresses
InternationalPhone LocalPhone
<<entity>>Party
<<dependentOb>>Address
address
1
not
Partyname: String
Address
city: Stringstate: Stringzip: Stringstreet: String
address
0..n
<<dependentOb>>Phone
number: intregionCode: intcountryCode: int
0..n
Two Levels Removal
![Page 57: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/57.jpg)
24.06.2009
57
Two Levels Removal
Two Levels Removal
![Page 58: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/58.jpg)
24.06.2009
58
Two Levels Injection
Two Levels Injection
aspect (*) compnent {provides mon: IMonitoring
}
![Page 59: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/59.jpg)
24.06.2009
59
Two Levels RemovalInjection+
Manual CodeVariability
public class LightDriverImplementation extends LightDriverImplBase {
@Overrideprotected String getIdInternal() {
return getConfigParamValueForId();}
…
//# dimmableLights@Overrideprotected int setLightLevelInternal(int level) {
t t () tEff ti Li htL l(l l)state().setEffectiveLightLevel(level);return level;
}//~# dimmableLights
}
![Page 60: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/60.jpg)
24.06.2009
60
http://dslvariantmanagement.googlecode.com
DEMO
Extending the sample DSL to include feature‐based variability connected to an external feature model
![Page 61: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/61.jpg)
24.06.2009
61
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
MDMD‐‐PLE PLE –– ThumbnailThumbnail IIII
moremore optionsoptions
![Page 62: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/62.jpg)
24.06.2009
62
TransformationVariability
create 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
transformation transformation aspect
workflow
around ...
transform
transform-aspect
configuration model
![Page 63: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/63.jpg)
24.06.2009
63
GeneratorVariability
template aspecttemplate file
generate (osgi)
workflow
generator-aspect
configuration model
generate (cbd)
generator-aspect
AROUND
template file
AROUND
template aspect
… x() ...
around ...
extend file
x(): ...
extend aspect
DEMO
Introducing Variability into the Code Generator built before
![Page 64: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/64.jpg)
24.06.2009
64
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
Transformation and Generation
DSLs can be used to effectivelydescribe customization variab.
can be used to map PS to SS
Configuration and Customizationcan be sensibly combined
Various Tools are available,http://eclipse.org/modelinghttp://dslvariantmanagement.googlecode.com/
![Page 65: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter](https://reader035.vdocument.in/reader035/viewer/2022070900/5f3913ce15e0157c35509288/html5/thumbnails/65.jpg)
24.06.2009
65
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation Var
UsingUsingDomain Specific LanguagesDomain Specific Languages
ProductProduct Line Line EngineeringEngineeringforfor
CustomizationMDD Intro
Transformation Var.Summary & Wrapup
[email protected]@acm.org
MarkusMarkus VoelterVoelterIndependent/ItemisIndependent/ItemisTHE END.THE END.
@ g@ g
ThankThank youyou..QuestionsQuestions??