SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6152|回复: 2

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

[复制链接]
发表于 2011-3-16 01:50:15 | 显示全部楼层 |阅读模式
本帖最后由 技术狂人 于 2011-3-16 01:56 编辑 ) v/ P6 j# l9 `8 Q  y# v

+ P- D3 {5 a) ]: D" ]7 O$ e您首先需要知道的内容; F% {8 r/ v1 b: s/ @, }
本文关注于基于文档的需求,比如用例需求规约。基于数据库的需求可能需要不同的并行开发策略。
" W) R5 i" J+ E& H% E  QIBM® Rational® RequisitePro® 文件必须以 Microsoft® Word® 格式存储(而不是以 Rational RequisitePro 格式存储),而且包含的需求绝对不能包含有层级(父-子)关系。
1 t# n' z2 d0 U- R本文描述的场景使用 Rational RequisitePro 7.1.0 版本与 Microsoft Office 2003 进行了测试,并是在 Microsoft® Windows® XP Service Pack 2 上运行。如果您想进一步了解基本的思想与技术,那么您最好创建一个测试环境,因为如果数据没有得到合适的处理的话,那么有些不当的操作将有可能使数据受到不可恢复的毁坏。, Y* g" R" g5 e3 U* B+ y1 Q. g% T

: B0 `; H/ E/ E! s" n( r基础知识
( Y, f# r/ \2 A* Z9 G7 x$ XRational RequisitePro 没有提供像 IBM® Rational® ClearCase® 那样的分支和合并机制。在 ClearCase 中存储 RequisitePro 格式的文件,并想从 ClearCase 的分支和合并功能中获得的便利并不能解决这个问题,因为 ClearCase-Microsoft Word 合并管理器并没有考虑存储在 RequisitePro 数据库内的嵌入需求。& p7 l; E5 _# E- e
唯一的解决方法是使用本地的 Rational RequisitePro 功能,并创建 RequisitePro 文件与需求的单独实例。有了这些单独的实例,团队就可以独立地工作,然后将后面进行的变更组合到一起。附加的需求属性可以帮助您管理需求从哪里分支以及合并到哪里。原始需求与分支需求之间的追溯关系,可以帮助您对其他团队对需求所做的变更能保持一致。$ S" m, l1 J  ?1 G" Q, L- }
Microsoft Word 自身包含了文件的比较合并功能,并且可以用于合并一个文件的不同版本。: S0 x2 Q. s- o, K- p, S5 C

" F7 e: w( R* f) Y( O  R
' ?; O8 @! b5 }+ P& k
. a  V4 U$ p- {% I/ {
配置 Rational RequisitePro
# Y1 X) v# c2 i对于 Microsoft Word 而言,即使文件的扩展名不是 .doc 的话(例如,对于用例规约则是.ucs),也会有什么不同。但是,Word 并不会使用 Rational RequisitePro 的格式来存储文件。
/ e' Q9 T& Y0 x. U& i- l5 R
  • 从 RequisitePro 菜单中,点击 File > Project Administration > Properties
  • 从 Project Properties 窗口中,选择 Documents 项,然后选中“以 RequisitePro 格式来存储文件”复选框(参见图 1,“改变 RequisitePro 文件格式”)。
    2 i, c$ D9 s3 f: Z4 o0 e
9 {& H+ S6 D) t! o% C  U; r) Y
图 1. 改变 RequisitePro 文件格式
' T4 ?, \( E2 B! d1 l7 e : m/ a9 l4 P2 M* E; U
" `7 O5 o" M1 D# \
为了增加 Rational RequisitePro 对于分支或者合并场景的支持力度,您需要向每一种需求类型添加两个附加的属性,分支或者合并操作会影响到这些需求类型。
' b; O0 `) w6 }2 x& ~, ^  x: y
  • 从 RequisitePro 菜单中,选择 File > Project Administration > Properties
  • 从 Project Properties 窗口中,选择 Attributes 项,并添加两个名为 originates from (来自于)和 merged to(合并到)的附加文本属性(参见图 2,“ 为影响到的需求类型添加支持的属性”)。这两个属性含有需求从什么地方分支,以及需求合并到什么地方的信息。
  • 应用一个默认的值,例如一个连字符(-),以显示当前没有任何值的属性。" f# g: g. U5 k/ w$ k" m
