using specific languages productproductlineline engineering · 24.06.2009 1 using domain specific...
TRANSCRIPT
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
24.06.2009
2
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
Variability… differences amongproducts in PL
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
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
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
24.06.2009
6
ParametrizationVariability Mechanisms
… define values forpredefined params
ParametrizationVariability Mechanisms
… define values forpredefined params
Challenge:gtypes for parameters canbe non trivial (DSLs)
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
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
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.
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
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
24.06.2009
12
Customization… „real languages“… instantiation… connections
LanguagesCustomization
24.06.2009
13
LanguagesCustomization
LanguagesCustomization
24.06.2009
14
LanguagesCustomization
Measuring
measure
start
stop
Created Ready
stop
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
24.06.2009
15
programming
close to the hardwarestarted
close to the hardware
abstractionsabstractionscomputingcomputing∼∼
chips
abstractionsabstractionscomputingcomputing∼∼
bits
24.06.2009
16
C
abstractionsabstractionscomputingcomputing∼∼
Java
abstractionsabstractionscomputingcomputing??∼∼
24.06.2009
17
SQL
abstractionsabstractionscomputingcomputing??∼∼
24.06.2009
18
?
24.06.2009
19
general purpose
domain specific
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.
24.06.2009
21
execute?
map
24.06.2009
22
DSL Program(aka Model)
map
automated!
GPL Program
map
GenerationTransformationCompilation
Interpretation
24.06.2009
23
AutomationAutomationfasterfaster, , deterministicdeterministic
24.06.2009
24
IncreasedIncreased QualityQualitywell well defineddefined structuresstructures allthroughallthrough thethe systemsystem
MeaningfulMeaningful ValidationValidationmoremore semanticssemantics in in thethe modelmodel
24.06.2009
25
CaptureCaptureDomain Domain KnowledgeKnowledgeformalizedformalized intointo languageslanguages andand modelsmodels
SuitableSuitable NotationsNotationstextualtextual, , graphicalgraphical, , tabulartabular
24.06.2009
26
Technology IndependenceTechnology Independencegenerategenerate „„technologytechnology glueglue codecode““
AbstractionAbstraction w/ow/oRuntimeRuntime OverheadOverhead
generatorgenerator „„optimizesoptimizes awayaway““
24.06.2009
27
ImplementationImplementation StrategyStrategyCapture Capture
in in thethe generatorsgenerators
EverythingEverything isis a modela modelincludingincluding forfor exampleexample hardwarehardware ((somesome) ) hardwarehardware
24.06.2009
28
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
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
24.06.2009
30
EMF
ConstraintsConstraints
with OCLand dialects
GMF
GraphicalGraphical Box/Line editors based on EMF
24.06.2009
31
TMF / Xtext
BuildingBuilding Textual Editors
TMF / Xtext
BuildingBuilding Textual Editors
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
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
24.06.2009
34
openArchitectureWare
SpecifySpecify GrammarGrammar
24.06.2009
35
A tlA tl GG ddAntlrAntlr GrammarGrammar andandParserParser isis generatedgenerated
fromfrom thisthis specificationspecificationfromfrom thisthis specificationspecification
GeneratedGenerated MetamodelMetamodel
24.06.2009
36
SpecifySpecify ConstraintsConstraints
GeneratedGenerated EditorEditor
24.06.2009
37
GeneratedGenerated EditorEditor
Code Code CompletionCompletion
GeneratedGenerated EditorEditor
Syntax Syntax ColoringColoringCustom Custom KeywordKeyword ColoringColoring
24.06.2009
38
GeneratedGenerated EditorEditor
RealtimeRealtime ConstraintConstraintValidationValidation
GeneratedGenerated EditorEditor
CustomizableCustomizableCusto ab eCusto ab eOutlinesOutlines
24.06.2009
39
GeneratedGenerated EditorEditorCode Code FoldingFolding
GeneratedGenerated EditorEditor
GotoGoto Definition Definition Find ReferencesFind ReferencesCrossCross‐‐File ReferencesFile ReferencesModel as EMFModel as EMF
24.06.2009
40
GeneratedGenerated EditorEditor
XtextXtext OverviewOverview
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
24.06.2009
42
AnotherAnother Tool…?Tool…?
also doalso do
IntelliJ IDEAIntelliJ IDEAResharperResharper
also do…also do…
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
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
24.06.2009
45
Structure Structure EditorEditor Typesystem Typesystem GeneratorGenerator
Structure Structure EditorEditor Typesystem Typesystem GeneratorGenerator
24.06.2009
46
Structure Structure Editor Editor TypesystemTypesystem GeneratorGenerator
Structure Structure Editor Editor Typesystem Typesystem GeneratorGenerator
24.06.2009
47
Structure Structure Editor Editor Typesystem Typesystem GeneratorGenerator
Structure Structure Editor Editor Typesystem Typesystem GeneratorGenerator
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
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; }
}
24.06.2009
50
Example LanguagesExample LanguagesUI LanguageUI Language
Example LanguagesExample LanguagesHTML TemplatesHTML Templates
24.06.2009
51
Example LanguagesExample LanguagesPersistent ClassesPersistent Classes
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
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
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
24.06.2009
54
Model‐BasedImplementation
Model‐BasedImplementation
24.06.2009
55
MDSD MDSD ‐‐ ThumbnailThumbnail
MDMD‐‐PLE PLE ‐‐ ThumbnailThumbnail
fewerfewer!!
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
24.06.2009
57
Two Levels Removal
Two Levels Removal
24.06.2009
58
Two Levels Injection
Two Levels Injection
aspect (*) compnent {provides mon: IMonitoring
}
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
}
24.06.2009
60
http://dslvariantmanagement.googlecode.com
DEMO
Extending the sample DSL to include feature‐based variability connected to an external feature model
24.06.2009
61
VariabilityConfigurationCustomization
MDD ToolingModel VariabilityTransformation VarCustomization
MDD IntroTransformation Var.Summary & Wrapup
MDMD‐‐PLE PLE –– ThumbnailThumbnail IIII
moremore optionsoptions
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
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
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/
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??