2.1 软件过程概述
2.1.1 软件过程的概念
每个人都知道主动积极的优质软件工程师的重要性,但是如果不理解软件过程,或者软件过程不是在最佳实践下进行,即使是技术精英也无法达到最佳的工作状态。过程是将人、技术、管理结合在一起的凝聚力,是产品成本、进度和质量的主要决定因素。
1984年10月,第一届国际软件过程会议召开,会议提出“软件过程”这个新概念,这标志着软件工程进入了软件过程时期。所谓软件过程(software process),也称为软件生存周期过程,是指软件生存周期中软件定义、开发和维护的一系列相关过程,它定义什么时候做什么、如何做、由谁来做、产生什么制品(artifact)。一个过程由多个彼此相关的活动组成,活动可细分为任务,任务把输入制品加工成输出制品。活动通过人工或自动的手段来执行,可以是顺序的、迭代的(重复的)、并行的、嵌套的,或者是有条件地引发的。通过软件过程,可以规范软件开发与维护的流程,不断地引入软件开发与维护的最佳实践,持续地进行改进,使得软件项目的成功是可以重复的,确保明天的实践比今天更好。
2.1.2 软件生存周期过程标准
ISO/IEC 12207《系统和软件工程:软件生存周期过程》标准(System and Software Engineering-Software Life Cycle Processes)将软件过程进行了系统的分类,并定义了每个软件过程的活动,以指导所有参与软件项目的人员(供应商、集成商、开发人员、操作人员、维护人员、管理人员、用户以及支持人员)在软件开发、运作、维护中更好地协同工作。ISO/IEC 12207认为,软件是系统的一部分,软件需求从系统需求和设计中导出,开发后的软件最终集成到系统中,软件过程和系统过程紧密相关。软件生存周期过程分为四大过程组,如图2-1所示。
图2-1 ISO/IEC 12207软件生存周期过程
协议过程组定义了软件系统的需方和供方在获取或提供满足需求的软件产品或服务时所需要进行的活动,它包括获取过程和供应过程。其中获取过程是为需方而定义的,该过程从确定需要获取的系统、软件产品或软件服务开始,制定和发布标书,选择供方和管理获取过程,直到验收系统、软件产品或软件服务。供应过程是为供方而定义的,该过程决定编制投标书来答复需方的招标书;与需方签订一项合同,来提供系统、软件产品或软件服务;确定为管理和保证项目所需的规程和资源,从编制项目计划,实施计划,直到系统、软件产品或软件服务交付给需方。
组织项目使能过程组提供所需的组织级资源和基础设施以支持项目,并确保达成组织的目标和所签订的协议。它包括6个过程:生存周期模型管理过程、基础设施管理过程、项目组合管理过程、人力资源管理过程、质量管理过程和知识管理过程。
技术管理过程组的项目过程负责计划、执行、评估和控制项目的进度,并支持各种特定的管理目标,包括项目计划过程、项目评估与控制过程、决策管理过程、风险管理过程、配置管理过程、信息管理过程、度量过程和质量保障过程。
技术过程组关注贯穿软件生存周期的技术活动,用以定义系统的需求,将需求转换成一个有效的产品,使用这个产品,提供所需的服务,并保持这些服务直至它被淘汰。这些过程涵盖了软件或系统开发中的业务分析、需求定义、架构定义、设计定义、系统分析、实现、集成、验证、移交、确认、运维、退役等各个方面。
ISO/IEC 12207提供了一个全面的过程框架,为制定组织或项目特定的软件过程提供指南。