当前位置 工程之家 软件工程 正文 下一篇:

什么是软件生命周期

软件生命周期又称为软件生存周期或系统开发生命周期,是软件产品从定义到开发、使用到维护、直至最终被弃用所经历的整个时期。软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又进一步划分成若干个阶段,共八个阶段,每个阶段有明确的任务界限,划分阶段的目的是为了简化软件过程,使得因为软件规模增长而带来的软件开发复杂性增大变得容易控制和管理。

软件生命周期的三个时期、八个阶段的对应关系如图2-2所示。软件定义时期,可以进一步分为问题定义、可行性研究和需求分析三个阶段。软件开发时期,分为概要设计、详细设计、编程、测试四个阶段。软件维护时期就对应软件维护一个阶段,它是软件生命周期中历时最长的一个阶段。

图2-2 软件生命周期

下面简要介绍各个阶段应该完成的基本任务。

(1)问题定义阶段

问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”如果不知道问题是什么就试图解决这个问题,显然是盲目的,只会白白浪费时间和金钱,最终得出的结果很可能是毫无意义的。尽管确切地定义问题的必要性是十分明显的,但是在实践中它却可能是最容易被忽视的一个步骤。

用户提出一个软件开发需求以后,分析师首先要明确软件的实现目标、规模及类型:如它是数据处理问题还是实时控制问题,是科学计算问题还是人工智能问题等,而后形成书面报告,并且需要得到客户对这份报告的确认。

(2)可行性研究

在清楚了项目的性质、目标、规模后,分析师要对项目进行可行性分析。本阶段的工作实质是一次大大简化了的需求分析和设计过程,目的是探索这个问题是否值得去解决,是否有可行的解决方案。最后需要提交可行性研究报告。

可行性研究的结果是客户做出是否继续进行这项工程的决定的重要依据,一般说来,只有投资可能取得较大效益的那些工程项目才值得继续进行下去。可行性研究以后的那些阶段将需要投入更多的人力和物力。及时终止不值得投资的工程项目,可以避免更大的浪费。

可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能解决,是否值得解决。需要注意的是,可行性研究的目的不是解决问题,而是确定问题是否可以去解。要达到这个目的,不能靠主观臆想而只能靠客观分析。分析师必须进一步概括地了解用户的需求,并在此基础上提出若干种可能的系统实现方案,并对每种方案从技术、经济、操作和社会四个方面分析其可行性,从而最终确定这项工程的可行性。

(3)需求分析

这个阶段是回答“系统做什么”这个问题。软件是为用户开发的,软件的功能性和非功能性要求首先得由用户提出,这需要用户配合软件技术人员按照用户的实际业务要求进行挖掘。最终得到的软件产品能否满足用户的真实需求,是断定项目成败的关键要素。

需求分析是详细获取并表述用户需求的活动。需求分析的结果是后续设计与编程活动的依据。获取真实、完整的需求,并以适当工具准确地表述为需求分析模型,是需求分析活动的关键。这一阶段的结果是软件需求规格说明书。

(4)概要设计

这个阶段的基本任务是,概括地回答“如何实现系统?”。概要设计也被称为“总体设计”,用于获得目标系统的宏观蓝图,设计师根据软件需求规格说明书,构造目标系统的软件结构,如:将一个系统划分为若干模块,确定模块与模块间的关系。

(5)详细设计

概要设计是以比较抽象概括的方式提出了解决问题的办法,详细设计阶段的任务是把解法具体化,也就是回答“应该怎样具体地实现这个系统”。该阶段是把概要设计的结果,细化为可以用某种编程语言实现的设计方案。例如,结构化方法中,详细设计的任务主要是程序流程设计和数据结构设计;面向对象的方法中,是对前期得到的类或对象模型进行细节设计,使之可以直接支持编程。

(6)编程

编程又称为编码,就是编写程序源代码。最终得到的“源程序清单”就是源代码清单。程序源代码要经过编译或解释以后,才能被执行。

编码追求的是程序代码编写风格,要求所编写的程序要规范、友好,便于阅读和调试,这是提高程序质量和软件可维护性的关键活动之一。

(7)软件测试

测试是软件质量保证活动的最后一道防线。整个测试过程主要分为单元测试、集成测试、系统测试和验收测试。通常单元测试与编程活动同时进行,由程序员自己完成。而集成测试、系统测试和验收测试是在独立的测试阶段完成。

测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。

(8)软件维护

软件运行和维护是软件生命周期中最长的一个阶段。软件交付使用后,便进入漫长的运行和维护期,可能持续几年甚至几十年,期间可能要进行多次维护或修改。

维护活动按性质分为纠错性维护、完善性维护、适应性维护和预防性维护。在软件的开发与测试阶段,有一些缺陷没有被发现,而在使用过程中暴露出来,由维护人员诊断和改正错误的过程,称为改正性维护。使用过程中,用户会提出新功能或性能的要求,或者是提出一般性的改进意见,为了满足这类要求,需要对软件进行增加功能、改善功能、增强软件性能的修改,此类活动称为完善性维护。硬件换代、操作系统升级速度非常快,而应用软件的使用寿命却可能很长,远长于最初开发这个软件时的运行环境的寿命,为了使软件与变化了的环境相适应而进行的修改,称为适应性维护。为了改善软件的可维护性或可靠性,或为了给未来的改进奠定更好的基础而对软件所做的修改工作,称为预防性维护。

版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。http://www.apmygs.com/432.html
返回顶部