SlideShare a Scribd company logo
Software variability
management
Xavier Devroey <x.d.m.devroey@tudelft.nl>
Office 4.W.740 (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
(Variability 101)
Software variability management - 2019
•Fast
•Cheap (at first)
•Limited
•Manage (large number of) copies
•Maintenance cost at each evolution
•Inconsistent evolution of copies
Software Product Line
(Variability level over 9000!)
Henry Ford 1901
Software variability management - 2019
Software variability management - 2019
•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
Example: Enterprise resource planning systems (ERPs)
Database
Core
Customer-
relationship
management
(CRM)
API
Sales Accounting HR …
• Integrated management of business processes
• Spread during the 1990s
Pohl, K., et al. (2005) Software product line engineering: foundations, principles,
and techniques. Springer.
Building the ERP platform
Configuring, customising and
deploying an ERP instance
Example: Enterprise resource planning systems (ERPs)
Example: Enterprise resource planning systems (ERPs)
Identification of
business processes
Configuration
Customisation and
extension
Data migration
Redefinition of
business processes
Hall of Fame Software Product Line Conference (SPLC)
http://splc.net/hall-of-fame/
• Boeing
• Bosch Group
• CelsiusTech Systems AB
• Cummins, Inc.
• Danfoss
• Ericsson AXE
• FISCAN
• General Motors Powertrain
(GMPT)
• Hewlett Packard
• HomeAway
• Lockheed Martin
• LSI Logic
• Lucent
• Market Maker
• Nokia
• Philips (Medical Systems)
• Philips (Software for Television
Sets)
• Philips (Telecommunication
Switching System)
• Salion, Inc.
• Siemens (syngo.via)
• Toshiba
• U.S. Army Live Traning
Transformation
• U.S. Naval Research
Laboratory
Feature Modelling
https://start.jhipster.tech/
Software variability management - 2019
Software variability management - 2019
4833 320 6,888
Options
0
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.
• Tree-like structure (directed acyclic graph).
• A feature is decomposed in sub- features
Feature model
• And decomposition: if the parent is selected then all sub-features
must be selected too
• Or decomposition: if the parent is selected then at least one sub-
features must be selected too
P
C1 C2 C3
Valid product:
{P, C1, C2, C3}
P
C1 C2 C3
Valid products:
{P, C1} {P, C2} {P, C3}
{P, C1, C2} {P, C2, C3} {P, C1, C3}
{P, C1, C2, C3}
• Tree-like structure (directed acyclic graph).
• A feature is decomposed in sub- features
Feature model
• Xor decomposition: if the parent is selected then exactly one sub-
features must be selected too
P
C1 C2 C3
Valid products:
{P, C1}
{P, C2}
{P, C3}
• Mandatory feature: if the
parent is selected then the
feature must be selected
• Optional feature: if the parent
is selected then the feature
must be selected
P
C
P
C
Valid product:
{P, C}
Valid products:
{P}
{P, C}
• Cross-tree constraints are expressed as boolean expressions
over the features.
Feature model
• The semantics of a feature model corresponds to all the valid
products allowed by the feature model.
P
C1 C2 C3
(C1 ∧ C2) C3
Valid products:
{P, C1} {P, C2} {P, C3}
{P, C1, C2} {P, C2, C3} {P, C1, C3}
{P, C1, C2, C3}
{{P, C1} {P, C2} {P, C3}
{P, C1, C2} {P, C2, C3} {P, C1, C3}
{P, C1, C2, C3}}
P
C1 C2 C3
[| |]=
Halin, A., et al. 2018. Test them all, is it worth it? Assessing configuration sampling on the
JHipster Web development stack. EMSE.
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
•…
Software variability management - 2019
Variability 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 flexibility for reconfiguration
• … but 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
Identifying Variability
(Feature = Option)
(Product = Configuration = Variant)
• Does your application have variability?
• Yes, most probably
• Does your application have variability?
• Hardware
• Plattorm
• Features
• Bundels
• Plugins
• Command line options
• …
• How is it managed (if it is managed)?
• For users
• Documentation only?
• Configurator (e.g., JHipster)?
• How is it managed (if it is managed)?
• For developers
• Documentation only?
• Model (e.g., feature model)?
• Planned in the development lifecycle?
Variability Management section outline
• Examples of variability in your system, and their
manifestation in architectural discussions
• Variability management
• Current variability implementation mechanism of your
system
• Conditional compiling
• Conditional statements (if-then-else)
• Design patterns
• Variability binding time
• Design-time
• Compile-time
• Load-time
• Run-time
• (Partial) feature model
Take-away
• 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
Configuration AMPlification (CAMP)
https://stamp-project.github.io/camp/

More Related Content

PDF
Software variability management - 2017
PPTX
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
PDF
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
PDF
Deploying End-to-End Deep Learning Pipelines with ONNX
PDF
Managing Millions of Tests Using Databricks
PPTX
Design patterns
PDF
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
PPTX
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
Software variability management - 2017
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Using JPA applications in the era of NoSQL: Introducing Hibernate OGM
Deploying End-to-End Deep Learning Pipelines with ONNX
Managing Millions of Tests Using Databricks
Design patterns
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)

