SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 20618|回复: 37

[转贴] 五步走:软件需求的管理过程

[复制链接]
发表于 2008-1-10 15:34:23 | 显示全部楼层 |阅读模式
摘要
! f1 X, N( [) Y% \. C9 ~: I7 }6 W" t7 J, \. |# K1 @; r- i
  当今,经济和社会生活对软件的依赖程度急剧增长,软件需求日益复杂,软件开发成为一项跨越技能,职责范围和时间阶段的综合团队活动。实践证明,良好的需求管理过程对于降低开发成本和保障项目成功至关重要。
" r6 J2 a" Q" ?, T; n
) D) n9 K2 d% \% u  A. e  这里是我们采用的需求管理过程,希望能与大家分享,互相学习和借鉴。欢迎留言!/ q8 i! g; X# U1 }3 n

2 g0 n2 i) R, {1 W' l  |  D  我们将需求管理过程分为三个大的阶段:Discover阶段,define阶段,和需求维护阶段。本文的内容罗列如下:
( C4 m- C* s  B0 o. y- h5 P* \
4 g5 i. f7 i; ~- G: R9 x  第一部分:软件需求管理过程涉及到的角色3 x4 E: F, P: m& _' e. O+ M
1 v' J3 E# C, O  i  Y) ^
  第二部分:软件需求管理过程的概貌。
8 K% i% d. F/ |6 l" }* b: H- R- v* Z' G0 t) F  V: x) Q( h0 i
  第三部分:Discover阶段的具体活动。
  i. Z& `$ C' J3 ~0 D
& [& F3 j, F/ x& a( ?0 e# E  第四部分:Define阶段的具体活动。
8 d3 \  J; h7 [3 n) }$ s2 v* y/ d2 V+ R) I# C
  第五部分:需求维护阶段的具体活动。
5 }9 I& N: x6 v
* I8 m6 t( T9 p" P, a& X  1、角色及职责
, G( J, U& s% M, ]- y' b: ?$ H4 z6 K
# r2 \, s) c" U9 w  R# i  角色————职责描述+ o& _9 W$ M* d, z) x- ?
' B4 O2 O% p) Z2 c# V0 g
  市场人员————负责discover阶段所有工作,并帮助开发项目经理在define阶段初期很快地了解业务和客户) Q0 c. H. k7 y- s1 _. {: ^

9 e% E% r' q. f  开发项目经理————协调discover阶段的所有活动;负责完成需求文档;维护scope matrix。
6 C1 O% p* G6 l4 V) W3 U% Z4 s5 ^( ~  o6 p" l
  行业专家————提供行业咨询7 l& A4 I" ]+ C6 W

! H+ `8 t( b: l3 S. p. G; j  高层团队————指导discover和define阶段的工作
/ r* w4 A2 Q- \8 s. ]
2 C! \6 `: y6 b  SEPG 负责过程的培训,提供过程支持,负责过程的跟进和改进
+ J% S. c5 }% ]- I0 ~& W" t% Y) C& L: B5 t* P9 s# J/ _: ?
  2、软件需求管理过程的概貌
( P1 h+ l. ^0 w0 V: b( |+ T
. V7 e% Q8 K! y7 D2 P. ?5 s  需求可定义为“(正在构建的)系统必须符合的条件或具备的功能”,也有人定义为“用户解决某一问题或达到某一目标所需的软件功能”。
+ V3 I& Z8 C6 i3 O
! @9 C7 F! W  r# C5 e7 L' `" f  而需求管理是一种获取、组织并记录系统需求的系统化方案,以及 一个使客户与项目团队对不断变更的系统需求达成并保持一致的过程。需求管理的目的是在顾客和将处理顾客需求的软件项目组之间建立对顾客需求的共同理解。( F) b& O' h# w' G  B

, \6 ]+ a. y/ V  需求管理的目标是:% l8 a. e- `9 M. y8 T- X' `. G8 C
# [. b0 R( f+ |9 H- G
  使软件需求受控,并建立供软件工程和管理使用的基线。! o/ d) l! T1 B

