软件开发模型
瀑布模型
快速还原模型
螺旋模型
瀑布模型
需求分析->设计->编码->实现->软件测试->完成->维护
优点:开发的各个阶段比较清晰、强调早期计划及需求调查、适合需求稳定的产品开发
缺点:依赖早期的需求调查,不适应需求的变化、单一流程不可逆、风险往往延至后期才显露失去及早纠正的机会、前面未发现的错误会传递并扩散到后面的阶段,可能导致项目失败
改良:沿用瀑布模型的线性思想,细化各个阶段,在某些重要关注的阶段之间掺入迭代的思想
快速还原模型
1.快速分析2.构造3.运行4.评价
快速分析->需求说明->构造原型->原型->运行原型->评价原型->修改意见
优点:克服了瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的项目开发风险。适合预先不能确切定义需求的软件系统的开发
缺点:不适合大型系统的开发(适合开发小型的,灵活性高的系统)。前提要有一个展示性的产品原型,因此在一定程度上限制了开发人员的创新。
螺旋模型
制定计划->风险分析->实施开发->客户评估
优点:螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前经常发生的循环之前,都必须首先进行风险评估
缺点:采用螺旋模型需要有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失,过多的迭代次数会增加开发成本,延迟提交时间
软件测试模型
V模型
W模型
H模型
V模型
需求分析->概要设计->详细设计->编码->单元测试->集成测试->系统测试->验收测试
优点:采用了自顶向下逐步求精的方式把整个开发过程分成不同的阶段,每个阶段的工作都很明确,因此便于控制开发过程。当所有的阶段都完成之后,该软件的开发过程也随之结束
缺点:实际的过程中,在需开发求阶段很难把用户的需求完全明确下来,因此,当需求变更时将会倒置阶段反复,而且都要重复需求,设计,编码,测试等过程,返工量非常大,模型灵活性比较低
W模型
需求分析->概要设计->详细设计->编码->集成->实施->交付
验收/系统测试设计->集成测试设计->单元测试设计->单元测试->集成测试->系统测试->验收测试
优点:开发强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求和概要设计同样要测试;更早地接入测试,可以发现开发初期的缺陷,那么可以用更加低的成本进行缺陷修复
缺点:依赖于软件开发和软件测试依然保持一前一后的线性关系,依然无法支持迭代、自发性和需求等变更调整;对于当前很多项目,在执行的过程中根本不产生文档,那么W模型基本无法适用;使用起来技术复杂度很高,对于需求和设计的测试要求很高,实践起来困难
H模型
测试准备->测试就绪点->测试执行
优点:软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行;软件测试活动可以尽早准备、尽早执行,具有很强的灵活性;软件测试可以根据被测物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的
缺点:
管理型要求高:由于模型很灵活,必须要定义清晰的规则和管理制度,否则测试过程将非常难以管理和控制;
技能要求高:H模型要求能够很好的定义每个迭代的规模,不能太大也不能太小;
测试就绪点分析困难:测试很多时候,你并不知道测试准备到什么时候是合适的,就绪点在哪里,就绪点的标准是什么,这就对后续的测试执行的启动带来很大困难;
对于整个项目组的成员要求非常高:在很好的规范制度下,大家都能高效的工作,否则容易混乱。例如:你分了一个小的迭代,但是因为人员技能不足,使得无法有效完成,那么整个项目就会受到很大的干扰。