软件开发过程模型比较

惯用过程模型:

一、瀑布模型

V模型

特点:

1、  简单、直观、易用

2、  开发进程比较严格,一个阶段接着一个阶段顺序进行

3、  模型中没有反馈,上一阶段任务完成,进入下一个阶段以后,下一个阶段不会对上一个阶段的工作作出反馈

4、  模型执行过程中需要严格控制

5、  允许基线和配置早期接受控制

6、  一个新的项目不适合瀑布模型,除非处于项目的后期

7、  用户直到项目结束才能看到产品的质量;用户不是渐渐地熟悉系统

8、  不允许变更或者限制变更早期的需求

9、  瀑布模型整体上比较理想化

优点有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。

缺点:1)开发过程一般不能逆转,否则代价太大;(2)实际的项目开发很难严格按该模型进行;(3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。(4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。

适用范围(1)用户的需求非常清楚全面,且在开发过程中没有或很少变化;(2)开发人员对软件的应用领域很熟悉;(3)用户的使用环境非常稳定;(4)开发工作对用户参与的要求很低。

二、原型模型

原型模型的特点:

1、  需求定义时,需要快速构建一个原型系统

2、  用户根据快速构建的原型系统的优缺点,给开发人员提出反馈意见

3、  根据反馈意见修改软件需求规格说明,以便系统可以更正确地反应用户的需求

4、  可以减少项目的各种假设以及风险等。

原型模型的优点:(1)可以得到比较良好的需求定义,容易适应需求的变化;(2)有利于开发与培训的同步;(3)开发费用低、开发周期短且对用户更友好。

原型模型的缺点:(1)客户与开发者对原型理解不同;(2) 准确的原型设计比较困难;(3) 不利于开发人员的创新。

原型模型的使用范围:(1)对所开发的领域比较熟悉而且有快速的原型开发工具;(2)项目招投标时,可以以原型模型作为软件的开发模型;(3)进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。

三、增量模型

增量模型的特点

1、  可以避免一次性投资太多带来的风险,将主要的功能或者风险大的功能首先实现,然后逐步完善,保证投入的有效性。

2、  可以更快地开发出可以操作的系统

3、  可以减少开发过程中用户需求的变更

4、  一些增量可能需要重新开发(如果早期开发的需求不稳定或者不完整)

增量模型的优点:(1)采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;(2)如果核心产品很受欢迎,则可增加人力实现下一个增量;(3)可先发布部分功能给客户,对客户起到镇静剂的作用。

增量模型的缺点:(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;(2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

增量模型的使用范围:(1)项目开始时明确了大部分需求,但是需求可能会发生变化的项目;(2)对于市场和用户把握不是很准,需要逐步了解项目的情况;(3)对于有庞大和复杂功能的系统进行功能改进时需要一步一步实施项目的。

四、螺旋模型

螺旋模型是针对风险比较大的项目而设计的一种模型。设计这个模型的主要目的是克服瀑布模型的缺点。它通过一系列瀑布模型的不断循环来逐步规避风险。

每个循环步骤包括如下四个阶段:

制定计划──确定软件目标,选定实施方案,弄清项目开发的限制条件;

风险分析──分析所选方案,考虑如何识别和消除风险;

实施工程──实施软件开发、编码、测试等;

客户评估──评价开发工作,提出修正建议。

螺旋模型的特点:

1、  表现为瀑布模型的多次迭代

2、  可以将每个阶段进行更细的划分

3、  可以进行灵活设计

4、  通过风险管理进行驱动

5、  用户可以更早看到产品

6、  用户可以不断对产品进行评估

7、  用户可以与开发人员进行紧密的结合

8、  项目的投资不用一次性投入

9、  可以给开发人员更多的反馈信息

螺旋模型的优点:(1)设计上的灵活性,可以在项目的各个阶段进行变更;(2)以小的分段来构建大型系统,使成本计算变得简单容易;(3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;(4) 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。

螺旋模型的缺点:(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;(2)过多的迭代次数会增加开发成本,延迟提交时间。

螺旋模型的使用范围

1、  螺旋模型只适合于大规模的软件项目。

2、  采用了新技术的项目

3、  风险是主要的制约因素的项目

4、  不确定因素和风险限制了项目进度的项目

5、  用户对自己的需求不是很明确的项目

6、  需要对一些基本的概念进行验证的项目

7、  可能发生一些重大变更的项目

原文地址:https://www.cnblogs.com/kelite/p/3033135.html