前言
这是基于我所学习的软件工程课程总结的第四篇文章。
在软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。构建原型是一种能使某些类型的风险降至最低的方法。为了降低交付给用户的产品不能满足用户需要的风险,一种行之有效的方法是在需求分析阶段快速地构建一个原型。在后续的阶段中也可以通过构造适当的原型来降低某些技术风险。当然,原型并不能"包治百病",对于某些类型的风险(例如,聘请不到需要的专业人员或关键的技术人员在项目完成前"跳槽"),原型方法是无能为力的。
螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。(摘自 《软件工程导论》第六版 张海藩 牟永敏 著,有删改)
正文
1.螺旋模型 (spiral model)
·软件开发普遍存在风险。
交付的产品用户不满意.
产品不能按时交付.
开发成本超过预算.
产品开发期间关键开发人员离职.
产品投入市场前竞争对手发布功能相近价格更低产品.
·把开发活动和风险管理结合起来控制风险。
·开发过程分成若干次迭代,每次迭代代表开发的一个阶段,对应模型中一条环线。
每次迭代分成四个方面的活动,对应笛卡尔坐标的四个象限:
确定本阶段目标,选定实施方案,弄清项目开发的限制条件;
评估所选方案,通过构造原型和风险分析识别和消除风险;
实施软件开发和验证;
评价本阶段的工作成果,提出修正建议,并计划下一阶段工作。
·模型结合了瀑布模型和原型模型的特点。
·在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质的区别。
·软件模型的主要优势在于,他是风险驱动的,但这也可能是他的一个缺点(开发人员最好有相当丰富的风险评估经验和专门知识)。
螺旋模型
2.螺旋模型的优点
- 螺旋模型强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力,支持用户需求的动态变化;
- 原型可看作可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便;
- 螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。
- 减少了过多测试或测试不足所带来的风险。
- 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。
3.螺旋模型的缺点
- 如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟交付时间
- 使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高,否则会带来更大风险,可能项目实际走向灾难时,开发人员还以为一切正常。
4.螺旋模型的适用场合
- 适用于需求不明确或者需求可能发生变化的大型复杂的软件系统。
- 支持面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。
- 适用于大规模内部开发项目,分析风险和排除风险
5.小测
包含风险分析的软件工程模型是(D)
A. 喷泉模型 B. 瀑布模型 C. 增量模型 D. 螺旋模型