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)响应变化重于遵循计划
优点:
敏捷开发确实是项目进入实质开发的阶段,用户可以很快看到一个基线架构版的产品,敏捷注重市场快速反应能力。
缺点:
敏捷注重人员的沟通,忽略文档的重要性。若项目人员流动太大,又给维护带来不少难度,特别是项目中存在新手较多时,老员工比较累 。