, a! S( B0 u1 u6 b' U, ?
图 2. 对影响到的需求类型添加支持的属性9 R- ~& R4 x9 b) H& y) v
  S; d2 L: J" |9 U0 j7 Z8 H
. X( a  P1 y; z8 B; b
并发开发的项目通常根据团队或者版本来进行组织。项目的组织结构也可以在 RequisitePro 中的包结构中来反映。在本例中,我们将会根据版本,R10 和 R11 来组织结构,如图 3 所示,“在包结构中反映项目的组织结构”。( K! N2 `& l, ]; D% x+ U2 ~

& L, v: u, N6 G, ^图 3. 在包结构中反映项目的组织情况- Z4 k2 ?' W6 ^7 P4 r) x

! o( Y- V$ d$ _: V+ q* g" o0 D7 Z" n3 T. n, L; ?$ j


" n  w! N# {1 W' }: P( g- H$ w5 z& n1 N, f* s* p+ M

7 n- I% f% {9 k5 Y6 D" W3 n" @为一个 Rational RequisitePro 文件建立分支
6 w( J  G$ `4 ~为了让这个例子尽可能的简单,在 R10 发布包中只有一个用例规约。R11 分支可以分支于 R10 版本(对于产品即将到来的 1.1 版本,编辑用例需求)。用例规约只包含有两个需求(参见图 4,“RequisitePro 数据库中的启动情形”,与图 5,“RequisitePro 文件的启动情形”):9 v4 d8 o) x4 w1 f' v$ g4 D* U
  • UC1:取出现金
  • UC2:这是一个活跃的……4 N+ z& E5 [% K/ ^  ?( P/ d

  k& i$ Z4 k/ G$ W" v+ R! w图 4. RequisitePro 数据库中的启动情形3 Q+ x! M% i% n  h' u; D* O

6 \% }3 ~3 ^3 t& Q3 a6 Y4 \$ r5 J3 F8 F. \- v% V! Y* F

5 z+ h: D3 {6 @, m5 ]图 5. RequisitePro 文件的启动情形
" y! Q) P0 p1 ^  y, U8 U 2 q5 J. O/ I' U! f  @

  b1 y1 b4 H& A5 m  p/ K按照以下的方法,来将 R11 版本中已存在的 Rational RequisitePro 文件分支:
& ]/ n1 M, j1 {9 V8 ]  J* E7 _
  • 从 Microsoft Word 菜单中,选择 RequisitePro > Document > Save As,来打开 R10 RequisitePro 文件,并以原始的 Microsoft Word 格式存储文件。
  • 从 RequisitePro 菜单中选择 File > Import。
  • 在 Import Wizard 对话框(图 6,“分支 – Import 文件”)中,选择 Microsoft Word document,然后切换至前面存储的文件并点击 Next: M5 z/ s  A& L% M  }
3 P9 Q& s% @/ R% Z
图 6. 分支 – 导入文件 1,Withdraw Cash R10.DOC' ^8 a% X/ k& v) x4 [- D0 O# Y

- _) g& h3 P1 w% ?0 f+ M* c5 M1 R, m' l' w  h0 Z1 R" X
  • 对于导入的内容,选择 Document only(图 7,“分支 – 导入文件 2”)然后点击 Next
    0 o% ^: O, s% S% }: f

" W1 p  ?4 B) {9 M+ `+ Q) @图 7. 分支 – 导入文件 2# E$ t) ^% L5 G  \) V: n, m- U

