软件开发模型分类总结

 

目录

1. 边做边改模型(Build-and-Fix-Model)

2. 瀑布模式(Waterfall-Model)

3. 螺旋模型(Spiral-Model)

4. 快速原型模型(Rapid-Prototype-Model)

5. 增量和迭代模型

5.1 增量模型(Incremental-Model)

5.2 迭代模型(Stagewise-Model)(迭代增量式开发/迭代进化式开发)

6. 喷泉模型(Fountain-Model)

7. 演化模型(Evolutionary-Model)

8. 敏捷开发模型(Agile-Development-Model)

9. 智能模型(四代技术4GL)

10. 混合模型(Hybrid-Model)


 

1. 边做边改模型(Build-and-Fix-Model)

    在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户和测试等等满意为止。

优点

这是一种类似作坊的开发方式,边做边改模型的优点毫无疑问就是前期出成效快。

缺点

对编写逻辑不需要太严谨的小程序来说还可以对付得过去,但这种方法对任何规模的开发来说都是不能令人满意的。

原因在于

  • 缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;
  • 忽略需求环节,给软件开发带来很大的风险;
  • 没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。

 

2. 瀑布模式(Waterfall-Model)

特点:

  • 严格按照需求 ->分析->设计->编码->测试的阶段进行
  • 阶段间具有顺序性和依赖性:
    • 前一阶段完成后,才能开始后一阶段
    • 前一阶段的输出文本为后一阶段的输入文本
  • 适合于一些大型稳定的项目
  • 推迟实现的观点
  • 质量保证:
    • 以质量为第一目标
  • 每个阶段必须交付出合格的文档
  • 对文档进行审核

优点:

  • 可以保证整个软件产品较高的质量
  • 保证缺陷能够提前的被发现和解决
  • 可以保证系统在整体上的充分把握,使系统具备良好 的扩展性和可维护性

缺点:缺乏灵活性,太过线性理想化,不适合现代软件开发

  • 前期就需要把需求做到最全。所以对于前期需求不明确,而又很难短时间明确清楚的项目则很难很好的利用瀑布模型。
  • 瀑布模型强调的保证软件的质量,往往忽略人力,时间,资源等成本因素。对于中小型的项目,需求设计和开发人员往往在项 目开始后就会全部投入到项目中,而不是分阶段投入,因此采用瀑布模型会导致项目人力资源过多的闲置的情况
  • 惧怕用户测试中的反馈,惧怕需求变更
  • 每次需求发生变更都要从头再来

    当一个新系统的开发存在多个完全不相关的独立需求的功能开发的时候,这个时候也可以选择将整个开发过程按独立的需求来分为多个小瀑布进行操作.这种方式的最大问题就是没有一个完全总体的设计,架构设计人员无法在洞悉了所有需求后从系统的可扩展性,复用等方面总体规划.

BTW:

    很多人往往会以进度约束而不选择瀑布模型,这往往是一个错误的观点.导致这种情况的一个关键因素往往是概念需求阶段人力不足.因此在概念需求阶段人力能 够得到充分保证的情况下,瀑布模型和迭代模型在开发周期上并不会存在太大的差别.反而是很多项目对于迭代或敏捷模型用不好,为了赶进度在前期需求不明确, 没有经过一个总体的架构设计情况下就开始编码,后期出现大量的返工而严重影响进度.

    在项目管理中有一种压缩进度的方法叫赶工,因此瀑布模型的另外改进处就在适当的重叠各个阶段过程,达到资源的有效利用.比如我们通过讨论,会议确定的实现方式就可以开始执导下一个阶段的工作而不一定完全等到相关的交付物文档化出来.

 

3. 螺旋模型(Spiral-Model)

    1988年,巴利·玻姆(Barry Boehm)正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。

螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:

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

(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;

(3)实施工程:实施软件开发和验证;

(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。

特点:

  • 需求->架构->设计->开发->测试
  • 螺旋模型最大的价值在于整个开发过程是迭代和风险驱动的.通过将瀑布模型的多个阶段转化到多个迭代过程中,以减少项目的风险.
  • 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险
  • 适合于前期需求不稳定,后期需求新增变更较多的项目,这是一种增量迭代开发的模型,每一次循环都是一次版本的升级。
  • 核心在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚.在定义最重要的功能时,去实现它,然后听取客户的意见,之后再进入到下一个阶段.如此不断轮回重复,直到得到您满意的最终产品

优点:

  • 设计上的灵活性,可以在项目的各个阶段进行变更.
  • 以小的分段来构建大型系统,使成本计算变得简单容易
  • 客户始终参与保证了项目不偏离正确方向以及项目的可控性
  • 客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互.
  • 客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品.

缺点:

    很难让用户确信这种演化方法的结果是可以控制的.建设周期长,而软件技术发展比较快,所以经常出现软件开

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值