目录
一、瀑布模型
概述:
最早提出的软件开发的过程模型;
开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
优点:
1、为项目提供了按阶段划分的检查点;
2、当前一阶段完成后,只需要去关注后续阶段。
缺点:
1、强调时间顺序的严格执行,前阶段不完成,后阶段不开始;
2、线性开发,将测试放在编码之后,增加了开发风险;
3、不适应用户需求的变化。
适应项目:
需求较为明确并且变更少的项目
二、螺旋模型
概述:
一种演化软件开发过程模型,它兼顾了快速原型的迭代特征和瀑布模型的系统化与严格监控;
引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会u停止,以减小损失。
螺旋模型沿着螺旋线进行若干次迭代,四个象限分别代表的活动:
1、制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
2、风险分析:分析评估所选方案,考虑如何识别和清楚风险;
3、实施工程:实施软件开发和验证;
4、客户评估:评价开发工作,提出修正建议,制定下一步计划。
优点:
1、设计上的灵活性,可以在项目的各个阶段进行变更。
2、以小的分段来构建大型系统,使成本计算变得简单容易。
3、客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
4、随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
5、客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
缺点:
1、很难让用户确信这种演化方法的结果是可以控制的。
2、建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
适应项目:
需求不太明确的项目
三、迭代模型
概述:
迭代包括产生产品发布(稳定,可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他元素,强调开发的深入;
在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。
优点:
1、降低了在一个增量上的开支风险;
2、降低了产品无法按照既定进度进入市场的风险;
3、加快了整个开发工作的进度;
4、迭代过程这种模式使适应需求的变化会更容易些。
缺点:
1、它不适用于较小的项目;
2、可能需要更多资源;
3、由于不完善的要求, 可能会一次又一次地更改设计;
4、需求变更可能会导致预算超支;
5、由于需求变更, 不能确认项目完成日期。
适应项目:
事先不能完整定义产品的所有需求,计划多期开发的项目
四、敏捷开发模型
概述:
敏捷宣言,也叫做敏捷软件开发宣言,正式宣布了对四种核心价值观和十二条原则,可以指导迭代的以人为中心的软件开发方法。
四种核心价值观:
1、个体和交互胜过过程和工具;
2、可以工作的软件胜过面面俱到的文档;
3、客户合作胜过合同谈判;
4、响应变化胜过遵循计划。
优点:
1、敏捷确实是项目进入实质开发迭代阶段,用户很快可以看到一个基线架构版的产品;
2、敏捷注重市场快速反应能力,也即具体应对能力,客户前期满意度高。
缺点:
1、敏捷注重人员的沟通,忽略文档的重要性,若项目人员流动大太,又给维护带来不少难度,特别项目存在新手比较多时,老员工比较累;
2、需要项目中存在经验较强的人,要不大项目中容易遇到瓶颈问题。
适应项目:
1.项目团队的人数不多;
2.项目经常发生变更;
3.高风险的项目实施;
4.开发人员可以参与决策。
五、增量模型
概述:
把软件分割成独立的模块,分批次的完成和交付;
第一个增量是核心产品;
一般和迭代模型一起运用。
优点:
开始时不用投入大量人力资源,可以事先推出核心产品以稳定用户,可以有计划的管理技术风险。
缺点:
打破原有的软件结构和框架,可能会带来一定的风险。
适应项目:
需求经常发生改变的软件开发过程项目。
六、快速原型模型
概述:
快速建立可运行的程序,它完成的功能往往是最终产品功能的一个子集;
原型:一个模型,可以模拟操作,简单运行。
典型应用和工具:Axure。制作原型。
优点:
1、开发的软件产品通常满足用户的需求;
2、软件产品开发基本是线性过程。
缺点:
1、准确原型设计困难;
2、原型理解可能不同;
3、不利于开发人员创新。
适应项目:
对所开发的领域比较熟悉而且有快速的原型开发工具;