ISO 25112:2010 软件工程实践

为软件开发和维护建立严谨的工程纪律

1. ISO 25112 标准介绍

ISO 25112 针对软件工程实践,重点关注为软件开发和维护建立严谨的工程纪律。该标准涵盖整个软件工程生命周期,包括需求工程、架构设计、详细设计、实现、验证、确认、运行和维护。它强调在软件系统的开发、运行和维护中应用系统化、规范化和可量化的方法。该标准设计适用于所有类型的软件开发项目,从安全关键嵌入式系统到大型企业信息系统和基于云的服务,认识到不同项目类型在不同工程实践领域可能需要不同程度的严谨性。

ISO 25112 倡导”基于证据的软件工程”——每项工程决策都应有文档化的证据支持,无论是来自实证研究、测量数据还是经过验证的模型。这使软件开发从一门手艺转变为工程学科,决策变得透明、可重复和可辩护。

2. 工程实践与生命周期覆盖

该标准按生命周期阶段定义了一套全面的工程实践。每项实践包括:目的描述、预期输入、活动步骤、预期输出、验证标准和工具支持建议。ISO 25112 强调整个生命周期的可追溯性——需求必须可追溯到设计元素,设计元素必须可追溯到代码,代码必须可追溯到测试,测试必须可追溯回需求。这种双向可追溯性使得当需求变更时能够进行影响分析,通过完整性验证确保所有需求都得到解决,以及通过覆盖分析识别未经测试的功能。

需求工程阶段为所有后续开发工作奠定基础。实践包括利益相关方识别、需求获取技术、需求规范和建模、需求排序和需求验证。架构设计阶段将需求转化为高层系统结构,定义组件、连接器、接口以及需求到架构元素的分配。详细设计和实现将架构细化为详细的组件设计和可执行代码,遵循定义的编码标准和设计指南。验证和确认活动通过评审、审查、测试和分析技术的组合,确保软件符合其规范(验证)并满足利益相关方需求(确认)。

生命周期阶段 关键工程实践 验证方法
需求工程 利益相关方分析、需求规范、优先级排序、建立可追溯性 需求评审、原型验证
架构设计 架构视图、组件分解、接口定义、权衡分析 架构评审、ATAM 评估
详细设计与实现 设计模式、编码标准、同行评审、静态分析 代码审查、自动化静态分析
验证与确认 测试策略、测试设计、测试执行、缺陷管理 测试覆盖率分析、独立 V&V
运行与维护 事件管理、变更管理、配置管理、回归测试 服务水平监控、实施后评审
软件项目中最常见的工程失败并非技术能力不足,而是需求工程不充分。ISO 25112 对需求实践投入了大量关注,因为经验数据表明,需求缺陷在后期阶段修复的成本比在需求工程阶段发现时高出 10-100 倍。在需求质量上进行前期投资是任何软件工程实践中投资回报率最高的。

3. 工程设计见解

ISO 25112 极力倡导尽可能采用自动化验证。人工检查和测试对于某些类型的验证(特别是可用性和探索性测试)仍然是必要的,但自动化静态分析、单元测试、集成测试和回归测试应成为验证策略的支柱。该标准建议在项目层面建立”验证与确认计划”,明确说明哪些验证技术适用于哪些工作产品、必须满足的覆盖标准以及每个工作产品的可接受质量标准。该计划应随着项目进展和新风险的识别而进行审查和更新。

该标准还引入了”工程就绪水平”的概念——类似于航空航天领域使用的技术就绪水平(TRL)——用于评估组织内工程实践的成熟度。这些就绪水平为过程改进投资提供了系统化的依据,帮助组织识别哪些工程实践领域最需要关注,并跟踪随时间推移的改进进展。就绪水平评估涵盖软件工程生命周期的所有阶段,生成突出显示跨全部工程实践范围的优势和弱点的概况。

配置管理是 ISO 25112 强调的另一个关键实践。该标准建议建立配置管理系统,识别和控制整个生命周期中的所有工作产品,包括需求、设计模型、源代码、测试用例和部署脚本。配置管理系统应支持并行开发、发布管理和变更跟踪。与版本控制、问题跟踪和构建自动化工具的集成创建了一个无缝的工程环境,在不妨碍开发人员生产力的同时强化纪律。

实施 ISO 25112 工程实践并采用自动化验证的项目,与行业基线相比,平均减少 40-60% 的生产缺陷。工程严谨性的前期投资通过减少返工和保修成本、加快上市速度和更高的客户满意度而获得数倍回报。

4. 常见问题解答

问:ISO 25112 与 ISO 12207 有何关系?
答:ISO 12207 提供软件生命周期过程框架,而 ISO 25112 在该框架内提供详细的工程实践。它们是互补的——用 ISO 12207 进行过程架构,用 ISO 25112 进行工程实施指导。
问:ISO 25112 是否适用于开源开发?
答:是的,ISO 25112 的许多实践(同行评审、静态分析、可追溯性)可直接应用于开源项目。主要调整在于需求工程,社区驱动的需求需要与传统项目不同的获取方法和优先级排序机制。
问:采用 ISO 25112 的推荐团队规模是多少?
答:该标准是可扩展的。小团队可以采用每项实践的轻量版本(例如基于清单的评审替代正式审查、自动化测试替代详细测试计划),而大团队则受益于标准中描述的完整严谨性和正式性。
问:如何在工程严谨性与开发速度之间取得平衡?
答:ISO 25112 建议采用基于风险的方法——对高风险组件和关键功能应用更严格的实践,而对低风险部分使用较轻松的实践。这种有针对性的严谨性优化了质量保证投入与开发速度之间的平衡。

发表回复

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