SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Downloaden Sie, um offline zu lesen
Software variability management
Xavier Devroey <x.d.m.devroey@tudelft.nl>
Office 4.W.740 (4th floor, West side, VMB building 28)
Introduction
Variability in hardware
Variability in platforms
Operating System:
Database Management System:
Variability in software
- Bundles
https://www.eclipse.org
- Bundles
- Command line parameters
OVERVIEW: clang LLVM compiler
USAGE: clang [options] <inputs>
OPTIONS:
-### Print (but do not run) the commands to run for this compilation
--analyzer-output <value>
Static analyzer report output format (html|plist|plist-multi-file|plist-html|text).
--analyze Run the static analyzer
-arcmt-migrate-emit-errors
Emit ARC errors even if the migrator can fix them
-arcmt-migrate-report-output <value>
Output path for the plist report
-B <dir> Add <dir> to search path for binaries and object files used implicitly
-CC Include comments from within macros in preprocessed output
-cfguard Emit tables required for Windows Control Flow Guard.
-cl-denorms-are-zero OpenCL only. Allow denormals to be flushed to zero.
-cl-fast-relaxed-math OpenCL only. Sets -cl-finite-math-only and -cl-unsafe-math-optimizations, and defines __FAST_RELAXED_MATH__.
-cl-finite-math-only OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf.
-cl-fp32-correctly-rounded-divide-sqrt
OpenCL only. Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded.
-cl-kernel-arg-info OpenCL only. Generate kernel argument metadata.
-cl-mad-enable OpenCL only. Allow use of less precise MAD computations in the generated binary.
-cl-no-signed-zeros OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.
-cl-opt-disable OpenCL only. This option disables all optimizations. By default optimizations are enabled.
-cl-single-precision-constant
OpenCL only. Treat double precision floating-point constant as single precision constant.
-cl-std=<value> OpenCL language standard to compile for.
-cl-strict-aliasing OpenCL only. This option is added for compatibility with OpenCL 1.0.
-cl-uniform-work-group-size
OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel
-cl-unsafe-math-optimizations
OpenCL only. Allow unsafe floating-point optimizations. Also implies -cl-no-signed-zeros and -cl-mad-enable.
--config <value> Specifies configuration file
--cuda-compile-host-device
Compile CUDA code for both host and device (default). Has no effect on non-CUDA compilations.
--cuda-device-only Compile CUDA code for device only
--cuda-gpu-arch=<value> CUDA GPU architecture (e.g. sm_35). May be specified more than once.
--cuda-host-only Compile CUDA code for host only. Has no effect on non-CUDA compilations.
--cuda-include-ptx=<value>
Include PTX for the follwing GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.
--cuda-noopt-device-debug
Enable device-side debug info generation. Disables ptxas optimizations.
--cuda-path-ignore-env Ignore environment variables to detect CUDA installation
--cuda-path=<value> CUDA installation path
-cxx-isystem <directory>
Add directory to the C++ SYSTEM include search path
-C Include comments in preprocessed output
-c Only run preprocess, compile, and assemble steps
-dD Print macro definitions in -E mode in addition to normal output
-dependency-dot <value> Filename to write DOT-formatted header dependencies to
-dependency-file <value>
Filename (or -) to write dependency output to
-dI Print include directives in -E mode in addition to normal output
-dM Print macro definitions in -E mode instead of normal output
-D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
-emit-ast Emit Clang AST files for source inputs
-emit-llvm Use the LLVM representation for assembler and object files
-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang<value>
Trivial automatic variable initialization to zero is only here for benchmarks, it'll eventually be removed, and I'm OK with that because I'm only using it to
benchmark
-E Only run the preprocessor
-faddrsig Emit an address-significance table
-faligned-allocation Enable C++17 aligned allocation functions
-fallow-editor-placeholders
Treat editor placeholders as valid source code
-fansi-escape-codes Use ANSI escape codes for diagnostics
-fapinotes-cache-path=<directory>
Does nothing; API notes are no longer cached separately from modules
-fapinotes-modules Enable module-based external API notes support
gcc -help
Variability in software
- Bundles
- Command line parameters
- Plugins
Variability in software
- Bundles
- Command line parameters
- Plugins
- Configuration files
<profiles>
<profile>
<!-- Define a profile for releases of the application -->
<!-- mvn release:prepare -P release -DskipTests=true -->
<!-- mvn release:perform -P release -DskipTests=true -->
<id>release</id>
<build>
<plugins>
[…]
</plugins>
</build>
</profile>
</profiles>
https://github.com/STAMP-project/botsing/blob/master/pom.xml
Variability in software
- Bundles
- Command line parameters
- Plugins
- Configuration files
- Microservices
☛
Variability in software
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.
Does your application have variability?
Yes, most probably
• What kind of variability?
• Hardware
• Platform
• Software
• Bundels
• Plugins
• Command line options
• Configuration files
• Microservices
• …
Challenges
33
Options
0
A unique product for every person on this planet
(8,589,934,592 products)
320
More products than the
estimated atoms in the universe
(2.135987e+96 products)
33
Options
0
6,88832033
Options
0
How to…
…develop?
…test?
…maintain?
…define requirements?
Clone and Own
(Variability 101)
Problem: how to manage the evolution of a large number of copies?
•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
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.
The software product line engineering framework
Commonalities and
variabilities

