软件生存周期(software life cycle)又称为软件生命期,生存期。是指从形成开发软件概念起,所开发的软件使用以后,直到失去使用价值消亡为止的整个过程。
一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每一个时期又划分为若干阶段。每个阶段有明确的任务,这样使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理。
一、开发模型
1.1瀑布模型
优点:开发阶段,各个阶段比较清晰;强调早期计划及需求调查;适合稳定需求的产品开发;
缺点:依赖于早期的需求调查,不适应需求的变化;单一流程不可逆;风险往往延至后期才暴露,失去及早纠正的机会;前面未发现的错误会传递到后面的阶段可能导致项目失败。
改良:每个阶段都可以融入小的迭代工作!
优点:开发阶段,各个阶段比较清晰;强调早期计划及需求调查;适合稳定需求的产品开发;
改良:每个阶段都可以融入小的迭代工作!
1.2快速原型模型
优点:克服瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的项目开发风险。适合预先不能确切定义需求的软件系统的开发。
缺点:不适合大型系统的开发(适合开发小型的、灵活性高的系统)。前提要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。
实现一个基本原型,让用户对原型进行评价,逐步调整,使其满足用户最终需求;
优点:适合不能确定需求的软件;
缺点:不适合开发大型系统。
1.3螺旋模型
螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,螺旋模型沿着螺旋线旋转,即在坐标的4个象限上分别表示了4个方面的活动,
制定计划——风险分析——实施开发——客户评估
二、测试模型
2.1 V模型
2.1.1 需求分析:用户需求、业务需求、需求规格说明书
概要设计:系统架构、模块划分、模块与模块之间的接口。
详细设计:模块内部实现的逻辑和方法。
编码:实现上面的设计。
单元测试:检测代码的开发是否符合详细设计的要求。
集成测试:检测此前测试过的各组成部分是否能完好地结合到一起。
系统测试:检测已集成在一起的产品是否符合系统规格说明书的要求。
验收测试:检测产品是否符合最终用户的需求。
2.1.2测试v模型优缺点
优点:①包含了底层测试(单元测试)和高层测试(系统测试)(底层测试:检验源代码质量的测试,如:单元测试;高层测试:检验整个系统的需要,如:系统测试);
②清楚的标识了开发和测试的各个阶段;
③自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。
缺点:①自上而下的顺序导致了,测试工作在编码之后,就导致错误不能及时的进行修改;
②实际工作中,需求经常变化,导致v模型步骤,反复执行,返工量很大,灵活度较低。
改良:每个步骤都可以进行小的迭代(更新)工作。
2.2 W模型
优点:①开发和测试伴随着整个开发周期,需求和设计同样要测试;
②更早的介入测试,可以发现初期的缺陷,修复成本低;
③分阶段工作,方便项目整体管理。
缺点:①开发和测试依然是线性的关系,需求的变更和调整,依然不方便;
②如果没有文档,根本无法执行w模型;
③对于项目组成员的技术要求更高!
定义:开发一个v、测试一个v组合起来的模型(w模型也叫双v模型)
总结:v模型适用于中小企业,w模型适用于中大型企业(因为人员要求高),h模型人员要求非常高,很少有公司使用。
2.3 H模型
测试流程
测试准备:所有测试执行活动的准备;判断是否到测试就绪点;
测试就绪点:测试准入准则,即是否可以开始执行测试的条件;
测试执行:具体的执行测试的程序。
其他流程
具体开发中的流程,如:设计流程
优点:
开发的H模型揭示了软件测试除测试执行外,还有很多工作;
软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行;
测试活动可以尽早准备、尽早执行,具有很强的灵活性;测试可以根据被测物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的。
缺点:
管理型要求高:由于模型很灵活,必须要定义清晰的规则和管理制度,否则测试过程将非常难以管理和控制;
技能要求高:H模型要求能够很好的定义每个迭代的规模,不能太大也不能太小;
测试就绪点分析困难:测试很多时候,你并不知道测试准备到什么时候是合适的,就绪点在哪里,就绪点的标准是什么,这就对后续的测试执行的启动带来很大困难;
对于整个项目组的人员要求非常高:在很好的规范制度下,大家都能高效的工作,否则容易混乱。例如:你分了一个小的迭代,但是因为人员技能不足,使得无法有效完成,那么整个项目就会受到很大的干扰。