EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 CLBuu 于 2022-11-21 10:00 编辑 2 E" Q% e7 r" _ I8 z% [
6 H$ U& I# H: X5 s9 B$ y8 S! V瀑布模型、迭代模型、增量模型、原型模型,是项目管理常见的四种模型。每种模型都有其优缺点和适用的项目类型。项目经理针对不同的项目用对模型,才能起到事半功倍的作用。. W# Z$ D1 |0 u' u
6 T N4 B9 L2 {4 i
; X, G$ i' |8 Q5 v' w
01 $ g2 I/ o* i$ [, l
瀑布模型 % I: I) l! H" J- w! c4 Q
用瀑布模型做项目就像古代匠雕刻玉石,先有完整的设计图,然后按部就班往前推进,中间不能出一点差错,追求的是“一次成型”。
# X/ B8 W, Y( K, k9 W- @$ x7 `这就是瀑布模型,最基本也最常用的一种项目管理模型,又称线性模型。9 H m0 A1 O- [1 d- V
采用瀑布模型的项目依照该模型选定的阶段顺序进行,每一个阶段的工作产品都是下一个阶段工作的输入,每一个阶段只有在上一个阶段通过检查,确认完成后才开始新的阶段工作。
" [/ K6 `) z0 |* b
* v# r4 l8 U1 z u" n& `+ _ }1 e▲ 瀑布模型的思想示意图
# h9 P% X& f4 C" M$ n, r" [1 o \% i! s. I4 ]
) j# V8 e# z K1 E2 u5 O! v
瀑布模型的突出特征是文档驱动。从需求分析到系统维护,每一项活动的工作成果就是此项活动所产生的工作文档,以及在此基础上形成的产品。
) k: P+ d- ^' \) x瀑布模型最大的优点有两个:9 M8 d! ?# Q4 l3 [: W+ @
: v( m. ]6 {7 Q: h0 g1、每个阶段的开发质量都有保证,减少了返工。2、是文档细致,降低了沟通成本,有利于及早发现问题。& V' S" i! U: d5 Q- J
这就是开头说的雕刻玉石的步骤,有精细的设计图纸,每一步都不可行差踏错,因为一旦雕坏了,就得摔了玉重来。
Q8 O* X2 c9 d+ U* ~这也正是瀑布模型的缺点:周期长,不易变更。
8 K1 M& b% Z! [- _$ l Z* H用户直到项目开发晚期才能了解产品的真实面貌和质量。这时候提出变更,成本会非常大。! G# w! o7 E5 D1 _/ t5 C# R* a
适合采用瀑布模型的项目类型,通常是对用户需求非常明确的项目。同时还要求项目预算充足,人员齐备。
: v' n, ?) a8 X! T0 u6 _, o5 L1 T9 [: ^. m# L: F0 O: R6 ]
02
* d" f2 t5 A `; t, R) @# ~ R迭代模型8 A# E8 Q5 h3 i$ O* ^$ T
其实,迭代模型项目就是数个小而快的瀑布式项目组成的。: P% g Z) h" H; }. G
因为,每一次开发迭代都是一次完整地经过所有工作流程的过程:需求、分析设计、实施和测试工作流程。
: W' x2 q9 R& q每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。
* ~& G* @1 x; @. N' Y5 i9 S. x) i% r" h; R' }5 y4 I' I
/ p5 f3 u/ Z+ X2 n' @1 ^
) J0 h1 `" A- v" D▲ 迭代模型的思想示意图 # j* `" z1 v/ x
/ o# H# c7 Q# u% \1 }8 _
) n' T8 d. B$ V7 l% k6 s W. ?迭代模型沿着螺线进行若干次迭代,图中的四个象限代表了四个活动:制定计划、风险分析、实施工程、客户评估。
! @ b0 X* V' u& I+ I使用迭代模型进行软件开发,项目活动包含以下几个阶段:9 ]7 t1 S8 b7 C( u4 K
* U0 c$ H; Z1 ?0 h1. 初始阶段为系统建立商业案例并确定项目的边界。9 a! a9 K: P' V5 K
2. 细化阶段细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。3 ]! b% t2 r% ~
3. 构造阶段在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。) } i' X) @- v6 D2 o
4. 交付阶段交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。
4 f" d! X- i9 z% U) R- a& C/ w4 Y- Q. A
' ~3 d6 m0 U0 J& ^$ e7 q/ O* D% Q* @
▲ 迭代模型的几个阶段
# [, X I+ [" b3 w9 V% ?" ]% t! G4 i% x; V
- Y$ ]: ^& z; Q6 k: r9 {
迭代模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。) l( @9 y5 Z( x# d3 n( N7 {
因此,迭代模型的风险管理成本较高,在风险分析,进度管理方面,对项目组成员的要求也非常高。9 i! t; R# W2 i
选择迭代模型的项目,通常属于高风险项目,且需求不确定,用户能在整个开发过程中不同程度地参与。 1 T; w4 R, B( P: v' }
& C# I; x" T; A) i$ D
03 2 B" d2 C$ U3 u: q: H+ [( \; }0 ~
增量模型5 r( e- S3 k0 c1 U' U! J% B' F
增量模型是通过对用户需求的判断,在定义了用户要求和系统需求,进行总体构架设计后,采用序列化地创建产品的方法进行开发的过程。
) k5 F( v5 d5 G, K增量模型本质上是迭代的,但其强调:每一个增量均发布一个可操作产品。
- T8 p. s# d: E+ {增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。
* r, j# g& O, T! w( M; d `5 [: {( A6 B# @6 l9 y8 a
▲ 增量模型的思想示意图
- k/ T$ B4 g3 z6 M) J! l) ]! ]6 J虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。
9 Z1 @/ T+ p9 ^% M增量模型有三大优点:
5 x% A. d& f5 P; A/ |. l% Q0 k# d8 r- A- I: C7 @% q) ?% c
1、在达到初始需求之前可降低成本。2、可快速生产出可使用的系统。 3、能够有计划地管理技术风险。& P! D6 I6 C' r9 ~# W
但是,在开发过程中,需求的变化是不可避免的。$ {' n& ?2 ?5 N
增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,导致软件过程的控制失去整体性。
3 u) y& b; X1 _* m
0 v3 J0 j- L* n增量模型的适用项目特点:) ^, v# B# F" ? j, ^% Z
i. 用户核心需求非常清楚;ii. 项目人员不足;iii. 产品可以分割成不同的阶段分别完成
- y* `, C3 J2 _
$ X n$ E" G' Y7 S: v, O' u04
6 p# d6 h( j F0 H原型模型
. G( O/ }1 X4 z, v4 t2 `$ k) h6 K
原型模型采用逐步求精的方法完善原型,使得原型能够“快速”开发.% V8 s6 p# X1 H. [7 \- I4 x/ ^
原型模型是一种用户需求驱动的方法。它能减少系统开发的风险,特别是在大型项目的开发中,由于对项目需求的分析难以一次完成,应用原型法效果更为明显。
6 a5 t) u( `* p
, C% _- d% o6 ^/ C/ P
0 x' V$ T* T% V. l
! w; B, ]; G7 V" _* [2 p# ]5 s6 e# k5 ^; k! H
▲ 原型模型的思想示意图 + i) C1 }8 ^) j+ C
$ ^5 g: |# I6 Y" _* W0 n ; s7 X2 u8 n! W6 o, K3 `: I
原型模型根据其最终保留情况分为非抛弃型和抛弃型两种:
, w5 g8 Q6 P9 W' Y, r7 A非抛弃型原型:先根据用户的最主要的要求,开发出能实现系统最基本功能的一个原型,再根据用户对原型使用与评价的意见,反复修改完善原型,直到等到用户满意的最终系统为止。
" s, w5 J. t" M9 t$ M抛弃型原型模型:一般用来描述和验证用户需求,可以采用与实际开发所不同的开发工具,建立模拟的数据库系统,从而达到与用户交流的最好效果。到用户需求确定之后即不再继续开发此原型。
" {3 f/ V" u" y# |% t6 Z$ @这两者的目的、手段、结构各有不同。采取抛弃型原型模型往往是为了和用户更好地沟通,大家一定要注意区分。
7 X# P% W5 |7 k( j! f5 L- L9 P; H: ~
原型模型适用的项目特点:6 T. M, X& T" n4 f9 ^4 m
i 处理简单过程明确、涉及面窄的小型系统;ii 大型系统的需求阶段,用原型去跟用户交流,需求分析会更加明确和细化
6 e3 T8 i: f/ E8 @8 a5 W4 ^6 A) Z2 d1 J! J
写在最后
' i. D4 g+ {! q6 p6 H4 j+ e' G9 [2 u5 x! I7 O% [
针对不同类型的项目。应选择什么样的开发模型,应从以下两方面进行慎重考虑:$ W" U2 k; v: ?8 u3 n9 u% g% T
i. 实施推广的难度项目管理团队的管理能力和系统开发团队的技术能力决定了所选择开发模型的实施难度。选择一个适合项目团队特点的开发模型尤为重要。
' O' L- R# ? p$ U9 aii. 项目管理的侧重点项目不同,其侧重点也不同,如侧重于进度、质量、成本控制、风险管理等等。根据项目的侧重点,可以选择不同的开发模型。 7 n& ~* S4 @2 J4 X5 Q$ w) f, _4 p
再结合这些特点,选择最适合项目的开发模型,就能起到事半功倍的效果。
& p7 B" X; I2 G- V& J! @$ `' X各模型项目特点: $ S( \0 F; i4 W2 Q, ~
瀑布模型——文档驱动型 迭代模型——风险驱动型 增量模型——任务驱动型 原型模型——需求驱动型 2 P7 n& A, L- D w7 n3 E( m9 J) l
3 I, y. V( Q, ?4 C; Q8 |
% I f$ T0 r) R9 W' l' ` |