SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5557|回复: 2

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

[复制链接]
发表于 2011-3-16 01:50:15 | 显示全部楼层 |阅读模式
本帖最后由 技术狂人 于 2011-3-16 01:56 编辑 : Z6 t4 o8 ?$ Y

- P. V+ G& _1 m, M$ n您首先需要知道的内容
  L+ e5 C# L: }. x" K, |9 @本文关注于基于文档的需求,比如用例需求规约。基于数据库的需求可能需要不同的并行开发策略。8 l  p  V5 \# J  ?' a
IBM® Rational® RequisitePro® 文件必须以 Microsoft® Word® 格式存储(而不是以 Rational RequisitePro 格式存储),而且包含的需求绝对不能包含有层级(父-子)关系。) P; h, H* j8 [
本文描述的场景使用 Rational RequisitePro 7.1.0 版本与 Microsoft Office 2003 进行了测试,并是在 Microsoft® Windows® XP Service Pack 2 上运行。如果您想进一步了解基本的思想与技术,那么您最好创建一个测试环境,因为如果数据没有得到合适的处理的话,那么有些不当的操作将有可能使数据受到不可恢复的毁坏。/ T" p. F' f% |/ z/ L$ X1 B

/ B; W# W- n9 n  B8 B! `: z基础知识! B6 E, I) B, _. J# x
Rational RequisitePro 没有提供像 IBM® Rational® ClearCase® 那样的分支和合并机制。在 ClearCase 中存储 RequisitePro 格式的文件,并想从 ClearCase 的分支和合并功能中获得的便利并不能解决这个问题,因为 ClearCase-Microsoft Word 合并管理器并没有考虑存储在 RequisitePro 数据库内的嵌入需求。
9 ~* c) v% ^2 R: z( V唯一的解决方法是使用本地的 Rational RequisitePro 功能,并创建 RequisitePro 文件与需求的单独实例。有了这些单独的实例,团队就可以独立地工作,然后将后面进行的变更组合到一起。附加的需求属性可以帮助您管理需求从哪里分支以及合并到哪里。原始需求与分支需求之间的追溯关系,可以帮助您对其他团队对需求所做的变更能保持一致。/ Q4 K9 M- T2 @2 ?# P: _' L' A
Microsoft Word 自身包含了文件的比较合并功能,并且可以用于合并一个文件的不同版本。1 A( l0 q  B8 m! t4 K$ b# W- H4 }

2 h) {) y4 d0 H
2 [6 p% g: {! V& x
# D) y: f' l" {  K6 U6 E& b
配置 Rational RequisitePro* M# A, n4 \; E- q! Y6 k0 j
对于 Microsoft Word 而言,即使文件的扩展名不是 .doc 的话(例如,对于用例规约则是.ucs),也会有什么不同。但是,Word 并不会使用 Rational RequisitePro 的格式来存储文件。
2 z* q0 {' O. X9 g) B) d
  • 从 RequisitePro 菜单中,点击 File > Project Administration > Properties
  • 从 Project Properties 窗口中,选择 Documents 项,然后选中“以 RequisitePro 格式来存储文件”复选框(参见图 1,“改变 RequisitePro 文件格式”)。
    3 s# X! J. G2 N3 O' T7 S

( X1 h' D% W4 n2 }: u3 J5 H& D/ @图 1. 改变 RequisitePro 文件格式) ^, {: n7 _8 E$ c& y/ [
8 _9 I: B$ R1 B, U$ `* l

- B! n- c  j1 A/ d4 s7 r8 Y. x为了增加 Rational RequisitePro 对于分支或者合并场景的支持力度,您需要向每一种需求类型添加两个附加的属性,分支或者合并操作会影响到这些需求类型。5 j6 x9 j5 e7 B5 e8 q' ?4 V* o" Y$ _
  • 从 RequisitePro 菜单中,选择 File > Project Administration > Properties
  • 从 Project Properties 窗口中,选择 Attributes 项,并添加两个名为 originates from (来自于)和 merged to(合并到)的附加文本属性(参见图 2,“ 为影响到的需求类型添加支持的属性”)。这两个属性含有需求从什么地方分支,以及需求合并到什么地方的信息。
  • 应用一个默认的值,例如一个连字符(-),以显示当前没有任何值的属性。
    / y$ R( T6 w* [5 v: P9 S
% h/ Y5 r# L# J
图 2. 对影响到的需求类型添加支持的属性. {7 Z) S* v& l( Q

0 ^2 s6 `$ @. r/ Y% T
; X1 }! F) M1 _( l9 K; x( s并发开发的项目通常根据团队或者版本来进行组织。项目的组织结构也可以在 RequisitePro 中的包结构中来反映。在本例中,我们将会根据版本,R10 和 R11 来组织结构,如图 3 所示,“在包结构中反映项目的组织结构”。' V% i; U. r( X4 \% U" D2 Q$ {

) U% U; O) Z- g% p$ g图 3. 在包结构中反映项目的组织情况9 p8 C3 J) c8 j

, z4 x6 J) j. N- d) z( |# b$ q2 p/ i8 G% t


4 P: D/ G: M# B4 d4 W. ^6 A% b& p# s2 l5 C0 A
; L) o% \) W* |1 c; }% n5 q
为一个 Rational RequisitePro 文件建立分支
/ X3 B8 N& u$ @" L% H为了让这个例子尽可能的简单,在 R10 发布包中只有一个用例规约。R11 分支可以分支于 R10 版本(对于产品即将到来的 1.1 版本,编辑用例需求)。用例规约只包含有两个需求(参见图 4,“RequisitePro 数据库中的启动情形”,与图 5,“RequisitePro 文件的启动情形”):. o9 f* ^8 Y5 g- n4 p  U
  • UC1:取出现金
  • UC2:这是一个活跃的……
    ; g: H! @* ]0 \$ ~3 Y  ]7 {5 V
- |! c7 \) x9 d
图 4. RequisitePro 数据库中的启动情形( @8 S' b/ }( }" B. L
" T6 l4 Z" a4 U. s
! [: W! z( z8 X5 `0 c
8 W: I  V1 J0 B! D$ k/ Z3 ~
图 5. RequisitePro 文件的启动情形' a5 T% x" k1 f5 a) G

9 e! e# \, q3 n4 R7 R4 Q" k( s  q3 Y) E( B; T
按照以下的方法,来将 R11 版本中已存在的 Rational RequisitePro 文件分支:: f' |' W$ K" D
  • 从 Microsoft Word 菜单中,选择 RequisitePro > Document > Save As,来打开 R10 RequisitePro 文件,并以原始的 Microsoft Word 格式存储文件。
  • 从 RequisitePro 菜单中选择 File > Import。
  • 在 Import Wizard 对话框(图 6,“分支 – Import 文件”)中,选择 Microsoft Word document,然后切换至前面存储的文件并点击 Next
    3 }) ?7 V: S9 _9 V2 C" c+ F
9 C9 ~/ u2 v6 Y- d( [
图 6. 分支 – 导入文件 1,Withdraw Cash R10.DOC
& `1 Q5 x2 O$ l7 S " f$ G) x; K& G+ ]/ \: ]
  R7 \8 x- ]0 d2 A% H2 w4 T1 O) r
  • 对于导入的内容,选择 Document only(图 7,“分支 – 导入文件 2”)然后点击 Next
    ( T7 W$ t  v0 q% r6 R. ?2 h
; X' L) B6 @+ _: p- c, V
图 7. 分支 – 导入文件 2
3 W8 A* N* d) x5 n: O- ~! n - K) }2 W+ R- Z& J1 C
% {, h$ T: \- \' t+ I+ O* a4 e6 f
  • 为新的 Rational RequisitePro 文件提供一个有意义的名字。有一种比较有效的方法就是向名字添加发布的标记。1 D# U  j2 T3 j
注意:RequisitePro 文件的名字在每一个项目中必须是独一无二的。
/ U- h' b4 ?, D6 ?# G$ {
  • 选择合适的文件类型(在本例中,是用例规约)并点击 OK(参见图 8,“分支 – 导入文件 3”)。
    $ i% s# f2 v  T/ }5 V+ D% u3 @
& e/ @& O5 P8 E. {" P! k
图 8. 分支 – 导入文件 3
: H/ \4 C( a" d& o6 J ; I( d% w. F, ]' w* H
$ P& q6 [7 Q, ?; ]- B
  • 在 Create Document 窗口中,选择 Yes
  • 识别包含的需求需要导入文件的书签,所以选择 No 以回答“您是否想要删除这些书签?”这个问题,因为您需要保持嵌入需求的书签(图 9,“分支 – 导入文件 4”)。4 {' m/ w& B6 |% p9 n
5 ]: i5 a# G. V& A
图 9. 分支 – 导入文件 4
: U) S8 D4 \' h6 ]
. S& m$ A, R5 \; x" J8 E: N
6 Q- b6 d9 w5 f  A1 y! ~) }
  • 最后,选择 Commit 按钮(图 10,“分支 – 导入文件 5”)。
    7 [7 A) Q% ~0 m7 s