definition and realisation
Product derivation
Pohl, K., et al. (2005) Software product line engineering: foundations, principles, and techniques. Springer.
Example: SAP, an Enterprise Resource Planning system (ERP)
https://retool.com/blog/erp-for-engineers/
Integrated management of business processes and operational data
Database
Core
Customer-
relationship
management
(CRM)
API
Sales Accounting HR …
ERPs in numbers
- SAP was founded in 1972
- Designed to be extensible from the beginning
- Every year (worldwide)…
- companies spend $41B on ERPs
- SAP alone sells for $25B
- SAP systems manage 77% of the world’s transaction revenue, and
78% of the world’s food
6,88832033
Options
0 >8,000
A basic SAP installation has 20,000 database tables,
3,000 are configuration tables
SAP requires ~8,000 configuration decisions at setup
☛ SAP Configuration Specialist is an actual job title!
ERPs in numbers
- Switching to an ERP
- Costs $100 million to $500 million
- $30 million in software license fees,
- $200 million in consulting fees,
- millions for hardware,
- and millions to train managers and employees.
- Takes from four to six years
- Examples
- Cisco’s ERP implementation took 9 months and $15 million (best case)
- Dow Chemical’s implementation took 8 years and $1 billion
- the U.S. navy spent $1 billion on four different ERP projects that all
failed
Pohl, K., et al. (2005) Software product line engineering: foundations, principles, and techniques. Springer.
- Building the ERP platform
- Core
- API
- Modules
- Configuration workflow
- Configuration
- Deployment
- Training
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
•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
Feature Modelling
https://start.jhipster.tech/
4833 320 6,888
Options
0
Halin, A., et al. 2018. Test them all, is it worth it? Assessing configuration sampling on the JHipster Web development stack. EMSE.
A feature model documents
the features of a product line
and their relationships.
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
Vocabulary
Feature = Option
Product = Configuration = Variant
• Tree-like structure (directed acyclic graph).
• A feature is decomposed in sub-features
Feature diagram
• 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
• 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}
Feature diagram
• 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.
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
[| |]=
Feature diagram
Constraints and where to find them
Source: Configurator
https://start.jhipster.tech/
OR
decomposition
XOR
decomposition
AND
decomposition
Optional feature
Source: Documentation
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,MySQL, Oracle), which you will access
with Spring Data JPA
• MongoDB
• Cassandra
Social login (Google, Facebook, Twitter)
This option is only available if you selected an SQL
or MongoDB database.
XOR
decomposition
Additional
constraints
SocialLogin ⇒ (SQL ∨ MongDB)
XOR
decomposition
Optional feature
Additional
constraints
¬Database ⇒ MicroserviceApplication
SQL ⇒ SpringDataJPA
Source: Source code
public void invalidateSession(@PathVariable String series) throws UnsupportedEncodingException {
String decodedSeries = URLDecoder.decode(series, "UTF-8");
SecurityUtils.getCurrentUserLogin()
.flatMap(userRepository::findOneByLogin)
.ifPresent(u ->
persistentTokenRepository.findByUser(u).stream()
.filter(persistentToken -> StringUtils.equals(persistentToken.getSeries(),
decodedSeries))
<%_ if (databaseType === 'sql' || databaseType === 'mongodb') { _%>
.findAny().ifPresent(t -> persistentTokenRepository.deleteById(decodedSeries)));
<%_ } else if (databaseType === 'couchbase') { _%>
.findAny().ifPresent(t -> persistentTokenRepository.deleteBySeries(decodedSeries)));
<%_ } else { _%>
.findAny().ifPresent(persistentTokenRepository::delete));
<%_ } _%>
}<% } %>
https://github.com/jhipster/generator-jhipster/blob/master/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs
OR
decomposition
Mandatory
features
http://www.featureide.com
Halin, A., et al. 2018. Test them all, is it worth it? Assessing configuration sampling on the JHipster Web development stack. EMSE.
https://github.com/xdevroey/jhipster-dataset/tree/master/v3.6.1/featuremodel
JHipster v3.6.1
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
•…
JHipster v3.6.1: >26k
possible products
•Compact representation of all products
• For instance, using a feature diagram
•Sources for reverse-engineering
• Configurator
• Documentation
• Source code
•Can be formalised for analysis
• SAT of a configuration/product
• Analysis (consistency, dead features, etc.)
• …
Feature Modelling
Does your application have variability?
Yes, most probably
• What kind of variability?
• Hardware
• Plattorm
• Software
• Bundels
• Plugins
• Command line options
• Configuration files
• Microservices
• …
• How is it managed (if it is managed)?
• For users
• Documentation only?
• Configurator (e.g., JHipster)?
• For developers
• Documentation only?
• Model (e.g., feature model)?
• Planned in the development lifecycle?
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
•Design-time
• Clone and own
•Compile-time
• Conditional compilation
•Load-time
• Program parameters and configuration files
•Run-time
• Design patterns
Variability Binding Time
Take-away
Does your application have variability?
Yes, most probably
• What kind of variability?
• Hardware
• Platform
• Software
• Bundels
• Plugins
• Command line options
• Configuration files
• Microservices
• …
• How is it managed (if it is managed)?
• For users
• Documentation only?
• Configurator (e.g., JHipster)?
• For developers
• Documentation only?
• Model (e.g., feature model)?
• Planned in the development lifecycle?
Example: Docker images
Variability Management section outline
• Examples of variability in your system, and their manifestation in architectural
discussions
• Variability management
• (Partial) feature model
• 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
• Variability enables adaptability to the business domain
• 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
Take-aways

