软件工程
上QQ阅读APP看书,第一时间看更新

2.1 软件过程

2.1.1 软件过程的定义

软件过程是指一套关于项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关文档(计划、文档、模型、编码、测试、手册等)组成。软件过程是指软件生存周期中的一系列相关过程(见图2.1),由软件计划、软件开发、软件维护等一系列过程活动构成。过程是活动的集合,活动是任务的集合,任务则起到把输入加工成输出的作用。

图2.1 软件过程

软件过程主要针对软件生产和管理进行研究。为了获得满足工程目标的软件,不仅涉及工程开发,而且还涉及工程支持和工程管理。对于一个特定的项目,可以通过剪裁过程定义所需的活动和任务,并可使活动并发执行。与软件有关的单位,根据需要和目标,可采用不同的过程、活动和任务。

2.1.2 软件过程的特点

(1)过程描述了所有的主要活动。软件过程活动通常有:需求分析和定义、系统设计、程序设计、编码、单元测试、集成测试、系统测试、系统支付、维护等。

(2)过程在一定限制下使用资源、产生中间和最终产品。

(3)过程由以某种方式连接的子过程构成,活动以一定的顺序组织。过程是有结构的,表现为过程和活动的组织模式,以适应相应项目的开发。

(4)每个过程活动都有入口和出口准则以便确立活动的开始和结束。

(5)每个过程都有达到活动目标的相关指导原则。

2.1.3 软件过程的分类

(1)基本过程类:是构成软件生存期主要部分的那些过程,包括获取、供应、开发、操作、维护等过程。

(2)支持过程类:可穿插到基本过程中提供支持的一系列过程,包括文档开发、配置管理、质量保证、验证、确认、联合评审、审计、问题解决等过程。

(3)组织过程类:一个组织用来建立、实施一种基础结构,并不断改进该基础结构的过程,包括管理、基础、改进、培训等过程。

2.1.4 软件过程的作用

软件过程是一组引发软件产品的生产活动,采用软件过程管理的主要作用有:

(1)有效的软件过程可以提高组织的生产能力。

(2)可以理解软件开发的基本原则,辅助研发人员做出决策。

(3)可以标准化研发过程工作,提高软件的可重用性和团队之间的协作交流。

(4)有效的软件过程可以提高软件的维护性。

(5)有效地定义如何管理需求变更,在未来的版本中恰当分配变更部分,使之平滑过渡。

(6)可以在不同的软件设计阶段平滑过渡,提高研发系统的可实施性。

2.1.5 软件过程模型化

软件过程是复杂的,且像所有智力和创造性过程一样,依赖于人们的决策和判断。并不存在什么理想的软件过程。大多数机构有自己的软件开发过程。虽然有许多不同的软件过程,但所有软件过程都必须具有四种对软件工程来说是基本的活动,分别是:

(1)软件描述:必须定义软件的功能以及软件操作上的约束。

(2)软件设计和实现:必须生产符合需求描述的软件。

(3)软件有效性验证:软件必须得到有效性验证,即确保软件是客户需要的。

(4)软件进化:软件必须进化以满足不断变化的客户需要。

在实际软件开发过程需要不同的开发模型来实现软件过程的设计思想,每一种开发模型都是从不同的角度表现软件过程。软件开发模型是软件过程具体实现的简化表示。