2.4 软件生存周期基本过程
软件生存周期基本过程中的各个过程供参与或完成软件产品开发、运作或维护的组织(软件产品的需方、供方、开发者、操作者和维护者等)在软件生存周期内使用。
生存周期基本过程包括5个过程。
1)获取过程:确定需方和获取系统、软件产品或软件服务的组织的活动。
2)供应过程:确定供方和向需方提供系统、软件产品或软件服务的组织的活动。
3)开发过程:确定开发者和定义并开发软件产品的组织的活动。
4)运作过程:确定操作者和在规定的环境中为其用户提供运行计算机系统服务的组织的活动。
5)维护过程:确定维护者和提供维护软件产品服务的组织的活动。也就是对软件的修改进行管理,使它保持合适的运行状态。这一过程包括软件产品的移植和退役。
2.4.1 获取过程
获取过程包括需方的活动和任务,此过程从确定需要获取的系统、软件产品或软件服务开始,接着就是制定和发布标书,选择供方和管理获取过程,直到验收系统、软件产品或软件服务。获取过程包括以下几项活动。
1.启动
需方通过描述概念或需要以获取、开发或增强系统、软件产品或软件服务来开始获取过程。为此,应定义并分析系统需求,包括业务、组织和用户,以及安全性、保密安全性与设计、测试有关的其他关键要求和应遵循的标准、规程。需方应以风险、费用和效益作为准则对下面每个方案进行分析,考虑获取方案。
1)购买满足需求的现货软件产品。
2)在内部开发软件产品或得到软件服务。
3)通过合同开发软件产品或得到软件服务。
4)上述1)、2)、3)条的结合。
5)提高现有的软件产品或服务。
需方将准备、编制并执行一个获取计划,确定验收策略和条件(准则),并将其写成文档。
2.招标的准备
需方编制获取需求文档(例如招标书),确定合同的里程碑,此时应评审和审核供方的进度,作为监督获取的一部分。
3.合同的准备和修改
需方建立选择供方的规程,包括标书的评价准则和符合需求的程度,并根据对供方的标书、能力评价和其他需要考虑的因素选择一个供方。
需方应准备并与供方进行合同谈判,合同涉及获取需求,包括需交付的软件产品或服务的费用和计划。合同还涉及与可重复使用的现货软件产品相关的专利权、使用权、所有权、担保权和许可权。
一旦合同开始执行,作为更改控制机制的一部分,需方应通过与供方谈判来控制对合同的更改。对合同的更改应调查对项目计划、费用、效益、质量和进度的影响。
4.对供方的监督
需方按照联合评审过程和审核过程来监督供方的活动。需方应与供方合作,及时提供所有必要信息,并解决所有遗留问题。
5.验收和完成
需方根据已确定的验收策略和准则准备验收,包括准备测试用例、测试数据、测试规程和测试环境,并确定供方参与的程度。
需方应对可交付软件产品或服务进行验收评审和验收测试。验收之后,需方将承担已交付软件产品的配置管理职责。
2.4.2 供应过程
供应过程包括供方的活动和任务。供方或者编制投标书来答复需方的招标书,或者与需方签订一项合同,来提供系统、软件产品或软件服务。接着确定为管理和保证项目所需的规程和资源,包括编制项目计划,实施计划,直到系统、软件产品或软件服务交付给需方。本过程包括下述几项活动。
1)启动。供方评审招标书中的需求,考虑本组织的方针和其他规章,并做出投标或接受合同的决定。
2)准备投标。供方确定并编制投标书来响应招标书,包括对本标准的剪裁建议。
3)签订合同。供方应与需方组织谈判并签订提供软件产品或服务的合同。作为更改控制机制部分,供方可以要求修改合同。
4)编制计划。供方应对获取需求进行评审,以确定一项框架来管理和保证项目,并保证可交付软件产品或服务的质量。如果合同中没有规定,供方应确定或选择一个适合该项目的范围、规模和复杂度的软件生存周期模型。
供方应建立计划需求,以便管理和保证该项目,并保证可交付软件产品或服务的质量。计划需求宜包括需要的资源和需方的介入。一旦建立了计划需求,应根据对每一种选择带来的风险分析,考虑开发软件产品或提供软件服务的选择方案。选择方案包括以下几个。
①利用内部资源开发软件产品或提供软件服务。
②通过分包合同开发软件产品或提供软件服务。
③从内部或外部资源获得现成的软件产品。
④以上①、②、③条的综合。
供方应在计划需求及进行方案选择的基础上,制订项目管理计划,并形成文档。
5)实施和控制。供方实施和执行已制订的项目管理计划。
6)评审和评价。供方负责协调合同评审活动、接口,并与需方组织保持联系。应按合同和项目计划的规定与需方进行或支持非正式会议、验收评审、验收测试、联合评审和审核。
供方进行验证和确认,以及质量保证等活动。
7)交付和完成。供方按合同中的规定交付软件产品或服务,并在所提供的支持中协助需方。
2.4.3 开发过程
开发过程包括开发者的活动和任务。过程包括需求分析、设计、编码、集成、测试,以及与软件产品有关的安装和验收等活动。如果合同中有规定,也可以包括和系统有关的活动。开发者按照合同执行或支持这种过程中的活动。本过程由下列活动组成并形成相应的文档。
1)过程实施。如果合同中没有规定,开发者应规定或选择适于项目范围、规模和复杂度的软件生存周期模型。开发过程的活动和任务应按生存周期模型选择和安排。
开发者应选择、剪裁和使用那些已形成文档的、恰当的、并由执行开发过程和支持过程的活动的组织建立的标准、方法、工具和计算机编程语言(如果合同没有规定)。
开发者应为开发过程活动的实施制订开发计划。计划应包括特定的标准、方法、工具、措施,以及与包括安全、保密安全在内的所有需求的开发、鉴定相关的职责。如有必要,可以制订彼此独立的计划并执行。
2)系统需求分析。应分析待开发系统的特定的预期使用要求,以规定系统需求。
3)系统结构设计。建立系统的顶层结构。结构应标出硬件、软件和人工操作项。应确保所有系统需求分配到各项中。应顺序标出硬件配置项、软件配置项和手工操作项。
4)软件结构设计。开发者应把软件项的需求转变为一种描述其顶层结构的结构图,并且标识出软件的各个部件。应确保所有软件需求分派到其软件部件,并且进一步细化,以便详细地设计。
5)软件详细设计。开发者应针对软件的每一软件部件进行详细设计,将软件部件细化到更低级别的,包含能被编码、编译和测试的软件单元。应确保软件的所有需求都被分派到软件部件。
6)软件编码和测试。开发者开发每一个软件单元和数据库,并测试每一软件单元和数库用的测试规程和资料。应测试每一软件单元和数据库以确保满足需求。
7)软件集成。开发者应制订集成计划。把软件单元和软件部件集成到软件项中。计划应包括测试需求规程、数据、职责和进度安排。
开发者应按照集成计划将软件单元和软件部件作为集合体进行集成并测试。应确保每一集合体满足软件项的需求并且在集成活动终了时软件项已经集成。
开发者应为实施软件合格性测试而对软件项的每一鉴定需求确定测试集、测试用例(输入、输出和测试准则)及测试规程。开发者应确保已集成的软件项为软件合格性测试做好了准备。
8)软件合格性测试。开发者应按照软件项鉴定需求实施合格性测试。应确保对每一软件需求的实现加以测试,以了解是否合格。
9)系统集成。需要时,软件配置项应与硬件配置项、人工操作项和其他系统集成到系统中。被开发的集合体应根据需求进行测试。
为实施系统合格性测试应对系统的每一鉴定需求,开发确定测试集、测试用例(输入、输出、测试准则)和测试规程。开发者应确保已集成的系统为系统合格性测试做好了准备。
10)系统合格性测试。系统合格性测试应按照为系统规定的鉴定需求实施。应确保对每一系统需求进行测试,以判定是否合格并确保系统为交付做好了准备。
11)软件安装。开发者应按合同规定制订一个在目标环境中安装软件产品的计划。安装软件产品所必要的资源和信息应加以确定并能得到。当合同中有规定时,开发者应协助需方的安装活动。当安装的软件产品正在代替现有系统时,开发者应支持合同要求的并行操作活动。
开发者应按安装计划安装软件产品,应确保软件编码和数据库按合同规定初始化、执行和终止。
12)软件验收支持。开发者应支持需方的验收评审和软件产品的测试。验收评审和测试应考虑联合评审、审核、软件合格性测试和系统合格性测试的结果。开发者应按合同规定完成和交付软件产品,并按合同规定向需方提供初始的和持续的培训与支持。
2.4.4 运作过程
运作过程包括操作者的活动和任务。本过程规定软件产品的运行和对用户的操作支持。因为软件产品的运行要集成到系统的运行中,所以本过程的活动和任务涉及系统。
本过程包括过程实施、运行测试、系统运行和用户支持等活动。
2.4.5 维护过程
维护过程包括维护者的活动和任务。当软件产品由于某一问题或改进、更新的需要对编码和相关文档进行修改时,就启动本过程。目的是改进现有产品,同时维持其完整性。本过程包括软件产品的移植和退役。本过程随着软件产品的退役而结束。此过程由过程实施、问题和修改分析、修改实施、维护评审/验收、移植和软件退役等活动组成。