* u; \6 V3 N8 K
* H4 s" Q/ [# X2 E& [
  • 为新的 Rational RequisitePro 文件提供一个有意义的名字。有一种比较有效的方法就是向名字添加发布的标记。: ?9 W4 a0 Y. C& k. z# I4 B( m
注意:RequisitePro 文件的名字在每一个项目中必须是独一无二的。' \6 C2 Q5 G9 {' R, P
  • 选择合适的文件类型(在本例中,是用例规约)并点击 OK(参见图 8,“分支 – 导入文件 3”)。
    8 T% `' C$ `9 i$ a0 b$ A1 d  E1 H
) \0 R! G( l: D) C& t
图 8. 分支 – 导入文件 3( t/ d0 e1 @' F5 [
4 O+ ?) l( @6 L5 q1 z3 Y% @
0 _) L, u) v$ i9 Z0 l
  • 在 Create Document 窗口中,选择 Yes
  • 识别包含的需求需要导入文件的书签,所以选择 No 以回答“您是否想要删除这些书签?”这个问题,因为您需要保持嵌入需求的书签(图 9,“分支 – 导入文件 4”)。) a6 g4 J  ^; {3 J! k$ W" [' ]2 e- D
  S# _8 |2 \  x+ k/ |! ], X; h0 r
图 9. 分支 – 导入文件 4
- c( D( E2 k! [* p7 ?
2 z9 w" p- s$ A8 ^+ ]( S$ `/ }$ K
  • 最后,选择 Commit 按钮(图 10,“分支 – 导入文件 5”)。
    # t* U, w# i2 f+ k! N: r2 ]- y- e

: @3 h7 L& h8 I$ P% h3 B' ?6 c图 10. 分支 – 导入文件 5
0 ^1 `* F+ g' g& |: n; F  I 7 `8 M5 H& P: r2 {
& E3 N" F+ l( x' W
在导入文件之后,原始 Rational RequisitePro 文件会有一个一模一样的拷贝(如图 11,“分支 – 被分支的文件及需求”所示,包含标记的需求),而 R11 发布包含有它自己的 RequisitePro 文件(参见图 12,“分支:R10 的 R11 分支”)。
: q) u+ _# j" Z6 b! X( a, c8 x4 p* n3 q; _# T7 v+ u. g; E' Z6 E4 x
图 11. 分支 - 被分支的文件与需求
; U5 v6 t* I( c' a
, f/ |* \2 ~6 o4 o+ n0 a3 o
- c! n) J) y# o$ Q5 `4 r/ x2 \* [+ G! x6 }# }6 {; H7 q
图 12. 分支 - R10 的 R11 分支6 l* g9 C1 v( X7 e9 t

" z" b0 v) H# F2 O- F/ b
7 Y& |& ]: ?0 ^注意,在文件的导入期间,已经创建了新的需求。新创建的需求并不是原始需求的拷贝,而是应用默认值的新实例。检查一下,原始的需求是否拥有需要为需求的拷贝输入的默认值。
! Z2 r) D& h. ^9 E" fR11 发布版本现在还包含了一个单独的需求文档及其需求。这些需求可以单独进行编辑,而不用考虑原始的需求文档与需求。  ]' ^5 y& ^& r( W. {: G  i

2 h3 x* P1 a, x6 _8 k

/ k+ L" n, Q7 @, J% p+ X$ \0 g
( {' x- X5 L0 B追踪原始的和分支的版本
2 Y5 J5 d7 n% j5 @. {+ w9 b8 k在这个简单的例子中,很容易追踪原始的和分支的需求。在拥有数百或者数千需求的实际项目中,您需要一个工具以仔细查看。0 W! p7 B& F2 h1 N2 L+ R- K  T" W
可以使用的另一种机制,就是创建原始需求与分支需求之间的追溯关系(图 13,“通过追溯关系来追踪原始的和已分支的需求”)。这起到两个目的:
4 q1 h1 N* {0 X! b$ v
  • 有一些文档是为分支需求的起源而建立起来(追溯关系的方向,可以是从原始的需求到分支之后的需求)。
  • 如果对需求所做的变更是在不同的分支中所做的,那么就会为通知团队成员创建一种机制(如果是复杂的用例,那么最好与其他的团队保持联系)。: n0 i) t' s7 q% s$ R. H0 s
其中有一条很小的限制条件,那就是追溯的关系不允许是闭环的。因此,您必须要么记录分支要么记录合并关系。
" Q8 u6 ?8 `0 f8 X# U. I% g* E0 F0 t: ~" d& D; ]8 V0 }* Q
图 13. 根据追溯的关系来追踪原始的和已分支的需求
. m/ ^) a: ]* V# Z8 q# u
0 D# Y! n9 c& _: Q# Z7 V8 f! S3 d% b# ~
另一种机制就是使用其他的属性来管理分支或者合并。您可以通过向标为“来自于”和“合并至”的需求类型添加一条文本属性,来记录需求的状态。不能进入来自于则意味着它是一个原始的需求。不能进入合并至则意味着分支的需求尚未得到合并(参见图 14,“使用属性以管理分支/合并”)。
) H& y2 l8 k7 n
8 c6 u3 I/ r3 Y) k/ [图 14. 使用属性以管理分支/合并
- G8 `$ F+ y& i  J! w( | & g5 u/ T7 \( t. y0 K
: p7 Y& |# Q* t0 Y8 f

% Z9 q" L  |" n/ x5 p
& L9 m4 d6 S& J/ A; X& l" x

  f0 l% c! ?" p. ]合并一个 RequisitePro 文件7 C- k9 p- R3 g, j+ [( {/ L$ Q
如果一个已存在的文件被分支了,那么它会在一定程度上得到更改。这种更改可能一处变更、添加或者删除。我们将会向您展示怎样对分支的需求文档执行这三种变更操作,并完成合并过程,这样您就可以看一下怎样将这些操作集合到原始的需求文档中。用例标题上会有一点的变动:需求 UC4 被删除了,而添加了需求 UC5(图 15,“对已分支的需求文档所做的修改”)。4 l* `; a  F( V5 i

- r% H$ G, Z) u4 c/ F5 P8 z" M$ x9 d图 15. 对已分支的需求文档所做的修改6 N; a; L& P  w' u, K; O! z
* A* t* u# E) y
! X6 J# U! v' J) S- c: Z6 B
在从 Microsoft Word 菜单中应用变更之后,我们会选择 RequisitePro > Document Save 以提交对数据库所做的变更。* G0 k5 o+ e" U: N
现在,将这些变更合并到原始的需求文档之中。首先,您需要创建一个临时文件。+ b- K8 ]- s0 p# i; X" S  m
  • 从 Microsoft Word 菜单中,选择 RequisitePro > Document Save As,并以原始的 Microsoft Word 格式来存储这些文件。
  • 打开临时文件,并从 Word 菜单中,选择 Insert > Bookmark+ V, e( ^2 I1 c4 U# [
通过双击书签来进行导航。就算没有 RequisitePro 文件,需求文档中每一个需求都仍然会有一个书签。在这个需求文档的例子中,我们有两个书签。一个是用于已编辑过的需求的。另一个是用于已添加需求的(图 17,“已添加的需求的书签”)。: I( ]* r' Q: U2 Q$ F
  • 删除与编辑需求相关的所有书签,因为您并不需要 RequisitePro 以在导入期间考虑它。结果如图 18,“已清理过的需求的书签”所示。
  • 在您完成操作之后保存文件。
    , A; q% \6 ]& J0 ?+ d

