当前位置:文档之家› 软件生命周期

软件生命周期

软件生命周期
软件的生命周期是一个孕育、诞生、成长、成熟和衰亡的生存过程,也就是所谓的软件定义、软件开发和运行维护3个时期组成。

而每个时期又有所要完成的不同的基本任务。

软件定义时期的主要任务是解决“做什么”的问题,通俗的讲就是做此项目的主要功能及可行性报告等。

比如说网上选课系统,在软件定义阶段,要确定以下几个功能模块:管理员管理课程、教师、学生的增删改查和对教师、学生的权限授予等功能,教师对自己信息的修改和对自己课程的上传、修改、删除、查询等功能,学生对课程的选择、退选及查询等功能。

针对此项目,从技术、经济、法律、成本、可获得的效益、开发的进度做出一系列的估算,制定出具体的实施计划。

软件开发时期的主要任务是解决“如何做”的问题,也就是如何完成此项目的过程,要解决每个构建所要完成的工作以及完成此工作的顺序。

选择编写源程序的开发工具,把软件设计转换成计算机可以接受的程序代码。

比如说网上选课系统,在软件开发阶段,我们确定先要进行管理员的模块编写,再进行教师模块的编写,进而进行学生模块的编写,另外也要确定是运用某种软件开发工具,如java、C语言等进行模块的开发等。

运行维护时期的主要任务是使软件持久地满足用户的需要,通常包括:改正性维护、适应性维护、完善性维护和预防性维护。

在此阶段主要是把前期的各个模块组装起来进行测试,保证按需求分析的要求完成软件功能的测试并对此进行确认,交与开发方运行测试。

比如网上选课系统,在运行维护阶段,要对前期的管理员、教师、学生这三个模块进行组合,并按照需求分析的功能进行核对,有不符合需求规格说明书之处进行修改,直到完全符合并测试成功,交与开发方测试及运用。

软件的生命周期是一个耗时长的工程。

在软件工程生命周期的3个时期中,各个阶段又有着其不同的基本任务:
一、问题定义和可行性研究
此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。

在这个阶段中我们需要从开发的技术、成本、效益等各个方面
来衡量这个项目,进行可行性分析,形成可行性分析报告书,并以此为基础进行需求分析等后期的工作。

二、需求分析
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析,明确目标的功能需求和非功能需求,并建立分析模型,从功能、数据、行为等方面描述系统的静态特性和动态特性,对目标系统做进一步的细化,了解此系统的各种需求细节。

在这个阶段实施时产生的需求分析说明书是今后开发过程中至关重要的一个文档。

需求分析阶段是一个很重要的阶段,需求也是在整个软件开发过程中不断变化的,因此我们必须以不变应万变,以保护整个项目的顺利进行。

三、软件设计
此阶段是整个软件设计的技术核心部分,主要是根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。

软件设计一般分为总体设计和详细设计。

总体设计包括系统模块结构设计和计算机物理系统的配置方案设计。

系统模块结构设计的主要任务是划分子系统,确定子系统的模块结构并画出模块结构图。

此过程中主要解决的是如何将一个系统划分成多个子系统,每个子系统如何划分成多个模块,如何确定子系统之间、模块之间传送的数据及其调用关系,如何评价并改进模块结构的质量等。

计算机物理系统配置方案设计是要解决计算机软硬件系统的配置、通信网络系统的配置、机房设备的配置等问题。

详细设计主要有处理过程设计以确定每个模块内部的详细执行过程,包括局部数据组织、控制流、每一步的具体加工要求等,一般来说,处理过程模块详细设计的难度已不太大,关键是用一种合适的方式来描述每个模块的执行过程,主要的设计工具有:程序流程图、N-S图、PAD图、伪代码等。

四、程序编码和单元测试
此阶段是选择合适的编程语言,将软件设计的结果转换成计算机可运行的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试
的手段排除测试中发现的错误。

在程序编码中必须要制定统一,符合标准的编写规范。

以保证程序的可读性,易维护性,提高程序的运行效率,且与设计相一致。

单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

所有的测试都必须在整个软件系统的生命周期中进行维护。

五、集成和系统测试
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。

整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。

测试的方法主要有白盒测试和黑盒测试两种。

在测试过程中要建立详细的测试计划并严格按照测试计划进行测试,要根据需求规格说明书的要求,对必须实现的各项需求,逐步进行确认,判定已开发的软件是否符合用户需求,能否交付用户使用。

集成测试,也叫做组装测试或是联合测试。

是在单元测试的基础上,将所有模块按照设计的要求组装成为子系统或是系统,进行集成测试。

测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或是系统的过程中各个部分工作是否达到或实现相应技术指标及要求的活动。

在顺序上,集成测试在单元测试之后,集成测试中所使用的对象应该是已经经过单元测试的软件单元。

在集成测试中,必须考虑:在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;各个子功能组合起来,能否达到语气要求的父功能;一个模块的功能是否会对另一个模块的功能产生不利的影响;全局数据结构是否有问题;单个模块的误差积累起来,是否会放大,从而达到不可接受的程度等问题。

系统测试时将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,气目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。

在此测试中,要尽可能彻底地检查出程序中的错误,提高软件系统的可靠性。

主要包括:模块测试,检查每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确;确认测试,测试
整个软件系统是否满足用户功能和性能的要求。

测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。

系统测试时针对整个产品进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格说明书不符合或与之矛盾的地方并进行修改以达到需求规格的要求。

其中,白盒测试与黑盒测试是测试阶段最主要使用的俩个测试方法。

白盒测试是对软件的过程性细节做细致的检查,这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

而黑盒测试是在已知软件产品所具有的功能基础上进行的。

在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

六、软件运行和维护
软件维护是软件生命周期中持续时间最长的阶段。

在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。

要延续软件的使用寿命,就必须对软件进行维护。

软件的维护包括:纠错性维护,运行中发现软件中的错误需要修正;适应性维护:为了适应变化了的软件工作的环境;完善性维护,扩充软件功能,增强软件性能,改进加工效率、提高软件的可维护性等需求而做的一系列的变更。

相关主题