Similar to Software variability management - 2019 (20)

PDF
Software Variability Management
PDF
Tools and Methods for Continuously Expanding Software Applications
PDF
[2015/2016] Modern development paradigms
PDF
[2016/2017] Modern development paradigms
PDF
PROPERTIES OF A FEATURE IN CODE-ASSETS: AN EXPLORATORY STUDY
PPTX
Requirements engineering for product lines
PDF
An Approach to Recover Feature Models From Object-Oriented Source Code
ODP
Path Dependent Development (PyCon AU)
ODP
Path dependent-development (PyCon India)
PDF
A Review of Feature Model Position in the Software Product Line and Its Extra...
PDF
Modern development paradigms
PDF
PDF
Modeldriven And Software Product Line Engineering Hugo Arboleda
PDF
Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...
PDF
Breaking down your build: Architectural patterns for a more efficient pipelin...
PDF
Changes and Bugs: Mining and Predicting Development Activities
PPTX
Software Architecture for Agile Development
PDF
Systems variability modeling a textual model mixing class and feature concepts
PPTX
Automated Software Engineering
Software Variability Management
Tools and Methods for Continuously Expanding Software Applications
[2015/2016] Modern development paradigms
[2016/2017] Modern development paradigms
PROPERTIES OF A FEATURE IN CODE-ASSETS: AN EXPLORATORY STUDY
Requirements engineering for product lines
An Approach to Recover Feature Models From Object-Oriented Source Code
Path Dependent Development (PyCon AU)
Path dependent-development (PyCon India)
A Review of Feature Model Position in the Software Product Line and Its Extra...
Modern development paradigms
Modeldriven And Software Product Line Engineering Hugo Arboleda
Manchester Expert Talks (April 2017) - Breaking Down Your Build: Architectura...
Breaking down your build: Architectural patterns for a more efficient pipelin...
Changes and Bugs: Mining and Predicting Development Activities
Software Architecture for Agile Development
Systems variability modeling a textual model mixing class and feature concepts
Automated Software Engineering
Ad

More from XavierDevroey (9)

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

