软件过程模型
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件过程模型是软件开发全部过程、活动和任务的结构框架。
︴瀑布模型 (Waterfall Model )
特征:
接受上一阶段的结果作为本阶段的输入,利用这一输入实施本阶段应完成的活动对本阶段的工作进行评审,将本阶段的结果作为输出,传递给 下一阶段。
缺点:
缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发;开发早期存在的问题往往要到交付使用时才发现,维护代价大。
1.阶段间具有顺序性和依赖性。
2.推迟实现的观点。
3.每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。
传统的瀑布模型过于理想化。而事实上,人在工作过程中不可能不犯错误。
︴增量模型 (Incremental Model )
是一种渐进地开发逐渐完善的软件版本的模型。先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。系统的总体设计在初始子集设计阶段就应作出设想。
特征:
• 反复的应用瀑布模型的基本成分和演化模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品。
• 早期的版本实现用户的基本需求,并提供给用户评估的平台。
2.整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。
3.逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
4.采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。
缺点:
1.在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。
2.开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。
3.多个构件并行开发,具有无法集成的风险。
︴原型模型 (Prototype Model )
原型是预期系统的一个可执行版本,它反映了系统性质(如功能、计算结果等)的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。
原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然后快速制订原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建原型。
被开发的原型应交付给客户试用,并收集客户的反馈意见,这些反馈意见可在下一轮迭代中对原型进行改进。在前一个原型需要改进,或者需要扩展其范围的时候,进入下一轮原型的迭代开发。
原型的类型:
探索型(exploratory prototyping)
其目的是要弄清目标系统的要求,确定所希望的特性,并探讨多种方案的可行性
实验型(experimental prototyping)
其目的是验证方案或算法的合理性,它是在大规模开发和实现前,用于考核方案是否合适,规格说明是否可靠。
演化型(evolutionary prototyping)
其目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目标系统。
废弃(throw away)策略
主要用于探索型和实验型原型的开发。
追加(add on)策略
主要用于演化型原型的开发。
注 :原型可作为单独的过程模型使用,它也常被作为一种方法或实现技术应用于其它的过程模型中。
︴螺旋模型
螺旋模型的基本思想是降低风险。
风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大;主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险;随着迭代次数的增加,工作量加大,软件开发成本增加 。
对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试或测试不足;维护和开发之间并没有本质区别。
︴喷泉模型 (Fountain Model )
- 支持软件复用(reuse)
- 利用预先包装好的软件构件(包括组织内部开发的构件和商品化的、现存COTS构件)来构造应用系统
- 基于构件的开发模型对提高软件生产率、提高软件质量、降低成本、提早上市时间起到很大的作用。
软件软过程模型 |
特点 | 适合的软件项目 |
瀑布模型 | 简单,分阶段,阶段间有因果关系,每个阶段完成后有评审, 允许反馈,不支持用户参与,要求需求可预先确定 |
需求易于完善定义且不易变动的软件系统 |
原型模型 | 不要求需求的预先完备定义,支持用户参与,支持需求的渐进式完善和确认, 能够适应用户需求变化 |
快速复杂,难以确定,动态变化的软件系统 |
增量模型 | 软件产品是被增量式的一块块开发的,开发活动允许并行和重叠 | 技术风险较大、用户需求较为稳定的软件系统 |
螺旋模型 | 结合了瀑布模型原型模型和迭代模型的思想,并引进了风险分析活动 | 用户需求难以获取和确定,软件开发风险较大的软件系统 |
…… | …… | …… |
人