SlideShare uma empresa Scribd logo
1 de 61
Baixar para ler offline
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)
•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
•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/
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
•…
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/

Mais conteúdo relacionado

Semelhante a Software variability management - 2019

Modern development paradigms
Modern development paradigmsModern development paradigms
Modern development paradigmsIvano Malavolta
 
IncQuery Labs Models 2020 MIP Talk
IncQuery Labs Models 2020 MIP TalkIncQuery Labs Models 2020 MIP Talk
IncQuery Labs Models 2020 MIP TalkIncQuery Labs
 
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...waqarnabi
 
openCPQ - A React-Based Product-Configuration Toolkit
openCPQ - A React-Based Product-Configuration ToolkitopenCPQ - A React-Based Product-Configuration Toolkit
openCPQ - A React-Based Product-Configuration ToolkitTim Geisler
 
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...Jose Quesada (hiring)
 
COBWEB: Towards an Optimised Interoperability Framework for Citizen Science
COBWEB: Towards an Optimised Interoperability Framework for Citizen ScienceCOBWEB: Towards an Optimised Interoperability Framework for Citizen Science
COBWEB: Towards an Optimised Interoperability Framework for Citizen ScienceCOBWEB Project
 
Software Product Lines by Dr. Indika Kumara
Software Product Lines by Dr. Indika KumaraSoftware Product Lines by Dr. Indika Kumara
Software Product Lines by Dr. Indika KumaraThejan Wijesinghe
 
SERENE 2014 School: Daniel varro serene2014_school
SERENE 2014 School: Daniel varro serene2014_schoolSERENE 2014 School: Daniel varro serene2014_school
SERENE 2014 School: Daniel varro serene2014_schoolHenry Muccini
 
SERENE 2014 School: Incremental Model Queries over the Cloud
SERENE 2014 School: Incremental Model Queries over the CloudSERENE 2014 School: Incremental Model Queries over the Cloud
SERENE 2014 School: Incremental Model Queries over the CloudSERENEWorkshop
 
OpenSAF Symposium_Python Bindings_9.21.11
OpenSAF Symposium_Python Bindings_9.21.11OpenSAF Symposium_Python Bindings_9.21.11
OpenSAF Symposium_Python Bindings_9.21.11OpenSAF Foundation
 
IncQuery-D: Distributed Incremental Model Queries over the Cloud: Engineerin...
IncQuery-D: Distributed Incremental Model Queries over the Cloud: Engineerin...IncQuery-D: Distributed Incremental Model Queries over the Cloud: Engineerin...
IncQuery-D: Distributed Incremental Model Queries over the Cloud: Engineerin...Daniel Varro
 
Machine Learning Models in Production
Machine Learning Models in ProductionMachine Learning Models in Production
Machine Learning Models in ProductionDataWorks Summit
 
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...Robert Grossman
 
Autonomous Machines with Project Bonsai
Autonomous Machines with Project BonsaiAutonomous Machines with Project Bonsai
Autonomous Machines with Project BonsaiIvo Andreev
 
Kognitio - an overview
Kognitio - an overviewKognitio - an overview
Kognitio - an overviewKognitio
 
[2016/2017] Modern development paradigms
[2016/2017] Modern development paradigms [2016/2017] Modern development paradigms
[2016/2017] Modern development paradigms Ivano Malavolta
 
Getting Started with Innoslate
Getting Started with InnoslateGetting Started with Innoslate
Getting Started with InnoslateElizabeth Steiner
 
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...HostedbyConfluent
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talksRuslan Meshenberg
 

Semelhante a Software variability management - 2019 (20)

Modern development paradigms
Modern development paradigmsModern development paradigms
Modern development paradigms
 
IncQuery Labs Models 2020 MIP Talk
IncQuery Labs Models 2020 MIP TalkIncQuery Labs Models 2020 MIP Talk
IncQuery Labs Models 2020 MIP Talk
 
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
 
openCPQ - A React-Based Product-Configuration Toolkit
openCPQ - A React-Based Product-Configuration ToolkitopenCPQ - A React-Based Product-Configuration Toolkit
openCPQ - A React-Based Product-Configuration Toolkit
 
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...
 
