77
Evolving Dynamic So/ware Product Lines Clément Quinton, Luciano Baresi EASSy, September 710, 2015 Japan

Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Evolving  Dynamic  So/ware  Product  Lines

Clément  Quinton,  Luciano  Baresi

EASSy,  September  7-­‐10,  2015  -­‐  Japan

Page 2: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

So/ware  Product  Lines

3

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Variability  Model

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Domain  Engineering

Applica@on  Engineering

Page 3: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

So/ware  Product  Lines

3

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Variability  Model

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Design  Time Run@me

Domain  Engineering

Applica@on  Engineering

Page 4: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Dynamic  So/ware  Product  Lines

4

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

Domain  Engineering

Applica@on  EngineeringDesign  Time Run@me

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Variability  Model

Page 5: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Dynamic  So/ware  Product  Lines

5

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

Domain  Engineering

Applica@on  EngineeringDesign  Time Run@me

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Variability  Model

Page 6: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Dynamic  So/ware  Product  Lines

5

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

Domain  Engineering

Applica@on  EngineeringDesign  Time Run@me

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Adapta@onReconfigura@on

Variability  Model

Page 7: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Dynamic  So/ware  Product  Lines

6

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

Domain  Engineering

Applica@on  EngineeringDesign  Time Run@me

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Adapta@onReconfigura@on

Variability  Model

Page 8: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Dynamic  So/ware  Product  Lines

6

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

Domain  Engineering

Applica@on  EngineeringDesign  Time Run@me

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Adapta@onReconfigura@on

Variability  Model

Page 9: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Why  DSPL  for  Adap@ve  Systems?

7

optionalmandatory

alternative

or

Legend

[1..4] cardinalityApplication

Server

Jelastic

Database

SQL NoSQL

MySQL

MariaDBPostgreSQL

MongoDB CouchDB

GlassFish

Jetty

[1..8]

NginxLanguage

PHP

TomEE+

Tomcat

7.0 6.0

Java

7 6

Tomcat'7.0'⟶'Java'7[2,*]'Applica6on'Server'⟶'Nginx

Page 10: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Why  DSPL  for  Adap@ve  Systems?

7

-­‐ Adapta3on  capabili3es  are  modeled  (boundaries!)

optionalmandatory

alternative

or

Legend

[1..4] cardinalityApplication

Server

Jelastic

Database

SQL NoSQL

MySQL

MariaDBPostgreSQL

MongoDB CouchDB

GlassFish

Jetty

[1..8]

NginxLanguage

PHP

TomEE+

Tomcat

7.0 6.0

Java

7 6

Tomcat'7.0'⟶'Java'7[2,*]'Applica6on'Server'⟶'Nginx

Page 11: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Why  DSPL  for  Adap@ve  Systems?

7

-­‐ Adapta3on  capabili3es  are  modeled  (boundaries!)

optionalmandatory

alternative

or

Legend

[1..4] cardinalityApplication

Server

Jelastic

Database

SQL NoSQL

MySQL

MariaDBPostgreSQL

MongoDB CouchDB

GlassFish

Jetty

[1..8]

NginxLanguage

PHP

TomEE+

Tomcat

7.0 6.0

Java

7 6

Tomcat'7.0'⟶'Java'7[2,*]'Applica6on'Server'⟶'Nginx

Page 12: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Why  DSPL  for  Adap@ve  Systems?

7

-­‐ Adapta3on  capabili3es  are  modeled  (boundaries!)

-­‐ Automated  reasoning  on  (re)configura3ons  

optionalmandatory

alternative

or

Legend

[1..4] cardinalityApplication

Server

Jelastic

Database

SQL NoSQL

MySQL

MariaDBPostgreSQL

MongoDB CouchDB

GlassFish

Jetty

[1..8]

NginxLanguage

PHP

TomEE+

Tomcat

7.0 6.0

Java

7 6

Tomcat'7.0'⟶'Java'7[2,*]'Applica6on'Server'⟶'Nginx

Page 13: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Why  DSPL  for  Adap@ve  Systems?

7

-­‐ Adapta3on  capabili3es  are  modeled  (boundaries!)

-­‐ Automated  reasoning  on  (re)configura3ons  

optionalmandatory

alternative

or

Legend

[1..4] cardinalityApplication

Server

Jelastic

Database

SQL NoSQL

MySQL

MariaDBPostgreSQL

MongoDB CouchDB

GlassFish

Jetty

[1..8]

NginxLanguage

PHP

TomEE+

Tomcat

7.0 6.0

Java

7 6

