so#ware(product(lines(...
TRANSCRIPT
Philippe'Collet'(Professor,'Univ.'Nice'Sophia'An9polis)'''
With'some'slides'from'Mathieu'Acher'
So#ware(Product(Lines(and(Variability(Management(
Genie'logiciel':'M1'IFI'–'RIF'/'Fall'2014'
• Why'managing'Variability'does'maMer'• Managing'variability'models'with'Feature'Models'• FAMILIAR'':'a'DSL'for'large'scale'management'of'Feature'Models'
• Some'Applica>ons'of'Feature'Modeling'• Some'interac9ve'exercises'on'capturing'Variability(with'a'DEMO…(
2'
Course(Agenda(
(Why(managing(Variability(does((and(
will)(maHer(
3'
Android,(survey(on(682,000(devices(T'August'2013:'11,868'dis9nct'devices'T'August'2014:'18,796'dis9nct'devices'
4'
hMp://opensignal.com/reports/2014/androidTfragmenta9on/'
5'
SoZwareTintensive'systems'
come'in'many'variants((
6'
Linux'Kernel'
Database'Engine'
Printer'Firmware'
Features(in(Microso#(Office(
10'
11'
Variability((“the(ability(of(a(system(to(be(efficiently(extended,(changed,(customized(or(configured(for(use(in(a(par>cular(context”((
Mikael'Svahnberg,'Jilles'van'Gurp,'and'Jan'Bosch'(2005)'
«'A'set'of'programs'is'considered'to'cons9tute'a'family,'whenever'it'is'worthwhile'to'study'programs'from'the'set'by'first(studying(the(common(proper>es(of'the'set'and'then'determining'the'special(proper>es'of'the'individual'family'members'»'(((((David(L.(Parnas(—(‘‘On(the(design(and(development(of(program(families’’(in(Transac>ons(on(So#ware(Engineering,(SE[2(1):1–9,(1976('13'
aka(Variability(
14'14'
Extensible(architect
ures(
(eg(plugins[based)(
Configura>on(
files(
System(
Preferences(
Configurators(
Source(code(Build(
systems(
Comparison(of(*(
Structural(or(behav
orial((
models(
External(Variability(Internal(Variability(Variability(@(run.>me(
If(you’re(able(to(master(variability…(
• Reduce'development'costs''• Reduce'cer9fica9on'costs''• Shorten'9meTtoTmarket''
• But,'are'you'able?''– developing,'verifying,'cer9fying'billions'of'variants'is'challenging!'
'15'
Variability = Complexity
Chris9an'Kästner'slide!
a'unique'variant'for'every'
person'on'this'planet'
33'features'op9onal,'independent'
Chris9an'Kästner'slide!
320'features''
more'variants'than'es9mated'
''atoms'in'the'universe'
op9onal,'independent'
2000'features' 10000'features'
Chris9an'Kästner'slide!
20'
((
Avoid(solving(the(same(problem!(((
(2,(3…n(>mes((
Automa>on?(
21'
Unused(flexibility(
22'
Illegal(variant(
((Goal:(So#ware(mass(customiza>on((/(Adap>ve(and(configurable(systems((Problem:(Variability(=(Complexity((Approach:(Model[based(variability(management(
23'
Why(managing(Variability((does((and(will)(maHer(
24'
SoZwareTintensive'systems'come'in'many'variants((
Model[based((Variability(Management(
(
Modeling(Variability((Communica>ve((Analy>c((Genera>ve(( 25'
So#ware(Product(Lines:(defin>on(
Systems(of(sytems(–(Ultra(Large(Scale(Product(Lines(Paradigm( Large(scale(systems(
26'
a'family'of'related'soZware'variants'(='products)'that'share'common'proper9es'and'meet'the'requirements'for'a'given'domain.'
27'
Factoring'out'commonali>es((for(Reuse([Krueger'et'al.,'1992]'[Jacobson'et'al.,'1997]'
((((((Managing(variabili>es((
(for'SoZware'Mass(Customiza>on([Bass'et'al.,'1998]'[Krueger'et'al.,'2001],'[Pohl'et'al.,'2005]'((
Mobile
3G+ 3G GPS
Maps
Camera
!'!'!'
Mobile
3G+ 3G GPS
Maps
Camera
Domain/Variability(Model(
Configura>on( So#ware(Generator(
Domain(Artefacts(((
Domain((Engineering(
Applica>on((Engineering(
«'the'investments'required'to'develop'the'reusable'arBfacts'during'domain!engineering,'are'outweighed'by'the'benefits'of'deriving'the'individual'products'during'applica.on!engineering'»'
Jan!Bosch!et!al.!(2004)!!!
29'
99%(domain(engineering,((1%(applica>on(engineering?(
– specifies'what'you'want'(click,'click,'click)'a'customized'product'is'automa9cally'built'for'you'
– Iterate'the'process'for'n'products'
Amount of
effort
Application Engineering
More Sophisticated Technology
Domain Engineering
Mobile
3G+ 3G GPS
Maps
Camera !'
!'
!'
Mobile
3G+ 3G GPS
Maps
Camera
Variability(Model(
Configura>on(
Domain(Artefacts((e.g.,(source(code)(
So#ware(Generator(
Modeling(variability((is(crucial(
31'
Unused(flexibility(
32'
Illegal(variant(
More(Defini>ons(
'• Domain':'Technology,'business'or'knowledge'sector'that'
is'characterized'by'a'set'of'concepts'and'terminologies'understandable'by'users'of'this'sector'
• Variability'is'formed'by'all'assump9ons'showing'how'products,'members'of'the'SPL,'differ'among'each'other'
• Commonality(is'formed'by'all'assump9ons'that'are'true'for'all'product'members'of'the'SPL'
'
What(is(needed(to(handle(Variability?(
• Define'mandatory'proper9es'and'func9onali9es''• Define'op>onal'choices:'0,'1..N,'choice'among'n''• Variants('• Constraints((
– Dependency''– Mutual'exclusion'
How(to(express(variability?(
• Inheritance'(design,'implementa9on)'• Genericity'(design,'implementa9on)'• Design'PaMern'(design,'implementa9on)'• AspectTOriented'Design'&'Programming'(design,'implementa9on)'
• Model'Transforma9on'(design)'• Model'Composi9on'(design)'• Feature(Models((requirement'engineering,'design,'also'implementa9on)'– Similar'technique':'Decision(Modeling(
Variability(Model(Feature(Model:(de!facto!standard(
• Research''– 2500+'cita9ons'of'[Kang'et'al.,'1990]'on'Google'Scholar''– Central'to'many'genera9ve'approaches'
• at'requirements'or'code'level'– Tools'&'Languages'(GUIDSL/FeatureIDE,'SPLOT,'FaMa,'etc.)'
• Industry''– Tools'(Gears,'pure::variants),''– Will'be'Part'of'Common'Variability'Language'(CVL),'future'OMG'standard'
36'
excludes
Feature(Models(
40'
Feature(Models((Background)(
41'
Hierarchy:'rooted'tree''Variability:((• mandatory,''• op9onal,''• Groups:'exclusive'or'inclusive'features'• CrossTtree'constraints'
Optional
Mandatory
Xor-Group
Or-Group
42'
Hierarchy(+(Variability((=((
set(of(valid(configura>ons(
!
Optional
Mandatory
Xor-Group
Or-Group
{CarEquipment,'Comfort,'DrivingAndSafety,'Healthing,'AirCondi9oning,'FrontFogLights}'
configura>on(=(set(of(features(selected(
!'!'
!'
!'!'
!'
43'
Hierarchy(+(Variability((=((
set(of(valid(configura>ons(
Optional
Mandatory
Xor-Group
Or-Group
{CarEquipment,'Comfort,'DrivingAndSafety,'Healthing,'AirCondi9oning}'
configura>on(=(set(of(features(selected(
!'!'
!'
!'
!'
44'
Hierarchy(+(Variability((=((
set(of(valid(configura>ons(
Optional
Mandatory
Xor-Group
Or-Group
{CarEquipment,'Comfort,'DrivingAndSafety,'Healthing,'AirCondi9oning,'AirCondi9oningFrontAndRear,'FrontFogLights}'
configura>on(=(set(of(features(selected(
!'!'
!'
!'!'
45'
Hierarchy(+(Variability((=((
set(of(valid(configura>ons(
Optional
Mandatory
Xor-Group
Or-Group
{CarEquipment,'Comfort,'DrivingAndSafety,'Healthing,'AirCondi9oning,'Automa9cHeadLights}'
configura>on(=(set(of(features(selected(
!'!'
!'
!'
!'
!'
46'
Hierarchy(+(Variability((=((
set(of(valid(configura>ons(
Optional
Mandatory
Xor-Group
Or-Group
{AirCondi9oning,'FrontFogLights}'{Automa9cHeadLights,'AirCondi9oning,'FrontFogLights}'{Automa9cHeadLights,'FrontFogLights,'AirCondi9oningFrontAndRear}'{AirCondi9oningFrontAndRear}'{AirCondi9oning}'{AirCondi9oningFrontAndRear,'FrontFogLights}'
{CarEquipment,'Comfort,'DrivingAndSafety,'Healthing}' X
Managing(variability(models(with(FAMILIAR(
47'
#1(Automated(Analysis(
48'
#2(Mul>ple(Feature(Models(
49'
• #1(Automated(analysis((– Aka'support'to'beMer'understand'and'play'with'your'feature'model'(TVL'model)'
• #2(Managing(mul>ple(feature(models(– Composing'/'Decomposing'/'Diff'and'Reasoning'about'their'rela9onships'
– Combining'these'operators'50'
Two(Key(Requirements(
FAMILIAR(language(and(environment(
(((((
FAMILIAR(((
And-Group
Optional
Mandatory
Xor-Group
Or-Group
constraints
……..
DirectX
V10 V10.1 v11
Outputs
VIVO DVI HDMI
S-Video Composite
VGA
GraphicCard And-Group
Optional
Mandatory
Xor-Group
Or-Group
TV output
constraints
VGA excludes TV outputHDMI implies v10.1 or v11
constraints
……..
constraints
……..
constraints
……..
//(foo.fml(fm1(=(FM((“foo1.tvl”)(fm2(=(FM((“foo2.m”)(fm3(=(merge(intersec>on({(fm1(fm2(}(c3(=(coun>ng(fm3(renameFeature(fm3.TV(as(“OutputTV”(fm5(=(aggregate({(fm3(FM((“foo4.xml”)(}(assert((isValid(fm5)(((fm6(=(slice(fm5(including(fm5.TV.*((export(fm6((
True/False'8759'“OutputTV”,'“TV”''
Interoperability( Language(facili>es( Environment(
52'
Interoperability(fm1'='FM(“foo.tvl”)'fm2'='FM'(“foo.m”)''
serialize'fm4'into'SPLOT'serialize'fm1'into'featureide'fm3'='FM'(“foo.xmi”)'
fm4'='FM'(A':'B'….)''
((De/Composi>on(merge''''''''''''diff''''''''''''intersec9on''''''''''''sunion'
''
aggregate''map''unmap'
extract'''''''''''''''''''''''''''slicing'
Edi>ng(renameFeature'
'removeFeature'accessors''
'copy'
( ( ( (( ((Reasoning((coun9ng' configs'
isValid'deads'cores'falseOp9onals'
cleanup'
configura9on'''select''deselect''asFM'compare'
setOp9onal '''''''''''''setMandatory'
setAlterna9ves'' 'setOr'
'
(Language(Facili>es(fm1.*' fm1.B'
modular'mechanisms'''
restricted'set'of'types'iterator/condi9onal'
asser9on'
insert'
FAMILIAR(…(features(
Hello(World(
53'
helloworld.fml'
Typed(language((• DomainTspecific'types'
– Feature'Model,''– Configura9on,''– Feature,''– Constraint''
• Other'types'include''– Set'– String''– Boolean,''– Enum,''– Integer'and'Real.''
• A'set'of'opera9ons,'called'operators,'are'defined'for'a'given'type.''54'
basics2.fml'
Typed(language((
55'
basics2.fml'
Typed(language((
56'
basics2.fml'
Impor>ng/Expor>ng(feature(models(
57'
FAMILIAR
S2T2TVL
feature-model-synthesis
(visual configurator)
(language)
(language)FaMa
Internal'nota9on'or'by'“filename'extensions”''
basics3.fml'
Feature(Accessors((1)(
58'
ZAccessors.fml'
Other(constructs(
59'
ZAccessors2.fml'
Configura>on(
60'
conf.fml'
Opera>ons(for(Feature(Models((1)(
61'φ
operatorsFM.fml'
Opera>ons(for(Feature(Models((2)(
62'
φ
operatorsFM2.fml'
Opera>ons(for(Feature(Models((3)(
63'
operatorsFM3.fml'
FAMILIAR' 64'
constraints
……..
SPL/internal/so#ware(variability(((Pohl(et(al.(2005,(Metzger(2007)(
constraints
……..
PL/external(variability(((Pohl(et(al.(2005,(Metzger(2007)(
(
constraints
……..
context(variability((FORM(1998,(Tun(et(al.(2009((problem(world),((Hartmann(2008((CVM),(Lee(et(al.(2010(
Stakeholder(1,(2,(3,(…,(n(((Czarnecki(2005,(Reiser(et(al.(2007,(Hartmann(et(al.(2009,(Classen(et(al.(2009,(Mendonca(et(al.(2010)(
constraints
……..
constraints
……..
constraints
……..
constraints
……..
Concern(1,(2,(3,(…,(n(View(1,(2,(3,(…,(n((Dunghana(et(al.(2010,((Hubaux(et(al.(2010,(Zaid(et(al.(2010)(
((((((
constraints
……..
constraints
……..
constraints
……..
constraints
……..
constraints
……..
Mul>ple(Feature(Models(''
''
'' ''
''
''
''
'' ''
'' ''
''
'' ''
''
''
''
'' ''
''''
''
'' ''
''
SoC(support(=(Composi>on/Decomposi>on(for'managing'large,(complex(and(mul>ple(feature'models'FORM'1998,'Tun'et'al.'2009'(SPLC),'Hartmann'2008'(SPLC),'Lee'et'al.'2010,'Czarnecki'2005,'Reiser'et'al.'2007'(RE'journal),'Hartmann'et'al.'2009'(SPLC),'Thuem'et'al.'2009'(ICSE),'Classen'et'al.'2009'(SPLC),'Mendonca'et'al.'2010'(SCP),'Dunghana'et'al.'2010,'Hubaux'et'al.'2011'(SoSyM),'Zaid'et'al.'2010'(ER),'She'et'al.,'2011'(ICSE),'etc.''
Composing(Feature(Models((1)(
66'
aggregateBasics.fml'
Composing(Feature(Models((2)(
67'
aggregate1.fml'
Previous'version'
Merging(Feature(Models((
68'
mergeMI.fml'
see'also'Thuem,'Kastner'and'Batory,'ICSE’09'
Comparing(Feature(Models(
69'
compare.fml'
Puxng(all(together:(Example(1(
70'
Merge(Intersec>on:(Available(Suppliers(
71'
∩( ∩(
A(customer(has(some(
requirements(
Suppliers?(Products?(
In(FAMILIAR(
72'
suppliersExample0.fml'
Merge(Union:(Availability(Checking(
73'
Can(suppliers(provide(all(products?(Yes!(
“compare”('(
(
∩(
In(FAMILIAR(
74'
suppliersExample.fml'
Merging(opera>on:((implementa>on(issues(
75'
T2
MRI
Medical Image
HeaderAnonymized
T1
DICOMHeader excludes DICOMHeader implies AnonymizedAnonymized v Header v ~DICOM v ~T1 v ~T2Anonymized v Header v DICOM v ~T1 v ~T2
How(to(synthesise(a(feature(model(that(represents(the(union(of(input(sets(of(configura>ons?(
76'
Merging(opera>on:(seman>c(issues((2)(
φ Union'Intersec9on''Diff'' How(to(synthesise(a(feature(model(that(represents(
the(union(of(input(sets(of(configura>ons?(
Merging(opera>on:(algorithm(
77'
φ1
φ2
φ3
φ 123
merged'proposi9onal'formula'T2
MRI
Medical Image
HeaderAnonymized
T1
DICOM
merged'hierarchy'+(
Set(mandatory(features(Detect(Xor(and(Or[groups(Compute(“implies/excludes”(constraints(
How(to(synthesise(a(feature(model(that(represents(the(union(of(input(sets(of(configura>ons?(
see'also'[Czarnecki'SPLC’07'or'SPLC’12]'
78'
Building(“views”(of(a(feature(model(
• Problem:'given'a'feature'model,'how'to'decompose'it'into'smaller'feature'models?'
• Seman9cs?'– What’s'the'hierarchy'– What’s'the'set'of'configura9ons?'
79'
Building(“views”(of(a(feature(model(
A(first(try(
A3 => P1P2 => A5
R
A2
A5 A6
A1
A3 A4
A
fm0
P3P2P1
P
P1 => P2
A2
A5 A6
A1
A3 A4
AfmExtraction1
A2
A5 A6
A1
A3 A4
AfmExtraction2
A3 => A5A4 => A6
Problem:(You(can(select(A3(without(A5(
Hierarchy(and(Configura>on(maHer!( 80'
Slicing(Operator(
W
constraintsE implies DR implies E D excludes FS implies (F and not E)
P
R S
fm1
AV
T U
B C D
E F
Optional
Mandatory
Xor-Group
Or-Group
T
S E D
constraintsE implies DD implies E
slicing(criterion(:(an(arbitrary'set'of'features,'relevant'for'a'feature'model'user'
slice':'a'new'feature'model,'represen9ng'a'projected(set'of'configura9ons''
81'
Slicing(operator:(going(into(details(projected(set(of(configura>ons(
82'
fm1'='{''{A,B,C,D,E,P,R,T,U,W},''{A,B,C,F,P,S,T,U,W},''{A,B,C,D,E,P,R,T,W},''{A,B,C,F,P,S,T,V,W},''{A,B,C,F,P,S,T,U,V,W},''{A,B,C,F,P,S,T,W},''{A,B,C,D,E,P,R,T,V,W},''}'
fm1'='{''{A,B,C,D,E,P,R,T,U,W},''{A,B,C,F,P,S,T,U,W},''{A,B,C,D,E,P,R,T,W},''{A,B,C,F,P,S,T,V,W},''{A,B,C,F,P,S,T,U,V,W},''{A,B,C,F,P,S,T,W},''{A,B,C,D,E,P,R,T,V,W},''}'
fm1p'='{''{D,E,T},''{S,T},''{D,E,T},''{S,T},''{S,T},''{S,T},''{D,E,T}'}'
fm1p'='{''{D,E,T},''{S,T},''}'
W
constraintsE implies DR implies E D excludes FS implies (F andnot E)
P
R S
fm1
AV
T U
B C D
E F
Optional
Mandatory
Xor-Group
Or-Group
+(T
S E D
constraintsE implies DD implies E
φs1
existenBal'quanBficaBon'of'features'not'included'in'the'slicing'criterion'
83'
fm1p'='{''{D,E,T},''{S,T}'}'
Slicing(operator:(going(into(details(synthesizing(the(corresponding(feature(model(
S( E( D(
T(
W
constraintsE implies DR implies E D excludes FS implies (F andnot E)
P
R S
fm1
AV
T U
B C D
E F
φ1
see'also'[Acher'et'al.,'ASE’11/AOSD’12]'
T
S E D
constraintsE implies DD implies E
84'
Slicing(operator(with(FAMILIAR((1)(
W
constraintsE implies DR implies E D excludes FS implies (F andnot E)
P
R S
fm1
AV
T U
B C D
E F
slicingOp2.fml'
85'
Slicing(with(FAMILIAR((2)(slicingOp.fml'
Puxng(all(together:(Example(2(
86'
From!marke.ng,!customers,!product!management!(
From!exis.ng!so@ware!assets!!(technical!variability)(
V1 ⬄ f1V2 ⬄ f2V3 ⬄ f3
From!marke.ng,!customers,!product!management!(
From!exis.ng!so@ware!assets!(
realizability'
usefulness'
Metzger,'Heymans'et'al.'“DisambiguaBng'the'DocumentaBon'of'Variability'in'Sodware'Product'Lines:'A'SeparaBon'of'Concerns,'FormalizaBon'and'Automated'Analysis“'(RE’07)'
Realizability(checking(aggregate(
{{V1,V3,V2,VP1},'{V1,VP1},'{V3,VP1},''{VP1}}''
merge(diff((“unrealizable(products”)(
(
φ
1
slice((“realizable(part”)(2
3 compare(4'
see'also'[Acher'et'al.'AOSD’12'and'CAiSE’12'
With(FAMILIAR(
90'
realizibility.fml'
Puxng(all(together:(Example(3(
91'
#1(Reverse(Engineering(Architectural(Feature(Models(
Case(Study:(FraSCA>(Architecture(
Collabora>on(with(Anthony(Cleve((University(of(Namur(/(PRECISE,(Belgium),((Philippe(Collet(and(Philippe(Lahire((University(of(Nice(Sophia(An>polis),((Philippe(Merle(and(Laurence(Duchien((University(of(Lille(/(INRIA)(
FraSCAti
SCAParser
Java Compiler
JDK6 JDT
Optional
Mandatory
Alternative-Group
Or-Group
Assembly Factory
resthttp
Binding
MMFrascati
Component Factory
Metamodel
MMTuscany
constraints
rest requires MMFrascatihttp requires MMTuscany
FM1
[Acher!et!al.,!ECSA’11]![Acher!et!al.,!BENEVOL’11]![Acher!et!al.,!GDR!GPL’12]!
93'
Software Artefacts
Variability Modeling
Automatic Extraction
Software Architect View
?
1(2(
Philippe'Merle,'soZware'architect'of'FraSCA9'
Combina9on'of'plugin'dependencies''and'hierarchical'component'model'to''synthesise'a'feature'model'
Extrac>on(process(
Highlights(
• Automated'Procedure'– Extrac9ng'and'Combining'Variability'Sources'(incl.'soZware'architect'knowledge)'– Advanced'feature'modeling'techniques'have'been'developed'(tool'supported'with'FAMILIAR)'
• Some'Lessons'Learned'– Extrac9on'procedure'yields'promising'results'– Essen9al'role'of'soZware'architect''
• To'validate'the'extracted'feature'model'• To'integrate'knowledge'
• Extensions'– Evolu9on'of'FraSCA9'with'DIFF'(v1.3,'v1.4,'etc.)'
94'
#2(from(product(descrip>ons((to(feature(models(
95'
Collabora>on(with(Patrick(Heymans,(Anthony(Cleve,(Gilles(Perrouin((University(of(Namur(/(PRECISE,(Belgium),(Philippe(Collet(and(Philippe(Lahire((University(of(Nice(Sophia(An>polis),((
[Acher!et!al.,!VaMoS’12]!
96'
WikiMatrix
RSSStorage LicenseLicenseCostFee
US CommunityDifferent Licenses
LanguageUnicode
Java Python PHP PerlCommercial GPL GPL2NoLimitFiles Database FileRCS
Xor
Mandatory
Optional
640'configura9ons'(634'counter'examples)'
Exact'set'of'configura9ons,'each'configura9on''corresponding'to'at'least'one'product'
Manual'extrac9on'of'a'feature'model''from'product'descrip9on(s)'is'not'possible'
Automa>on((• Each'product'descrip9on'is'encoded'as'a'feature'model'
• Feature'models'{fm1,'fm2,…,fm8}'are'merged(– Output:'a'new'feature'model'
• Configura9on:'union'of'input'sets'of'configura9ons'• Hierarchy:'by'default,'we'exploit'the'structure'of'the'tabular'data'
– Can'be'overridden'by'specific'user'direc9ves'
– VariCell'• DSL'built'on'top'of'FAMILIAR'
97'
fm1'fm2'fm3'fm4'fm5'fm6'fm7'fm8''
Puxng(all(together:(Example(4(
98'
Modeling(Variability(From(Requirements(to(Run>me(
(The(case(of(video(surveillance(processing(chains(
Collabora>on(with(Sabine(Moisan(and(Jean[Paul(Rigault((INRIA)(
Adap>ve(systems(
SoZware'Product'Line'(SPL)'approach'
Video'surveillance'processing'chains'
Adap>ve(systems(
Adap>ve(systems(
large(number(of(so#ware(configura>ons(for(a(large(number(of(requirements(
constraints
……..
constraints
……..
constraints
……..
constraints
……..
So#ware(Pla�orm(Configura>ons(
SoZware'Product'Line'(SPL)'approach'
Video'surveillance'processing'chains'
constraints
……..
constraints
……..
constraints
……..
Video(Surveillance(Applica>on(Requirements(
Scene(Context( Objects(of(Interest(Specific(Task(
Adap>ve(systems(
Implementa>on:(under(the(hood(Videosurveillanceapplica0on
Task QoS Objectof
interest
Scene
context
Coun0ng Intrusion
Precision Response
,me
Quality Scene
descrip0on
Environment
Ligh0ngCamera
Person
Ar0ficial IndoorsViewFrame
rate
VideosurveillanceplaIorm
Acquisi0on Segmenta0on Classifica0on
Clustering
Gridstep With
window
Traversal
algorithm
Kernel
func0on
Edge Region
Model
Ellipse GravityGreyColor
(a)Ta
skm
odel
(b)P
laIorm
model
mandatoryfeature
op0onalfeature
alterna0vefeatures(XOR)
or‐features(OR)
cross‐modelconstraint
internalconstraint
specifica0onfeature
imposedbytheapplica0on
specifica0onfeaturededuced
frominternalconstraints
implementa0onfeaturededuced
fromcross‐constraints(transforma0on)
”neutral”implementa0onfeature
102'
Puxng(all(together:(Example(5(&(Demo…(
103'
Realizing(a(Car(Crash(Management(System(SPL(
104'
Scenario(
• Construc9on'of'a'domain'feature'model'for'the'bCMS'– Aggrega9on'of'func9onal'and'non'func9onal'parts'
• Reasoning'on'the'resul9ng'bCMS'FM'• Rela9ng'it'to'a'pla{orm'feature'model'(J2EE'from'SPLOT'repository)'
• Checking'realizability'– While'refining'both'feature'models'(bCMS'/'J2EE)'
105'
''
''
'' ''
''?(