COBWEB: Towards an Optimised Interoperability Framework for Citizen Science
COBWEB: Towards an Optimised Interoperability Framework for Citizen ScienceCOBWEB: Towards an Optimised Interoperability Framework for Citizen Science
COBWEB: Towards an Optimised Interoperability Framework for Citizen Science
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Software Product Lines by Dr. Indika Kumara
Software Product Lines by Dr. Indika KumaraSoftware Product Lines by Dr. Indika Kumara
Software Product Lines by Dr. Indika Kumara
 
SERENE 2014 School: Daniel varro serene2014_school
SERENE 2014 School: Daniel varro serene2014_schoolSERENE 2014 School: Daniel varro serene2014_school
SERENE 2014 School: Daniel varro serene2014_school
 
SERENE 2014 School: Incremental Model Queries over the Cloud
SERENE 2014 School: Incremental Model Queries over the CloudSERENE 2014 School: Incremental Model Queries over the Cloud
SERENE 2014 School: Incremental Model Queries over the Cloud
 
OpenSAF Symposium_Python Bindings_9.21.11
OpenSAF Symposium_Python Bindings_9.21.11OpenSAF Symposium_Python Bindings_9.21.11
OpenSAF Symposium_Python Bindings_9.21.11
 
IncQuery-D: Distributed Incremental Model Queries over the Cloud: Engineerin...
IncQuery-D: Distributed Incremental Model Queries over the Cloud: Engineerin...IncQuery-D: Distributed Incremental Model Queries over the Cloud: Engineerin...
IncQuery-D: Distributed Incremental Model Queries over the Cloud: Engineerin...
 
Machine Learning Models in Production
Machine Learning Models in ProductionMachine Learning Models in Production
Machine Learning Models in Production
 
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
 
Autonomous Machines with Project Bonsai
Autonomous Machines with Project BonsaiAutonomous Machines with Project Bonsai
Autonomous Machines with Project Bonsai
 
Kognitio - an overview
Kognitio - an overviewKognitio - an overview
Kognitio - an overview
 
[2016/2017] Modern development paradigms
[2016/2017] Modern development paradigms [2016/2017] Modern development paradigms
[2016/2017] Modern development paradigms
 
Getting Started with Innoslate
Getting Started with InnoslateGetting Started with Innoslate
Getting Started with Innoslate
 
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talks
 

Mais de XavierDevroey

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

Mais de XavierDevroey (10)

Software Variability Management
Software Variability ManagementSoftware Variability Management
Software Variability Management
 
Effective and Efficient API Misuse Detection via Exception Propagation and Se...
Effective and Efficient API Misuse Detection via Exception Propagation and Se...Effective and Efficient API Misuse Detection via Exception Propagation and Se...
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 IiTesting Variability-Intensive Systems, tutorial SPLC 2017, part Ii
Testing Variability-Intensive Systems, tutorial SPLC 2017, part Ii
 
Testing Variability-Intensive Systems, tutorial SPLC 2017, part I
Testing Variability-Intensive Systems, tutorial SPLC 2017, part ITesting Variability-Intensive Systems, tutorial SPLC 2017, part I
Testing Variability-Intensive Systems, tutorial SPLC 2017, part I
 
Lorentz workshop - 2018
Lorentz workshop - 2018Lorentz workshop - 2018
Lorentz workshop - 2018
 
Combinatorial Interaction Testing, an Introduction - 2018
Combinatorial Interaction Testing, an Introduction - 2018Combinatorial Interaction Testing, an Introduction - 2018
Combinatorial Interaction Testing, an Introduction - 2018
 
Software testing: an introduction - 2017
Software testing: an introduction - 2017Software testing: an introduction - 2017
Software testing: an introduction - 2017
 
Software testing: an introduction - 2016
Software testing: an introduction - 2016Software testing: an introduction - 2016
Software testing: an introduction - 2016
 
Software testing: an introduction - 2015
Software testing: an introduction - 2015Software testing: an introduction - 2015
Software testing: an introduction - 2015
 
Research overview Oct. 2018
Research overview Oct. 2018Research overview Oct. 2018
Research overview Oct. 2018
 

Último

WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 

Último (20)

WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 

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
  • 11.
  • 12. •Fast •Cheap (at first) •Limited •Manage (large number of) copies •Maintenance cost at each evolution •Inconsistent evolution of copies
  • 15.
  • 16.
  • 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
  • 28.
  • 29.
  • 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 •…
  • 39.
  • 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