一、说明
- 1.软件类似于其他复杂的系统,会随着时间的推移而演化。
- 2.在开发过程中,常常会面临以下情形:商业和产品需求经常发生变化,直接导致最终产品难以实现;严格的交付时间使得开发团队不可能圆满地完成软件产品,但是必须交付功能有限的版本以应对竞争或商业压力;很好地理解了核心产品和系统需求,但是产品或系统扩展的细节问题却没有定义。
- 3.软件开发人员需要一种专门应对不断演变的软件产品的过程模型。
- 4.演化模型是迭代的过程模型,使得软件开发人员能够逐步开发出更完整的软件版本
- 5.演化模型特别适用于对软件需求缺乏准确认识的情况
- 6.典型的演化模型有原型模型和螺旋模型
二、原型模型
2.1 说明
- 1.比较适合于用户需求不清、需求经常变化的情况。
- 2.原型是预期系统的一个可执行版本,反映了系统性质的一个选定的子集。
- 3.一个原型不必满足目标软件的所有约束,目的是能快速、低成本构建原型。
- 4.原型模式开始于沟通,目的是定义软件的总体目标,标识需求,然后快速制订原型开发的计划,确定原型的目标和范围,采用快速射击的方式对其进行建模,并构建原型。
- 5.被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下一轮中对原型进行改进。
- 6.在前一个原型需要改进,或者需要扩展其范围的时候,进入下一轮原型的迭代开发。
- 7.根据使用原型的目的不同,原型可以分为探索型原型、实验型原型和演化型原型3种。
- 8.探索型原型的目的是要弄清目标的要求,确定所希望的特性,并探讨多种方案的可行性。
- 9.实验型原型的目的是验证方案或算法的合理性,是在大规模开发和实现前,用于考查方案是否合适、规格说明是否可靠等。
- 10.演化型原型的目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目标系统。
2.2 优点
- 1.用户需求不清、变化较大的时候,帮助用户搞清、验证需求。
- 2.探索多种方案,搞清目标。
- 3.开发一个用户可见的系统界面,支持用户界面设计。
2.3 缺点
- 1.不适合大规模软件开发,例如火箭、卫星发射系统。
2.4 例题
2.4.1 例题1
1.以下关于原型化开发方法的叙述中,不正确的是(C)。
A.原型化方法适应于需求不明确的软件开发
B.在开发过程中,可以废弃不用早期构造的软件原型
C.原型化方法可以直接开发出最终产品
D.原型化方法利于确认各项系统服务的可用性
1.比较适合于用户需求不清、需求经常变化的情况。
2.通过对原型的多次改进,逐步将原型演化成最终的目标系统。
3.因此选C项。
三、螺旋模型
3.1 说明
- 1.将瀑布模型和演化模型结合起来,加入两种模型均忽略的风险分析,弥补两种模型的不足
- 2.螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合
- 3.每个螺旋周期分为制订计划、风险分析、实施工程和用户评估
- 4.制订计划:确定软件的目标,选定实施方案,明确项目开发的限制条件
- 5.风险分析:分析所选的方案,识别风险,消除风险
- 6.实施工程:实施软件开发,验证阶段性产品
- 7.用户评估:评估开发工作,提出修正建议,建立下一个周期的开发计划
3.2 优点
- 1.强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出相应的反应
- 2.特别适用于庞大、复杂并且具有高风险的系统
- 3.螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高软件的适应能力,并且为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发的风险。
3.3 缺点
- 1.在使用螺旋模型进行软件开发时,需要开发人员具有相当丰富的风险评估经验和专门知识。
- 2.过多的迭代次数会增加开发成本,延迟提交时间