Tomcat'7.0'⟶'Java'7[2,*]'Applica6on'Server'⟶'Nginx

Page 14: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

8

‘’Design evolution is absolutely inevitable‘’

Kent  Beck,  The  Inevitability  of  Evolu?on,  IEEE  SoAware,  2010

Page 15: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Evolu@on  of  Dynamic  So/ware  Product  Lines

9

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

Domain  Engineering

Applica@on  EngineeringDesign  Time Run@me

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Adapta@onReconfigura@on

Variability  Model

Page 16: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

10

Example

Design  Time Run@me

optional mandatory

alternative

or [0..20] cardinality

attribute

Postgres

Hobby Standard

Name: #ConType: int Value: [0..20]

Heroku

Hobby

Name: #ConType: int Value: [0..20]

Page 17: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

10

Example

Design  Time Run@me

optional mandatory

alternative

or [0..20] cardinality

attribute

Postgres

Hobby Standard

Name: #ConType: int Value: [0..20]

Heroku

Hobby

Name: #ConType: int Value: [0..20]

Page 18: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

10

Example

Design  Time Run@me

optional mandatory

alternative

or [0..20] cardinality

attribute

Postgres

Hobby Standard

Name: #ConType: int Value: [0..20]

Heroku

PgBouncer pg:kill Largerplan

limits #Of

kills oneOf

switch to

Adaptation options

Hobby

Name: #ConType: int Value: [0..20]

Page 19: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

10

Example

Design  Time Run@me

optional mandatory

alternative

or [0..20] cardinality

attribute

Postgres

Hobby Standard

Name: #ConType: int Value: [0..20]

Heroku

PgBouncer pg:kill Largerplan

limits #Of

kills oneOf

switch to

Adaptation options

Hobby

Name: #ConType: int Value: [0..20]

Postgres

Hobby Standard

Name: #ConType: int Value: [0..20]

Heroku

2013

Page 20: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

10

Example

Design  Time Run@me

optional mandatory

alternative

or [0..20] cardinality

attribute

Postgres

Hobby Standard

Name: #ConType: int Value: [0..20]

Heroku

Hobby

Name: #ConType: int Value: [0..20]

Postgres

Hobby Standard

Name: #ConType: int Value: [0..20]

Heroku

2013

Page 21: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

11

Example

Design  Time Run@me

optional mandatory

alternative

or [0..20] cardinality

attribute

Postgres

Hobby Standard

Name: #ConType: int Value: [0..20]

Heroku

Hobby

Name: #ConType: int Value: [0..20]

Postgres

Hobby Standard

Name: #ConType: int Value: [0..20]

Heroku

2013

32 bits 64 bits

Page 22: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Dynamic  So/ware  Product  Lines

12

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

Domain  Engineering

Applica@on  EngineeringDesign  Time Run@me

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Adapta@onReconfigura@on

Variability  Model

Page 23: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Dynamic  So/ware  Product  Lines

12

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

Configura@onConfigura@on

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Deriva@on

Domain  Engineering

Applica@on  EngineeringDesign  Time Run@me

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Adapta@onReconfigura@on

Variability  Model

Page 24: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

13

Example

Design  Time Run@me

optional mandatory

alternative

or [0..20] cardinality

attribute

Hobby

Name: #ConType: int Value: [0..20]

Postgres

Hobby Standard

Heroku

Hobby32 bits

Standard32 bits

Artifacts repository

Page 25: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

13

Example

Design  Time Run@me

optional mandatory

alternative

or [0..20] cardinality

attribute

Hobby

Name: #ConType: int Value: [0..20]

Postgres

Hobby Standard

Heroku

Postgres

Hobby Standard

Heroku

Hobby32 bits

Hobby64 bits

Standard32 bits

Standard64 bits

Artifacts repository Hobby32 bits

Standard32 bits

Standard 64 ⟶ ¬ Hobby 32

Page 26: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

13

Example

Design  Time Run@me

optional mandatory

alternative

or [0..20] cardinality

attribute

Hobby

Name: #ConType: int Value: [0..20]

Postgres

Hobby Standard

Heroku

Postgres

Hobby Standard

Heroku

Hobby64 bits

Standard64 bits

Hobby32 bits

Standard32 bits

Standard 64 ⟶ ¬ Hobby 32

Name: #ConType: int Value: [0..20]

PgBouncer pg:kill Largerplan

limits #Of

kills oneOf

switch to

Adaptation options

32 bits

Page 27: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

The  problem:  consistency

14

Two  dimensions:  Space  and  Time

Page 28: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

Page 29: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

A

B C

D E

