螺旋模型

软件开发几乎总要冒一定风险,例如,产品交付给用户之后用户可能不满意,到了预订的交付日期软件可能还未开发出来,实际的开发成本可能超过预算,产品完成前一些关键的开发人员可能“跳槽”了,产品投入市场之前竞争对手发布了一个功能相近、价格更低的软件等。软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。软件风险可能在不同程度上损害软件开发过程和软件产品质量。因此,在软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。

构件原型是一种能使某些类型风险降至最低的方法。为了降低交付给用户的产品不能满足用户需要的风险,一种行之有效的方法是在需求分析阶段快速构建一个原型。在后续的阶段中也可以通过构造适当的原型来降低某些技术风险。当然,原型并不能“包治百病”,对于某些类型的风险(例如,聘请不到需要的专业人员或关键的技术人员在项目完成前“跳槽”),原型方法是无能为力的。

**螺旋模型的基本思想是:**使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型,如下图所示:

完整的螺旋模型如下图:

图中带箭头的点划线的长度代表当前累计的开发费用,螺旋线的角度值代表开发进度。螺旋线每个周期对应于一个开发阶段。每个阶段开始时(左上象限)的任务是,确定该阶段的目标、为完成这些目标选择方案及设定这些方案的约束条件。接下来的任务是,从风险角度分析上一步的工作结果,努力排除各种潜在的风险,通常用建造原型的方法来排除风险。如果风险不能排除,则停止开发工作或大幅度地削减项目规模。如果成功地排除了所有风险,则启动下一个开发步骤(右下象限),在这个步骤的工作过程相当于纯粹的瀑布模型。最后是评价该阶段的工作成果并计划下一个阶段的工作。

**螺旋模型有许多优点:**对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;更重要的是,在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。

螺旋模型主要适用于内部开发的大规模软件项目。 如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。事实上,项目越大,风险也越大,因此,进行风险分析的必要性也越大。此外,只有内部开发的项目,才能在风险过大时方便地中止项目。

螺旋模型的主要优势在于: 它是风险驱动的,但是,这也可能是它的一个弱点。除非软件开发人员具有丰富的风险评估经验和这方面专门的知识,否则将出现真正的风险;当项目实际正在走向灾难时,开发人员可能还认为一切正常。

软件工程--螺旋模型详解相关推荐

  1. 软件工程--增量模型详解

    增量模型 增量模型也成为渐增模型,如下图所示. 使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计.编码.集成和测试.每个构件由多个相互作用的模块构成,并且能够完成特定的功能.使用增量模型时 ...

  2. OSI七层模型详解——物理层

    在阅读本篇文章之前建议您了解信道及工作栈的基本原理,详情可以观看OSI七层模型详解--信道与协议栈 OSI模型概述 OSI全称为"Open System Interconnection&qu ...

  3. 使用pickle保存机器学习模型详解及实战(pickle、joblib)

    使用pickle保存机器学习模型详解及实战 pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...

  4. Transformer 模型详解

    Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于 Transformer.Transformer 模型使用了 Self- ...

  5. TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化。曾在微软雅虎工作,

    TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344  作者简介:汪剑,现在在出门问问负责推荐与个性化.曾在微软雅虎工作,从事 ...

  6. TensorFlow Wide And Deep 模型详解与应用

    Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中 [1].wide and dee ...

  7. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  8. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

  9. 数学建模——支持向量机模型详解Python代码

    数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...

  10. 数学建模——一维、二维插值模型详解Python代码

    数学建模--一维.二维插值模型详解Python代码 一.一维插值 # -*-coding:utf-8 -*- import numpy as np from scipy import interpol ...

最新文章

  1. 2020 java swing jtable 合并_java学生管理系统(界面版)
  2. 装了VS2005再装IIS的小问题
  3. domains where phd is best in business school
  4. spring 循环依赖注入
  5. ipfs如何查找一个文件的_如何用 1 分钟遍历一个 100TB 的文件?
  6. 简约几何艺术海报PSD分层模板,即使简单也足以控制观众的注意力。
  7. 最快学习之Vue Route
  8. 高品质低成本 佳能发布4款加墨式打印新品
  9. Matlab APP designer 里的grid on 和hold on
  10. android audio 音量设置分析
  11. CentOS 6.5 x64安装svn
  12. java 栈泛型_使用泛型实现栈结构
  13. 开启win7笔记本自带无线功能
  14. 【论文写作】使用overleaf撰写你的会议论文
  15. word压缩图片怎么弄_教大家WORD插入图片如何批量压缩图片
  16. html多页面之间如何通信,html5中sharedWorker实现多页面通信代码示例
  17. 网上下单的手机流量卡,京东快递配送开卡!有猫腻!要注意!
  18. Android Studio3.5及使用AndroidX的一些坑
  19. shell脚本中使用sudo的前置条件
  20. img标签图片的刷新,删除

热门文章

  1. 接口解读:你的姓名+身份证号撑起了超11亿元市场规模,你造吗?
  2. Win7主题文件themepack不能安装,低级错误!
  3. 仿链家地图找房_iOS地图找房、周边(仿链家、安居客等地图找房)-高德地图-OC...
  4. Android 系统汉字转拼音 HanziToPinyin
  5. 魔兽服务器总是正在连接,魔兽世界怀旧服卡蓝条 服务器无法连接 排队太久解决办法汇总...
  6. 四个球队,单循环比赛,平局每队各得一分,胜利得3分,输不得分,最后各队得分是连续的四个自然数,求第二名的得分...
  7. 频谱仪的更改ip_频谱仪器如何使用?操作界面如何正确使用
  8. APUE 第四章总结
  9. 用 ABAP 新建本地 Excel 文件并写入数据试读版
  10. 光盘DOS启动盘制作