Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 26558:2019 是 ISO/IEC 26550 系列中的基础标准,专门解决软件产品族工程中的变异性管理问题。变异性是软件工件或系统为在特定环境中使用而进行适配、配置或扩展的能力。本标准提供了一个全面的框架,用于在整个产品族生命周期中建模、实现和管理变异性——从需求到设计、实现、测试和部署。
本标准面向软件架构师、变异性管理者、产品线工程师和工具开发者,他们需要在产品族的多个产品之间建立一种规范化的方法,以处理变异点、变体及其依赖关系。
标准定义了一个用于表示变异性的元模型,包含几个关键概念:变异点(产品族中发生变异的位点)、变体(变异点处的可选项)、变异性依赖关系(变异点和变体之间的约束)和绑定时间(做出变异性决定并绑定该决定的时间点)。
特征模型是在需求和分析层面表示变异性最广泛采用的技术。标准描述了如何构建带有强制、可选、互斥和OR关系的特征图。还涵盖了跨树约束,如”需要”和”排除”,这些约束捕获了特征之间的复杂依赖关系。
| 关系类型 | 符号表示 | 含义 | 示例 |
|---|---|---|---|
| 强制 | 子节点处实心圆 | 父节点被选中时子节点必须被选中 | 每辆车都必须有发动机 |
| 可选 | 子节点处空心圆 | 子节点可被选择 | 天窗是可选的 |
| 互斥 (XOR) | 连接子节点的空弧 | 必须有且仅有一个子节点被选中 | 汽油 XOR 柴油 XOR 电动 |
| OR (包含) | 连接子节点的实心弧 | 可选择一个或多个子节点 | 导航、音频或连接的任意组合 |
ISO/IEC 26558:2019 描述了在软件工件中实现变异性的多种机制:
条件编译(如C/C++中的#ifdef)、预处理器指令和构建系统配置等技术。这些技术性能高,因为未使用的变体不会包含在二进制文件中,但可能会降低代码的可读性和可测试性。
插件架构、动态链接和配置文件可以在应用启动时实现变异性。这些方法在灵活性和性能之间取得了良好的平衡,广泛应用于企业级应用。
特性开关、配置参数和动态组件加载支持在执行期间实现变异性。这些提供了最大的灵活性,支持动态重新配置,但需要仔细管理状态和潜在的性能开销。
标准强调变异性模型与实现这些模型的工件之间可追溯性的重要性。关键要求包括:将每个变异点追溯到其实现工件,记录变异性依赖关系和约束,为每个产品维护变异性决策记录,以及跟踪变异性变更对整个产品族的影响。
在实际项目中实施变异性管理时,工具链的选择和集成至关重要。推荐的工具集成架构包括:将特征模型存储在版本控制系统中并与代码分支策略对齐,使用持续集成流水线自动验证变体配置的有效性,以及建立特征模型与需求管理系统、测试管理系统之间的双向可追溯性。这种集成确保变异性决策在整个产品族生命周期中得到一致执行。
| 绑定时间 | 灵活性 | 性能 | 可测试性 | 常用技术 |
|---|---|---|---|---|
| 编译时 | 低 | 最高 | 中等 | #ifdef、构建配置文件 |
| 链接时 | 中 | 高 | 好 | DLL加载、插件 |
| 加载时 | 高 | 中等 | 好 | 配置文件、依赖注入容器 |
| 运行时 | 最高 | 不定 | 挑战性 | 特性开关、动态配置 |