1
 软件工程
1.4.1 2.1 软件生存周期

2.1 软件生存周期

软件生存周期(SDLC,又称为软件生命周期)是指软件的产生直到报废的生命周期。目前划分软件生存周期的方法有许多种,软件规模、种类、开发方式、开发环境及开发时使用的方法论等都会影响软件生存周期。

在划分软件生存周期的阶段时应遵循一条基本原则:各阶段的任务彼此间相互独立,同一阶段的各项任务的性质尽可能相同,从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系。

一般来说,软件生存周期由软件定义、软件开发和软件维护三个时期组成,每个时期又划分为若干个阶段。以时间分程可将软件生存周期划分为计划、需求分析、总体设计、详细设计、程序编码、软件测试及运行维护7个阶段,如图2-1所示。每个阶段有明确的任务,这样使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理。

img4

图2-1 软件生存周期阶段划分

1.计划

此阶段由软件开发方与需求方共同讨论,软件计划包括问题定义和可行性研究,主要任务是确定要开发软件的总目标,给出它的功能、性能、可靠性及接口等方面的设想。此阶段主要研究完成该软件任务的可行性,探讨解决问题的方案,并对可供使用的资源、成本、可取得的效益和开发进度作出估计,制定完成开发任务的实施计划。

2.需求分析

需求分析的主要任务是确定目标系统必须具备哪些功能。软件设计员在该阶段必须与用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型,并写出软件需求说明书或功能说明书及初步的系统用户手册,提交管理机构评审。

3.总体设计

在总体设计阶段,设计人员要把已确定了的各项需求转换成一个相应的体系结构,结构中每个组成部分都是意义明确的模块,每个模块都和某些需求相对应。另外,设计人员还应该使用系统流程图或其他工具描述实际系统的可能解决方案,并估算每种方案的成本和效益,还应该在充分权衡各种方案利弊的基础上,给用户推荐一个最佳方案。如果用户接受设计人员的推荐方案,则可以开始着手详细设计。

4.详细设计

在总体设计阶段,设计人员用抽象概括的方式提出系统的体系结构和功能模块。而详细设计阶段的任务就是将实现系统的步骤具体化。这种具体化还不是编写代码,而是对系统的每个模块要完成的工作进行具体的描述,并确定输入、输出,以便在编码之前可以评价软件质量,并为编码打下基础。

通常用HIPO图(层次图加输入/处理/输出图)或PDL语言(过程设计语言)描述详细设计的结果。

5.程序编码

这个阶段程序员的关键任务是根据目标系统的性质和实际环境,选取一种高级程序设计语言,将详细设计的结果翻译成用选定的语言书写的程序,并仔细地测试每个模块的功能。

6.软件测试

软件测试阶段的任务是通过各种类型的测试,使软件符合预定的要求。其主要方式是在设计测试用例的基础上检验软件的各个组成部分。首先进行单元测试以发现模块在功能和结构方面的问题,其次将已测试过的模块组装起来进行集成测试,再次进行验收测试,验收测试时按照需求规格说明的规定,由用户对目标系统进行验收。

必要时还可以通过现场测试或平行运行等方法对目标系统进行进一步的测试。通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求,也可以决定测试和调试过程的结束时间。

用证书的文档资料将测试计划、详细测试方案及实际测试结果保存下来,作为软件配置的一个组成部分。

7.运行维护

运行维护的主要任务是进行系统的日常运行管理,根据一定的规格对系统进行必要的修改,评价系统的运行效率、工作质量和经济效益,对运行费用和效果进行监理审计。软件交付用户后,便进入运行阶段。在运行阶段中,可能由于多方面的原因,需要对它进行修改。例如,为适应外部环境的变化和用户要求而添加新的功能;或是随着制作工艺的提高,将原来的工作流程做相应的改动;等等。运行维护时在软件生存周期的各个阶段去调整现有系统,而不是开发一个新的项目。

在软件生存周期的各个阶段完成研制任务后,应提交各个阶段的格式文档资料,如表2-1所示。

表2-1 软件生存周期阶段文档资料

img5