7.4 Variability management time... space software product-line should support variability in space (different products) support variability in time (maintenance, evolution) 1
Product variation Product 2 Commonality Functionality common to all products Product 1 Product 3 Variability Same conceptual functionality, but slight variation between products Functionality used in two or more products (but not in all) Product specific functionality 2
Feature types This category is expressed using mandatory features Commonality Functionality common to all products Variability This category is expressed using alternative features These two categories are expressed using optional features Same conceptual functionality, but slight variation between products Functionality used in two or more products (but not in all) Product specific functionality 3
Variation points Variation point: place where variation occurs on different abstraction levels: - requirements analysis - architecture design... - run-time Variation point can be: - closed (no more variants possible, only the given ones) - open (new variants can be introduced, e.g. product-specific) - bound (the variant is selected) - unbound (the variant is not selected) 4
Variation points: Introduction & binding phases [Michel Jaring 2005] 5
Variation points in requirements analysis extended UML <<context>> Handheld Device SDK variability <<mandatory>> Network channels { BindingTime = runtime } <<mandatory>> Display orientation { BindingTime = development } <<mandatory>> Control method { BindingTime = development } <<optional>> GPS support { BindingTime = development } {xor} {xor} WLAN GSM Data <<mandatory>> Command buttons Horizontal Pen GPRS Vertical Keyboard 6
Variation points in architecture CommManager 1 1..* <<interface>> CommChannel variationpoint=networkchannels send(message) receive(message) interfaces design patterns architectural styles... GSMChannel 7
Variation points in detailed design Low level design patterns (e.g. Template Method) Inheritance Interfaces Callbacks 8
Variation points in implementation Parameters Generic structures (e.g. templates) Macros Compiler directives (conditional compilation) Description files (e.g. XML) Build variations 9
Variation points in application usage Installation parameters User settings Customizable user interfaces Adaptable user interfaces 10
Component-based variability mandatory optional Platform alternative Platform app. specific Components Product Product-line 11
7.5 Benefits and problems in product-lines Benefits: High level of software reuse Reduces time-to-market Improves productivity in the long run Standardizes products Standardizes software development process, tools, projects Improves quality Allows fast prototyping 12
Problems of product-lines Changing personnel: motivation, expertise Internal (e.g. schedule) conflicts between personnel: platform vs. products External conflicts with customers: developing platform vs. developing product Technical conflicts between products (scalability, robustness) Delay with shipping the first product Increasing management, communication and coordination Testing: platform should work in many configurations Need for product-line champion Loosing focus Quartal economy 13