mandatory

alternative

Page 30: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

A

B C

D E

mandatory

alternative

Page 31: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

A

B C

D E

mandatory

alternative

E  is  a  dead  feature

Page 32: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

A

B

C

D

E

A

B C

D E

mandatory

alternative

A ⟶ BA ⟶ CC ⟶ DC ⟶ E

Page 33: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

A

B

C

D

E

A

B C

D E

mandatory

alternative

A ⟶ BA ⟶ CC ⟶ DC ⟶ E

F

F ⟶ CF ⟶ ¬ E

Page 34: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

A

B

C

D

E

A

B C

D E

mandatory

alternative

A ⟶ BA ⟶ CC ⟶ DC ⟶ E

F

F ⟶ CF ⟶ ¬ E

Page 35: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

Incompa3bili3es  between  -­‐  packages  (e.g.  Linux)  -­‐  plugins  (e.g.  Eclipse)

A

B

C

D

E

A

B C

D E

mandatory

alternative

A ⟶ BA ⟶ CC ⟶ DC ⟶ E

F

F ⟶ CF ⟶ ¬ E

Page 36: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

A

B

C

D

E

A

B C

D E

mandatory

alternative

A ⟶ BA ⟶ CC ⟶ DC ⟶ E

Page 37: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Space

15

Application Server

Cloud

Database

SQL NoSQLTomcat Jetty

So/ware  Ar@facts

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

{"id":&"SensApp",&&"nodeTypes":&[{&"id":&"t14micro",

& &&&&&&&&"os":&"GNULinux",& &&&&&&&&&… }&],

&&"artefactTypes":&[{"id":&"NoSQL",&"retrieval":&"wget&http://cloudml.org/services/nosql.sh",&"deployment":&"sudo&nosql.sh",&"provides":&[{&"id":&"NoSQLDB"&}]&&},

{"id":&"Jetty",&"retrieval":&"wget&http://cloudml.org/services/jetty.sh",&"deployment":&"sudo&jetty.sh",&"provides":&[{&"id":&"JettyContainer"&}]&&},&{"id":&"SensApp",&…&"deployment":&"sudo&sensapp.sh",&"requires":&[{&"id":&"JettyContainer"&},&& &&&&&&&&&&&&{&"id":&"NoSQLDB"&}]&&}]

}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...

Problem    Space

Variability  Model

Solu@on    Space

A

B

C

D

E

A

B C

D E

mandatory

alternative

A ⟶ BA ⟶ CC ⟶ DC ⟶ E

Page 38: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Time

16Design  Time Run@me

A

B

C

A

B

C

optional

Page 39: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Time

16Design  Time Run@me

A

B

C

A

B

CA

B

optional

Adaptation ruleif condition then C

Page 40: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Time

16Design  Time Run@me

A

B

C

A

B

A

B

C

A

B

C

A

B

optional

Adaptation ruleif condition then C

Page 41: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Time

16Design  Time Run@me

A

B

C

A

B

A

B

C

A

B

C

A

B

condition is met

optional

Adaptation ruleif condition then C

Page 42: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Time

16Design  Time Run@me

A

B

C

A

B

A

B

C

A

B

C

A

B

condition is met

?

optional

Adaptation ruleif condition then C

then

Page 43: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Time

16Design  Time Run@me

A

B

C

A

B

A

B

C

A

B

C

A

B

condition is met

?

optional

Adaptation ruleif condition then C

then

- something else- nothing

Page 44: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

17

CPS

Sensor

A_Light

On Off

Actuator

S_Light

Page 45: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

17

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

luminosity  <  40  lumens  —>  turnLightOn()  (ac3vates  the  On  feature)

optionalfeaturealternativefeature

mandatoryfeature

Page 46: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

17

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

luminosity  <  40  lumens  —>  turnLightOn()  (ac3vates  the  On  feature)

optionalfeaturealternativefeature

mandatoryfeature

Page 47: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

17

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

Soft Fullluminosity  <  40  lumens  —>  turnLightOn()  

(ac3vates  the  On  feature)

optionalfeaturealternativefeature

mandatoryfeature

Page 48: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

17

Automated  evolu@on  (based  on  rules,  default  solver  choice)  Manual  evolu@on  (user  choice)

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

Soft Fullluminosity  <  40  lumens  —>  turnLightOn()  

(ac3vates  the  On  feature)

optionalfeaturealternativefeature

mandatoryfeature

Page 49: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

18

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

luminosity  <  40  lumens  —>  turnLightOn()  (ac3vates  the  On  feature)

optionalfeaturealternativefeature