: v, Y8 W' T  H+ _" Y* u9 Y. _! |图 16. 已编辑的需求的书签
! ?8 ^. p( q  n: {0 u' e( G, Z6 S( ?7 Z
5 ]7 H3 f, R. a0 ^& t$ o$ W8 A5 E
图 17. 已添加的需求的书签3 l+ q% W0 \% G/ B3 b
% N6 c7 V0 v2 h
- S/ x6 O6 A5 F$ B. j7 g) n

$ Y5 O1 }+ J! u0 J, l图 18. 已清理过的需求的书签3 ~9 Z5 v& K- Y6 I

+ u1 t! }% t, c
2 R0 x4 z/ N/ y7 [您可以将编辑过的临时文件合并到原始的文件之中。
8 l) K/ I0 y3 Z3 D
  • 为了获得原始文件的位置,您可以右击文件并选择 Properties
  • 接下来,在 Document Properties 窗口中,选择 General 项。
  • 您可以从 Directory 区域内复制文件的位置 (查看图 19. 文件属性)。
    6 W- P7 ~( m+ f# m3 t
" O& `; U7 v# T; M8 P
图 19. 文件属性视图
1 K  A2 A  ?. I- ^+ |   J* f; w; `% [" s" e% D

# b4 C5 w' h* z
  • 从临时的文件中,从 Microsoft Word 菜单中,选择 Tools > 比较和合并文件。
  • 在接下来的窗口中,切换至原始的文件处(Withdraw Cash R10.ucs)。: X5 |: ]; t3 z4 O8 _
差异可以通过接受或者拒绝变更来得到解决。基本上,您需要考虑三种不同的场景(图 20,“合并原始和已分支的文件”)。
2 K! b+ [: k, P3 o方案 1:对已存在需求所做的变更2 s5 E/ I+ c5 g# T
需求会同时呈现在原始和分支后的文件中。如果您想要将对分支需求所做的变更转移到原始的需求中,那么原始的书签必须还保留在原始的文件中。在解决这些不同点之后,拒绝所有引用格式变更或者用例删除的变更。您只需要接受对书签内文本所做的编辑操作(如果您想要让变更回到原始处的话,如果不是的话,就拒绝它们)。
' H' x: c) q+ E场景 2:需求的删除
9 G1 l4 J( ]7 I( _- V需求会呈现在原始的文件中,但是会从分支的文件中删除。如果您想要删除原始文件中的需求,那么您可以接受与该部分相关的所有变更。如果您并不想这样做,那么就完全地拒绝它。" |& w& s3 z5 f! k
场景 3:需求的添加
! k4 A" p) X5 }: [6 b需求并没有呈现在原始的文件中,而是添加到分支了的文件中。如果您想要在原始的文件中添加需求,那么您可以接受与该部分相关的所有变更。如果您并不想这样做,就完全地拒绝它。% O. ^. X( A5 L

& ^& [, ^, ?3 u; |: s图 20. 合并原始和已分支的文件/ s- s9 c$ N, W' s! ^9 k

8 @7 V( v9 E$ q0 m7 d- c: d" o' c5 G/ C* Z. E
出于这个例子的考虑,我们想要对原始的文件执行编辑操作、输出操作。因此,在接受和拒绝变更之后,合并结果如图 21,“在 Microsoft Word 中合并后的结果”所示。# U2 I. |- F/ T; ~& G1 S3 ^& m
  • 完成之后您可以保存原始的文件。" T9 U$ l0 |* n2 G, F
重要提示: & ?) R- L/ A  m+ M3 D9 u: t
Rational RequisitePro 并没有参与到合并的过程中,所以只有当您 RequisitePro 中打开原始文件之后,RequisitePro 才会检测到所做的变更。
( V6 _7 T/ V( ^, p4 T6 z3 k- e8 q$ J- ]% r8 L" ~! @" o. |
图 21. 在 Microsoft Word 中合并后的结果
/ c) x9 T% s, n' U" S* V 9 m! `: d% n) G' v+ J# }

