ist-33710 vml* – a family of languages for variability management in software product lines...
Post on 18-Dec-2015
213 Views
Preview:
TRANSCRIPT
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
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
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.
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
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
IST-33710
6
VML* – A Family of Languages
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"}...
}}
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
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”
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.
IST-33710
QUESTIONS?
11
top related