一.概述
1.瀑布模型的局限性:
瀑布模型很难适应需求可变、模糊不定的软件系统的开发,而有在开发过程中用户很难参与进去,只有到开发结 束时才能看到整个软件系统。这种理想的线性开发过程,缺乏灵活性,不适应实际的开发过程。
2.增量模型的基本思想:
增量模型是在项目的开发过程中以一系列的增量方式开发系统。
增量方式包括增量开发和增量提交。增量开发是指在项目开发周期内,以一定的时间间隔开发部分工作软件;增量提交是指在项目开发周期内,以一定的时间间隔向用户提交工作软件及相应文档。增量开发和增量提交可以同 时使用,也可以单独使用。
3.增量模型分类:
按增量模型的方式和形式不同,分为渐增模型和原型模型。
渐增模型(瀑布模型的变种):
增量构造模型:
在前面的开发阶段(需求分析和设计阶段)按瀑布模型进行整体开发,在后面的开发阶段(编码和测试阶段)按增量方式开发。
演化提交模型(是增量模型的极端形式,更易进行扩充修改):
所有阶段都按增量模型开发,也就是不仅是增量开发也增量提交。
先对一部分功能进行需求分析设计编码测试,完成这一部分功能的软件并交给用户后再进行另一部分功能 的开发,再提交用户直到全部增量开发完毕。
原型模型:
原型模型又称为快速原型模型,它是增量模型的另一种形式。它是在开发真实系统之前,先构造一个原型 ,在该原型的基础上,完成整个系统的开发工作。
根据原型的不同作用,又分为三类原型模型:
探索型原型:
把原型用在需求分析阶段。目的是要弄清用户的需求,确定所期望的特性,并探索出各种方案的可行性。主要针对开发目标模糊,开发者和用户都对项目缺乏经验的情况。
实验型原型:
把原型用在设计阶段,考核实现方案是否合适,能否实现。对于大型系统,若对设计方案没有把握时,可 用这种原型来验证设计方案的正确性。
演化型原型:
及早向用户提交一个原型系统,得到用户认可后,将原型系统不断扩充演变成为最终的软件系统。它将原型的思想扩展到软件开发的全过程。
二.快速原型模型(是在研究需求阶段的方法和技术中产生的)
1.基本思想
1)原理:
利用原型辅助软件开发的一种新思想。经过简单快速的分析,快速实现一个原型,用户与开发者在试用原型的过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补遗漏,适应变化,最终提高软件质量。
2)原型运用方式:
根据原型的目的和方式不同,使用原型时也采用不同的策略,有抛弃策略和附加策略。
抛弃策略:是将原型用于开发过程中的某一阶段,当这一阶段开发完成后原型随之废弃。
如:探索型原型和实验型原型就是采用此策略。
附加策略:将原型用于开发的全过程。原型由最基本的核心开始,逐步扩充完善成为用户满意的最终系统。 如:演化型原型。
2.快速原型模型表示
探索型原型:
用原型过程来代替需求分析,原型作为需求说明的补充形式,但整体上仍采用瀑布模型。
实验型原型:
用原型来代替设计阶段,即在设计阶段引入原型。原型成为设计阶段的总体框架或设计结果的一部分。
演化型原型:
用原型来代替全部开发阶段。典型的演化提交模型的形式。它是在强有力的软件工具和环境支持下,通过原型 过程反复循环,直接得到软件系统。不强调开发的严格阶段性和高质量的阶段性文档,不追求理想的开发模式。
3.原型开发过程
1)原型的特征分类:
根据原型的目的和方式不同,构造原型的内容的取舍不同,体现出原型特征有如下类别:
系统的界面形式
系统的总体结构
系统的主要处理功能和性能
数据库模式
2)原型开发步骤
快速分析
构造原型
运行原型
评价原型
修改
4.快速原型的开发技术和开发环境
1)构造原型的技术
可执行的规格说明
基于脚本的设计
采用非常高级语言或专门语言
能重用软件
2)构造原型的建议
暂不考虑速度、空间等性能效率方面的问题
暂不考虑错误恢复和处理
可降低可靠性和软件质量标准
原型界面部分要设计得简单易学,最好能与最终系统的界面相容
根据不同的软件类型和应用领域,可使用不同风格的高级语言来构造
3)原型的开发环境
交互式系统
数据库管理系统
通用输入/输出软件
重用代码库
5.增量模型的评价
1)原型的作用
a.为软件提供明确的需求说明,当用户要求含糊不清、不完全、不稳定时,通过原型执行、评价,使用户要求 明确。
b.原型可作为新颖设计思想的实现工具,也可作为高风险开发的安全因素,从而证实设计的可行性。
c.原型模型支持软件产品的演化,对开发过程中的问题和错误具有应付变化的机制。
d.原型模型鼓励用户参于开发过程,参与原形的运行和评价,能充分地与开发者协调一致。
2)使用原型的建议
能使用原型的情况:
a.开发周期很长的项目
b.系统的使用可能变化较大,不能相对稳定
c.用户对系统的需求较为模糊,对某种要求缺乏信心
d.开发者对系统的某种设计方案的实现无信心或无十分的把握。
不宜使用原型的情况:
a.缺乏开发工具,或对原型的可用工具不了解时
b.用户不愿参与开发
c.用户的数据资源没有很好地组织和管理时
d.用户的软件资源没有被组织和管理时
3)原型的优点
可及早为用户提供有用的产品
可及早发现问题,随时纠正错误
减少技术、应用风险,缩短开发周期,减少费用,提高生产率
通过实际运行原型,提供直接评价系统的方法,促使用户主动参于开发活动,加强信息反馈,促进人员的协调 ,减少误解,适应需求变化,能有效提高系统质量。
4)存在的问题
缺乏丰富而强有力的软件工具和软件开发环境
缺乏有效的管理机制,还未建立起自己的开发标准
对设计人员水平及开发环境要求较高
在多次重复改变原型的过程中,程序员会感到厌烦
系统易变性对测试有一定影响,难于做到彻底的测试,更新文档较难