* ^2 f/ N6 F& O
图 10. 分支 – 导入文件 5
+ y" V( A% b4 n% j1 B% z" r, f, q+ O 2 @8 j$ e) {% s
- ~' O/ G2 F8 i9 k! a' p
在导入文件之后,原始 Rational RequisitePro 文件会有一个一模一样的拷贝(如图 11,“分支 – 被分支的文件及需求”所示,包含标记的需求),而 R11 发布包含有它自己的 RequisitePro 文件(参见图 12,“分支:R10 的 R11 分支”)。- \- r& H& d- U& d
; G1 V/ A5 M0 e
图 11. 分支 - 被分支的文件与需求
8 Z1 F* H  l# D" h + Y5 n9 S7 L$ J
$ r5 y6 }% P( I3 W
% B* G3 P/ o+ a/ D; f" d
图 12. 分支 - R10 的 R11 分支- ]0 N5 w+ H) e' S
7 [$ ?4 Q7 f/ H- z: O6 D2 v, H

7 G% }- u4 m& m: ^, `, F注意,在文件的导入期间,已经创建了新的需求。新创建的需求并不是原始需求的拷贝,而是应用默认值的新实例。检查一下,原始的需求是否拥有需要为需求的拷贝输入的默认值。5 [1 m. I/ O2 O7 [: {' C
R11 发布版本现在还包含了一个单独的需求文档及其需求。这些需求可以单独进行编辑,而不用考虑原始的需求文档与需求。
# v+ @: R% b& ^( o( l
) ^  J7 z- [3 |9 x
5 }) q" O# x7 c: u+ z! T+ M

  q/ ]* m4 w5 u0 O. M- ?8 C追踪原始的和分支的版本2 |6 r1 h# z9 P  T
在这个简单的例子中,很容易追踪原始的和分支的需求。在拥有数百或者数千需求的实际项目中,您需要一个工具以仔细查看。6 r0 q/ o1 C( U
可以使用的另一种机制,就是创建原始需求与分支需求之间的追溯关系(图 13,“通过追溯关系来追踪原始的和已分支的需求”)。这起到两个目的:0 F* r+ u. ^( W+ L8 _
  • 有一些文档是为分支需求的起源而建立起来(追溯关系的方向,可以是从原始的需求到分支之后的需求)。
  • 如果对需求所做的变更是在不同的分支中所做的,那么就会为通知团队成员创建一种机制(如果是复杂的用例,那么最好与其他的团队保持联系)。
    5 X5 Q: r  l4 v# ~" i4 l
其中有一条很小的限制条件,那就是追溯的关系不允许是闭环的。因此,您必须要么记录分支要么记录合并关系。7 M- l5 [  T% \

; t7 l+ {8 i* x/ ~: |图 13. 根据追溯的关系来追踪原始的和已分支的需求
% Z, B- n$ k% y$ v4 ^# P ( N( {4 I8 k3 N5 k9 e' a7 u- M  e

. h# u0 R+ `9 k( Q9 s另一种机制就是使用其他的属性来管理分支或者合并。您可以通过向标为“来自于”和“合并至”的需求类型添加一条文本属性,来记录需求的状态。不能进入来自于则意味着它是一个原始的需求。不能进入合并至则意味着分支的需求尚未得到合并(参见图 14,“使用属性以管理分支/合并”)。
6 m: `) O* @. M
8 F  \3 t3 h9 B! g- P2 \图 14. 使用属性以管理分支/合并
& B% j8 r, D$ ]) m6 e
/ W, G* P8 Z4 Z- v6 |  ^9 m# @, B5 l. K


* @1 z  @9 u4 {) t: N  P( O- C% M3 L& d: ^: O: P
6 n9 W$ k2 d5 `- W" _1 v* N. ^% w9 T
合并一个 RequisitePro 文件8 @. l& S5 g7 U) ]3 u
如果一个已存在的文件被分支了,那么它会在一定程度上得到更改。这种更改可能一处变更、添加或者删除。我们将会向您展示怎样对分支的需求文档执行这三种变更操作,并完成合并过程,这样您就可以看一下怎样将这些操作集合到原始的需求文档中。用例标题上会有一点的变动:需求 UC4 被删除了,而添加了需求 UC5(图 15,“对已分支的需求文档所做的修改”)。7 v9 l& x  @  w$ q5 F
% y8 L- I0 n, j4 Y: M/ \2 ^& Y
图 15. 对已分支的需求文档所做的修改
% }3 }2 d: z& P0 F* z. Y; B
6 b/ @# z5 ]3 s; Q" R8 N9 i4 Y1 [! f# C* \
在从 Microsoft Word 菜单中应用变更之后,我们会选择 RequisitePro > Document Save 以提交对数据库所做的变更。
# Q3 \9 u5 b( s% q8 W" e: ?现在,将这些变更合并到原始的需求文档之中。首先,您需要创建一个临时文件。
; d  _3 y9 `+ E  a
  • 从 Microsoft Word 菜单中,选择 RequisitePro > Document Save As,并以原始的 Microsoft Word 格式来存储这些文件。
  • 打开临时文件,并从 Word 菜单中,选择 Insert > Bookmark
      ^( S  G" ?, e
通过双击书签来进行导航。就算没有 RequisitePro 文件,需求文档中每一个需求都仍然会有一个书签。在这个需求文档的例子中,我们有两个书签。一个是用于已编辑过的需求的。另一个是用于已添加需求的(图 17,“已添加的需求的书签”)。, \( K8 I6 _  ]7 I" H1 @. Z
  • 删除与编辑需求相关的所有书签,因为您并不需要 RequisitePro 以在导入期间考虑它。结果如图 18,“已清理过的需求的书签”所示。
  • 在您完成操作之后保存文件。5 ]+ T- ?* u# }" J$ a/ R9 F' _. u0 f
1 H9 Z0 |" S% p# X3 T
图 16. 已编辑的需求的书签6 R; Q/ ]/ d  G' h5 {8 {( y- ]5 `
1 u+ x0 s: E6 ?8 [1 Y& `
% @3 n/ |& ~. |: O* Z: m
图 17. 已添加的需求的书签) X2 |4 x$ Z9 W9 @4 N: M% F

7 _" A9 |8 Z+ o, m7 }# |8 B: m. Q1 p. U+ ^
# b5 b, K7 ~/ C
图 18. 已清理过的需求的书签
9 T% ~2 T+ y1 Z; K
( ^7 ~4 G# ?1 Y$ W$ j! ~
) P+ |  g" X4 i# Q* `; q6 }0 P您可以将编辑过的临时文件合并到原始的文件之中。
8 N1 O1 A$ g# n* ^2 M) W. ?
  • 为了获得原始文件的位置,您可以右击文件并选择 Properties
  • 接下来,在 Document Properties 窗口中,选择 General 项。
  • 您可以从 Directory 区域内复制文件的位置 (查看图 19. 文件属性)。" p; F) ?& g/ Q5 n, r; w1 C  s

