开发模型详细介绍
瀑布模型
快速原型模型
演化模型
喷泉模型
螺旋模型
增量模型
迭代模型
智能模型
模型一 瀑布模型
该模型给出了固定的顺序,将生存期活动从上一个阶段向下一个阶段逐级过渡,如同流水下泄,最终得到所开发的软件产品,投入使用。
优点:
1、阶段具有顺序性和依赖性。
2、质量保证,每个阶段交付合格文档,并对文档审核。
3、降低维护成本。
缺点:
1、各个阶段的划分完全固定,缺乏灵活性,阶段之间产生大量的文档,极大增加了工作量。
2、与用户见面晚,增加了开发的风险。
3、早期的错误可能要等到开发后期的测试阶段才能发现,从而导致严重的后果。
使用范围:
1、用户的需求非常清楚全面,且在开发过程中没有或很少变化。
2、开发人员对软件的应用领域很熟悉。
3、用户的使用环境非常稳定。
4、开发工作对用户参与的要求很低。
模型二 快速还原模型
该模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么,第二步在第一步的基础上开发客户满意的软件产品。
优点:
1、确定需求环节上优于瀑布模型。
2、通过开发原型和演示原型对开发者和使用者了解系统都有积极作用。
3、有的软件原型可以成为最终产品的一部分。
缺点:
1、所选用的开发技术和工具不一定符合主流的发展。
2、快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。
使用范围:
1、对所开发的领域比较熟悉而且有快速的原型开发工具。
2、项目招投标时,可以以原型模型作为软件的开发模型。
3、进行产品移植或升级时,或对已有产品原型进行客户化工作时可以使用此模型。
模型三 演化模型
该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->
优点:
1、任何功能一经开发就能进入测试以便验证是否符合产品需求。
2、帮助导引出高质量的产品要求。如果没有可能在一开始就弄清楚所有的产品需求,它们可以分批取得。而对于已提出的产品需求,则可根据对现阶段原型的试用而作出修改。
3、风险管理可以在早期就获得项目进程数据,可据此对后续的开发循环作出比较切实的估算。
4、有助于早期建立产品开发的配置管理。
5、开发中的经验教训能反馈应用于本产品的下一个循环过程,大大提高质量与效率。
缺点:
1、若所有的产品需求在一开始并不完全弄清楚的话,会给总体设计带来困难及削弱产品设计的完整性,并因而影响产品性能的优化及产品的可维护性。
2、若缺乏严格的过程管理,这个生命周期模型很可能退化为一种原始的无计划的"试-错-改"模式。
3、如果不加控制地让用户接触开发中尚未测试稳定的功能,可能对开发人员及用户都产生负面的影响。
使用范围:
1、需求不明确的情况
2、小型或中小型的系统开发,且周期短的情况
模型四 喷泉模型
该模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。
优点:
1、该模型各个阶段没有明显的界限,开发人员可以同步进行开发,提高效率,节省时间。
2、适应与面向对象的软件开发过程。
缺点:
1、需要大量的开发人员,不利于项目管理。
2、要求严格管理文档,使得审核的难度加大,要面对可能随时加入的各种信息,需求与资料的情况。
使用范围:面向对象的软件开发情况。
模型五 螺旋模型
该模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。
螺旋模型沿着螺线旋转,在四个象限分别表达四个方面:
1、制定计划:确定软件目标,续订实施方案,弄清项目开发的限制条件
2、风险分析:分析所选方案,考虑如何识别和消除风险
3、实事工程:实施软件开发
4、客户评估:评价开发工作,提出修正建议
优点:
1、设计灵活性,可在项目的各个阶段进行变更。
2、以小的分段来构建大型系统,使成本计算变得简单容易。
3、客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
4、客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
缺点:
1、很难让用户确信这种演化方法的结果是可以控制的。
2、建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
使用范围:更适合大型的昂贵的系统级的软件应用。
模型六 增量模型
该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。
优点:
1、人员分配灵活,短时间内可向用户提供可完成部分工作的产品。
2、逐步增加产品功能可以使用户有时间了解和适应新产品。
3、开放结构的软件拥有的维护性明显好于封闭结构的软件,有计划的管理技术风险。
缺点:
1、由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。
2、容易退化为边做边改模型,从而使软件过程的控制失去整体性
3、如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析
使用范围:
1、进行已有产品升级或新版本开发。
2、对完成期限严格要求的产品,可以使用增量模型
3、对所开发的领域比较熟悉而且已有原型系统,可以使用此模型。
模型七 迭代模型
该模型最早的迭代过程可能被描述为"分段模型",是RUP推荐的周期模型。
与增量模型的区别:
1、迭代的并行是工作流的并行;增量模型一般是指具有底层框架和平台的项目,在该稳定的框架和平台上,来开发和增加具体的业务功能,每个增量之间相对独立,各个增量可以并行开发,增量内部是瀑布模型。
2、迭代适合需求不明确、架构风险大的项目;增量适合需求比较明确,架构比较稳定,而且增量功能的实现基本不影响架构。
3、迭代计划是基于角色的,增量计划是基于任务的。
与增量模型的相同:每个迭代和增量结束后都有产品发布。
优点:
1、降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
2、降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆忙。
3、加快了整个开发工作的进度。
4、由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
缺点:
1、对产品人员的节奏把控能力(定每周目标,需求优先级剖析,以及临时需求的处理)有较高要求。
2、可能会只注重产品功能层面的快速迭代,而无视系统架构层面的快速迭代。
模型八 智能模型
该模型把瀑布模型和专家系统结合在一起,利用专家系统来帮助软件开发人员的工作。
优点:
1、可以勘探现有的数据,从中发现新的事实方法指导用户以专家的水平解决复杂的问题。
2、以瀑布模型为基本框架,在不同开发阶段引入了原型实现方法和面向对象技术以克服瀑布模型的缺点。
缺点:
1、软件需求在初始阶段很难定义完整,需要通过多次迭代来精化软件需求。
2、需要软件开发人员与领域专家密切合作。