Weitere ähnliche Inhalte

Ähnlich wie Software Variability Management

Best Practices and Performance Studies for High-Performance Computing Clusters
Best Practices and Performance Studies for High-Performance Computing ClustersBest Practices and Performance Studies for High-Performance Computing Clusters
Best Practices and Performance Studies for High-Performance Computing ClustersIntel® Software
 
Yaetos Tech Overview
Yaetos Tech OverviewYaetos Tech Overview
Yaetos Tech Overviewprevota
 
OpenERP Technical Memento V0.7.3
OpenERP Technical Memento V0.7.3OpenERP Technical Memento V0.7.3
OpenERP Technical Memento V0.7.3Borni DHIFI
 
VClipse – Xtext-based IDE for the SAP Variant Configurator
VClipse – Xtext-based IDE for the SAP Variant ConfiguratorVClipse – Xtext-based IDE for the SAP Variant Configurator
VClipse – Xtext-based IDE for the SAP Variant ConfiguratorTim Geisler
 
Cloud-native Java EE-volution
Cloud-native Java EE-volutionCloud-native Java EE-volution
Cloud-native Java EE-volutionQAware GmbH
 
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...Christopher Diamantopoulos
 
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Codemotion
 
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Codemotion
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...tdc-globalcode
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftYaniv cohen
 
