ISO/IEC 26553:2018 — 软件工程 — 产品族工程 — 配置管理

面向软件产品族的配置管理策略:支持可变性的版本控制与构建管理

ISO/IEC 26553:2018 概述

ISO/IEC 26553:2018 针对软件产品族工程中的配置管理(CM)这个关键领域进行了规范。虽然单一系统的配置管理已广为人知,但产品族引入了独特的挑战:管理配置项的变体、同时维护多个产品衍生版本,以及确保共享核心资产在演进过程中不会破坏现有产品实例。

该标准为追踪和控制产品族工件——包括需求、设计模型、源代码、测试用例和文档——提供了全面的框架,涵盖领域工程和应用工程两个生命周期。有效的配置管理是实现产品族可持续复用的基础。

ISO/IEC 26553 认识到,在产品族工程中,配置管理不仅仅是版本控制。它涵盖了可变性管理、产品衍生配置管理以及跨整个产品组合的系统性基线管理。

核心配置管理流程

该标准定义了多个专门针对产品族环境进行了适配的关键 CM 流程:

支持可变性的版本控制

传统的版本控制系统追踪单个文件在不同时间点的修订版本。对于产品族,CM 还必须追踪每个工件的哪些变体属于哪些产品配置。这需要变体分支、条件文件包含和基于特征的版本标签等技术。

CM 流程 产品族特性 常用技术
版本控制 跨多个变体维度追踪工件 特征分支、变体标签、条件提交
基线管理 定义跨产品族平台的基线 平台发布、功能完成基线
构建管理 在构建时解析可变性的构建系统 条件编译、构建时功能开关、Maven profiles
产品衍生 CM 生成和追踪产品特定配置 产品衍生脚本、配置文件
变更管理 评估变更对产品族的影响 影响分析、变更咨询委员会
审计与审查 验证所有产品实例的 CM 完整性 自动化 CM 审计、合规报告

跨产品族的基线管理

ISO/IEC 26553 的一个独特贡献是它对产品族环境中基线的处理。该标准区分了平台基线(捕获某个时间点核心资产的状态)和产品基线(捕获特定衍生产品的配置)。管理这两类基线之间的关系对于维护产品族的一致性至关重要。

如果没有适当的基线管理,组织将面临’产品族漂移’问题:产品随着时间的推移偏离平台,共享修复无法传播,维护产品族的成本随着每个新产品的增加而成倍增长。

构建管理与变体解析

ISO/IEC 26553 对产品族中的构建管理投入了大量关注。构建过程必须在适当的绑定时间解析可变性——无论是在编译时(条件编译)、链接时(库选择)还是部署时(配置文件和功能开关)。

该标准描述了产品族的三种主要构建策略:

  • 单产品构建:使用特定的功能集单独构建每个产品。简单但未利用平台共性。
  • 平台优先构建:先构建共享平台一次,然后在之上构建产品特定层。对于共性高的产品族效率更高。
  • 增量式构建:构建基础产品,然后通过应用增量来生成变体。对于大型产品族最具可扩展性。
按照 ISO/IEC 26553 指导实施增量式构建的组织报告,与独立构建相比,产品变体的构建时间减少 50-70%,同时产品间的一致性得到提高。

工程设计见解

面向配置经理和 DevOps 工程师的关键实用要点:

  • 投资自动化 CM 工具:在拥有 5-10 个以上产品的产品族中,手动 CM 流程无法扩展。分支、标签和构建配置的自动化至关重要。
  • 在选择工具之前设计变体策略:不同的版本控制工具以不同方式支持变体管理。根据产品族结构评估工具,而不是反过来。
  • 建立清晰的 CM 角色:该标准建议为平台级和产品级配置管理指定 CM 角色,并为跨族问题设定清晰的升级路径。
  • 跨变体实施持续集成:CI 流水线应针对多种产品配置验证变更,而不仅仅是单一产品,以便及早发现集成问题。
不要低估跨变体分支合并变更的复杂性。如果没有严格的合并策略,产品族平台可能分裂为不兼容的分支。ISO/IEC 26553 建议定期进行跨变体合并和自动冲突检测。

常见问题解答

Q: ISO/IEC 26553 与 ISO/IEC 12207 中的标准 CM 实践有何不同?
ISO/IEC 12207 定义了适用于任何软件项目的通用 CM 流程。ISO/IEC 26553 特别针对产品族环境进行了扩展,增加了支持可变性的版本控制、产品衍生配置管理以及平台与产品基线管理等通用标准未涵盖的内容。
Q: Git 能否用于 ISO/IEC 26553 所描述的产品族 CM?
可以使用 Git,但其分支和合并模型需要为产品族仔细设计。常见方法包括使用 Git 特征分支进行变体管理、使用 Git 子模块进行平台共享,或使用 Git LFS 处理大型二进制资产。有些团队用专门的产品族 CM 工具补充 Git。
Q: 管理跨多个产品共享的配置项推荐什么方法?
ISO/IEC 26553 建议建立具有受控访问和变更管理的核心资产库。共享配置项应具有显式的变体标签或属性,指明它们适用于哪些产品。对共享项的变更需要在所有受影响产品中进行影响评估。
Q: 如何处理最初不是作为产品族一部分构建的遗留产品的 CM?
该标准提供了将遗留产品迁移到产品族 CM 结构的指导。这通常涉及逆向工程变体结构、建立基线定义,以及通过定义的迁移计划逐步整合共享资产并管理过渡过程。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注