The document summarizes techniques for managing variability in software product lines, including feature modeling, binding times, implementation mechanisms, and testing approaches. It discusses feature modeling to define commonalities and variabilities, different binding times (design-time, compile-time, load-time, run-time), implementation using conditional compiling, parameters, design patterns, and approaches for testing product lines including combinatorial interaction testing and dissimilarity sampling when the number of possible products is large.
Presented by Raphael Mrode, ILRI, at the workshop on Essential Knowledge for Effective Improvement and Dissemination of Genetics in Sheep and Goats, Addis Ababa, Ethiopia, 3–5 November 2020
Presented by Raphael Mrode, ILRI, at the workshop on Essential Knowledge for Effective Improvement and Dissemination of Genetics in Sheep and Goats, Addis Ababa, Ethiopia, 3–5 November 2020
This presentation will start by introducing how Apache Lucene can be used to classify documents using data structures that already exist in your index instead of having to generate and supply external training sets. The focus will be on extensions of the Lucene Classification module that come in Lucene 6.0 and the Lucene Classification module's incorporation into Solr 6.1. These extensions will allow you to classify at a document level with individual field weighting, numeric field support, lat/lon fields etc. The Solr ClassificationUpdateProcessor will be explored and how to use it including basic and advanced features like multi class support and classification context filtering. The presentation will include practical examples and real world use cases.
Small scale livestock production is a good option for new and beginning farmers. This presentation includes tips from other farmers on production, management, stewardship and more. For more, visit: http://www.extension.org/pages/54360/beginning-farmer-and-rancher-stewardship-resources
Hear how Cisco runs ECE in production on Cisco UCS Integrated Infrastructure and learn about the configurations that help them index 3 billion documents each day at a rate of ~400K docs per second using Apache Spark.
Deploying ML models in production, with or without CI/CD, is significantly more complicated than deploying traditional applications. That is mainly because ML models do not just consist of the code used for their training, but they also depend on the data they are trained on and on the supporting code. Monitoring ML models also adds additional complexity beyond what is usually done for traditional applications. This talk will cover these problems and best practices for solving them, with special focus on how it's done on the Databricks platform.
Choosing architecture in your system is one of the most important things to do and there are many things to consider, like performance, maintenance, configuration and extension of the system. This presentation is about choosing the strategy for your architecture of how to build a measurement system.
Keynote at COMMitMDE'18 showing the basic concepts behind Hawk, our past case studies, and some of our experience in designing the Hawk Thrift APIs for remote model querying.
The only constant in software development is CHANGE. Every piece of software that has been developed and shipped to a customer will be changed numerous times during it's life cycle. Depending on how well the code is designed, it is more or less easy to implement changes. MVC, which is an acronym for Model - View - Controller is no new concept. In fact this design paradigm was created by Xerox in the 80's, and it is becoming THE recommended model for designing frameworks - especially on the web. The session will give an overview of design pattern in general and MVC in particular. We will show, how to use the MVC design paradigm in an XPages application and demonstrate, how easy it is to implement changes. Need to read/write your data from/to an XML file instead of using a Notes View. MVC makes software maintenance easy as 1-2-3
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
Consolidating MLOps at One of Europe’s Biggest AirportsDatabricks
At Schiphol airport we run a lot of mission critical machine learning models in production, ranging from models that predict passenger flow to computer vision models that analyze what is happening around the aircraft. Especially now in times of Covid it is paramount for us to be able to quickly iterate on these models by implementing new features, retraining them to match the new dynamics and above all to monitor them actively to see if they still fit the current state of affairs.
To achieve those needs we rely on MLFlow but have also integrated that with many of our other systems. So have we written Airflow operators for MLFlow to ease the retraining of our models, have we integrated MLFlow deeply with our CI pipelines and have we integrated it with our model monitoring tooling.
In this talk we will take you through the way we rely on MLFlow and how that enables us to release (sometimes) multiple versions of a model per week in a controlled fashion. With this set-up we are achieving the same benefits and speed as you have with a traditional software CI pipeline.
This guide will help you get started with Innoslate, the full lifecycle systems engineering tool. It will take you through developing your requirements, creating model, simulating your models, and keeping traceability through the entire project.
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...Jose Quesada (hiring)
The machine learning libraries in Apache Spark are an impressive piece of software engineering, and are maturing rapidly. What advantages does Spark.ml offer over scikit-learn? At Data Science Retreat we've taken a real-world dataset and worked through the stages of building a predictive model -- exploration, data cleaning, feature engineering, and model fitting; which would you use in production?
The machine learning libraries in Apache Spark are an impressive piece of software engineering, and are maturing rapidly. What advantages does Spark.ml offer over scikit-learn?
At Data Science Retreat we've taken a real-world dataset and worked through the stages of building a predictive model -- exploration, data cleaning, feature engineering, and model fitting -- in several different frameworks. We'll show what it's like to work with native Spark.ml, and compare it to scikit-learn along several dimensions: ease of use, productivity, feature set, and performance.
In some ways Spark.ml is still rather immature, but it also conveys new superpowers to those who know how to use it.
This presentation will start by introducing how Apache Lucene can be used to classify documents using data structures that already exist in your index instead of having to generate and supply external training sets. The focus will be on extensions of the Lucene Classification module that come in Lucene 6.0 and the Lucene Classification module's incorporation into Solr 6.1. These extensions will allow you to classify at a document level with individual field weighting, numeric field support, lat/lon fields etc. The Solr ClassificationUpdateProcessor will be explored and how to use it including basic and advanced features like multi class support and classification context filtering. The presentation will include practical examples and real world use cases.
Small scale livestock production is a good option for new and beginning farmers. This presentation includes tips from other farmers on production, management, stewardship and more. For more, visit: http://www.extension.org/pages/54360/beginning-farmer-and-rancher-stewardship-resources
Hear how Cisco runs ECE in production on Cisco UCS Integrated Infrastructure and learn about the configurations that help them index 3 billion documents each day at a rate of ~400K docs per second using Apache Spark.
Deploying ML models in production, with or without CI/CD, is significantly more complicated than deploying traditional applications. That is mainly because ML models do not just consist of the code used for their training, but they also depend on the data they are trained on and on the supporting code. Monitoring ML models also adds additional complexity beyond what is usually done for traditional applications. This talk will cover these problems and best practices for solving them, with special focus on how it's done on the Databricks platform.
Choosing architecture in your system is one of the most important things to do and there are many things to consider, like performance, maintenance, configuration and extension of the system. This presentation is about choosing the strategy for your architecture of how to build a measurement system.
Keynote at COMMitMDE'18 showing the basic concepts behind Hawk, our past case studies, and some of our experience in designing the Hawk Thrift APIs for remote model querying.
The only constant in software development is CHANGE. Every piece of software that has been developed and shipped to a customer will be changed numerous times during it's life cycle. Depending on how well the code is designed, it is more or less easy to implement changes. MVC, which is an acronym for Model - View - Controller is no new concept. In fact this design paradigm was created by Xerox in the 80's, and it is becoming THE recommended model for designing frameworks - especially on the web. The session will give an overview of design pattern in general and MVC in particular. We will show, how to use the MVC design paradigm in an XPages application and demonstrate, how easy it is to implement changes. Need to read/write your data from/to an XML file instead of using a Notes View. MVC makes software maintenance easy as 1-2-3
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
Consolidating MLOps at One of Europe’s Biggest AirportsDatabricks
At Schiphol airport we run a lot of mission critical machine learning models in production, ranging from models that predict passenger flow to computer vision models that analyze what is happening around the aircraft. Especially now in times of Covid it is paramount for us to be able to quickly iterate on these models by implementing new features, retraining them to match the new dynamics and above all to monitor them actively to see if they still fit the current state of affairs.
To achieve those needs we rely on MLFlow but have also integrated that with many of our other systems. So have we written Airflow operators for MLFlow to ease the retraining of our models, have we integrated MLFlow deeply with our CI pipelines and have we integrated it with our model monitoring tooling.
In this talk we will take you through the way we rely on MLFlow and how that enables us to release (sometimes) multiple versions of a model per week in a controlled fashion. With this set-up we are achieving the same benefits and speed as you have with a traditional software CI pipeline.
This guide will help you get started with Innoslate, the full lifecycle systems engineering tool. It will take you through developing your requirements, creating model, simulating your models, and keeping traceability through the entire project.
A full Machine learning pipeline in Scikit-learn vs in scala-Spark: pros and ...Jose Quesada (hiring)
The machine learning libraries in Apache Spark are an impressive piece of software engineering, and are maturing rapidly. What advantages does Spark.ml offer over scikit-learn? At Data Science Retreat we've taken a real-world dataset and worked through the stages of building a predictive model -- exploration, data cleaning, feature engineering, and model fitting; which would you use in production?
The machine learning libraries in Apache Spark are an impressive piece of software engineering, and are maturing rapidly. What advantages does Spark.ml offer over scikit-learn?
At Data Science Retreat we've taken a real-world dataset and worked through the stages of building a predictive model -- exploration, data cleaning, feature engineering, and model fitting -- in several different frameworks. We'll show what it's like to work with native Spark.ml, and compare it to scikit-learn along several dimensions: ease of use, productivity, feature set, and performance.
In some ways Spark.ml is still rather immature, but it also conveys new superpowers to those who know how to use it.
[Research] azure ml anatomy of a machine learning service - Sharat ChikkerurPAPIs.io
In this talk, we describe AzureML: a web service enabling software developers and data scientists to build predictive applications. AzureML provides several unique features. These include (a) Collaboration (b) Versioning (c) Graphical authoring(d) Push button operationalization and (e) Monetization. We outline the design principles, system design and lessons learned in building such a system.
Data Scientists and Machine Learning practitioners, nowadays, seem to be churning out models by the dozen and they continuously experiment to find ways to improve their accuracies. They also use a variety of ML and DL frameworks & languages , and a typical organization may find that this results in a heterogenous, complicated bunch of assets that require different types of runtimes, resources and sometimes even specialized compute to operate efficiently.
But what does it mean for an enterprise to actually take these models to "production" ? How does an organization scale inference engines out & make them available for real-time applications without significant latencies ? There needs to be different techniques for batch (offline) inferences and instant, online scoring. Data needs to be accessed from various sources and cleansing, transformations of data needs to be enabled prior to any predictions. In many cases, there maybe no substitute for customized data handling with scripting either.
Enterprises also require additional auditing and authorizations built in, approval processes and still support a "continuous delivery" paradigm whereby a data scientist can enable insights faster. Not all models are created equal, nor are consumers of a model - so enterprises require both metering and allocation of compute resources for SLAs.
In this session, we will take a look at how machine learning is operationalized in IBM Data Science Experience (DSX), a Kubernetes based offering for the Private Cloud and optimized for the HortonWorks Hadoop Data Platform. DSX essentially brings in typical software engineering development practices to Data Science, organizing the dev->test->production for machine learning assets in much the same way as typical software deployments. We will also see what it means to deploy, monitor accuracies and even rollback models & custom scorers as well as how API based techniques enable consuming business processes and applications to remain relatively stable amidst all the chaos.
Speaker
Piotr Mierzejewski, Program Director Development IBM DSX Local, IBM
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
Similar to Software variability management - 2017 (20)
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar
The European Union Agency for Law Enforcement Cooperation (Europol) has suffered an alleged data breach after a notorious threat actor claimed to have exfiltrated data from its systems. Infamous data leaker IntelBroker posted on the even more infamous BreachForums hacking forum, saying that Europol suffered a data breach this month.
The alleged breach affected Europol agencies CCSE, EC3, Europol Platform for Experts, Law Enforcement Forum, and SIRIUS. Infiltration of these entities can disrupt ongoing investigations and compromise sensitive intelligence shared among international law enforcement agencies.
However, this is neither the first nor the last activity of IntekBroker. We have compiled for you what happened in the last few days. To track such hacker activities on dark web sources like hacker forums, private Telegram channels, and other hidden platforms where cyber threats often originate, you can check SOCRadar’s Dark Web News.
Stay Informed on Threat Actors’ Activity on the Dark Web with SOCRadar!
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Advanced Flow Concepts Every Developer Should KnowPeter Caitens
Tim Combridge from Sensible Giraffe and Salesforce Ben presents some important tips that all developers should know when dealing with Flows in Salesforce.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Designing for Privacy in Amazon Web ServicesKrzysztofKkol1
Data privacy is one of the most critical issues that businesses face. This presentation shares insights on the principles and best practices for ensuring the resilience and security of your workload.
Drawing on a real-life project from the HR industry, the various challenges will be demonstrated: data protection, self-healing, business continuity, security, and transparency of data processing. This systematized approach allowed to create a secure AWS cloud infrastructure that not only met strict compliance rules but also exceeded the client's expectations.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Modern design is crucial in today's digital environment, and this is especially true for SharePoint intranets. The design of these digital hubs is critical to user engagement and productivity enhancement. They are the cornerstone of internal collaboration and interaction within enterprises.
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.
17. •Tailor-made
• For individual customers
•Reduced costs
• Reusable parts can be combined in different ways
•Improved quality
• Parts can be standardized and checked in isolation
and reused and tested in multiple products.
•Time to market
• building on top of existing parts is much faster than
developing it entirely from scratch
18. A product is built by systematically combining
commonalities, common to all products, and
variabilities, specific to some products.
Features
19. A feature is a characteristic
or end-user-visible behaviour
of a software system.
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
20. Pohl, K., et al. (2005) Software product line engineering: foundations, principles,
and techniques. Springer.
The software product line engineering framework
21. Pohl, K., et al. (2005) Software product line engineering: foundations, principles,
and techniques. Springer.
The software product line engineering framework
Commonalities and variabilities
definition and realisation
Product derivation
29. What about constraints?
Which type of application would you like to create?
You can either use:
• Monolithic application […]
• Microservice application […]
• Microservice gateway […]
http://www.jhipster.tech/creating-an-app/
Which type of database would you like to use?
You can choose between:
• No database (only available when using a microservice application)
• An SQL database (H2, MySQL, MariaDB, PostgreSQL, MSSQL, Oracle),
which you will access with Spring Data JPA
• MongoDB
• Cassandra
• Couchbase
Social login (Google, Facebook, Twitter)
This option is only available if you selected an SQL, MongoDB, or
Couchbase database.
30. A feature model documents
the features of a product line
and their relationships.
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
31.
32. • Tree-like structure (directed acyclic graph).
• A feature is decomposed in sub- features using and, or,
or xor.
• Cross-tree constraints are expressed as boolean
expressions over the features.
• The semantics of a feature model corresponds to all the
valid products allowed by the feature model.
• A boolean feature model may be translated to a
Conjunctive Normal Form (CNF) formula
34. • Does your application have variability?
• Hardware
• Plattorm
• Features
• Bundels
• Plugins
• Command line options
• …
• How is it managed (if it is managed)?
• For developers
• Documentation only?
• Model (e.g., feature model)?
• Planned in the development lifecycle?
• For users
• Documentation only?
• Configurator (e.g., JHipster)?
• Validation mechanism?
36. Variability offers choices.
When we derive a product, we make decisions;
we decide which features will be included in the
product or not. We also say that we bind a decision.
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
38. Compile-time Binding
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Decided before or at compile time
• Allows optimisations
• Removes unnecessary code from the product
• Once the product has been generated and deployed, it is not
variable any more
41. Load-time Binding
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Decided after compilation when the program is started
• More flexible to reconfigure
• Requires a reboot
• Memory and performance overhead
• All variations are compiled into a single binary
• Consistency conditions must be checked at load time
• Unnecessary functionality may be considered as potential
security threat
42. Parameters and Configuration Files
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Implement variability using conditional statements (such as if
and switch)
• Controlled by configuration parameters
• Passed to the method or module,
• Set as global variables in a system
Gcc
43. Run-time Binding
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Decided during program execution and may be changed latter
• Used in dynamic adaptive systems (e.g., robots)
• Most flexible to reconfigure
• Able to react to internal and external stimuli by adapting its behaviour
• Memory and performance overhead
• All variations are compiled into a single binary
• Consistency conditions must be checked at run time
• Unnecessary functionality may be considered as potential
security threat
44. Design Patterns
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Observer pattern (publish/subscribe) to implement distributed
event handling
• Feature are implemented as observers
• Variability is achieved by registering or not registering observers
45. Design Patterns
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Template-method pattern
• Using an abstract class
• Implement feature’s behaviour using inheritance
46. Design Patterns
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Strategy pattern
• Encodes a callback mechanism
• Alternative features where each corresponds to one implementation of
the algorithm
• Uses polymorphism instead of conditional statements
47. Design Patterns
Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
• Decorator pattern
• Extends object with additional behaviour at run time
• Optional features and feature groups, of which multiple features can be
selected, are implemented as decorators
51. •26,256 possible products
•4,376 hours (182 days) processor time to
execute the tests
•8 person/month to setup testing infrastructure
How to test a SPL?
52. Combinatorial Interaction Testing
• Assumption
• Most of the faults are due to the undesired feature interactions of a
limited number of features
• Example
• Gradle + MariaDB fails due to a missing dependency in _liquibase.gradle
template file
• Idea
• Extract configurations so that all combinations of options are covered
(at least) once: t-wise sampling
53. t-wise sampling
• All t combinations of features are in at least one product
• 2-wise: 26,256 ➠ 41 products
• 3-wise: 26,256 ➠ 126 products
• 4-wise: 26,256 ➠ 374 products
… but, t-wise sampling is NP-complete when there are constraints
• Tools
• MoSo-Polite (constraint programming)
• PACOGEN (constraint programming)
• CASA (simulated annealing)
• SPLCAT (various algorithms) and Pairwiser (industrial version)
… have a hard time to go above 4-wise for large feature models
54. •26,256 possible products
•4,376 hours (182 days) processor time to
execute the tests
•8 person/month to setup testing infrastructure
How to test a SPL…
…when you have a
budget of max. 20
products?
55. Dissimilarity sampling
• Assumption
• Dissimilar configurations cover more t-tuples than similar ones
Henard, C., et al. (2014) Bypassing the Combinatorial Explosion: Using
Similarity to Generate and Prioritize T-Wise Test Configurations for Software
Product Lines. TSE. 40, 7 (Jul. 2014), 650–670.
• Tool: PLEDGE
• Evolutionary algorithm
• Fitness function based on distance (i.e., differences in the
selected features)
• Correlated with t-wise coverage but easier to compute
• Testers decide on generation time and number of products
56. •26,256 possible products
•4,376 hours (182 days) processor time to
execute the tests
•8 person/month to setup testing infrastructure
How to test a SPL…
…when you have a
budget of max. 20
products?
PLEDGE(fm, 20, 1 min.)
57. … but
What about product dependencies, and
how to automate the testing process?
Halin, A., et al. (2017) Test them all, is it worth it? A ground truth
comparison of configuration sampling strategies. CoRR. abs/1710.0,
(Oct. 2017).
59. • Variability is unavoidable in software developments
• It should be planned and managed
•Identify development practices
• Clone and own
• Software product line
• Most probably something intermediate
• Binding
• Design, compile, load, and/or runtime binding
• Variability implementation mechanism(s) (conditional compiling,
parameters, design patterns)
•Feature modelling helps to manage variability
• Analysis on the feature model
• Sample products to test