Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software variability management - 2017

15 views

Published on

Invited talk to the IN4315 Software Architecture course, Delft University of Technology

Published in: Software
  • Be the first to comment

  • Be the first to like this

Software variability management - 2017

  1. 1. Software variability management Xavier Devroey <x.d.m.devroey@tudelft.nl> Office 4.W.540 (4th floor, West side, new EWI building)
  2. 2. Introduction
  3. 3. software variability is the ability of a software system or artefact to be efficiently extended, changed, customised or configured for use in a particular context. Svahnberg, M., et al. (2005) ‘A taxonomy of variability realization techniques’, Software - Practice and Experience, 35(8), pp. 705–754.
  4. 4. iOS 10.0.x iOS 10.1.x iOS 11.0.x … … 7.0.x 7.1.x 8.0.x … … { { Hardware • Processor • RAM • Screen size • … Platform • OS • Version • Navigator • …
  5. 5. Behaviour gcc -help
  6. 6. 33 Options 0 A unique product for every person on this planet
  7. 7. 33 320 Options 0 More products than the estimated atoms in the universe
  8. 8. 33 320 6,888 Options 0
  9. 9. How to… …develop? …test? …maintain? …define requirements?
  10. 10. Clone and Own
  11. 11. •Fast •Cheap (at first) •Limited •Manage (large number of) copies •Maintenance cost at each evolution •Inconsistent evolution of copies
  12. 12. Software Product Line
  13. 13. Henry Ford 1901
  14. 14. •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
  15. 15. A product is built by systematically combining
 commonalities, common to all products, and 
 variabilities, specific to some products. Features
  16. 16. 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.
  17. 17. Pohl, K., et al. (2005) Software product line engineering: foundations, principles, and techniques. Springer. The software product line engineering framework
  18. 18. 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
  19. 19. Feature Modelling
  20. 20. 33 320 6,888 Options 0
  21. 21. https://start.jhipster.tech/
  22. 22. 4833 320 5,426 Options 0
  23. 23. https://start.jhipster.tech/
  24. 24. 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.
  25. 25. A feature model documents the features of a product line and their relationships. Apel, S. et al. (2013) Feature-Oriented Software Product Lines. Springer.
  26. 26. • 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
  27. 27. 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 •…
  28. 28. • 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?
  29. 29. Binding Time
  30. 30. 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.
  31. 31. Design-time binding • Clone and own
  32. 32. 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
  33. 33. Conditional compiling • Implements variability with preprocessors • Using annotated code (here, templates)
  34. 34. Conditional compiling Yeoman Configuration Annotated code Source code
 without annotations
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 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
  40. 40. 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
  41. 41. 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
  42. 42. • Variability binding time? • Design-time • Compile-time • Load-time • Run-time • Variability implementation mechanism? • Conditional compiling • Conditional statements (if-then-else) • Design patterns
  43. 43. Testing
  44. 44. •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?
  45. 45. 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
  46. 46. 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
  47. 47. •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?
  48. 48. 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
  49. 49. •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.)
  50. 50. … 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).
  51. 51. Take-away message
  52. 52. • 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
  53. 53. Software variability management Xavier Devroey <x.d.m.devroey@tudelft.nl> Office 4.W.540 (4th floor, West side, new EWI building)

×