发信人: leeyg(雷云勾)
整理人: leeyg(2001-06-05 21:45:33), 站内信件
|
你可以引用本文,但请注明作者,并请注明出自本论坛。
(一)瀑布模型(Waterfall Model)
瀑布模型是严格的下导式过程,各阶段间具有顺序性和依赖性,前一阶段
的输出是后一阶段的输入,每个阶段工作的完成需要审查确认,确认过程是严
格的追溯过程,后一阶段出现了问题要通过前一阶段的重新确认来解决。所以
问题发现得越晚问题的难度就越大。
瀑布模型的图示如下:
软件计划与认证
↓
需求分析
↓
概要分析
↓
详细设计
↓
编码与单元测试
↓
综合测试
↓
运行与维护
瀑布模型的最主要特点是无回溯。这也正是瀑布模型的不足之处:从认识角度
人的认识是一个多次反复的过程:实践,认识,再实践,再认识,循环往复,最后
才能获得对客观世界较为正确的认识。而软件开发是一项智力认识活动,很难一次
彻底完成,往往也需要多次反复实践认识过程,但是,瀑布模型没有反映这种认识
过程的反复性。
所以,瀑布式开发方法适合软件需求非常明确、设计方案确定、编码环境熟悉
等所有阶段都有较大把握的软件开发活动。
(二)原型模型(Prototyping Model)
瀑布模型是一个严格的自顶向下模型,要求开发人员对每个阶段都预先有较大
的把握。原型模型则是借助一些软件开发工具或环境尽可能快地构造一个实际系统
的简化模型。
原型模型的图示如下:
┌→ 需求分析 ←┐
│ ↓ |
│ 快速设计 |
│ ↓ |
│ 构造原型 ─┘
│ ↓
└─评审和修改需求
↓
建立产品
↓
运行维护
原型模型的最大特点是:利用原型法技术能够快速实现系统的初步模型,供开
发人员和用户进行交流,以便较准确获得用户的需求,采用逐步求精方法使原型逐
步完善,是一种在新的高层次上不断反复推进的过程,它可以大大避免在瀑布模型
冗长的开发过程中,看不见产品雏形的现象。
相对瀑布模型来说,原型模型更符合人类认识趔的过程和思维活动,但是,采
用原型模型也存在这样一些缺点:
1) 建立原型模型的软件工具与环境与实际模型的存在脱节的现象。
2) 以目前通用的开发工具,开发原型本身就不是件容易的事情。
3) 原型模型对用户深层次的需求并不能深入分析。
(三)喷泉模型(Fountain Model)
随着面向对象系统分析及设计方法的普及,出现了喷泉模型。喷泉模型认为软
件自下而上周期的各阶段是相互重叠和多次反复的,就像水喷上去可以落下来,既
可以落在中间,也可以落在最底部,类似一个喷泉。各个开发阶段是没有特定的次
序要求的,并且是可以交互进行的,可以在某个开发阶段中随时补充其它任何开发
阶段中的遗漏。
喷泉模型的图示如下:(画不出泡泡状,就以菱形代替,大伙将就着看吧)
/\
/ \
/ \
/ 集成 \
←─ \ / ─→
\ /
\/\/
/\/\
/ \
/ 测试 \
←─ \ / ─→
\ /
\/\/
/\/\
/ \
/ 编程 \
←─ \ / ─→
\ /
\/\/
/\/\
/ \
/ 设计 \
←─ \ / ─→
\ /
\/\/
/\/\
/ \
/ 分析 \
←─ \ / ─→
\ /
\ /
\/
喷泉模型的最大特点是可以从任何一个开发阶段(泡泡)转到其它任一个开
发阶段,各个阶段之间没有明显的界限。也就是,在整个过程中补漏、拾遗、纠
错的切入点大大增多,不受开发阶段的限制。
喷泉模型的缺点是要求对文档的管理较为严格,审核的难度加大,尤其是面
对可能随时加入各种信息、需求与资料。
(四)迭代增量模型(洋文不知怎么写)
(这个模型什么时候发展起来的我并不是很清楚,反正我是从接触UML开始的,
呵呵)。
迭代增量模型不是在项目结束时一次性提交软件,而是分块逐次开发的提交。
分析人员只要找出满足项目需求的某一子集(比如说某个功能,或者是UML中所称
的Uses Case),就立即进行迭代开发,而不是将该项目的所有需求都搞清楚后才
开始开发。
所谓迭代,就是指每一个迭代过程都包含了软件生命周期的所有阶段,即:
分析、设计、实现和测试阶段。所有的迭代(子集)加起来就是项目的所有需求
(全集)。
所谓增量,就是指某个迭代可能是在另外的基础上完成的,就是说,两个或
多个迭代之间可能互为基础,这里说可能,是因为也有两个迭代完全没有重迭的
情况.
迭代增量模型的图示如:
迭代 1:分析设计实现测试
初始阶段->细化阶段->迭代 2:分析设计实现测试 ->移交阶段
迭代 3:分析设计实现测试
.................
迭代 n:分析设计实现测试
迭代增量模型的特点是无引进了子集的概念,无需等到所有需求都出来,只
要某个需求的子集出来即可开始开发。虽然某个子集可能是还需要进一步适应客
户的需求,还需要更改,但只要子集足够小,这个影响对整个项目来说是可以承
受的。
迭代增量模型的缺点是子集间如果存在交集的情况尚不能很好地处理。事实
上,各个功能间互相依赖的关系在现实生活中很普遍,存在交集,就必须做全盘
的系统分析。
综上所述,个人认为,迭代增量模型将功能细化、分别开发的方法较适应于
需求频变的项目管理,就纯软件开发来说,我比较倾向于喷泉模型。
---- 软件开发是可工业化组织实施的艺术创作 |
|