using specific languages productproductlineline engineering · 24.06.2009 1 using domain specific...

65
24.06.2009 1 Using Using Domain Specific Languages Domain Specific Languages Product Product Line Line Engineering Engineering for for www.voelter.de www.voelter.de voelter@acm.org voelter@acm.org Markus Markus Voelter Voelter Independent/Itemis Independent/Itemis SPLC SPLC 2009 Tutorial 2009 Tutorial Variability Configuration Customization MDD Tooling Model Variability Transformation Var Customization MDD Intro Transformation Var . Summary & Wrapup

Upload: others

Post on 11-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Using Specific Languages ProductProductLineLine Engineering · 24.06.2009 1 Using Domain Specific Languages ProductProductLineLine Engineering for voelter@acm.org MarkusMarkus Voelter

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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??