一 .瀑布模型:
优点:
(1)流水线式开发,开发的各个阶段比较清晰,按阶段划分检查点比较严谨。
(2)当前一阶段完成后,只需要关注后续阶段。
缺点:
(1)依赖于早期的需求调查,不适应需求的变化。
(2)由于开发模型是线性的风险往往延至后期才显露,失去及早纠正的机会。
(3)各个软件生命周期衔接花费时间较长,团队人员交流成本大。
(4)前面未发现的错误会传递并扩散到后面的阶段,可能导致项目失败。
适用场景:
瀑布模型适合简单明确的产品, 若规模小、易预测、实现周期短的项目。
二.原型模型
快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,迅速建立原型,随之迅速修改原型,以反映客户的需求。
优点
(1)生命周期短;
(2)整合边做边改和瀑布模型优点;
(3)减少软件需求不明确带来的开发风险;
缺点
(1)可能导致系统设计差,效率低,难维护。
适用场景:
原型模型适合小型,交互型的系统,大型系统的某些部分。
三.演化模型
演化模型:在获取一组基本的需求后,通过快速分析构造出该软件的一个初始可运行版本,这个初始的软件通常称为原型,然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可得到令用户满意的软件产品。
四.螺旋模型
螺旋模型:将瀑布模型和演化模型相结合就成了螺旋模型。这种模型综合了瀑布模型和演化模型的优点。螺旋模型包括4个方面的活动:制订计划、风险分析、实施工程、客户评估。
限制条件
(1)螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,螺旋模型适应于内部的大规模软件开发
(2)如果执行风险分析大于项目利润,那么风险分析毫无意义,所以螺旋 模型只适用于大规模软件项目
(3)软件开发人员应该擅长寻找可能的风险,准确的分析风险,否则会带 来更大的风险。
适用场景:
螺旋模型适合大规模,风险大的软件项目 。
五.喷泉模型
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发过程,具有迭代和无间隙特性。迭代意味着模型中的开发活动常常需要重复多次,在迭代中不断完善软件系统。无间隙是指在开发活动之间不存在明显的边界,允许开发活动交叉、迭代地进行。
优点
(1)可以提高软件项目开发效率,节省开发时间
缺点
(1)由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量 的开发人员,不利于项目的管理;
(2)这个模型要求严格管理文档,使得审核难度加大,尤其是面对随时加 入各种需求。
适用场景:
喷泉模型适用于面向对象的软件开发过程。
六.增量模型
增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。
优点
(1)人员分配灵活,一开始不需要投入大量的人力;
(2)先推出核心产品,在后续继续增加相应功能;
(3)最初产品(实现核心需求的产品)交付快,成本低;
(4)适用于需求经常改变的软件开发过程。
缺点
(1)由于各个软件是逐渐并入己有的软件体系结构中,所以加入构件必须 不破坏已构造好的系统部分,这需要软件具备开放的体系结构;
(2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使 其适应这种变化的能力大大优于瀑布模型和快速原型模型,但是容易退化为边做 边改模型,从而是软件过程的控制失去整体性。
适用场景
增量模型适用于需求经常改变的软件开发过程。
七.V模型
V模型是瀑布模型的一种变体
优点
(1)V模型的开发方式是线性开发 ,也就是必须是上一个阶段完成以后且审核通过才能进入到下一个阶段 。
(2)因为在V模型中更注重的设计和测试 ,所以开发出来的产品质量是有保证的
缺点
(1)整体开发周期长 ,一个项目少则三个月 ,多则就会按年去计算 。
(2)在每个阶段中,都会产生大量的文档 ,这些文档不仅多而且都比较重 ,有很多文档可能光写一个文档就的好几天 ,比如写一个测试计划十几页甚至更多 。
(3)从整体来说 ,此种模式下开发出来的软件需求的适应性也是很差的,由于其开发周期长 ,后期变更的成本就就会很高 。
适用场景
V模型一般适用于大型企业开发的需求不经常发生变化的大型软件 ,比如银行外包公司 ,开发银行相关的软件 ,开发一个版本可能就是一年半载 ,他们对流程要求很严 ,同时对质量也要求很高 。
八.基于构件的开发模型
基于构件的开发模型:是指利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品软件构件。基于构件的开发模型本质上是演化模型,需要以迭代方式构件软件,不同之处在于采用预先打包的软件构件开发应用系统。