各种软件开发方法的优缺点

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

几种常见软件模型的原理及优缺点

(一)原型法

基本思想

开发人员对用户提出的问题进行总结,就系统的主要需求取得一致意见后,开发一个原型(原型是由开

发人员与用户合作,共同确定系统的基本要求和主要功能,并在较短时间内开发的一个实验性的、简单

易用的小型系统。原型应该是可以运行的,可以修改的。)并运行之,然后反复对原型进行修改,使之

逐步完善,直到用户对系统完全满意为止。

优点

(1)需求表示清楚,用户满意度较高

(2)降低开始风险和开发成本

缺点

(1)原型法不适用于开发大型的信息系统

(2)系统难于维护

(3)如果用户合作不好,盲目纠错,会拖延开发进程

适用范围

(1)用户需求不清,管理及业务不稳定,需求经常变化

(2)规模小,不太复杂

(3)开发信息系统的最终用户界面

(二)瀑布模型

原理:在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃。

瀑布模型有以下优点

1)为项目提供了按阶段划分的检查点。

2)当前一阶段完成后,您只需要去关注后续阶段。

3)可在迭代模型中应用瀑布模型。

增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。

2、瀑布模型有以下缺点

1)在项目各个阶段之间极少有反馈。

2)只有在项目生命周期的后期才能看到结果。

3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

(三)增量模型

增量模型融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。

增量模型与原型实现模型和其他演化方法一样,本质上是迭代的,但与原型实现不一样的是其强调每一个增量均发布一个可操作产品。

优点

采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。这样即可先发布部分功能给客户,对客户起到镇静剂的作用。此外,增量能够有计划地管理技术风险。

缺点

1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。

2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

3)如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程。

(四)螺旋模型

原理:螺旋模型基本做法是在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,因此特别适用于庞大、复杂并具有高风险的系统。

1、螺旋模型的优势包括:

1)设计上的灵活性,可以在项目的各个阶段进行变更。

2)以小的分段来构建大型系统,使成本计算变得简单容易。

3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。

4)随着项目推进,客户始终掌握项目的最新信息, 从而他或她能够和管理层有效地交互。

5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。

缺点。

1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。

2)过多的迭代次数会增加开发成本,延迟提交时间。

-------------面向方面的软件开发方法

原理:面向方面的编程能够独立于任何继承层次结构而应用改变类或对象行为的方面。

优缺点:它确实运用了截获来应用通知以及组合行为。有一些.NET 代码示例通过ContextBoundObject 以一种AOP 翻版风格说明截获。可是用ContextBoundObject 来说明截获并不合适,因为使用这种方法的先决条件是所有需要进行截获的类都必须从ContextBoundObject 继承。像ContextBoundObject 这样带有先决条件的AOP 方法会带来需求产生的负面影响,所以在AOP 中被视为重方法,应该避免使用。重方法在系统中遗留的大量“足迹”会潜在地影响每个类,阻碍将来更改或修改系统的功能。

---------------面向服务的软件开发方法

原理:SOA的概念来自于web服务,由于web服务概念的出现及相关应用系统的实施,SOA 架构成为新的web服务模式。从本质上讲,SOA的概念是很简单的。与传统的端到端的企业应用系统不同,SOA提供了一系列的“服务”模块,这些服务模块具有定义良好的输入/输出接口以及功能完善的处理模块。通过使用这些服务,传统的端到端的系统可以方便的利用这些服务集成在一起。

优点

使用SOA架构最为便利的一点所构建的各种服务模块不再仅仅为某一个系统服务,而是可为整个企业内部大多数的系统所用。

相关文档
最新文档