106
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

So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Embed Size (px)

Citation preview

Page 1: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 2: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

•  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(

Page 3: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

(Why(managing(Variability(does((and(

will)(maHer(

3'

Page 4: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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/'

Page 5: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

5'

SoZwareTintensive'systems'

come'in'many'variants((

Page 6: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

6'

Page 7: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Linux'Kernel'

Page 8: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Database'Engine'

Page 9: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Printer'Firmware'

Page 10: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Features(in(Microso#(Office(

10'

Page 11: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

11'

Page 12: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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)'

Page 13: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

«'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(

Page 14: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

Page 15: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 16: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Variability = Complexity

Chris9an'Kästner'slide!

Page 17: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

a'unique'variant'for'every'

person'on'this'planet'

33'features'op9onal,'independent'

Chris9an'Kästner'slide!

Page 18: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

320'features''

more'variants'than'es9mated'

''atoms'in'the'universe'

op9onal,'independent'

Page 19: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

2000'features' 10000'features'

Chris9an'Kästner'slide!

Page 20: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

20'

((

Avoid(solving(the(same(problem!(((

(2,(3…n(>mes((

Automa>on?(

Page 21: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

21'

Unused(flexibility(

Page 22: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

22'

Illegal(variant(

Page 23: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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

Page 24: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

24'

SoZwareTintensive'systems'come'in'many'variants((

Model[based((Variability(Management(

Page 25: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

(

Modeling(Variability((Communica>ve((Analy>c((Genera>ve(( 25'

Page 26: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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.'

Page 27: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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]'((

Page 28: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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)!!!

Page 29: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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

Page 30: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

Page 31: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

31'

Unused(flexibility(

Page 32: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

32'

Illegal(variant(

Page 33: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

'

Page 34: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 35: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

Page 36: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 37: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional
Page 38: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

excludes

Page 39: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional
Page 40: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Feature(Models(

40'

Page 41: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Feature(Models((Background)(

41'

Hierarchy:'rooted'tree''Variability:((•  mandatory,''•  op9onal,''•  Groups:'exclusive'or'inclusive'features'•  CrossTtree'constraints'

Optional

Mandatory

Xor-Group

Or-Group

Page 42: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

!'!'

!'

!'!'

!'

Page 43: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

!'!'

!'

!'

!'

Page 44: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

!'!'

!'

!'!'

Page 45: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

!'!'

!'

!'

!'

!'

Page 46: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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

Page 47: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Managing(variability(models(with(FAMILIAR(

47'

Page 48: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

#1(Automated(Analysis(

48'

Page 49: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

#2(Mul>ple(Feature(Models(

49'

Page 50: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

•  #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(

Page 51: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

Page 52: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

Page 53: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Hello(World(

53'

helloworld.fml'

Page 54: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 55: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Typed(language((

55'

basics2.fml'

Page 56: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Typed(language((

56'

basics2.fml'

Page 57: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 58: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Feature(Accessors((1)(

58'

ZAccessors.fml'

Page 59: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Other(constructs(

59'

ZAccessors2.fml'

Page 60: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Configura>on(

60'

conf.fml'

Page 61: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Opera>ons(for(Feature(Models((1)(

61'φ

operatorsFM.fml'

Page 62: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Opera>ons(for(Feature(Models((2)(

62'

φ

operatorsFM2.fml'

Page 63: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Opera>ons(for(Feature(Models((3)(

63'

operatorsFM3.fml'

Page 64: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(''

''

'' ''

''

Page 65: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

''

''

'' ''

'' ''

''

'' ''

''

''

''

'' ''

''''

''

'' ''

''

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.''

Page 66: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Composing(Feature(Models((1)(

66'

aggregateBasics.fml'

Page 67: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Composing(Feature(Models((2)(

67'

aggregate1.fml'

Previous'version'

Page 68: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Merging(Feature(Models((

68'

mergeMI.fml'

Page 69: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

see'also'Thuem,'Kastner'and'Batory,'ICSE’09'

Comparing(Feature(Models(

69'

compare.fml'

Page 70: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Puxng(all(together:(Example(1(

70'

Page 71: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Merge(Intersec>on:(Available(Suppliers(

71'

∩( ∩(

A(customer(has(some(

requirements(

Suppliers?(Products?(

Page 72: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

In(FAMILIAR(

72'

suppliersExample0.fml'

Page 73: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Merge(Union:(Availability(Checking(

73'

Can(suppliers(provide(all(products?(Yes!(

“compare”('(

(

∩(

Page 74: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

In(FAMILIAR(

74'

suppliersExample.fml'

Page 75: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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

Page 76: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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

Page 77: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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]'

Page 78: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

78'

Building(“views”(of(a(feature(model(

Page 79: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

•  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(

Page 80: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 81: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 82: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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

Page 83: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

+(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]'

Page 84: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 85: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

85'

Slicing(with(FAMILIAR((2)(slicingOp.fml'

Page 86: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Puxng(all(together:(Example(2(

86'

Page 87: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

From!marke.ng,!customers,!product!management!(

From!exis.ng!so@ware!assets!!(technical!variability)(

Page 88: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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)'

Page 89: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 90: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

With(FAMILIAR(

90'

realizibility.fml'

Page 91: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Puxng(all(together:(Example(3(

91'

Page 92: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

#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]!

Page 93: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

Page 94: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 95: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

#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]!

Page 96: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 97: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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

Page 98: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Puxng(all(together:(Example(4(

98'

Page 99: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

Page 100: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

Page 101: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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(

Page 102: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 103: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Puxng(all(together:(Example(5(&(Demo…(

103'

Page 104: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

Realizing(a(Car(Crash(Management(System(SPL(

104'

Page 105: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

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'

Page 106: So#ware(Product(Lines( and(Variability(Managementdeptinfo.unice.fr/twiki/pub/Minfo/GenieLog1415/cours7-LPL-minfo... · FAMILIAR(language(and(environment(((((FAMILIAR(((And-Group Optional

''

''

'' ''

''?(