mandatoryfeature

Page 50: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

18

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

Kitchen LivingRoom

luminosity  <  40  lumens  —>  turnLightOn()  (ac3vates  the  On  feature)

optionalfeaturealternativefeature

mandatoryfeature

Page 51: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

18

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

Kitchen LivingRoom

luminosity  <  40  lumens  —>  turnLightOn()  (ac3vates  the  On  feature)

Automated  evolu@on  (based  on  rules,  default  solver  choice)  Manual  evolu@on  (user  choice)

optionalfeaturealternativefeature

mandatoryfeature

Page 52: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

19

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

luminosity  <  40  lumens  —>  turnLightOn()  (ac3vates  the  On  feature)

optionalfeaturealternativefeature

mandatoryfeature

Page 53: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

19

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

Soft Full

luminosity  <  40  lumens  —>  turnLightOn()  (ac3vates  the  On  feature)

optionalfeaturealternativefeature

mandatoryfeature

Page 54: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

It  depends

19

CPS

Sensor

A_Light

On Off

Actuator

S_Light

CPS

Sensor

A_Light

On Off

Actuator

S_Light

Manual  evolu@on  only

Soft Full

luminosity  <  40  lumens  —>  turnLightOn()  (ac3vates  the  On  feature)

optionalfeaturealternativefeature

mandatoryfeature

Page 55: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

To  sum  up

20

The  adapta@on  rules  must  evolve  to  maintain  the  DSPL  consistency

Page 56: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

To  sum  up

20

The  adapta@on  rules  must  evolve  to  maintain  the  DSPL  consistency

But  it’s  not  an  easy  task!

Page 57: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

To  sum  up

20

The  adapta@on  rules  must  evolve  to  maintain  the  DSPL  consistency

But  it’s  not  an  easy  task!

Modeling  and  Valida?ng  Dynamic  Adapta?on,  MODELS  2009

Page 58: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

To  sum  up

20

The  adapta@on  rules  must  evolve  to  maintain  the  DSPL  consistency

But  it’s  not  an  easy  task!

Modeling  and  Valida?ng  Dynamic  Adapta?on,  MODELS  2009

How  to  detect?

Page 59: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Our  idea

21

Run@me  elements

CPS

Sensor Actuator

S_Light

Configuration: A_Light ⟶ S_LightAdaptation: S_Light.luminosity < 40 ⟶ On

Name: luminosityType: int Value: __ lumens

Auto Manual

A_Light

On Off

Page 60: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

Page 61: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

controldynamic

reconfiguration

Page 62: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

controldynamic

reconfiguration

Page 63: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

controldynamic

reconfiguration

Page 64: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

controldynamic

reconfiguration

Page 65: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

uses

controldynamic

reconfiguration

Page 66: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

uses

updatescontroldynamic

reconfiguration

Page 67: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

usestriggers

updatescontroldynamic

reconfiguration

Page 68: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

usestriggers

updates

uses

controldynamic

reconfiguration

Page 69: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

usestriggers

updates

usesanalyzes

analyzes

controldynamic

reconfiguration

analyzes

Page 70: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

usestriggers

updates

usesanalyzes

analyzes

triggerscontroldynamic

reconfiguration

analyzes

Page 71: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

usestriggers

updates

usesanalyzes

analyzes

triggerscontroldynamic

reconfiguration

analyzes

Page 72: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

usestriggers

updates

usesanalyzes

analyzes

triggerscontroldynamic

reconfiguration

analyzes

Page 73: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

usestriggers

updates

usesanalyzes

analyzes

triggerscontroldynamic

reconfiguration

analyzes

Page 74: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

usestriggers

updates

usesanalyzes

analyzes

triggerscontroldynamic

reconfiguration

analyzes

Page 75: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Current  and  Future  Work

22

listensto changes

updates

usestriggers

updates

usesanalyzes

analyzes

triggerscontroldynamic

reconfiguration

analyzes

Human  in  the  loop!

Page 76: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Conclusion

23

• DSPL  must  evolve  while  systems  are  running  

-­‐ Systems  cannot  be  stopped  

• Need  for  tools/approaches  dealing  with  

-­‐ Consistency  maintenance  

-­‐ Uncertainty  

-­‐ History  

-­‐ Proac3ve  adapta3ons

Page 77: Evolving( DynamicSo/wareProductLines€¦ · Tomcat Jetty SQL NoSQL Variability (Model Application Server Cloud Database Tomcat Jetty SQL NoSQL Configuraon Application Server Cloud

Ques@ons  /  Comments  ?

24

Thank  you!