7 ], ^6 @1 G5 T
  • 从 RequisitePro 客户端打开原始的文件。RequisitePro 将会检测到 Microsoft Word 合并文件过程对文档所做的变更(图 22,“RequisitePro 检测到来自外部的变更”)。
    & }% T, ?9 X2 E) z% J0 c7 `
/ f) n& w: w- ^3 v9 [
图 22. RequisitePro 探测到来自外部的变更
- i' r3 ^* j" U" [/ \, W  g
. m2 x9 C- l7 E) W9 Y( y. h' k  x, H+ k+ v7 y5 n' {
  • 点击 Yes 以更改与编辑原始文件的数据库。
  • 在命令行中提供一个有意义的描述(图 23,“RequisitePro 需要一个变更描述”)。) f$ [. f8 b: Y# r& A/ e
0 p; L. q4 p6 S& d' c
图 23. RequisitePro 需要一个变更描述4 D; \) f7 h4 X9 c5 _0 H) T

) I* x$ I* e; `% I9 r) x; m: `- x' ~3 R) i; Y5 @
在更新过程中,RequisitePro 会检测到一个属于分支文件中的需求的书签。对于任意给定的需求 RequisitePro 需要一个单独的位置,所以您可以做一个选择,要么从其他的文件中剪切和粘贴,又或者创建一个拷贝。记住需求文本与属性值有一个完整的拷贝。
# V% {7 q' v% A5 v- n对于这个例子,创建一个拷贝以避免从 R11 版本中取出所有的需求(图 24,“Requirement Found 视图以及 RequisitePro 内的选项”)。6 f1 t& L6 n; l3 o1 C
& o8 ?9 O/ c$ B
图 24. Requirement Found 视图以及 RequisitePro 内的选项8 R+ ^8 a$ ^# X9 Y$ p$ J4 C5 c  M
3 ]6 U! _. S5 \( }$ h9 I

. V: U9 k2 l% tR10 需求文档中的最终合并结果如图 25 所示,“Rational RequisitePro 中的合并结果”。
- D0 c+ L& B1 U# D) m注意: , \( E$ ^- B4 G( A/ C' [
如果存在有被编辑过的需求,属性值并不会像对添加的需求那样得到自动的复制。相反,属性值需要由人手动检查和修改。在最后一步中,改变分支的属性以反映合并操作已被执行的信息(图 26,“根据属性显示合并的状态”)。. G! s: Z( D+ l0 i  L$ `( D; ?* r
一个精巧的视图组合,过滤所有可疑的链接(发生过变更的)以及属性(尚未执行的合并操作的),对哪些需求有差异以及哪些需求需要合并提供了一个清晰的理解。7 m% T3 Y6 {; v8 }
# e. F6 g6 a/ Y* |
图 25. Rational RequisitePro 中的合并结果6 t5 [2 l4 b& w" A  r) u* Q1 B$ t* y% r

" c4 Y& f( ?, ^* h/ l* p5 K& K1 W" n
9 O0 H" c5 z5 k1 }) b* f
图 26. 根据属性显示合并的状态' v5 s/ R8 _+ W, O( ]" x' j

, f; s- \+ @" g! f( B' l7 `* E0 p% x# b* x1 u

) C' U4 m1 X3 ?  P) x
  k' N/ x2 {+ @" O# z2 s5 _& A
, Q& D: X& y! q4 Q* _3 x& I
总结
" G1 r8 c9 w/ u8 c并行处理基于文档的需求,看起来好像为项目增加了一些灵活性。但并行工作也意味着需要付出更多的精力,尤其是在解决那些同时发生的变更时。虽然 Rational RequisitePro 不是为这样的一种环境所设计的,也因此没有提供分支或者合并功能,但它在某些程度上还是可以支持这一使用场景。由于这些限制因素的存在,在一个非常关键的项目中对这种使用场景的使用应该有所控制。
% ~3 K" a+ V; E8 D3 u, ?

本帖子中包含更多资源

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

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2018-9-22 23:45 , Processed in 0.059770 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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