PPTX
Introduction to Artificial Intelligence
PDF
top salesforce developer skills in 2025.pdf
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
System and Network Administration Chapter 2
PDF
Digital Strategies for Manufacturing Companies
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
Transform Your Business with a Software ERP System
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
AI in Product Development-omnex systems
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
ai tools demonstartion for schools and inter college
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Odoo Companies in India – Driving Business Transformation.pdf
Introduction to Artificial Intelligence
top salesforce developer skills in 2025.pdf
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
System and Network Administration Chapter 2
Digital Strategies for Manufacturing Companies
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Softaken Excel to vCard Converter Software.pdf
Upgrade and Innovation Strategies for SAP ERP Customers
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Transform Your Business with a Software ERP System
PTS Company Brochure 2025 (1).pdf.......
Design an Analysis of Algorithms II-SECS-1021-03
AI in Product Development-omnex systems
wealthsignaloriginal-com-DS-text-... (1).pdf
ai tools demonstartion for schools and inter college
Wondershare Filmora 15 Crack With Activation Key [2025
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
How to Migrate SBCGlobal Email to Yahoo Easily
Odoo Companies in India – Driving Business Transformation.pdf

Software variability management - 2019

  • 1. Software variability management Xavier Devroey <x.d.m.devroey@tudelft.nl> Office 4.W.740 (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
  • 22. Example: Enterprise resource planning systems (ERPs) Database Core Customer- relationship management (CRM) API Sales Accounting HR … • Integrated management of business processes • Spread during the 1990s
  • 23. Pohl, K., et al. (2005) Software product line engineering: foundations, principles, and techniques. Springer. Building the ERP platform Configuring, customising and deploying an ERP instance Example: Enterprise resource planning systems (ERPs)
  • 24. Example: Enterprise resource planning systems (ERPs) Identification of business processes Configuration Customisation and extension Data migration Redefinition of business processes
  • 25. Hall of Fame Software Product Line Conference (SPLC) http://splc.net/hall-of-fame/ • Boeing • Bosch Group • CelsiusTech Systems AB • Cummins, Inc. • Danfoss • Ericsson AXE • FISCAN • General Motors Powertrain (GMPT) • Hewlett Packard • HomeAway • Lockheed Martin • LSI Logic • Lucent • Market Maker • Nokia • Philips (Medical Systems) • Philips (Software for Television Sets) • Philips (Telecommunication Switching System) • Salion, Inc. • Siemens (syngo.via) • Toshiba • U.S. Army Live Traning Transformation • U.S. Naval Research Laboratory
  • 32. 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.
  • 33. A feature model documents the features of a product line and their relationships. Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
  • 34. • Tree-like structure (directed acyclic graph). • A feature is decomposed in sub- features Feature model • And decomposition: if the parent is selected then all sub-features must be selected too • Or decomposition: if the parent is selected then at least one sub- features must be selected too P C1 C2 C3 Valid product: {P, C1, C2, C3} P C1 C2 C3 Valid products: {P, C1} {P, C2} {P, C3} {P, C1, C2} {P, C2, C3} {P, C1, C3} {P, C1, C2, C3}
  • 35. • Tree-like structure (directed acyclic graph). • A feature is decomposed in sub- features Feature model • Xor decomposition: if the parent is selected then exactly one sub- features must be selected too P C1 C2 C3 Valid products: {P, C1} {P, C2} {P, C3} • Mandatory feature: if the parent is selected then the feature must be selected • Optional feature: if the parent is selected then the feature must be selected P C P C Valid product: {P, C} Valid products: {P} {P, C}
  • 36. • Cross-tree constraints are expressed as boolean expressions over the features. Feature model • The semantics of a feature model corresponds to all the valid products allowed by the feature model. P C1 C2 C3 (C1 ∧ C2) C3 Valid products: {P, C1} {P, C2} {P, C3} {P, C1, C2} {P, C2, C3} {P, C1, C3} {P, C1, C2, C3} {{P, C1} {P, C2} {P, C3} {P, C1, C2} {P, C2, C3} {P, C1, C3} {P, C1, C2, C3}} P C1 C2 C3 [| |]=
  • 37. Halin, A., et al. 2018. Test them all, is it worth it? Assessing configuration sampling on the JHipster Web development stack. EMSE.
  • 38. 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 •…
  • 41. 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.
  • 43. 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
  • 44. Conditional compiling • Implements variability with preprocessors • Using annotated code (here, templates)
  • 46. Load-time Binding Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer. • Decided after compilation when the program is started • More flexibility for reconfiguration • … but 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
  • 47. 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
  • 48. 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
  • 49. 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
  • 50. 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
  • 51. 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
  • 52. 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
  • 53. Identifying Variability (Feature = Option) (Product = Configuration = Variant)
  • 54. • Does your application have variability? • Yes, most probably
  • 55. • Does your application have variability? • Hardware • Plattorm • Features • Bundels • Plugins • Command line options • …
  • 56. • How is it managed (if it is managed)? • For users • Documentation only? • Configurator (e.g., JHipster)?
  • 57. • How is it managed (if it is managed)? • For developers • Documentation only? • Model (e.g., feature model)? • Planned in the development lifecycle?
  • 58. Variability Management section outline • Examples of variability in your system, and their manifestation in architectural discussions • Variability management • Current variability implementation mechanism of your system • Conditional compiling • Conditional statements (if-then-else) • Design patterns • Variability binding time • Design-time • Compile-time • Load-time • Run-time • (Partial) feature model
  • 60. • 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