5 U2 g( X* r0 e' ]图 19. 文件属性视图
- g/ E2 J* J1 L# x+ G % v, H% d9 _; M1 ]% k* Y

, C7 D0 c- E+ n0 r; ~
  • 从临时的文件中,从 Microsoft Word 菜单中,选择 Tools > 比较和合并文件。
  • 在接下来的窗口中,切换至原始的文件处(Withdraw Cash R10.ucs)。
    & Q8 u" s" V7 q! T' k# i
差异可以通过接受或者拒绝变更来得到解决。基本上,您需要考虑三种不同的场景(图 20,“合并原始和已分支的文件”)。% \' \# P" c1 P0 Y- j& O* G
方案 1:对已存在需求所做的变更9 E3 O/ g1 r& T. A* X- p9 |( }
需求会同时呈现在原始和分支后的文件中。如果您想要将对分支需求所做的变更转移到原始的需求中,那么原始的书签必须还保留在原始的文件中。在解决这些不同点之后,拒绝所有引用格式变更或者用例删除的变更。您只需要接受对书签内文本所做的编辑操作(如果您想要让变更回到原始处的话,如果不是的话,就拒绝它们)。8 A/ o, z* k3 \/ ]: m+ M9 k. F. G$ W1 ]
场景 2:需求的删除
& M0 V6 ?: L4 u* d) W- ?: H+ e3 D需求会呈现在原始的文件中,但是会从分支的文件中删除。如果您想要删除原始文件中的需求,那么您可以接受与该部分相关的所有变更。如果您并不想这样做,那么就完全地拒绝它。
: w- X: t9 s7 L( @# @; ?* F场景 3:需求的添加
) ~! I' T+ B* Y! F需求并没有呈现在原始的文件中,而是添加到分支了的文件中。如果您想要在原始的文件中添加需求,那么您可以接受与该部分相关的所有变更。如果您并不想这样做,就完全地拒绝它。0 `/ n3 J5 _4 Y; F
0 B% a, m1 k: ~4 {' Z; e/ \
图 20. 合并原始和已分支的文件
1 n# U# ]- W  ^) j" H$ ]8 ^7 ` 9 v( I; z  F* _7 ]( h# O& @  M* h
/ c3 l- E: ?' {3 A4 K6 M" j
出于这个例子的考虑,我们想要对原始的文件执行编辑操作、输出操作。因此,在接受和拒绝变更之后,合并结果如图 21,“在 Microsoft Word 中合并后的结果”所示。
/ _7 i6 G1 R- n- e  C2 F( N0 ~' \
  • 完成之后您可以保存原始的文件。
    . Y6 I* C  f; t" U) H% O; \
重要提示: * U4 B* E8 l! n$ l$ W6 |6 P' W
Rational RequisitePro 并没有参与到合并的过程中,所以只有当您 RequisitePro 中打开原始文件之后,RequisitePro 才会检测到所做的变更。
2 [# N+ I! j: a" n! v! x. e$ n
# _/ ~8 |/ O& i图 21. 在 Microsoft Word 中合并后的结果
5 G& O4 z' l* R+ E8 [8 p5 b& d9 t7 k + \5 c; i& |+ T- c, B5 I- S* O
% r8 Z1 }* }/ J: I5 q  @
  • 从 RequisitePro 客户端打开原始的文件。RequisitePro 将会检测到 Microsoft Word 合并文件过程对文档所做的变更(图 22,“RequisitePro 检测到来自外部的变更”)。: I  U0 o% y( @# f% |! ]* L

, [- V* B) `0 B; K5 C7 N/ J图 22. RequisitePro 探测到来自外部的变更2 H' m6 a0 `; l+ ?, O0 M

. W# t& i" w3 ^) h5 L8 b, v8 O" D" `8 Q
6 k6 H  L/ O7 R8 O
  • 点击 Yes 以更改与编辑原始文件的数据库。
  • 在命令行中提供一个有意义的描述(图 23,“RequisitePro 需要一个变更描述”)。
    $ C/ L% Y0 a$ y. `. y
, L$ @  u5 q4 V* ^+ V
图 23. RequisitePro 需要一个变更描述
- a; {# j# f! T" N1 S# K
. |& k' q- Y! J' _+ N9 t9 R, p/ o, N. Y6 @0 f
在更新过程中,RequisitePro 会检测到一个属于分支文件中的需求的书签。对于任意给定的需求 RequisitePro 需要一个单独的位置,所以您可以做一个选择,要么从其他的文件中剪切和粘贴,又或者创建一个拷贝。记住需求文本与属性值有一个完整的拷贝。* P- A2 \. w9 B- H, [. h
对于这个例子,创建一个拷贝以避免从 R11 版本中取出所有的需求(图 24,“Requirement Found 视图以及 RequisitePro 内的选项”)。
. p* v0 p# c- T5 |; W% t6 z8 y  ]. Y7 H8 o
图 24. Requirement Found 视图以及 RequisitePro 内的选项
* g5 Z0 [- N; Z# g$ c& ~ ' {5 G# `6 `' P
& V( W4 b/ o% ~9 w
R10 需求文档中的最终合并结果如图 25 所示,“Rational RequisitePro 中的合并结果”。
4 [. O0 z9 h4 e+ X6 P  K注意:
6 o! {5 @/ ?! y3 d: z% j如果存在有被编辑过的需求,属性值并不会像对添加的需求那样得到自动的复制。相反,属性值需要由人手动检查和修改。在最后一步中,改变分支的属性以反映合并操作已被执行的信息(图 26,“根据属性显示合并的状态”)。1 P+ ?$ p4 W4 R7 l: m
一个精巧的视图组合,过滤所有可疑的链接(发生过变更的)以及属性(尚未执行的合并操作的),对哪些需求有差异以及哪些需求需要合并提供了一个清晰的理解。8 |+ J* g2 j; |9 ~

8 F7 H; Y" ^; `- c; x0 `图 25. Rational RequisitePro 中的合并结果5 U2 K+ x2 q' X. i

4 p8 T: K, o, k# m
: O( N" {; ?9 {: F9 Z4 b7 a- n8 O6 {0 G$ K9 Q: z
图 26. 根据属性显示合并的状态
: p$ s6 e" x: x* X( k! H4 m
) V+ J' E: l. ?, s
. L& b& D' N3 q" ]1 |# E+ g* P

. w/ K* r' {$ G: M3 b8 z$ J$ E! n1 y& b
, x" ]9 ~0 X2 L4 \/ G- E0 y, q
总结1 C. S5 ?; X) t: t2 ~, m
并行处理基于文档的需求,看起来好像为项目增加了一些灵活性。但并行工作也意味着需要付出更多的精力,尤其是在解决那些同时发生的变更时。虽然 Rational RequisitePro 不是为这样的一种环境所设计的,也因此没有提供分支或者合并功能,但它在某些程度上还是可以支持这一使用场景。由于这些限制因素的存在,在一个非常关键的项目中对这种使用场景的使用应该有所控制。
' s: U. _3 Q, i1 `9 |

本帖子中包含更多资源

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

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-1-18 06:37 , Processed in 0.074771 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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