1、瀑布模型
计划-->需求-->设计-->编码-->测试-->运行与维护
特点:
  1、线性化的研发模型
  2、各阶段具有里程碑的特征
  3、基于文档的驱动
  4、严格的评审机制
优点:
  1、有利于大型软件研发过程中人员的组织和管理
  2、有利于开发方法和工具的使用
  3、提高了软件的质量和效率
缺点:
  不灵活

 

2、V模型

用户需求-->需求分析-->概要设计-->详细设计-->编码-->单元测试-->集成测试-->系统测试-->验收测试

优点:

 1、软件测试和开发级别一一对应

 2、软件测试分为若干个级别,更能提高软件的质量

缺点:

  1、忽略了软件测试的对象不止程序,还有文档

  2、验收测试是最后阶段,需求阶段的问题只能到验收测试才能发现

 

3、W模型

优点:

  1、W模型,又称双V模型,测试活动和开发活动同步进行

  2、软件测试的对象不止程序,还有文档

  3、尽早测试可以降低开发的成本

缺点:

  无法迭代(相对的,并非绝对)

 

4、X模型

  最早引入探索式测试的研发模型

  软件分为几个片区,然后集成在一起形成最终的软件

 

5、螺旋模型

  非线性化的研发模型

  引入了风险管理,进行评估

 

6、快速原型

  又称原型定义,非线性的研发模型,主要是使用于小公司,客户到了最后才知道软件的最终模样。先做成一个demo(模型或样本),给客户进行产品的预演。


 

7、迭代开发

  每次只设计和实现产品的一部分,通过逐步完成的方法叫做迭代开发。每次设计和实现的一个阶段叫做迭代。

优点:

  1、降低了需求变更的成本

  2、可以得到早期的用户反馈

  3、持续的集成和测试

 

8、敏捷开发

  敏捷开发以用户需求进化为核心,采用迭代,循序渐进的方法进行软件开发。

敏捷开发的核心价值观:

  1)个体交互重于过程和工具(个体交互主要指人与人之间的沟通)

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

  3)客户协作重于合同谈判 

  4)响应变化重于遵循计划

优点:

  敏捷开发确实是项目进入实质开发的阶段,用户可以很快看到一个基线架构版的产品,敏捷注重市场快速反应能力。

缺点:

  敏捷注重人员的沟通,忽略文档的重要性。若项目人员流动太大,又给维护带来不少难度,特别是项目中存在新手较多时,老员工比较累 。