ist-33710 vml* – a family of languages for variability management in software product lines...

11
IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez, Awais Rashid, Lidia Fuentes, Ana Moreira, João Araújo, Uirá Kulesza October 05, 2009

Upload: sybil-neal

Post on 18-Dec-2015

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

VML* – A Family of Languages for Variability Management in Software Product Lines

Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez, Awais Rashid, Lidia Fuentes, Ana

Moreira, João Araújo, Uirá Kulesza

October 05, 2009

Page 2: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

2

uc Use Case Mo...

Heater

Thermostat

Inhabitant

Heating

Adjust Heater Value

WindowsManagement

Open and Close Windows

Open and Close Windows Manually

Notification

Notify using TouchScreen

Send Security Notification«extend»

Variability ManagementA Mapping Problem

?

SmartHome

Adjustment And Control

Device-AdjustmentAnd Control

Room AccessControl

Devices

act Core Activ ity Model - Adjust Heater Value

IncreaseTemperature

DecreaseTemperature

MaintainTemperature

Send command totemperature controller

Set desiredtemperature

Check current roomtemperature

Start heater Start AC

PackageHierarchyclass [ ]

SmartHeaterManagement

InitialModel

WindowManagement SecurityHeaterManagement

<<merge>> <<merge>><<merge>>

<<merge>><<merge>>

Component Instance Model

Security[ComponentTypes]class [ ]

<<component>>Gateway

actuators sensors

<<component>>CameraMng

data

<<component>>GlassBrakeSensorMng

data

<<component>>SirenMng

request

<<component>>AlarmLightMng

requestIAlarmLightMng

INotifiyIntrusion

ISiren

Page 3: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

3

Previous Approaches

Model-Transformations, AOM-based approaches

Feature Tagging

Complete power and flexibility of model-transformations

Power reduced to negative variability using markup of model elements

Accidental complexity of model transformations and metamodels

Very simple and easy-to-understand specifications

No SPL-specific infrastructure support SPL-specific tool support easily provided (e.g., FeatureMapper)

Need for an approach that combines the flexibility of model transformations with the simplicity of generic mappings.

Page 4: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

4

An initial solution: VML4Arch

0102030405060708091011121314

import features <"/SmartHome.fmp">;import core <"/SmartHome.uml">;...variant for FingerprintScanner {

connect("FingerprintReader", "LockControlMng", "IAccess");

connect("FingerprintReader", "LockControlMng", "IRegister");

connect("FingerprintAuth", "LockControlMng", "IRegister"); connect("LockControlMng", "FingerprintAuth", "IVerify");} // Fingerprint scanner

variant for not (FingerprintScanner) {remove("Fingerprint.*");

} // not FingerprintScanner

Variants group modifications required on feature selection

Actions provide simple vocabulary for expressing modifications

Feature expressions provide pointcuts into feature models

Pointcuts provide access to target model elements

Page 5: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

5

Pointcuts in VML4Arch

SmartHome

FingerPrintScanner

Device-AdjustmentAnd Control

Room AccessControl

Devices

FingerPrintReader

FingerPrintAuth

DeviceMng

01020304

variant for not (and (FingerprintScanner,RoomAccessControl)) {

remove("Fingerprint.*");}

Requires Redevelopment for every new target modelling language Cost Error proneness

Page 6: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

6

VML* – A Family of Languages

Page 7: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

7

VML* Architecture (1)

01020304050607080910111213141516171819202122

vml instance vml4arch {features { metamodel "/bin/fmp.ecore“function "getAllFeatures"

}

target model {metamodel "UML2"type "uml::Package“ function "dereferenceElement"

}

actions: connect {params "List[uml::Component]"

"List[uml::Component]" "uml::Interface"

}remove {params “List[uml::ModelElement]”

}...

23242526272829303132333435363738

aspects: transformation {features {

type "String“ function "getAllSelectedFeatures"

}

connect { function “connectComponents"

}remove {

function “removeElement"}...

}}

Page 8: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

8

class Class Mo...

TargetModelImport

ActionDescriptorLanguageInstanceModelVariabilityModelImport

EvaluationAspect

TracingAspect TransformationAspect ActionTransformation

ConfigurationImport

1

*

*

1

1

*

1

VML* Architecture (2) class Class Mo...

TargetModelImport

ActionDescriptorLanguageInstanceModelVariabilityModelImport

EvaluationAspect

TracingAspect TransformationAspect ActionTransformation

ConfigurationImport

1

*

*

1

1

*

1

010203040506070809101112131415161718192021222324

vml instance vml4arch {features {

metamodel "/bin/fmp.ecore“function "getAllFeatures"

}

target model {metamodel "UML2"type "uml::Package“ function "dereferenceElement"

}

bundles: "unl.vml4req", "ca.uwaterloo.gp.fmp", ...

extensions: "unl::vml4req::library::umlUtil“

actions: connect {

params "List[uml::Component]" "List[uml::Component]" "uml::Interface"

}

252627282930313233343536373839404142434445

remove {params “List[uml::ModelElement]”

}...

aspects: transformation {

features { type "String“ function "getAllSelectedFeatures"

}

connect { function “connectComponents"

}remove {

function “removeElement"}...

}}

<<instance of>> Generate

• Grammar and Metamodel• Editor• Compiler• Evaluation Engine

Demo

Page 9: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

9

VML* Languages Built

Language Mapping Comments

VML4Arch Feature Models Component Models

Base for VML* Family

VML4RE Feature Models Use Cases Activity Models

Base for VML* Family

VML4SAP Feature Models SAP View Models Other SAP Models

“Initial overhead for first language”“Ease of reuse for following languages”“Set of concepts sufficient for the task”

VML4OAW Feature Models oAW workflows

(realisation ongoing)“Reduces expertise to xTend”“Action granularity issue”

Page 10: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

10

Conclusions

Model-Transformations, AOM-based approaches

Feature Tagging VML*

Complete power and flexibility of model-transformations

Power reduced to negative variability using markup of model elements

All variability approaches supported

Accidental complexity of model transformations and metamodels

Very simple and easy-to-understand specifications

VML* languages use concepts familiar to SPL engineers

No SPL-specific infrastructure support

SPL-specific tool support easily provided (e.g., FeatureMapper)

Product-derivation and tracing support generated for each language

A comparative study with FeatureMapper has been submitted to Transactions on Aspect-Oriented Software Development.

Page 11: IST-33710 VML* – A Family of Languages for Variability Management in Software Product Lines Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez,

IST-33710

QUESTIONS?

11