HSA HSAIL Introduction Hot Chips 2013
HSA HSAIL Introduction  Hot Chips 2013 HSA HSAIL Introduction  Hot Chips 2013
HSA HSAIL Introduction Hot Chips 2013 HSA Foundation
 
Aws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, ImplementationAws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, Implementationserkancapkan
 
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...Alkis Vazacopoulos
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirHideki Takase
 
PT-4052, Introduction to AMD Developer Tools, by Yaki Tebeka and Gordon Selley
PT-4052, Introduction to AMD Developer Tools, by Yaki Tebeka and Gordon SelleyPT-4052, Introduction to AMD Developer Tools, by Yaki Tebeka and Gordon Selley
PT-4052, Introduction to AMD Developer Tools, by Yaki Tebeka and Gordon SelleyAMD Developer Central
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Bastian Feder
 
IBM Systems Technical Symposium Melbourne, 2015
IBM Systems Technical Symposium Melbourne, 2015IBM Systems Technical Symposium Melbourne, 2015
IBM Systems Technical Symposium Melbourne, 2015Filipe Miranda
 
Logic synthesis with synopsys design compiler
Logic synthesis with synopsys design compilerLogic synthesis with synopsys design compiler
Logic synthesis with synopsys design compilernaeemtayyab
 

Ähnlich wie Software Variability Management (20)

Best Practices and Performance Studies for High-Performance Computing Clusters
Best Practices and Performance Studies for High-Performance Computing ClustersBest Practices and Performance Studies for High-Performance Computing Clusters
Best Practices and Performance Studies for High-Performance Computing Clusters
 
Yaetos Tech Overview
Yaetos Tech OverviewYaetos Tech Overview
Yaetos Tech Overview
 
OpenERP Technical Memento V0.7.3
OpenERP Technical Memento V0.7.3OpenERP Technical Memento V0.7.3
OpenERP Technical Memento V0.7.3
 
VClipse – Xtext-based IDE for the SAP Variant Configurator
VClipse – Xtext-based IDE for the SAP Variant ConfiguratorVClipse – Xtext-based IDE for the SAP Variant Configurator
VClipse – Xtext-based IDE for the SAP Variant Configurator
 
Cloud-native Java EE-volution
Cloud-native Java EE-volutionCloud-native Java EE-volution
Cloud-native Java EE-volution
 
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
 
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
 
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShift
 
RAGHUNATH_GORLA_RESUME
RAGHUNATH_GORLA_RESUMERAGHUNATH_GORLA_RESUME
RAGHUNATH_GORLA_RESUME
 
HSA HSAIL Introduction Hot Chips 2013
HSA HSAIL Introduction  Hot Chips 2013 HSA HSAIL Introduction  Hot Chips 2013
HSA HSAIL Introduction Hot Chips 2013
 
Aws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, ImplementationAws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, Implementation
 
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with Elixir
 
PT-4052, Introduction to AMD Developer Tools, by Yaki Tebeka and Gordon Selley
PT-4052, Introduction to AMD Developer Tools, by Yaki Tebeka and Gordon SelleyPT-4052, Introduction to AMD Developer Tools, by Yaki Tebeka and Gordon Selley
PT-4052, Introduction to AMD Developer Tools, by Yaki Tebeka and Gordon Selley
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
 
The NECSTLab Multi-Faceted Experience with AWS F1
The NECSTLab Multi-Faceted Experience with AWS F1The NECSTLab Multi-Faceted Experience with AWS F1
The NECSTLab Multi-Faceted Experience with AWS F1
 
IBM Systems Technical Symposium Melbourne, 2015
IBM Systems Technical Symposium Melbourne, 2015IBM Systems Technical Symposium Melbourne, 2015
IBM Systems Technical Symposium Melbourne, 2015
 
Logic synthesis with synopsys design compiler
Logic synthesis with synopsys design compilerLogic synthesis with synopsys design compiler
Logic synthesis with synopsys design compiler
 

