开发模型

1.瀑布模型(Waterfall Model)

瀑布模型是按线性顺序进行的开发模式,主要有计划、需求分析、设计、编码、测试和运行维护这几个阶段。当每个阶段结束的时候都会进行自我验证,如果出现问题就返回上一个阶段。

 

开发模型和测试模型_第1张图片

优点:强调开发的阶段性;

          强调早起计划及需求调查;

          强调产品测试。

缺点:依赖早期进行的唯一一次需求调查,不能适应需求的变化;

          项目的风险要到后期的测试阶段才显露,失去及早纠正的机会;

          可以运行的产品要等到项目完成才能被看见。

2.螺旋模型(Spiral Model)

当软件开发初期需求不是很明确的时候,就需要渐进式的开发模式,螺旋模型就是渐进式的开发模型。螺旋模型适用于规模庞大、复杂度高、风险大的项目。螺旋模型有四个阶段:制定计划、风险分析、实施工程、客户评估。这四个阶段是迭代进行的,这种模式在软件测试的时候不允许有一段独立的测试时间和阶段,测试必须随着开发的迭代而迭代。

开发模型和测试模型_第2张图片

优点:强调严格的全过程风险管理;

          强调各开发阶段的质量;

          提供机会检讨项目是否有价值继续下去。

缺点:由于引入了严格的风险标识、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求;

          还需要人员、资金和时间的投入。

3.增量开发/迭代开发

增量开发:是将要开发的软件模块化,每个模块为一个组件,从而可以分批次的研发出这些组件。例如画一幅人物画,用增量模型的角度来看就是先画人的头部,再画人的身子,最后画人的脚。

迭代开发:在软件开发的过程中,对每一步反复求精的的过程,迭代模型是提升软件质量的过程。螺旋模型就是一个迭代开发的过程。例如还是画一幅画,迭代模型的角度来看就是先画整个轮廓,再将轮廓勾勒出基本的雏形,然后再细化人物的表情、状态的这样一个过程。

迭代模型相比较增量模型抗击风险能力更前些,考虑也更全面;增量开发模型能显著降低项目风险,结合软件持续构建机制。

4.敏捷开发

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷宣言:个体与交互重于过程和工具

                 可用的软件重于完备的文档

                 客户协作重于合同谈判

                 响应变化重于遵循计划

敏捷开发的代表模式:scrum

  • scrum 里面的角色:product owner (产品经理)、scrum master (项目经理) 和 team (研发团队)。

  • scrum 的工作流程:

开发模型和测试模型_第3张图片

①产品负责人负责整理user story,形成左侧的 product backlog。
②发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
③迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
④每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
⑤演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由po整理,形成新的story。
⑥回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。

测试模型

1. V 模型

V 模型是瀑布模型的变种。其特点如下:

  • 明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系 。

  • V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求 。

  • 局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试。

开发模型和测试模型_第4张图片

2. W 模型

  • W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。

  • W模型特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的 。

  • W模型优点:有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。

  • 局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。

开发模型和测试模型_第5张图片