SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6291|回复: 2

[推荐] 使用 IBM Rational RequisitePro 并行管理基于文档需求的开发

[复制链接]
发表于 2011-3-16 01:50:15 | 显示全部楼层 |阅读模式
本帖最后由 技术狂人 于 2011-3-16 01:56 编辑
  p" P, ]* \- G  I* c
' T+ e, Z' e- w- K+ S4 [. K您首先需要知道的内容
+ ~8 a" K1 E3 Z- q7 x本文关注于基于文档的需求,比如用例需求规约。基于数据库的需求可能需要不同的并行开发策略。
( D1 t' h) A: ^5 }IBM® Rational® RequisitePro® 文件必须以 Microsoft® Word® 格式存储(而不是以 Rational RequisitePro 格式存储),而且包含的需求绝对不能包含有层级(父-子)关系。
" o; V% v' q6 l$ ~0 j+ ~( n本文描述的场景使用 Rational RequisitePro 7.1.0 版本与 Microsoft Office 2003 进行了测试,并是在 Microsoft® Windows® XP Service Pack 2 上运行。如果您想进一步了解基本的思想与技术,那么您最好创建一个测试环境,因为如果数据没有得到合适的处理的话,那么有些不当的操作将有可能使数据受到不可恢复的毁坏。, f0 [# {. j8 f/ J: L  o7 d9 c" ?
: Z" l: w: O) s0 O! |  N
基础知识
% [0 y: c7 W0 |6 a9 y3 ^Rational RequisitePro 没有提供像 IBM® Rational® ClearCase® 那样的分支和合并机制。在 ClearCase 中存储 RequisitePro 格式的文件,并想从 ClearCase 的分支和合并功能中获得的便利并不能解决这个问题,因为 ClearCase-Microsoft Word 合并管理器并没有考虑存储在 RequisitePro 数据库内的嵌入需求。
+ F4 G. r8 t* Z. E  A唯一的解决方法是使用本地的 Rational RequisitePro 功能,并创建 RequisitePro 文件与需求的单独实例。有了这些单独的实例,团队就可以独立地工作,然后将后面进行的变更组合到一起。附加的需求属性可以帮助您管理需求从哪里分支以及合并到哪里。原始需求与分支需求之间的追溯关系,可以帮助您对其他团队对需求所做的变更能保持一致。
5 P6 E- V! X, n2 g9 ?Microsoft Word 自身包含了文件的比较合并功能,并且可以用于合并一个文件的不同版本。, t7 d/ P, _) w8 x4 `

- R8 n/ @0 C! S9 o+ H$ M

. K/ B" T, ]8 t4 ^& F) J5 ^8 r) g3 e, ]4 R6 v' H% k2 X: k3 [  K
配置 Rational RequisitePro' m" v  v# a) d' V9 W3 q: N
对于 Microsoft Word 而言,即使文件的扩展名不是 .doc 的话(例如,对于用例规约则是.ucs),也会有什么不同。但是,Word 并不会使用 Rational RequisitePro 的格式来存储文件。
/ t1 {, t3 _2 r; m  Z3 A: t
  • 从 RequisitePro 菜单中,点击 File > Project Administration > Properties
  • 从 Project Properties 窗口中,选择 Documents 项,然后选中“以 RequisitePro 格式来存储文件”复选框(参见图 1,“改变 RequisitePro 文件格式”)。
    ( \7 \0 W0 X6 ^, B0 ]- E0 P: q
7 Z9 Y# ]9 Y; y- J
图 1. 改变 RequisitePro 文件格式
" e. W- s) @! E% X5 }5 D" ~' k6 @ & e- P" B- m0 g( O0 b1 l4 \

: ?0 k+ L& c: N* o/ ]$ z为了增加 Rational RequisitePro 对于分支或者合并场景的支持力度,您需要向每一种需求类型添加两个附加的属性,分支或者合并操作会影响到这些需求类型。
- W0 T2 m4 u1 ~  @' ?( G( v& i
  • 从 RequisitePro 菜单中,选择 File > Project Administration > Properties
  • 从 Project Properties 窗口中,选择 Attributes 项,并添加两个名为 originates from (来自于)和 merged to(合并到)的附加文本属性(参见图 2,“ 为影响到的需求类型添加支持的属性”)。这两个属性含有需求从什么地方分支,以及需求合并到什么地方的信息。
  • 应用一个默认的值,例如一个连字符(-),以显示当前没有任何值的属性。/ N$ |, j! m; }; _0 \# o% R

% w6 U  d4 M4 f; x7 w5 K- g图 2. 对影响到的需求类型添加支持的属性
) U7 }+ \# i+ i$ z2 |6 A
9 y8 @' ~- B/ z" \6 C7 B8 R2 M$ t8 \9 Q9 E
并发开发的项目通常根据团队或者版本来进行组织。项目的组织结构也可以在 RequisitePro 中的包结构中来反映。在本例中,我们将会根据版本,R10 和 R11 来组织结构,如图 3 所示,“在包结构中反映项目的组织结构”。2 r' k# h; t/ F1 A$ ~

1 U3 B5 C# X* y+ U( m0 l$ C图 3. 在包结构中反映项目的组织情况
, j5 c6 o! ?5 V& |8 Y/ P; G
  f! e6 S( o2 ]* M3 E# \1 ]/ g8 `& G8 k5 B; O


# X7 ~( a2 W# p9 `8 R, j* Y  c! u" p1 b

; g/ t1 I0 B( @0 m8 s, r; j为一个 Rational RequisitePro 文件建立分支7 a+ s% [% T% X7 |
为了让这个例子尽可能的简单,在 R10 发布包中只有一个用例规约。R11 分支可以分支于 R10 版本(对于产品即将到来的 1.1 版本,编辑用例需求)。用例规约只包含有两个需求(参见图 4,“RequisitePro 数据库中的启动情形”,与图 5,“RequisitePro 文件的启动情形”):
: e  [3 B8 ^4 z: e
  • UC1:取出现金
  • UC2:这是一个活跃的……
    , C' D7 |! g" g, X, J' \

5 Y2 d2 i# a' l5 S图 4. RequisitePro 数据库中的启动情形
# K! ]4 o* R( ?7 f' f& d1 F: I : p8 `) W7 \6 D7 T9 ]* t. x4 P

3 t  s. k' a9 v" ?
- o) B# `, B1 Y' y( a图 5. RequisitePro 文件的启动情形
% ?8 y8 w* J8 p; }
5 b& k7 \' t8 f% ^# g& Q* S7 j8 _* B, w
按照以下的方法,来将 R11 版本中已存在的 Rational RequisitePro 文件分支:
( A+ G6 r1 t( o' S
  • 从 Microsoft Word 菜单中,选择 RequisitePro > Document > Save As,来打开 R10 RequisitePro 文件,并以原始的 Microsoft Word 格式存储文件。
  • 从 RequisitePro 菜单中选择 File > Import。
  • 在 Import Wizard 对话框(图 6,“分支 – Import 文件”)中,选择 Microsoft Word document,然后切换至前面存储的文件并点击 Next
    , @8 c4 w2 G5 i; c
6 @0 F2 D5 \# h6 e( E
图 6. 分支 – 导入文件 1,Withdraw Cash R10.DOC
- P8 P" I1 W8 b2 @6 w: p: v   ]( w3 h' B/ i

8 \! F+ n2 U2 @0 [# v
  • 对于导入的内容,选择 Document only(图 7,“分支 – 导入文件 2”)然后点击 Next* e( D& B9 q' I! a: J1 Z
9 s% [4 {+ z+ L! a( ^2 r
图 7. 分支 – 导入文件 2" K. ], f4 t: K
9 a( g5 V' ?2 P- l: j1 e
" G4 y/ z* _4 t5 U
  • 为新的 Rational RequisitePro 文件提供一个有意义的名字。有一种比较有效的方法就是向名字添加发布的标记。
    . E' S+ t& H9 H5 I( \! z6 _
注意:RequisitePro 文件的名字在每一个项目中必须是独一无二的。
% H4 j) T" q/ L
  • 选择合适的文件类型(在本例中,是用例规约)并点击 OK(参见图 8,“分支 – 导入文件 3”)。+ ~" Z' h* V9 j* \* L
- m2 q: k9 t7 x# |. i
图 8. 分支 – 导入文件 3
: W9 _" t: u( y1 t- I
1 X% U4 b- y1 j3 Y/ a, ?+ ?% L3 ]$ p' e; m
  • 在 Create Document 窗口中,选择 Yes
  • 识别包含的需求需要导入文件的书签,所以选择 No 以回答“您是否想要删除这些书签?”这个问题,因为您需要保持嵌入需求的书签(图 9,“分支 – 导入文件 4”)。
      {2 w2 G7 g4 h/ n# n

" ~' ~: q- c) ?, G图 9. 分支 – 导入文件 4: F0 {; E( p) _2 Q* ~4 d8 y  }

% e( {3 j1 m5 s& w5 k8 `
" ]* |  m  ]- ^% O+ j& k3 _
  • 最后,选择 Commit 按钮(图 10,“分支 – 导入文件 5”)。: |) u! ]8 Q" D
: e" |7 o5 Z7 g$ Y4 M( Z# M* k
图 10. 分支 – 导入文件 5
4 n" o8 u5 U: C
) w/ _( B. J$ N! q2 }5 |( q# _! p* M- h8 {  K, o
在导入文件之后,原始 Rational RequisitePro 文件会有一个一模一样的拷贝(如图 11,“分支 – 被分支的文件及需求”所示,包含标记的需求),而 R11 发布包含有它自己的 RequisitePro 文件(参见图 12,“分支:R10 的 R11 分支”)。
2 W5 ]- s# p6 ]1 D) k" E- ^) T/ l( i% [% ?0 Q
图 11. 分支 - 被分支的文件与需求
! M5 x& q5 n& B$ }! Y8 f
) e! E2 X& B3 P9 z( j7 A5 n4 F* z( j8 x# k6 U0 d% @6 L% c& D5 o. ^
4 x7 b: o# F5 b2 Z6 r
图 12. 分支 - R10 的 R11 分支
, g9 p7 k- `% E' C
8 C& O: k0 }- H$ K/ k' p$ F8 n6 h, x6 G7 ]
注意,在文件的导入期间,已经创建了新的需求。新创建的需求并不是原始需求的拷贝,而是应用默认值的新实例。检查一下,原始的需求是否拥有需要为需求的拷贝输入的默认值。3 }  i! w% k7 O2 T# y3 W6 j# G) N
R11 发布版本现在还包含了一个单独的需求文档及其需求。这些需求可以单独进行编辑,而不用考虑原始的需求文档与需求。
  z) l4 b5 i+ I; x0 a/ L$ l

" |( i2 ^$ t. T; ^( y4 b& m1 b# ^( q* w8 [0 l+ r
6 {" B" a7 N& Y4 k0 C" I+ H& C; m
追踪原始的和分支的版本2 _; [1 N# w6 J- C
在这个简单的例子中,很容易追踪原始的和分支的需求。在拥有数百或者数千需求的实际项目中,您需要一个工具以仔细查看。- ~( C4 h3 f% Q% ?
可以使用的另一种机制,就是创建原始需求与分支需求之间的追溯关系(图 13,“通过追溯关系来追踪原始的和已分支的需求”)。这起到两个目的:; o" o4 I- q0 Y6 Q
  • 有一些文档是为分支需求的起源而建立起来(追溯关系的方向,可以是从原始的需求到分支之后的需求)。
  • 如果对需求所做的变更是在不同的分支中所做的,那么就会为通知团队成员创建一种机制(如果是复杂的用例,那么最好与其他的团队保持联系)。" ^, ^4 I3 D6 N6 e$ t8 d6 X
其中有一条很小的限制条件,那就是追溯的关系不允许是闭环的。因此,您必须要么记录分支要么记录合并关系。
7 E0 V: b, }* z  d
3 e) F* h: x: A5 q# l8 |图 13. 根据追溯的关系来追踪原始的和已分支的需求
& C& B4 U6 _. V 2 J7 I9 y1 s/ a" z
$ {& n/ f$ _' A+ P1 e. E
另一种机制就是使用其他的属性来管理分支或者合并。您可以通过向标为“来自于”和“合并至”的需求类型添加一条文本属性,来记录需求的状态。不能进入来自于则意味着它是一个原始的需求。不能进入合并至则意味着分支的需求尚未得到合并(参见图 14,“使用属性以管理分支/合并”)。+ {& r. H  J# e8 C$ |' d
. _$ i! v) D2 ~8 T! o
图 14. 使用属性以管理分支/合并 ) J' g$ C  e8 v& a) g2 A; f5 l

  w1 L' T6 m- l+ e, I% x; O7 [8 e" G- n; t


# q3 r. q! ]5 K$ K: g% t
8 @  w3 h4 F' o& ~  V( T7 k' o1 a# d! _* D. Z" s
合并一个 RequisitePro 文件8 S) `/ k7 Z2 x6 j7 A' V$ E$ V
如果一个已存在的文件被分支了,那么它会在一定程度上得到更改。这种更改可能一处变更、添加或者删除。我们将会向您展示怎样对分支的需求文档执行这三种变更操作,并完成合并过程,这样您就可以看一下怎样将这些操作集合到原始的需求文档中。用例标题上会有一点的变动:需求 UC4 被删除了,而添加了需求 UC5(图 15,“对已分支的需求文档所做的修改”)。) Y) v0 U  R5 C" a* X/ ~' [

! `) n9 q! R0 I' j5 A图 15. 对已分支的需求文档所做的修改3 |8 B) {/ E  U' i
1 u  ?" v, M, d
" O+ a( [0 T+ M) {) _5 |0 _
在从 Microsoft Word 菜单中应用变更之后,我们会选择 RequisitePro > Document Save 以提交对数据库所做的变更。" k2 ]0 c( E/ s) h% R
现在,将这些变更合并到原始的需求文档之中。首先,您需要创建一个临时文件。
# ]- b; ~* _3 f3 H) \/ r1 Y( ?
  • 从 Microsoft Word 菜单中,选择 RequisitePro > Document Save As,并以原始的 Microsoft Word 格式来存储这些文件。
  • 打开临时文件,并从 Word 菜单中,选择 Insert > Bookmark
    7 g& y6 K& J4 Y
通过双击书签来进行导航。就算没有 RequisitePro 文件,需求文档中每一个需求都仍然会有一个书签。在这个需求文档的例子中,我们有两个书签。一个是用于已编辑过的需求的。另一个是用于已添加需求的(图 17,“已添加的需求的书签”)。
) B  K, ?+ M- U! ?" u
  • 删除与编辑需求相关的所有书签,因为您并不需要 RequisitePro 以在导入期间考虑它。结果如图 18,“已清理过的需求的书签”所示。
  • 在您完成操作之后保存文件。4 S$ e; b1 N/ f* L0 B7 ~8 d. I
! A0 X* v# a5 r6 |
图 16. 已编辑的需求的书签
5 P+ h! y9 O* Y: l' l* s# t5 N; w* ]* ]; y* f9 ^2 o- E! P, ~

2 J* _4 P  ?1 ~$ \$ `/ E& E& X图 17. 已添加的需求的书签
1 R7 D7 R- s' Z. [% C 2 \' H7 O7 n, M8 r  ?0 W

- S2 ?) B, S; F; Q+ a7 ^
: c0 p- X% W  q3 |# j图 18. 已清理过的需求的书签) x% {8 |9 J# }, B8 C

' f, V# U; n6 G1 {: M) C7 `& L' N6 w7 l0 ~( d
您可以将编辑过的临时文件合并到原始的文件之中。
9 F$ K& j0 j' H& t
  • 为了获得原始文件的位置,您可以右击文件并选择 Properties
  • 接下来,在 Document Properties 窗口中,选择 General 项。
  • 您可以从 Directory 区域内复制文件的位置 (查看图 19. 文件属性)。5 N; B# |6 W  G. U6 G: ^" |5 _

6 x# s6 H! E/ O& a; }, h& d图 19. 文件属性视图
9 n$ Y5 u" F8 t+ i4 d+ P' y# k
' W3 q2 l# f( G9 b8 K# c9 u& i' q3 q5 p
  • 从临时的文件中,从 Microsoft Word 菜单中,选择 Tools > 比较和合并文件。
  • 在接下来的窗口中,切换至原始的文件处(Withdraw Cash R10.ucs)。
    & ^  S- y) k0 }( {
差异可以通过接受或者拒绝变更来得到解决。基本上,您需要考虑三种不同的场景(图 20,“合并原始和已分支的文件”)。) p/ [& h% s" ?2 L* E5 e& A( _( N
方案 1:对已存在需求所做的变更
2 P+ p) O6 {6 _& x; x& B需求会同时呈现在原始和分支后的文件中。如果您想要将对分支需求所做的变更转移到原始的需求中,那么原始的书签必须还保留在原始的文件中。在解决这些不同点之后,拒绝所有引用格式变更或者用例删除的变更。您只需要接受对书签内文本所做的编辑操作(如果您想要让变更回到原始处的话,如果不是的话,就拒绝它们)。
2 T( {- y/ G" F3 p场景 2:需求的删除! `0 r4 M9 u" I: o2 g
需求会呈现在原始的文件中,但是会从分支的文件中删除。如果您想要删除原始文件中的需求,那么您可以接受与该部分相关的所有变更。如果您并不想这样做,那么就完全地拒绝它。
( h8 q- s" g$ X9 ]4 h/ i' C场景 3:需求的添加( W  ^/ X: E. w/ w) e- f0 \) s
需求并没有呈现在原始的文件中,而是添加到分支了的文件中。如果您想要在原始的文件中添加需求,那么您可以接受与该部分相关的所有变更。如果您并不想这样做,就完全地拒绝它。8 r( ~4 d0 b  u& m+ W' y

" h; Y- M; s: o6 u& c3 J图 20. 合并原始和已分支的文件
" f7 b' w+ g. F6 v3 s ! e3 }8 V; r3 o
2 c6 u) A$ ]2 h
出于这个例子的考虑,我们想要对原始的文件执行编辑操作、输出操作。因此,在接受和拒绝变更之后,合并结果如图 21,“在 Microsoft Word 中合并后的结果”所示。
4 \! m/ d/ B1 E& ]
  • 完成之后您可以保存原始的文件。. L5 u$ o  ^  A" H3 B- j
重要提示:
8 q1 I( U6 a: x  H6 N& z& M+ |Rational RequisitePro 并没有参与到合并的过程中,所以只有当您 RequisitePro 中打开原始文件之后,RequisitePro 才会检测到所做的变更。8 x, F- w: m' |. M

; d2 u  e9 ~: t3 C图 21. 在 Microsoft Word 中合并后的结果& V4 D, J& E( i% b# x5 R
( L$ l8 w6 d+ R# V( E- q1 S. p9 U

8 e# g% K5 d1 {0 i2 {; k
  • 从 RequisitePro 客户端打开原始的文件。RequisitePro 将会检测到 Microsoft Word 合并文件过程对文档所做的变更(图 22,“RequisitePro 检测到来自外部的变更”)。
    ' R; _( s7 d, ^) `
* N/ R$ ~& r; S9 z
图 22. RequisitePro 探测到来自外部的变更( ]) J! m3 `8 q; [9 R' @
' I3 L. Y6 h9 L9 _, r+ e3 T) R5 n

) r# o% b- ?2 Q, K5 s
  • 点击 Yes 以更改与编辑原始文件的数据库。
  • 在命令行中提供一个有意义的描述(图 23,“RequisitePro 需要一个变更描述”)。( G7 R/ n" _  j# ]9 R
8 f0 n  s! I" b, R& J
图 23. RequisitePro 需要一个变更描述
# z: W& t2 ^6 h- m4 l# d 9 P0 |6 b% D& w2 q: G

- r5 }+ \8 m6 P2 ]5 X) N在更新过程中,RequisitePro 会检测到一个属于分支文件中的需求的书签。对于任意给定的需求 RequisitePro 需要一个单独的位置,所以您可以做一个选择,要么从其他的文件中剪切和粘贴,又或者创建一个拷贝。记住需求文本与属性值有一个完整的拷贝。* {- I' h2 N# o
对于这个例子,创建一个拷贝以避免从 R11 版本中取出所有的需求(图 24,“Requirement Found 视图以及 RequisitePro 内的选项”)。
  N0 F6 g" }$ B9 ~; o( P1 M8 A
% o4 c0 L% @# c0 w, `3 ^图 24. Requirement Found 视图以及 RequisitePro 内的选项$ V$ U- _3 s8 M& Z$ k7 z9 h1 i9 b
2 u  l+ Z" E! [" f

( Y$ O5 @/ E, }5 U+ {R10 需求文档中的最终合并结果如图 25 所示,“Rational RequisitePro 中的合并结果”。
: Z/ ?/ w, b4 h  r8 G5 B- K注意:
: k- j% u3 ]0 j. I如果存在有被编辑过的需求,属性值并不会像对添加的需求那样得到自动的复制。相反,属性值需要由人手动检查和修改。在最后一步中,改变分支的属性以反映合并操作已被执行的信息(图 26,“根据属性显示合并的状态”)。$ X* k4 P+ U7 c$ {( t% V
一个精巧的视图组合,过滤所有可疑的链接(发生过变更的)以及属性(尚未执行的合并操作的),对哪些需求有差异以及哪些需求需要合并提供了一个清晰的理解。! v4 c. M9 d, o+ r7 l

1 U- M# q/ `$ N1 \( z1 _, q  i4 J图 25. Rational RequisitePro 中的合并结果
. S$ `- ?9 Q3 r
  W. K3 r! V, m( l6 c0 C0 N$ w+ Z) _* M5 J! l# g; X
& v% _: Q: Y7 z+ v/ e  m" c$ G. T
图 26. 根据属性显示合并的状态
4 Q: o, J$ z2 r9 W
4 A% P. V& }- ~# O2 J9 F; b/ U+ Q


- h; B( d7 ~" Q! C0 w) Q. M$ `7 n' ~2 J1 ~  i( J

0 C7 R- U5 A6 y- p. O( R" P总结# Y# m! n* H1 d! ?! @
并行处理基于文档的需求,看起来好像为项目增加了一些灵活性。但并行工作也意味着需要付出更多的精力,尤其是在解决那些同时发生的变更时。虽然 Rational RequisitePro 不是为这样的一种环境所设计的,也因此没有提供分支或者合并功能,但它在某些程度上还是可以支持这一使用场景。由于这些限制因素的存在,在一个非常关键的项目中对这种使用场景的使用应该有所控制。, q. ], [* X; W; r

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 楼主| 发表于 2011-3-16 01:52:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2011-6-20 13:16:11 | 显示全部楼层
看不懂啊,是不是我太初级了。不会用
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2018-12-14 14:41 , Processed in 0.065166 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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