Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 26558:2019 is a foundational standard within the ISO/IEC 26550 series that specifically addresses variability management in software product family engineering. Variability is the ability of a software artifact or system to be adapted, configured, or extended for use in a specific context. This standard provides a comprehensive framework for modeling, implementing, and managing variability across the entire product family lifecycle — from requirements through design, implementation, testing, and deployment.
The standard is aimed at software architects, variability managers, product line engineers, and tool developers who need to establish a disciplined approach to handling variation points, variants, and their dependencies across multiple products in a family.
The standard defines a meta-model for representing variability that includes several key concepts: variation points (locations in the product family where variation occurs), variants (the possible choices at a variation point), variability dependencies (constraints between variation points and variants), and binding times (when a variation decision is made and bound).
Feature models are the most widely adopted technique for representing variability at the requirements and analysis level. The standard describes how to construct feature diagrams with mandatory, optional, alternative, and OR relationships. It also covers cross-tree constraints such as “requires” and “excludes” that capture complex dependencies between features.
| Relationship Type | Notation | Meaning | Example |
|---|---|---|---|
| Mandatory | Filled circle at child | Feature must be selected when parent is selected | Every car must have an engine |
| Optional | Open circle at child | Feature may be selected | Sunroof is optional |
| Alternative (XOR) | Empty arc connecting children | Exactly one child must be selected | Gasoline OR diesel OR electric |
| OR (inclusive) | Filled arc connecting children | One or more children may be selected | Any combination of navigation, audio, or connectivity |
ISO/IEC 26558:2019 describes multiple implementation mechanisms for realizing variability in software artifacts:
Techniques such as conditional compilation (e.g., #ifdef in C/C++), preprocessor directives, and build system configuration. These offer high performance since unused variants are excluded from the binary, but they can reduce code readability and testability.
Plugin architectures, dynamic linking, and configuration files enable variability at application startup. These provide a good balance between flexibility and performance, and are widely used in enterprise applications.
Feature toggles, configuration parameters, and dynamic component loading support variability during execution. These offer maximum flexibility and enable dynamic reconfiguration, but require careful management of state and potential performance overhead.
The standard emphasizes the importance of traceability between variability models and the artifacts that implement them. Key requirements include: tracing each variation point to its implementation artifacts, documenting variability dependencies and constraints, maintaining a variability decision record for each product, and tracking the impact of variability changes across the product family.
Governance of variability involves establishing a variability management plan, defining roles such as variability manager and feature owner, conducting regular variability audits, and measuring variability metrics such as degree of commonality (how many products share a given feature) and variability churn (rate of change in variability artifacts).
| Binding Time | Flexibility | Performance | Testability | Common Techniques |
|---|---|---|---|---|
| Compile-time | Low | Highest | Moderate | #ifdef, build profiles |
| Link-time | Medium | High | Good | DLL loading, plugins |
| Load-time | High | Moderate | Good | Config files, DI containers |
| Runtime | Highest | Varies | Challenging | Feature toggles, dynamic config |
When implementing variability management in practice, organizations must address several cross-cutting concerns. Tool selection is paramount because the variability management tooling must integrate with existing development infrastructure including version control, build systems, and issue tracking to avoid creating isolated processes that developers will circumvent. Organizational alignment is equally critical: clear ownership of variation points must be established, and product teams must be trained to think in terms of variability rather than duplication. The standard recommends starting with a pilot project that has manageable variability (3 to 5 variation points) and iteratively expanding the scope as organizational maturity grows. Measuring the cost-benefit ratio of variability management through metrics such as reuse efficiency and product derivation time provides the business case needed for sustained investment and management buy-in across the organization. Early successes in the pilot phase build organizational confidence and create reference implementations that accelerate adoption across additional product lines within the enterprise.
No download files available yet