SlideShare a Scribd company logo
Software variability
management
Xavier Devroey <x.d.m.devroey@tudelft.nl>
Office 4.W.540 (4th floor, West side, new EWI building)
Introduction
software variability is the ability of
a software system or artefact to be efficiently
extended, changed, customised or configured
for use in a particular context.
Svahnberg, M., et al. (2005) ‘A taxonomy of variability realization techniques’,
Software - Practice and Experience, 35(8), pp. 705–754.
iOS 10.0.x
iOS 10.1.x
iOS 11.0.x
…
…
7.0.x
7.1.x
8.0.x
…
…
{
{
Hardware
• Processor
• RAM
• Screen size
• …
Platform
• OS
• Version
• Navigator
• …
Behaviour
gcc -help
33
Options
0
A unique product for every person on this planet
33 320
Options
0
More products than the
estimated atoms in the universe
33 320 6,888
Options
0
How to…
…develop?
…test?
…maintain?
…define requirements?
Clone and Own
Software variability management - 2017
•Fast
•Cheap (at first)
•Limited
•Manage (large number of) copies
•Maintenance cost at each evolution
•Inconsistent evolution of copies
Software Product Line
Henry Ford 1901
Software variability management - 2017
Software variability management - 2017
•Tailor-made
• For individual customers
•Reduced costs
• Reusable parts can be combined in different ways
•Improved quality
• Parts can be standardized and checked in isolation
and reused and tested in multiple products.
•Time to market
• building on top of existing parts is much faster than
developing it entirely from scratch
A product is built by systematically combining

commonalities, common to all products, and 

variabilities, specific to some products.
Features
A feature is a characteristic
or end-user-visible behaviour
of a software system.
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
Pohl, K., et al. (2005) Software product line engineering: foundations, principles,
and techniques. Springer.
The software product line engineering framework
Pohl, K., et al. (2005) Software product line engineering: foundations, principles,
and techniques. Springer.
The software product line engineering framework
Commonalities and variabilities

definition and realisation
Product derivation
Feature Modelling
33 320 6,888
Options
0
https://start.jhipster.tech/
4833 320 5,426
Options
0
Software variability management - 2017
Software variability management - 2017
https://start.jhipster.tech/
What about constraints?
Which type of application would you like to create?
You can either use:
• Monolithic application […]
• Microservice application […]
• Microservice gateway […]
http://www.jhipster.tech/creating-an-app/
Which type of database would you like to use?
You can choose between:
• No database (only available when using a microservice application)
• An SQL database (H2, MySQL, MariaDB, PostgreSQL, MSSQL, Oracle),
which you will access with Spring Data JPA
• MongoDB
• Cassandra
• Couchbase
Social login (Google, Facebook, Twitter)
This option is only available if you selected an SQL, MongoDB, or
Couchbase database.
A feature model documents
the features of a product line
and their relationships.
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
Software variability management - 2017
• Tree-like structure (directed acyclic graph).
• A feature is decomposed in sub- features using and, or,
or xor.
• Cross-tree constraints are expressed as boolean
expressions over the features.
• The semantics of a feature model corresponds to all the
valid products allowed by the feature model.
• A boolean feature model may be translated to a
Conjunctive Normal Form (CNF) formula
JHipster-App ∧ (Building ∨ ¬Maven) ∧ (Building ∨ ¬Gradle) ∧ (Maven ∨
Gradle ∨ ¬Building) ∧ (¬Maven ∨ ¬Gradle) ∧ (Server ∨ ¬Database) ∧ (Server
∨ ¬HibernateCache) ∧ (Server ∨ ¬Building) ∧ (Building ∨ ¬Server) ∧
(JHipster-App ∨ ¬Type) ∧ (JHipster-App ∨ ¬Client) ∧ (JHipster-App ∨
¬Server) ∧ (Type ∨ ¬JHipster-App) ∧ (Server ∨ ¬JHipster-App) ∧ (Type ∨
¬Monolithic) ∧ (Type ∨ ¬Microservice) ∧ (Type ∨ ¬Gateway) ∧ (Monolithic ∨
Microservice ∨ Gateway ∨ ¬Type) ∧ (¬Monolithic ∨ ¬Microservice) ∧
(¬Monolithic ∨ ¬Gateway) ∧ (¬Microservice ∨ ¬Gateway) ∧ (Database ∨
¬MongoDB) ∧ (Database ∨ ¬SQL) ∧ (Database ∨ ¬Cassandra) ∧ (MongoDB ∨ SQL
∨ Cassandra ∨ ¬Database) ∧ (¬MongoDB ∨ ¬SQL) ∧ (¬MongoDB ∨ ¬Cassandra) ∧
(¬SQL ∨ ¬Cassandra) ∧ (¬HibernateCache ∨ SQL) ∧ (¬Client ∨ Monolithic) ∧
(Client ∨ Microservice ∨ Gateway) ∧ True ∧ ¬False
Conjunctive Normal Form (CNF)
•SAT
•Consistency
•Valid configurations
•Dead features
•…
• Does your application have variability?
• Hardware
• Plattorm
• Features
• Bundels
• Plugins
• Command line options
• …
• How is it managed (if it is managed)?
• For developers
• Documentation only?
• Model (e.g., feature model)?
• Planned in the development lifecycle?
• For users
• Documentation only?
• Configurator (e.g., JHipster)?
• Validation mechanism?
Binding Time
Variability offers choices.
When we derive a product, we make decisions;
we decide which features will be included in the
product or not. We also say that we bind a decision.
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
Design-time binding
• Clone and own
Compile-time Binding
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Decided before or at compile time
• Allows optimisations
• Removes unnecessary code from the product
• Once the product has been generated and deployed, it is not
variable any more
Conditional compiling
• Implements variability with preprocessors
• Using annotated code (here, templates)
Conditional compiling
Yeoman
Configuration
Annotated code
Source code

without annotations
Load-time Binding
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Decided after compilation when the program is started
• More flexible to reconfigure
• Requires a reboot
• Memory and performance overhead
• All variations are compiled into a single binary
• Consistency conditions must be checked at load time
• Unnecessary functionality may be considered as potential
security threat
Parameters and Configuration Files
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Implement variability using conditional statements (such as if
and switch)
• Controlled by configuration parameters
• Passed to the method or module,
• Set as global variables in a system
Gcc
Run-time Binding
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Decided during program execution and may be changed latter
• Used in dynamic adaptive systems (e.g., robots)
• Most flexible to reconfigure
• Able to react to internal and external stimuli by adapting its behaviour
• Memory and performance overhead
• All variations are compiled into a single binary
• Consistency conditions must be checked at run time
• Unnecessary functionality may be considered as potential
security threat
Design Patterns
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Observer pattern (publish/subscribe) to implement distributed
event handling
• Feature are implemented as observers
• Variability is achieved by registering or not registering observers
Design Patterns
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Template-method pattern
• Using an abstract class
• Implement feature’s behaviour using inheritance
Design Patterns
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Strategy pattern
• Encodes a callback mechanism
• Alternative features where each corresponds to one implementation of
the algorithm
• Uses polymorphism instead of conditional statements
Design Patterns
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Decorator pattern
• Extends object with additional behaviour at run time
• Optional features and feature groups, of which multiple features can be
selected, are implemented as decorators
• Variability binding time?
• Design-time
• Compile-time
• Load-time
• Run-time
• Variability implementation mechanism?
• Conditional compiling
• Conditional statements (if-then-else)
• Design patterns
Testing
Software variability management - 2017
•26,256 possible products
•4,376 hours (182 days) processor time to
execute the tests
•8 person/month to setup testing infrastructure
How to test a SPL?
Combinatorial Interaction Testing
• Assumption
• Most of the faults are due to the undesired feature interactions of a
limited number of features
• Example
• Gradle + MariaDB fails due to a missing dependency in _liquibase.gradle
template file
• Idea
• Extract configurations so that all combinations of options are covered
(at least) once: t-wise sampling
t-wise sampling
• All t combinations of features are in at least one product
• 2-wise: 26,256 ➠ 41 products
• 3-wise: 26,256 ➠ 126 products
• 4-wise: 26,256 ➠ 374 products
… but, t-wise sampling is NP-complete when there are constraints
• Tools
• MoSo-Polite (constraint programming)
• PACOGEN (constraint programming)
• CASA (simulated annealing)
• SPLCAT (various algorithms) and Pairwiser (industrial version)
… have a hard time to go above 4-wise for large feature models
•26,256 possible products
•4,376 hours (182 days) processor time to
execute the tests
•8 person/month to setup testing infrastructure
How to test a SPL…
…when you have a
budget of max. 20
products?
Dissimilarity sampling
• Assumption
• Dissimilar configurations cover more t-tuples than similar ones
Henard, C., et al. (2014) Bypassing the Combinatorial Explosion: Using
Similarity to Generate and Prioritize T-Wise Test Configurations for Software
Product Lines. TSE. 40, 7 (Jul. 2014), 650–670.
• Tool: PLEDGE
• Evolutionary algorithm
• Fitness function based on distance (i.e., differences in the
selected features)
• Correlated with t-wise coverage but easier to compute
• Testers decide on generation time and number of products
•26,256 possible products
•4,376 hours (182 days) processor time to
execute the tests
•8 person/month to setup testing infrastructure
How to test a SPL…
…when you have a
budget of max. 20
products?
PLEDGE(fm, 20, 1 min.)
… but
What about product dependencies, and
how to automate the testing process?
Halin, A., et al. (2017) Test them all, is it worth it? A ground truth
comparison of configuration sampling strategies. CoRR. abs/1710.0,
(Oct. 2017).
Take-away message
• Variability is unavoidable in software developments
• It should be planned and managed
•Identify development practices
• Clone and own
• Software product line
• Most probably something intermediate
• Binding
• Design, compile, load, and/or runtime binding
• Variability implementation mechanism(s) (conditional compiling,
parameters, design patterns)
•Feature modelling helps to manage variability
• Analysis on the feature model
• Sample products to test
Software variability
management
Xavier Devroey <x.d.m.devroey@tudelft.nl>
Office 4.W.540 (4th floor, West side, new EWI building)

More Related Content

PDF
Releasing Your AAV Therapy with Confidence: Regulatory Considerations and Key...
DOC
The Micro-Article to Select Research Results
PDF
An Ordinal Logistic Regression.pdf
PDF
Software variability management - 2019
PPTX
Beginners overview of automated testing with Rspec
PPTX
[DSC Europe 23] Petar Zecevic - ML in Production on Databricks
PPTX
The art of architecture
PDF
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
Releasing Your AAV Therapy with Confidence: Regulatory Considerations and Key...
The Micro-Article to Select Research Results
An Ordinal Logistic Regression.pdf
Software variability management - 2019
Beginners overview of automated testing with Rspec
[DSC Europe 23] Petar Zecevic - ML in Production on Databricks
The art of architecture
COMMitMDE'18: Eclipse Hawk: model repository querying as a service

Similar to Software variability management - 2017 (20)

PPTX
MWLUG 2015 - An Introduction to MVC
PDF
Modern development paradigms
PDF
Consolidating MLOps at One of Europe’s Biggest Airports
PPTX
Getting Started with Innoslate
PDF
Software Engineering: Today in The Betlefield
PPTX
An Introduction To Model  View  Controller In XPages
PPT
PPTX
Software Product Lines by Dr. Indika Kumara
PPTX
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
PDF
Netflix oss season 2 episode 1 - meetup Lightning talks
PPTX
DevOps for Machine Learning overview en-us
PDF
[Research] azure ml anatomy of a machine learning service - Sharat Chikkerur
PDF
Alex mang patterns for scalability in microsoft azure application
PPTX
Machine Learning Models in Production
PDF
[2015/2016] Modern development paradigms
PPTX
Legion - AI Runtime Platform
PDF
SledgehammerToFinebrush_Devnexus_2021
PDF
IncQuery Server for Teamwork Cloud - Talk at IW2019
KEY
The Why and How of Scala at Twitter
PPTX
Justin Basilico, Research/ Engineering Manager at Netflix at MLconf SF - 11/1...
MWLUG 2015 - An Introduction to MVC
Modern development paradigms
Consolidating MLOps at One of Europe’s Biggest Airports
Getting Started with Innoslate
Software Engineering: Today in The Betlefield
An Introduction To Model  View  Controller In XPages
Software Product Lines by Dr. Indika Kumara
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
Netflix oss season 2 episode 1 - meetup Lightning talks
DevOps for Machine Learning overview en-us
[Research] azure ml anatomy of a machine learning service - Sharat Chikkerur
Alex mang patterns for scalability in microsoft azure application
Machine Learning Models in Production
[2015/2016] Modern development paradigms
Legion - AI Runtime Platform
SledgehammerToFinebrush_Devnexus_2021
IncQuery Server for Teamwork Cloud - Talk at IW2019
The Why and How of Scala at Twitter
Justin Basilico, Research/ Engineering Manager at Netflix at MLconf SF - 11/1...
Ad

More from XavierDevroey (10)

PDF
Software Variability Management
PDF
Effective and Efficient API Misuse Detection via Exception Propagation and Se...
PDF
Testing Variability-Intensive Systems, tutorial SPLC 2017, part Ii
PDF
Testing Variability-Intensive Systems, tutorial SPLC 2017, part I
PDF
Lorentz workshop - 2018
PDF
Combinatorial Interaction Testing, an Introduction - 2018
PDF
Software testing: an introduction - 2017
PDF
Software testing: an introduction - 2016
PDF
Software testing: an introduction - 2015
PDF
Research overview Oct. 2018
Software Variability Management
Effective and Efficient API Misuse Detection via Exception Propagation and Se...
Testing Variability-Intensive Systems, tutorial SPLC 2017, part Ii
Testing Variability-Intensive Systems, tutorial SPLC 2017, part I
Lorentz workshop - 2018
Combinatorial Interaction Testing, an Introduction - 2018
Software testing: an introduction - 2017
Software testing: an introduction - 2016
Software testing: an introduction - 2015
Research overview Oct. 2018
Ad

Recently uploaded (20)

PDF
medical staffing services at VALiNTRY
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
Online Work Permit System for Fast Permit Processing
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
Nekopoi APK 2025 free lastest update
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
System and Network Administraation Chapter 3
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
ai tools demonstartion for schools and inter college
medical staffing services at VALiNTRY
Understanding Forklifts - TECH EHS Solution
Online Work Permit System for Fast Permit Processing
Design an Analysis of Algorithms I-SECS-1021-03
ISO 45001 Occupational Health and Safety Management System
Upgrade and Innovation Strategies for SAP ERP Customers
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Navsoft: AI-Powered Business Solutions & Custom Software Development
Softaken Excel to vCard Converter Software.pdf
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Nekopoi APK 2025 free lastest update
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Design an Analysis of Algorithms II-SECS-1021-03
ManageIQ - Sprint 268 Review - Slide Deck
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Odoo Companies in India – Driving Business Transformation.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
System and Network Administraation Chapter 3
Internet Downloader Manager (IDM) Crack 6.42 Build 41
ai tools demonstartion for schools and inter college

Software variability management - 2017

  • 1. Software variability management Xavier Devroey <x.d.m.devroey@tudelft.nl> Office 4.W.540 (4th floor, West side, new EWI building)
  • 3. software variability is the ability of a software system or artefact to be efficiently extended, changed, customised or configured for use in a particular context. Svahnberg, M., et al. (2005) ‘A taxonomy of variability realization techniques’, Software - Practice and Experience, 35(8), pp. 705–754.
  • 4. iOS 10.0.x iOS 10.1.x iOS 11.0.x … … 7.0.x 7.1.x 8.0.x … … { { Hardware • Processor • RAM • Screen size • … Platform • OS • Version • Navigator • …
  • 6. 33 Options 0 A unique product for every person on this planet
  • 7. 33 320 Options 0 More products than the estimated atoms in the universe
  • 12. •Fast •Cheap (at first) •Limited •Manage (large number of) copies •Maintenance cost at each evolution •Inconsistent evolution of copies
  • 17. •Tailor-made • For individual customers •Reduced costs • Reusable parts can be combined in different ways •Improved quality • Parts can be standardized and checked in isolation and reused and tested in multiple products. •Time to market • building on top of existing parts is much faster than developing it entirely from scratch
  • 18. A product is built by systematically combining
 commonalities, common to all products, and 
 variabilities, specific to some products. Features
  • 19. A feature is a characteristic or end-user-visible behaviour of a software system. Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
  • 20. Pohl, K., et al. (2005) Software product line engineering: foundations, principles, and techniques. Springer. The software product line engineering framework
  • 21. Pohl, K., et al. (2005) Software product line engineering: foundations, principles, and techniques. Springer. The software product line engineering framework Commonalities and variabilities
 definition and realisation Product derivation
  • 29. What about constraints? Which type of application would you like to create? You can either use: • Monolithic application […] • Microservice application […] • Microservice gateway […] http://www.jhipster.tech/creating-an-app/ Which type of database would you like to use? You can choose between: • No database (only available when using a microservice application) • An SQL database (H2, MySQL, MariaDB, PostgreSQL, MSSQL, Oracle), which you will access with Spring Data JPA • MongoDB • Cassandra • Couchbase Social login (Google, Facebook, Twitter) This option is only available if you selected an SQL, MongoDB, or Couchbase database.
  • 30. A feature model documents the features of a product line and their relationships. Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
  • 32. • Tree-like structure (directed acyclic graph). • A feature is decomposed in sub- features using and, or, or xor. • Cross-tree constraints are expressed as boolean expressions over the features. • The semantics of a feature model corresponds to all the valid products allowed by the feature model. • A boolean feature model may be translated to a Conjunctive Normal Form (CNF) formula
  • 33. JHipster-App ∧ (Building ∨ ¬Maven) ∧ (Building ∨ ¬Gradle) ∧ (Maven ∨ Gradle ∨ ¬Building) ∧ (¬Maven ∨ ¬Gradle) ∧ (Server ∨ ¬Database) ∧ (Server ∨ ¬HibernateCache) ∧ (Server ∨ ¬Building) ∧ (Building ∨ ¬Server) ∧ (JHipster-App ∨ ¬Type) ∧ (JHipster-App ∨ ¬Client) ∧ (JHipster-App ∨ ¬Server) ∧ (Type ∨ ¬JHipster-App) ∧ (Server ∨ ¬JHipster-App) ∧ (Type ∨ ¬Monolithic) ∧ (Type ∨ ¬Microservice) ∧ (Type ∨ ¬Gateway) ∧ (Monolithic ∨ Microservice ∨ Gateway ∨ ¬Type) ∧ (¬Monolithic ∨ ¬Microservice) ∧ (¬Monolithic ∨ ¬Gateway) ∧ (¬Microservice ∨ ¬Gateway) ∧ (Database ∨ ¬MongoDB) ∧ (Database ∨ ¬SQL) ∧ (Database ∨ ¬Cassandra) ∧ (MongoDB ∨ SQL ∨ Cassandra ∨ ¬Database) ∧ (¬MongoDB ∨ ¬SQL) ∧ (¬MongoDB ∨ ¬Cassandra) ∧ (¬SQL ∨ ¬Cassandra) ∧ (¬HibernateCache ∨ SQL) ∧ (¬Client ∨ Monolithic) ∧ (Client ∨ Microservice ∨ Gateway) ∧ True ∧ ¬False Conjunctive Normal Form (CNF) •SAT •Consistency •Valid configurations •Dead features •…
  • 34. • Does your application have variability? • Hardware • Plattorm • Features • Bundels • Plugins • Command line options • … • How is it managed (if it is managed)? • For developers • Documentation only? • Model (e.g., feature model)? • Planned in the development lifecycle? • For users • Documentation only? • Configurator (e.g., JHipster)? • Validation mechanism?
  • 36. Variability offers choices. When we derive a product, we make decisions; we decide which features will be included in the product or not. We also say that we bind a decision. Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
  • 38. Compile-time Binding Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer. • Decided before or at compile time • Allows optimisations • Removes unnecessary code from the product • Once the product has been generated and deployed, it is not variable any more
  • 39. Conditional compiling • Implements variability with preprocessors • Using annotated code (here, templates)
  • 41. Load-time Binding Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer. • Decided after compilation when the program is started • More flexible to reconfigure • Requires a reboot • Memory and performance overhead • All variations are compiled into a single binary • Consistency conditions must be checked at load time • Unnecessary functionality may be considered as potential security threat
  • 42. Parameters and Configuration Files Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer. • Implement variability using conditional statements (such as if and switch) • Controlled by configuration parameters • Passed to the method or module, • Set as global variables in a system Gcc
  • 43. Run-time Binding Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer. • Decided during program execution and may be changed latter • Used in dynamic adaptive systems (e.g., robots) • Most flexible to reconfigure • Able to react to internal and external stimuli by adapting its behaviour • Memory and performance overhead • All variations are compiled into a single binary • Consistency conditions must be checked at run time • Unnecessary functionality may be considered as potential security threat
  • 44. Design Patterns Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer. • Observer pattern (publish/subscribe) to implement distributed event handling • Feature are implemented as observers • Variability is achieved by registering or not registering observers
  • 45. Design Patterns Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer. • Template-method pattern • Using an abstract class • Implement feature’s behaviour using inheritance
  • 46. Design Patterns Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer. • Strategy pattern • Encodes a callback mechanism • Alternative features where each corresponds to one implementation of the algorithm • Uses polymorphism instead of conditional statements
  • 47. Design Patterns Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer. • Decorator pattern • Extends object with additional behaviour at run time • Optional features and feature groups, of which multiple features can be selected, are implemented as decorators
  • 48. • Variability binding time? • Design-time • Compile-time • Load-time • Run-time • Variability implementation mechanism? • Conditional compiling • Conditional statements (if-then-else) • Design patterns
  • 51. •26,256 possible products •4,376 hours (182 days) processor time to execute the tests •8 person/month to setup testing infrastructure How to test a SPL?
  • 52. Combinatorial Interaction Testing • Assumption • Most of the faults are due to the undesired feature interactions of a limited number of features • Example • Gradle + MariaDB fails due to a missing dependency in _liquibase.gradle template file • Idea • Extract configurations so that all combinations of options are covered (at least) once: t-wise sampling
  • 53. t-wise sampling • All t combinations of features are in at least one product • 2-wise: 26,256 ➠ 41 products • 3-wise: 26,256 ➠ 126 products • 4-wise: 26,256 ➠ 374 products … but, t-wise sampling is NP-complete when there are constraints • Tools • MoSo-Polite (constraint programming) • PACOGEN (constraint programming) • CASA (simulated annealing) • SPLCAT (various algorithms) and Pairwiser (industrial version) … have a hard time to go above 4-wise for large feature models
  • 54. •26,256 possible products •4,376 hours (182 days) processor time to execute the tests •8 person/month to setup testing infrastructure How to test a SPL… …when you have a budget of max. 20 products?
  • 55. Dissimilarity sampling • Assumption • Dissimilar configurations cover more t-tuples than similar ones Henard, C., et al. (2014) Bypassing the Combinatorial Explosion: Using Similarity to Generate and Prioritize T-Wise Test Configurations for Software Product Lines. TSE. 40, 7 (Jul. 2014), 650–670. • Tool: PLEDGE • Evolutionary algorithm • Fitness function based on distance (i.e., differences in the selected features) • Correlated with t-wise coverage but easier to compute • Testers decide on generation time and number of products
  • 56. •26,256 possible products •4,376 hours (182 days) processor time to execute the tests •8 person/month to setup testing infrastructure How to test a SPL… …when you have a budget of max. 20 products? PLEDGE(fm, 20, 1 min.)
  • 57. … but What about product dependencies, and how to automate the testing process? Halin, A., et al. (2017) Test them all, is it worth it? A ground truth comparison of configuration sampling strategies. CoRR. abs/1710.0, (Oct. 2017).
  • 59. • Variability is unavoidable in software developments • It should be planned and managed •Identify development practices • Clone and own • Software product line • Most probably something intermediate • Binding • Design, compile, load, and/or runtime binding • Variability implementation mechanism(s) (conditional compiling, parameters, design patterns) •Feature modelling helps to manage variability • Analysis on the feature model • Sample products to test
  • 60. Software variability management Xavier Devroey <x.d.m.devroey@tudelft.nl> Office 4.W.540 (4th floor, West side, new EWI building)