Mehr von XavierDevroey

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
 
Software variability management - 2019
Software variability management - 2019Software variability management - 2019
Software variability management - 2019XavierDevroey
 
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 variability management - 2017
Software variability management - 2017Software variability management - 2017
Software variability management - 2017XavierDevroey
 
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
 

Mehr von XavierDevroey (11)

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...
 
Software variability management - 2019
Software variability management - 2019Software variability management - 2019
Software variability management - 2019
 
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 variability management - 2017
Software variability management - 2017Software variability management - 2017
Software variability management - 2017
 
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
 

Kürzlich hochgeladen

Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
fourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingfourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingTeacherCyreneCayanan
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxnegromaestrong
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxVishalSingh1417
 
Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.MateoGardella
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterMateoGardella
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin ClassesCeline George
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhikauryashika82
 

Kürzlich hochgeladen (20)

Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
fourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingfourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writing
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch Letter
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 

Software Variability Management

  • 1. Software variability management Xavier Devroey <x.d.m.devroey@tudelft.nl> Office 4.W.740 (4th floor, West side, VMB building 28)
  • 4. Variability in platforms Operating System: Database Management System:
  • 5. Variability in software - Bundles https://www.eclipse.org
  • 6. - Bundles - Command line parameters OVERVIEW: clang LLVM compiler USAGE: clang [options] <inputs> OPTIONS: -### Print (but do not run) the commands to run for this compilation --analyzer-output <value> Static analyzer report output format (html|plist|plist-multi-file|plist-html|text). --analyze Run the static analyzer -arcmt-migrate-emit-errors Emit ARC errors even if the migrator can fix them -arcmt-migrate-report-output <value> Output path for the plist report -B <dir> Add <dir> to search path for binaries and object files used implicitly -CC Include comments from within macros in preprocessed output -cfguard Emit tables required for Windows Control Flow Guard. -cl-denorms-are-zero OpenCL only. Allow denormals to be flushed to zero. -cl-fast-relaxed-math OpenCL only. Sets -cl-finite-math-only and -cl-unsafe-math-optimizations, and defines __FAST_RELAXED_MATH__. -cl-finite-math-only OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf. -cl-fp32-correctly-rounded-divide-sqrt OpenCL only. Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded. -cl-kernel-arg-info OpenCL only. Generate kernel argument metadata. -cl-mad-enable OpenCL only. Allow use of less precise MAD computations in the generated binary. -cl-no-signed-zeros OpenCL only. Allow use of less precise no signed zeros computations in the generated binary. -cl-opt-disable OpenCL only. This option disables all optimizations. By default optimizations are enabled. -cl-single-precision-constant OpenCL only. Treat double precision floating-point constant as single precision constant. -cl-std=<value> OpenCL language standard to compile for. -cl-strict-aliasing OpenCL only. This option is added for compatibility with OpenCL 1.0. -cl-uniform-work-group-size OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel -cl-unsafe-math-optimizations OpenCL only. Allow unsafe floating-point optimizations. Also implies -cl-no-signed-zeros and -cl-mad-enable. --config <value> Specifies configuration file --cuda-compile-host-device Compile CUDA code for both host and device (default). Has no effect on non-CUDA compilations. --cuda-device-only Compile CUDA code for device only --cuda-gpu-arch=<value> CUDA GPU architecture (e.g. sm_35). May be specified more than once. --cuda-host-only Compile CUDA code for host only. Has no effect on non-CUDA compilations. --cuda-include-ptx=<value> Include PTX for the follwing GPU architecture (e.g. sm_35) or 'all'. May be specified more than once. --cuda-noopt-device-debug Enable device-side debug info generation. Disables ptxas optimizations. --cuda-path-ignore-env Ignore environment variables to detect CUDA installation --cuda-path=<value> CUDA installation path -cxx-isystem <directory> Add directory to the C++ SYSTEM include search path -C Include comments in preprocessed output -c Only run preprocess, compile, and assemble steps -dD Print macro definitions in -E mode in addition to normal output -dependency-dot <value> Filename to write DOT-formatted header dependencies to -dependency-file <value> Filename (or -) to write dependency output to -dI Print include directives in -E mode in addition to normal output -dM Print macro definitions in -E mode instead of normal output -D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted) -emit-ast Emit Clang AST files for source inputs -emit-llvm Use the LLVM representation for assembler and object files -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang<value> Trivial automatic variable initialization to zero is only here for benchmarks, it'll eventually be removed, and I'm OK with that because I'm only using it to benchmark -E Only run the preprocessor -faddrsig Emit an address-significance table -faligned-allocation Enable C++17 aligned allocation functions -fallow-editor-placeholders Treat editor placeholders as valid source code -fansi-escape-codes Use ANSI escape codes for diagnostics -fapinotes-cache-path=<directory> Does nothing; API notes are no longer cached separately from modules -fapinotes-modules Enable module-based external API notes support gcc -help Variability in software
  • 7. - Bundles - Command line parameters - Plugins Variability in software
  • 8. - Bundles - Command line parameters - Plugins - Configuration files <profiles> <profile> <!-- Define a profile for releases of the application --> <!-- mvn release:prepare -P release -DskipTests=true --> <!-- mvn release:perform -P release -DskipTests=true --> <id>release</id> <build> <plugins> […] </plugins> </build> </profile> </profiles> https://github.com/STAMP-project/botsing/blob/master/pom.xml Variability in software
  • 9. - Bundles - Command line parameters - Plugins - Configuration files - Microservices ☛ Variability in software
  • 10. 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.
  • 11. Does your application have variability? Yes, most probably • What kind of variability? • Hardware • Platform • Software • Bundels • Plugins • Command line options • Configuration files • Microservices • …
  • 13. 33 Options 0 A unique product for every person on this planet (8,589,934,592 products)
  • 14. 320 More products than the estimated atoms in the universe (2.135987e+96 products) 33 Options 0
  • 18. Problem: how to manage the evolution of a large number of copies?
  • 19.
  • 20. •Fast •Cheap (at first) •Limited •Manage (large number of) copies •Maintenance cost at each evolution •Inconsistent evolution of copies
  • 23.
  • 24.
  • 25. 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.
  • 26. The software product line engineering framework Commonalities and variabilities
 definition and realisation Product derivation Pohl, K., et al. (2005) Software product line engineering: foundations, principles, and techniques. Springer.
  • 27. Example: SAP, an Enterprise Resource Planning system (ERP) https://retool.com/blog/erp-for-engineers/
  • 28. Integrated management of business processes and operational data Database Core Customer- relationship management (CRM) API Sales Accounting HR …
  • 29. ERPs in numbers - SAP was founded in 1972 - Designed to be extensible from the beginning - Every year (worldwide)… - companies spend $41B on ERPs - SAP alone sells for $25B - SAP systems manage 77% of the world’s transaction revenue, and 78% of the world’s food
  • 30. 6,88832033 Options 0 >8,000 A basic SAP installation has 20,000 database tables, 3,000 are configuration tables SAP requires ~8,000 configuration decisions at setup ☛ SAP Configuration Specialist is an actual job title!
  • 31. ERPs in numbers - Switching to an ERP - Costs $100 million to $500 million - $30 million in software license fees, - $200 million in consulting fees, - millions for hardware, - and millions to train managers and employees. - Takes from four to six years - Examples - Cisco’s ERP implementation took 9 months and $15 million (best case) - Dow Chemical’s implementation took 8 years and $1 billion - the U.S. navy spent $1 billion on four different ERP projects that all failed
  • 32. Pohl, K., et al. (2005) Software product line engineering: foundations, principles, and techniques. Springer. - Building the ERP platform - Core - API - Modules - Configuration workflow - Configuration - Deployment - Training
  • 33. Example: Enterprise resource planning systems (ERPs) Identification of business processes Configuration Customisation and extension Data migration Redefinition of business processes
  • 34. 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
  • 35. •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
  • 37.
  • 39. 4833 320 6,888 Options 0 Halin, A., et al. 2018. Test them all, is it worth it? Assessing configuration sampling on the JHipster Web development stack. EMSE.
  • 40. A feature model documents the features of a product line and their relationships. Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
  • 41. Vocabulary Feature = Option Product = Configuration = Variant
  • 42. • Tree-like structure (directed acyclic graph). • A feature is decomposed in sub-features Feature diagram • 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}
  • 43. • Tree-like structure (directed acyclic graph). • A feature is decomposed in sub- features • 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} Feature diagram
  • 44. • 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. 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 [| |]= Feature diagram
  • 45. Constraints and where to find them
  • 47. Source: Documentation 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,MySQL, Oracle), which you will access with Spring Data JPA • MongoDB • Cassandra Social login (Google, Facebook, Twitter) This option is only available if you selected an SQL or MongoDB database. XOR decomposition Additional constraints SocialLogin ⇒ (SQL ∨ MongDB) XOR decomposition Optional feature Additional constraints ¬Database ⇒ MicroserviceApplication SQL ⇒ SpringDataJPA
  • 48. Source: Source code public void invalidateSession(@PathVariable String series) throws UnsupportedEncodingException { String decodedSeries = URLDecoder.decode(series, "UTF-8"); SecurityUtils.getCurrentUserLogin() .flatMap(userRepository::findOneByLogin) .ifPresent(u -> persistentTokenRepository.findByUser(u).stream() .filter(persistentToken -> StringUtils.equals(persistentToken.getSeries(), decodedSeries)) <%_ if (databaseType === 'sql' || databaseType === 'mongodb') { _%> .findAny().ifPresent(t -> persistentTokenRepository.deleteById(decodedSeries))); <%_ } else if (databaseType === 'couchbase') { _%> .findAny().ifPresent(t -> persistentTokenRepository.deleteBySeries(decodedSeries))); <%_ } else { _%> .findAny().ifPresent(persistentTokenRepository::delete)); <%_ } _%> }<% } %> https://github.com/jhipster/generator-jhipster/blob/master/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs OR decomposition Mandatory features
  • 50. Halin, A., et al. 2018. Test them all, is it worth it? Assessing configuration sampling on the JHipster Web development stack. EMSE. https://github.com/xdevroey/jhipster-dataset/tree/master/v3.6.1/featuremodel JHipster v3.6.1
  • 51. 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 •… JHipster v3.6.1: >26k possible products
  • 52. •Compact representation of all products • For instance, using a feature diagram •Sources for reverse-engineering • Configurator • Documentation • Source code •Can be formalised for analysis • SAT of a configuration/product • Analysis (consistency, dead features, etc.) • … Feature Modelling
  • 53. Does your application have variability? Yes, most probably • What kind of variability? • Hardware • Plattorm • Software • Bundels • Plugins • Command line options • Configuration files • Microservices • … • How is it managed (if it is managed)? • For users • Documentation only? • Configurator (e.g., JHipster)? • For developers • Documentation only? • Model (e.g., feature model)? • Planned in the development lifecycle?
  • 55. 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.
  • 57. 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
  • 58. Conditional compiling • Implements variability with preprocessors • Using annotated code (here, templates)
  • 60. 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
  • 61. 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
  • 62. 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
  • 63. 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
  • 64. 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
  • 65. 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
  • 66. 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
  • 67. •Design-time • Clone and own •Compile-time • Conditional compilation •Load-time • Program parameters and configuration files •Run-time • Design patterns Variability Binding Time
  • 69. Does your application have variability? Yes, most probably • What kind of variability? • Hardware • Platform • Software • Bundels • Plugins • Command line options • Configuration files • Microservices • … • How is it managed (if it is managed)? • For users • Documentation only? • Configurator (e.g., JHipster)? • For developers • Documentation only? • Model (e.g., feature model)? • Planned in the development lifecycle?
  • 71. Variability Management section outline • Examples of variability in your system, and their manifestation in architectural discussions • Variability management • (Partial) feature model • 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
  • 72. • Variability enables adaptability to the business domain • 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 Take-aways