软件生存周期

来自计算思维百科
跳转至: 导航搜索

软件生存周期(Software Life Cycle)是指软件产品从考虑其概念开始到该产品交付使用,直至最终退役为止的整个过程,一般包括计划、需求分析、软件设计、程序编码、软件测试、运行和维护等阶段。在实践中,软件开发并不总是按照顺序来执行的,即各个阶段是可以重叠交叉的。整个开发周期经常不是明显地划分为这些阶段,而是分析、设计、编码实现、再分析、再设计、再编码实现等阶段迭代执行。

基本概念

软件生存周期(Software Life Cycle)是指软件产品从考虑其概念开始到该产品交付使用,直至最终退役为止的整个过程,一般包括计划、需求分析、软件设计、程序编码、软件测试、运行和维护等阶段。在实践中,软件开发并不总是按照顺序来执行的,即各个阶段是可以重叠交叉的。整个开发周期经常不是明显地划分为这些阶段,而是分析、设计、编码实现、再分析、再设计、再编码实现等阶段迭代执行。

制定计划

确定要开发系统的总目标,给出它的功能、性能、可靠性以及接口等方面的要求。由系统分析员和用户合作,研究完成该项软件任务的可行性,探讨解决问题的可能方案,并对可利用资源、成本、可取得的效益、开发的进度做出估计,制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查。没有一个客户会在不清楚软件预算的情况下批准软件的方案,如果开发组织低估了软件的费用,便会造成实际开发的亏本。反之,如果开发组织过高地估计了软件的费用,客户可能会拒绝所提出的方案。如果开发组织低估了开发所用的时间,则会推迟软件的交付,从而失去客户的信任。反之,如果开发组织过高地估计了开发所用的时间,客户可能会选择进度较快的其他开发组织去做。因此,对一个开发组织来说,首先必须确定所交付的产品、开发进度、成本预算和资源配置。

需求分析

分析、整理和提炼所收集到的用户需求,对待开发软件提出的需求进行分析并给出详细的定义。软件人员和用户共同讨论决定哪些需求是可以满足的,并对其加以确切的描述。然后编写出软件需求说明书或系统功能说明书,及初步的系统用户手册,确保对用户需求达到共同的理解与认识,并提交管理部门评审。

软件设计

设计是软件工程的核心技术。在设计阶段的目标是决定软件怎么做。设计人员把已确定的各项需求转换成相应的体系结构。结构中的每一组成部分都是意义明确的模块,每个模块都和某些需求相对应,即概要设计。进而对每个模块要完成的工作进行具体的描述,为源程序编写打下基础,即详细设计,所有设计中考虑的内容都应以设计说明书的形式加以描述,以供后继工作使用并提交评审。软件设计主要集中于软件体系结构、数据结构、用户界面和算法等方面,设计过程将现实世界的问题模型转换成计算机世界的实现模型。

程序编码

把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定的程序设计语言表示的“源程序清单”,这一步工作称为编码。

软件测试

测试是保证软件质量的重要手段,其主要方式是在设计测试用例的基础上检测软件的各个组成部分。首先是进行单元测试,查找各模块在功能和结构上存在的问题并加以纠正;其次是进行组装测试,将测试过的模块按一定的顺序组装起来;最后按规定的各项需求,逐项进行有效性测试,测试整个产品的功能和性能是否满足已有的规格说明、能否交付用户使用。

运行和维护

已交付的软件正式投入使用后,便进入运行阶段。软件在运行阶段需要进行的修改便是维护。维护是软件过程的一个组成部分,应当在软件的设计和实现阶段充分考虑软件的可维护性。维护阶段需要测试是否正确地实现了所要求的修改,并保证在产品的修改过程中,没有做其他无关的改动。维护时,最常见的问题是文档不齐全,或者甚至没有文档。由于追赶开发进度等原因,开发人员修改程序时往往忽略对相关的规格说明文档和设计文档进行更新,从而造成只有源代码是维护人员可用的惟一文档。由于软件开发人员的频繁变动,当初的开发人员在维护阶段开始前也许已经离开了该组织,这就使得维护工作变得更加糟糕。因此,维护常常是软件生命周期中最具挑战性的一个阶段,其费用是相当昂贵的。