螺旋模型

螺旋模型(Boehm,1988)。许多误解源于此广泛循环图中的过分简化(此图中有一些错误)。

螺旋模型是风险驱动的软件开发过程模型。基于给定项目的独特风险模式,螺旋模型指导团队采用一个或多个过程模型的元素,例如增量瀑布进化原型

历史

该模型首先是由Barry Boehm在其1986年的论文《软件开发和增强的螺旋模型》中描述的。 1988年,Boehm发表了与更广泛观众的类似论文。这些论文介绍了一个图表,该图在许多随后的出版物中都在讨论螺旋模型。

这些早期论文使用“过程模型”一词来指代螺旋模型以及渐进,瀑布,原型制作和其他方法。但是,螺旋模型的特征风险驱动的其他过程模型的特征的混合已经存在:

[R]螺旋模型步骤的ISK驱动子集使模型可以容纳任何适当的面向规范,面向原型的,面向模拟的,面向模拟的,自动转换或其他软件开发方法的混合物。

在后来的出版物中,Boehm将螺旋模型描述为“过程模型生成器”,其中基于项目风险的选择为项目生成了适当的过程模型。因此,增量,瀑布,原型和其他过程模型是适合某些项目风险模式的螺旋模型的特殊情况。

Boehm还确定了原始螺旋模型图中的过度简化引起的许多误解。他说,这些误解中最危险的是:

  • 螺旋只是一系列瀑布的序列。
  • 所有项目活动都遵循单个螺旋序列;
  • 必须按照所示的顺序执行图中的每个活动。

尽管这些误解可能符合一些项目的风险模式,但对于大多数项目而言,它们并不是正确的。

在国家研究委员会报告中,该模型扩展到包括与人类用户有关的风险。

为了更好地将它们与“危险的螺旋外观相似”区分开,Boehm列出了螺旋模型所有真实应用共有的六个特征。

螺旋模型的六个不变式

螺旋模型的真实应用是由始终显示六个特征的周期驱动的。 Boehm以“危险的螺旋外观”为例,违反了不变性。

同时定义工件

依次定义项目的关键工件通常会增加开发符合利益相关者“获胜条件”(目标和约束)的系统的可能性。

这种不变的不包括“危险的螺旋外观”过程,这些过程使用一系列增量瀑布在不适用瀑布模型的基本假设的设置中。 BOEHM列出了这些假设如下:

  1. 这些要求在实施之前已知。
  2. 这些要求没有尚未解决的高风险含义,例如由于成本,时间表,绩效,安全性,用户界面,组织影响等而引起的风险。
  3. 在开发或进化过程中,需求的性质不会发生太大变化。
  4. 这些要求与所有关键系统利益相关者的期望兼容,包括用户,客户,开发人员,维护人员和投资者。
  5. 可以充分理解实施要求的正确架构。
  6. 有足够的日历时间可以顺序进行。

在这些假设确实适用的情况下,不指定要求并顺序进行是项目风险。因此,瀑布模型成为螺旋模型的风险驱动特殊情况。

    在每个周期中执行四个基本活动

    这种不变标识了螺旋模型每个循环中必须发生的四个活动:

    1. 考虑所有关键关键利益相关者的胜利条件。
    2. 确定并评估满足胜利条件的替代方法。
    3. 识别并解决源于所选方法的风险。
    4. 获得所有关键关键利益相关者的批准,并承诺追求下一个周期。

    通过追求主要利益相关者无法接受的选择或太冒险的选择,省略或短时间省略任何这些活动的项目循环可能会浪费浪费工作。

    一些“危险的螺旋外观”过程违反了这种不变的,从某些顺序相或周期中排除了关键利益相关者。例如,可能不会邀请系统维护者和管理员参与系统的定义和开发。结果,该系统有未能满足其胜利条件的风险。

    风险决定努力水平

    对于任何项目活动(例如,需求分析,设计,原型制作,测试),项目团队必须确定足够的努力就足够了。在真实的螺旋过程周期中,这些决定是通过最大程度地降低总体风险来做出的。

    例如,投入额外的时间测试软件产品通常会降低由于市场拒绝劣质产品而引起的风险。但是,由于竞争对手的早期市场进入,额外的测试时间可能会增加风险。从螺旋模型的角度来看,应进行测试,直到总风险最小化,而不再进行。

    违反这种不变的“危险螺旋外观相似”包括忽略由于可伸缩性问题而忽略风险的进化过程,以及在必须重新设计或更换的技术体系结构上大量投资以适应产品未来增量的增量过程。

    风险决定细节的程度

    对于任何项目工件(例如,需求规范,设计文档,测试计划),项目团队必须确定多少细节就足够了。在真实的螺旋过程周期中,这些决定是通过最大程度地降低总体风险来做出的。

    以需求规范为例,该项目应精确地指定那些通过精确规范降低风险的功能(例如,硬件和软件之间的接口,Prime和分包商之间的接口)。相反,该项目不应精确地指定那些功能,而精确规范会增加风险(例如,图形屏幕布局,现成组件的行为)。

    使用锚点里程碑

    Boehm对螺旋模型的原始描述不包括任何过程里程碑。在后来的改进中,他介绍了三个锚点里程碑,这些里程碑是进度指标和承诺。这些锚点里程碑可以以关键问题为特征。

    1. 生命周期目标。是否有足够的定义技术和管理方法来满足每个人的胜利条件?如果利益相关者同意答案是“是”,那么该项目就清除了这个LCO里程碑。否则,可以放弃该项目,或者利益相关者可以致力于另一个周期,以尝试“是”。
    2. 生命周期结构。是否有足够的定义来满足每个人的胜利条件的首选方法,并且都消除或减轻了重大风险?如果利益相关者同意答案是“是”,那么该项目已经清除了这个LCA里程碑。否则,可以放弃该项目,或者利益相关者可以致力于另一个周期,以尝试“是”。
    3. 最初的操作能力。是否有足够的准备软件,网站,用户,操作员和维护人员来通过启动系统来满足每个人的胜利条件?如果利益相关者同意答案是“是”,那么该项目已清除了IOC里程碑并启动。否则,可以放弃该项目,或者利益相关者可以致力于另一个周期,以尝试“是”。

    违反这种不变的“危险的螺旋外观相似”包括进化和增量过程,这些过程为实施解决方案提供了较差的架构,为实施解决方案提供了重要的资源。

    三个锚点里程碑很容易适合理性统一过程(RUP),LCO标志着RUP的成立和详细阶段之间的边界,LCA标志着阐述和建筑阶段之间的边界,以及IOC标记了构建和过渡阶段之间的边界。

    专注于系统及其生命周期

    这种不变的凸显了整个系统的重要性以及跨越整个生命周期的长期关注。它不包括“危险的螺旋外观相似”,这些外观过多地关注软件代码的初始开发。这些过程可能是由于以下公开的方法,即面向对象的或结构化的软件分析和设计,同时忽略了项目流程需求的其他方面。