- D+ ]* H$ P' W  P3 _  使软件计划、产品和活动与软件需求保持一致。
/ x' v; {! m5 G5 i. q' Q( v1 Z5 {; Z
+ W" P. Y! e) B1 C
% U  e0 n! P6 L0 `! L
  Discover阶段
, b1 \3 N& q' {% I: l: H. @9 z# w9 q3 r
  本阶段的目的是了解客户的问题,分析并确定公司是否开展此行业的项目。这里的客户不一定针对一个企业,有可能是一个行业。在进行具体的调研时,目标是本行业的一个或几个典型用户。市场人员主要对客户的问题,客户的现状,和客户的业务模式三方面进行了解,然后对照公司的业务发展方向和实际现状进行可行性分析,并负责编写可行性分析报告。: o4 s1 F# |) D! E- D

: e) E& Y' V0 `9 S7 L  然后发起可行性分析会议,邀请公司高层,行业专家和利益相关者一起来商议公司是否开展此项目。一旦决定做此项目,下来将寻找有意向的用户。找到合适的用户后,就可以正式开始创建开发团队进行开发系统的定义,设计,编码等工作。8 c4 p* A; t% p  R1 S* Z4 Y
7 y% }* K: |* |2 L+ J* k6 [- v
  Define阶段9 q9 |3 h: D4 I4 P$ ?5 C

+ p- f! `' d3 @+ f7 A  目的是得到一套客户认可的详细的需求说明文档,用来指导后期的软件开发工作。开发项目经理通过与客户沟通交流,分析项目目标和成功因素,识别项目风险和假设,以及系统的功能需求和技术需求,最终整理出一套详细的需求说明文档,包括总体系统的需求信息,每个子系统的需求信息,数据字典,等。
- E: i! ?6 \8 F  L* S0 ~+ |$ G/ \( `+ A" R0 ^9 M5 `
  为了指导后期的开发和跟踪需求实现的状态和范围,项目经理需要根据需求来建立本项目的Scope Matrix。在Scope Matrix中随时跟踪每项功能的In或Out,以及现在处于开发的什么阶段。
" q. r; d7 Q4 G. P* W2 b5 q2 w, g/ M- \- \8 J
  所有需求文档完成之后,由项目经理发起并组织阶段审核会议,并邀请客户和行业专家参加。审核的内容包括所有需求文档和Scope Matrix。一旦审核通过,则开始制定下阶段的计划,准备进入概念阶段。6 i- k7 y* Y" r; c* v) q0 F. W

+ t2 Y+ S' Z' F3 C  需求维护阶段
9 C4 H- r2 Y; M7 y
* \8 h3 Z4 [' M/ C  目的是管理需求的变更。在软件开发过程中,需求不可避免会有大或小的更改。为了更有效地管理需求的变更,这里规范了需求变更,需求跟踪,和需求配置管理的要求。对每项内容的详细内容,将在后面进行介绍。
7 {( {# k# u0 f2 X# m- ^
! Q( v6 z4 D5 D  3、Discover阶段
* [- w8 j3 m' T  r+ s  T( }9 |9 o+ ^- x

' l6 m0 E% s2 P7 n  u. V, v8 _0 P
  3.1 理解客户的需求' a8 R% P. {6 x! d$ v8 k
# N5 r7 |3 z! P. d- m
  活动:与客户沟通交流,了解他们的原始需求。并分析公司开发此项目的业务机遇,业务目标,客户和市场的需求,以及业务风险等问题。
0 J( D0 w% t: ~9 e  _0 W" f
+ b, u" F6 D) c9 o  职责:由公司高层负责,市场人员具体执行。
' B/ t) r% w  W* X# P* M9 N9 f7 Z, S8 ?, b4 w$ p$ ]
  3.2 了解客户的现状
& K6 D( K4 i  w) w/ b7 D5 X4 y% p8 i/ [( v" g7 y( ]/ Z
  活动:评估客户的现状,如信息化程度,人员的计算机技能水平,业务模式等。
4 W& B5 j! [, c0 o3 q% x% Q$ @4 a0 z* G9 a
  职责:由公司高层负责,市场人员具体执行。% m: g( _  L: @6 Q7 l, A8 h* A# G, ]
. A8 Z0 y8 Q- H
  3.3 了解客户的业务模式5 g9 J$ Z* N2 q! F( \
5 Y9 X3 t1 K* q0 _2 {: D8 N4 p
  活动:了解客户当前的业务模式,包括业务角色及其关系。  & R5 Q4 K5 H  [

5 Q: b# \5 O, j" G  职责:由公司高层负责,市场人员具体执行。# d. Q# u8 r- g
0 w! z+ z8 i" @+ ~4 R. u$ L
  3.4 编写可行性分析报告: {' G! Q4 l, ~. U0 Q
& e- P* N8 S. y! R
  活动:根据前面三项内容,对本项目做评估,分析是否开展此项目* H+ A2 ?2 L0 E1 r

$ V8 W  K6 m" p  职责:由公司高层负责,市场人员具体执行
) T4 J; N5 |( d
3 t+ I% h' \3 s- F. q8 g3 G  模板:依据提供的“可行性分析报告的模板”整理。根据实际内容,允许对模板进行裁剪。
; l6 b* [/ Z- G6 j# v1 C! E; T  L" R4 D
  3.5 可行性问题的决策+ c. y7 R& g9 e! Q: L4 e8 h

+ u8 A" X: ?% h+ \: q  活动:审核可行性分析报告的内容;决定是否开展此项目9 M/ F" N* k6 T! `' F* Q
$ }- D( G5 i4 s
  参与人:市场人员(发起者和组织者),行业专家,公司高层决策人员。/ w) h- ~  z& T+ _! l$ ^- Y& m
, N9 I' Z6 T/ I5 G, P
  主要沟通内容:可行性分析报告
8 C  T7 s! _3 `' p% y: c  |# p4 s
$ O8 W! Z- S! d  输出:作出结论的可行性分析报告5 ]! T- m8 z1 h' `

/ F) ], G4 q- o6 ^4 I: Z  职责:市场人员发起,组织,和主持会议,做会议记录。负责可行性分析报告的修订和决策记录。
% K+ ]2 E1 y9 w6 n
( |, g5 w# J( }& r3 g5 T$ e6 ~  说明:决定开展此项目后,方可进入define阶段。在进入Define阶段之前,需要由项目经理确定项目的整体计划和define阶段的详细计划。3 O/ q- e6 K7 [% h3 [: _5 I; C/ c

8 M. t" k: T4 B+ r) R7 Z4 u  4、Define阶段
& Q  J& o$ D" i' E2 Z
# M/ q: O0 q8 f. H2 b
; Q! _" ], g. K- I' _4 q# ^" n8 F+ j3 Y# S3 s% }" p' m& @
  4.1 准备/ t8 g3 [& \4 G+ o" \0 o
$ }6 C# D) z9 J+ b5 m
  活动:了解discover阶段的输出文档,安排交流的客户代表* Z; O. |2 f. r+ W/ v2 J  n5 U# E

5 d- E  Z4 Y0 R  ?  职责:市场人员帮助开发项目经理了解可行性分析报告中的内容,并共同联系客户代表;开发项目经理理解可行性报告中的相关内容,为后面工作的开展作好准备。
1 y* Z& d5 o2 U
  K. M' h* K  Y3 m9 \  4.2 分析项目目标和成功因素# D/ C3 [! t, |

/ v1 i5 ~4 U) C& P( z2 |9 I. q5 Q  活动:通过与客户的沟通,定义项目目标和成功的关键因素
( D. R& c$ @% }% l- ?" Q% ]5 G& W5 d- U' g4 g
  职责:开发项目经理完成,市场人员可协助。8 O" d4 ?! k. g- `7 D
1 J! {. P; g$ K8 z% t
  4.3 识别项目的风险和假设( i$ x& u" E3 f8 b2 y
' j' D' ^7 N6 \2 Z3 {
  活动:通过与客户的沟通,识别项目的风险和假定,并分析他们对项目的影响,给出风险的减缓方法。5 k9 c3 L) o# Y) ^+ q1 u" u

( \0 J- J/ o5 d* Z: z# `9 `  职责:开发项目经理同完成,市场人员可协助。( ~1 Y9 M: [7 m7 S% `9 Y$ A
, i; E! e5 x  ~) x2 F* }/ o' o# N
  4.4 获取功能需求和技术需求
  j: j6 S% ^4 J/ ?" s, ?
( M8 }8 Q" R: @$ `9 ?" r" `  u  活动:通过与客户的沟通,获取功能需求和技术需求,即明确系统的功能需求和使用什么样的技术- s0 a* x, ^* {
/ }, g% [  V8 w$ x
  职责:开发项目经理完成,市场人员可协助。0 \, ]8 I, z% m" z6 q& X. @

1 G# ~/ C( b8 C  4.5 编写需求说明文档: z. J9 Y% r$ Q6 j# O
. h! Q1 [% _8 ~
  活动:根据前面几个步骤的沟通结果,整理项目的需求文档。需求文档不一定是一个,可以是几个文档。但必须包括内容:总体系统的需求信息,每个子系统的需求信息,数据字典。公司建议将总体系统的需求信息与每个子系统的需求信息分开写成文档。在总体系统的需求中,从系统整体出发来阐述,而每个子系统的需求只针对子系统本身来阐述。
' @" b* s3 a! t
( A# u  q" u/ O, f$ e- `9 R0 v6 ~$ E  职责:开发项目经理完成。
- @- R5 |+ _# w
$ }- n9 c* _( b  模板:依据提供的“总体系统的需求说明模板”“子系统的需求说明模板”“数据字典的模板”整理。根据实际内容,允许对模板进行裁剪。
0 c% p) Z& R# W5 f3 W4 `) T. C6 ~' |* G$ ^. l. ^. B
  高质量的需求说明文档的关键特点:
- G" b4 K, n' l6 I& H7 A7 Y3 A& Q/ t
  完整:不应该遗漏要求和必需的信息。发现缺少的信息很难,因为根本不存在。如果你知道已缺少一些信息,使用TBD(to be determined)标准标志可以突出这些缺陷,当你在构建产品的相关部分时,就可以从一个给定的需求集中解决所有的缺陷。
& l7 Z1 H6 {- \  k" F( t! A, d' L! r7 i8 {! w3 D
  一致性:一致性需求就是不要于其他的软件需求或高级别的系统(商业)需求发生冲突。
1 e" U) e+ ]6 Q* M9 j6 Q0 [6 H" J& ~4 ?
  可修改性:每个需求必须相对于其他需求有其单独的标示和分开的说明,便于清晰的查阅。通过良好的组织可以使需求易于修改,如:将相关的需求分组,建立目录表,索引,以及前后参考(照)。
* P+ Y1 O* n; S5 W3 c* u) Z, H2 Z; e+ v. B' \, l0 U3 C
  4.6 建立Scope Matrix
7 |8 v" O+ M: o8 A; {4 d' F' e/ s/ @2 {) Z: {
  活动:根据系统的需求建立Scope Matrix,以指导后期的开发。Scope Matrix的所有内容必须忠实于整理出来的需求文档。如果需求文档的内容不足以得到完整细致的Scope Matrix,可以回过头来完善需求文档;如果实在确定不下来的内容,可以在Scope Matrix中标注出来,待以后确定。+ z* I" W$ X# @* j# H2 u

3 n$ c) z! p" s6 F, J6 O  职责:开发项目经理完成。3 G) n9 W% v# K

( Y/ t$ U  d3 T  模板:依据提供的“Scope matrix的模板”整理。根据实际内容。
! j) r% q- c, P9 E; P5 l7 E  j: m5 j& p3 D) M. ~' q' L# i9 n6 B. z7 @$ {
  如何在Scope matrix中描述功能域:
! R3 q) z- P. U
; h$ x/ b* k9 @8 N& }  罗列所有的详细功能点,而与流程无关。
. R# `6 R* u5 G  g9 U* e; T. F) l" e
9 G' e1 ^! X. j  有关的功能限制也可列入。# a7 y2 i9 H0 i" k
1 o2 Q' V+ r) U: A! [& b
  禁忌用冗长的描述性语言陈述。这样不容易将功能点划开。0 U& W; H7 F$ r. O8 j& o9 z  c

4 O* s6 s; u8 Y1 f  每个功能点用一句简短的话来描述。如果一个功能点需要两句话才能描述清楚,则将其划为两个功能点。
) J7 R8 C* z: {6 n9 J1 {. r
. Q# M+ O& a5 W; [0 J+ [  4.7 Define阶段的审核
, _# O3 t' |' l& }% m5 y% U( L' P7 E' M4 R5 ~/ q, i# H: S9 k
  活动:以会议的形式沟通需求的内容,对需求进行Quality review.1 W( Q! i& T2 z8 X% A9 i5 B
& s& P' I5 O! k0 x$ M' T8 \
  参与人:项目经理(发起者和组织者),行业专家,和客户
8 P$ Q  z/ u1 M; l& h% [4 X6 H2 z9 [6 s
  审核内容:数据字典,总体系统的需求说明,各子系统的需求说明,Scope matrix9 o% Z( N( `$ z; K. y, P

8 r( s! W8 }3 _& X3 }0 @9 e5 _  输出:Review notes。Review notes要求填写在公司规定的Quality review notes的模板中。
+ |; w) I6 F0 N* e& s
5 E" V4 `$ `! r  x+ j6 w  职责:4 s3 e! J4 Q6 S- b) |
$ M: {# m* q6 I+ z  U5 a5 [/ K/ P
  项目经理发起,组织,并主持审核会议,做会议记录。会后总结review notes.' p! u+ z9 g: g+ i* Y5 r+ o

- X+ c' G$ h. R- T  说明:Define阶段审核通过后,方可进入设计阶段。  g) J+ Q! n4 {) y' {/ f
7 i0 B3 \% k$ @
  5、需求维护2 ~9 _2 h! e, E4 O/ S6 E( J% z% i# s

& p- O! d0 W6 }0 \2 b' v
  _0 U" i/ R1 s0 ]3 c! ~0 K/ @! F: T6 q
  需求维护的关键内容是需求变更管理。需求的变更是不可避免的,如何以可控的方式管理软件的需求,对于项目的顺利进行有着重要的意义。对于需求变更的管理,我们主要使用需求变更控制流程,需求跟踪矩阵,和需求配置的管理方式。
8 m: z! r. S! U5 o
* h- z% U3 A7 C; O- u- u- z$ v/ t" h  5.1 变更控制流程! E4 R7 z; W; @8 j
/ D( y) ^  u$ L" g
  5.2 需求跟踪
% e, j! _0 \6 [, \  @  t
: ?  Z7 r' x5 p" e  活动:使用scope matrix来跟踪每项需求是否要求实现,以及需求实现的状态4 H9 I6 T, X: Y- }: L
- k) E: ~' ?' r- X* h. b
  职责:由开发项目经理负责维护scope matrix。, X- \9 K+ J, o% q+ H3 A3 C( w

  V6 o9 U+ j  t4 k! Q  5.3 需求配置管理& s. R4 u& ~) j/ A" m0 X9 \

0 v, `6 q+ |; q6 n3 o  活动:保存需求方面的所有文档的所有版本
1 h! g# `7 F, v/ F- e% Y
8 i1 M4 S9 W$ W1 K1 I6 a  职责:每个有关需求的文档以及升级文档均要求保存到配置管理系统中。
# r2 ]- d$ n8 i  g9 f# ^. [$ e. h" y/ x: e0 m1 |2 J
  要求:
+ G# _- ]+ d$ ~  _2 @* M* A0 C5 r; y4 {5 |: H& U: V1 d- [1 R
  所有资料均放入配置管理系统。4 ~. x! ?, `) m( i

, r( X) z+ u2 L9 b  按照规定的目录存放资料。
2 O8 {4 P7 |1 y
; L9 ~# }  c7 R  文件的每个修改版本都要求保存。
 楼主| 发表于 2008-1-10 15:37:09 | 显示全部楼层
这篇文章很值得借鉴
回复 支持 反对

使用道具 举报

发表于 2008-1-31 13:51:39 | 显示全部楼层
这方面一直都是理论多于实践。更希望lZ来点实战性的东东。
回复 支持 反对

使用道具 举报

发表于 2008-2-17 16:42:15 | 显示全部楼层
理论实际的内容相对较少
回复 支持 反对

使用道具 举报

发表于 2008-2-27 15:21:43 | 显示全部楼层
文章确实不错啊,楼主谢谢了,学习中
回复 支持 反对

使用道具 举报

发表于 2008-5-30 20:12:24 | 显示全部楼层
不知道那些要实际的东西的人想要什么?真奇怪呀!如果这些人在公司里负责做需求的话,会做成什么样?
回复 支持 反对

使用道具 举报

发表于 2008-6-3 16:34:16 | 显示全部楼层
真按照这样做,是不是太复杂了……
回复 支持 反对

使用道具 举报

发表于 2008-6-7 18:23:36 | 显示全部楼层
理论太强了,不知实践怎么样
回复 支持 反对

使用道具 举报

发表于 2008-6-9 15:43:12 | 显示全部楼层
流程看起来没什么问题,不过搞得有些复杂了,与cmmi的框架对应还要转换,另外,define阶段重点放在功能需求上了,视角有点窄
回复 支持 反对

使用道具 举报

发表于 2008-6-24 16:56:05 | 显示全部楼层
不过如果能依托实际项目进行阐述那就更好了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2018-1-19 08:47 , Processed in 0.075768 second(s), 8 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表