SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 107388|回复: 196

[原创] 三库(开发库、受控库、静态库)的概念及个人的理解

  [复制链接]
发表于 2007-3-1 10:25:15 | 显示全部楼层 |阅读模式
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了…… 0 T) V5 H/ w& }* W9 E
三库的概念被弄得挺严重,甚至被实现为物理上的多个库……3 P0 a) F. A6 `" z# h. x9 p; Q6 T% L
9 \( U: o: A: |* x  f2 X% e: E1 [, }6 r
这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……' R6 I* J/ N: _1 E1 l
8 q0 W- s) D* O) Q
==原文位置==- }* \7 D  `( W: E1 n. n, t& e
(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!)
# ?5 Y0 N1 ~6 J. A2 e" J/ y; l3 A; f9 z5 g2 Y
CMMI V1.0 8 y- L9 k# }- _2 M" m9 r
=> level 2 - ?+ f2 V4 e  b6 o- M3 {# u& q
=> Configuration Management2 I) C5 B9 P% \
=> SG 1 Estabish Baselines % ]/ k3 {) s/ x/ J, a
=> SP 1.2 Establish a Configuration Management System1 }3 j) t' U1 R' E& d
=> Subpractices 2. Store and retrieve configuration items in the configuration management system.' J* S# S. g9 w
+ N9 z; k, a+ B, u
==原文==
. \6 |  Z5 D& m! |2 `( u9 S- B# o4 N, t* A+ r9 y& H! q2 x! ], P5 Z
Examples of configuration management systems include the following:  D$ y1 P5 [% Q4 L& G
8 h  W+ \" l5 x7 Y8 ]0 Z
Dynamic (or developer's) systems contain components currently being created or revised.
: R/ ^( h9 H, ]6 |) {! i2 m( |9 DThey are in the developer's workspace and are controlled by the developer.
/ m% {7 C0 h3 [: {, l- i7 eConfiguration items in a dynamic system are under version control.
* a' x6 d9 n6 C$ |5 T
' n& w/ b* a0 k9 Z7 }Master (or controlled) systems contain current baselines and changes to them.
4 Y( N6 P7 G$ gConfiguration items in a master system are under full configuration management as described int ths process area.
. y. p) j/ v- o4 p6 O4 p! j, S" i) _3 h' z3 s. i8 S/ Z' o
Static systems contain archives of various baselines released for use.
+ r* M3 u# l3 B' Z- }9 C. y2 C' eStatic systems are under full configuration management as described in this process area.
: f0 c/ k5 w; D8 w+ V: g1 @* P9 G( d; ~7 H
==翻译==
% O$ L/ X1 ]- @$ s5 f. v1 F2 K7 d% ^, F) V
(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)
4 Z8 y' D) g5 N1 |9 r, s7 R/ y7 M) q; c5 `# w, w1 q4 g
CMMI V1.0 ! G5 P  V9 K/ i. r+ |
=> 第二级 3 u" T, ~9 c; J- C4 {
=> 配置管理
  l7 e$ O6 }3 M* D=> SG 1 建立基线   Y3 T! k' E4 J9 I1 ?8 p
=> SP 1.2 建立配置管理系统
' ]- M/ y) W4 a& D' T9 K=> 子实践 2. 在配置管理系统中存取配置项
! o, L& W! x/ Y  K& ]% q3 [9 f8 |* b
配置管理系统举例如下:
; R6 Z7 _: u, x- b, `( Q8 p6 a0 F, w* @  E: i
动态(或开发者)系统,包含当前正在产生或修订的组件。0 s6 a* o! B! ?, X: j
它们在开发者的工作区,而且由开发者所控制。
- K6 Z7 C& X+ w2 s3 ~) I3 l: C属于动态系统的配置项,在版本控制之下。( p) C) H1 o- ^- E9 Z
% U; @1 M& H/ T) c- u+ G
主(或受控)系统,包含当前的基线和基线的变更。0 l+ i4 }2 m& l) q; `) M
属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。
& K" n. a0 E/ t1 a
5 J$ j* R( |4 [9 H5 C' ?& t8 z稳定的系统,包含已分发使用的各种基线的保存档。
5 {. i- w' F  Q9 P稳定的系统,在本过程域所描述的完全的配置管理之下。
/ {4 n) ~# v7 A8 Q( e& O; F. R4 k* [3 K% U! [  p
* I! R$ F6 [, N) @2 t/ n/ g5 ~
==个人理解==
7 {+ \+ I' j# c
8 b! ~. b" o! S  \, |首先,三库仅仅是举例,在实践中,并不是一定要弄出三个库来。
0 ^& Z' N6 {. D4 ^: ~其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。
( [3 e; g+ p9 [# C+ q根据定义,开发库可以大致映射为开发工程师的个人工作空间,在开发工程师本机上,个人目录下。当然,对于稍大的任务,也可以映射为存储库里的一个任务分支。+ U& Q# n( ]) k$ Z. _8 W! k
而受控库,则是开发工程师相互协作、交流最新工作成果的地方。大致上,可以映射为版本控制工具(svn/cvs/cc……)的repository(存储库)。这里,可能有不同的分支/目录做不同的用途,可能会打标签、基线。1 l, e8 }/ i) ^7 `/ o+ k
静态库,又称基线库,指的是那些重要的基线,这些基线标志着项目的重要里程碑,或者这些基线被Release(发布)给了“外界”。在比较简单的版本控制工具里,一般可以用特定标签命名规范来把它们从其他标签、基线中区别出来;在SVN中,可以设置一个特别的Tag目录。而在比较复杂的版本控制工具里,也可以用基线/标签的某种属性(质量级别)来表达。例如,当某条基线通过了系统测试后,就把它的质量级别promote(提升)到“通过系统测试”。
$ _; {( k$ z' b# @& e; L6 c# Y8 w对于静态库,再补充一点:对于这些基线,我们通常不仅要记录源代码,最好也保存一下编译结果/安装包。这样将来用起来会比较方便。编译结果/安装包一般就不要放到版本控制工具里去了,除非你受了商业宣传的蛊惑…… 在合适的机器上建个共享目录,设置合适的权限,来存储编译结果/安装包,一般就可以了。1 T9 [' P- ]2 X  l) k0 w
' p( t2 C/ C( v: N# a2 J

$ }: R; h, o& J. @" c个人意见。大家拍砖吧^_^

评分

参与人数 1威望 +5 金钱 +5 收起 理由
rocky_rup + 5 + 5 精彩的解释

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-3-22 12:08:11 | 显示全部楼层
谢谢大家的指导,特别感谢流水先生把我提的问题进行详细讨论
9 h7 v* V8 O6 b. q! K/ e
! j0 l) ^; l7 j( \) `“逻辑上独立,物理上一起”( p$ K# S- R0 ~( K6 ?- M

$ J' E3 L0 ]9 m( }- _& D# X+ w现在基本明白了,还要在以后实践中继续体会
回复 支持 0 反对 1

使用道具 举报

发表于 2007-3-2 17:40:08 | 显示全部楼层
嗯,一般配置管理工具都会支持配置库的建立。9 p$ a6 o8 [; y2 `

, G7 E8 N! b+ q" y4 {! S但如何建立和管理还是需要结合公司的实际情况。
回复 支持 1 反对 0

使用道具 举报

发表于 2007-3-1 14:51:39 | 显示全部楼层
楼主写得很详细,比较赞同这种想法!0 C  p& r/ L1 H+ n! Q, y
% l9 b' F5 V+ {' y; K
尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。"5 o: v, m% b+ {- ]

" E1 s$ J# ^8 L9 _: f很多人可能都存在误解,觉得一定是要有严格意义的三个库.
回复 支持 反对

使用道具 举报

发表于 2007-3-1 15:01:29 | 显示全部楼层
如果在物理上将这三个库分开,管理起来就过于繁琐了
回复 支持 反对

使用道具 举报

发表于 2007-3-1 15:10:32 | 显示全部楼层
现在很多公司在CMMI的考虑上面可能是为了过级,书上说什么内容就在库里面给出什么内容。$ x5 [, W  m4 w  j, L& F. Q( y) E
理解其中的意思,选择正确的工具进行受控的管理
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-1 15:53:51 | 显示全部楼层
谢谢大家!谢谢!其实三库的概念是我自己不太吃得准的概念,写出来特别想知道大家的意见…… 看到大家亦有类似的见解,很高兴啊……
回复 支持 反对

使用道具 举报

发表于 2007-3-1 17:32:28 | 显示全部楼层
逻辑上独立,物理上一起
回复 支持 反对

使用道具 举报

发表于 2007-3-1 18:47:52 | 显示全部楼层
三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.( A6 B2 `+ N" `% m# K( U+ _
比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.
回复 支持 反对

使用道具 举报

发表于 2007-3-1 20:13:14 | 显示全部楼层

愚见

个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。
% g* W  }- Y4 l/ e6 r
: C- i$ p$ V* T9 R, ?. {- I动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。
; G7 M4 Q5 t! B) x) Y; a" O7 B7 k" ]" A, N2 ~
受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。
2 m7 h  c) F8 S' V% `0 T" `  |  o( T/ G
静态库应该主要指阶段性的成果,基线,里程碑成果等。
回复 支持 反对

使用道具 举报

发表于 2007-3-2 10:19:03 | 显示全部楼层
原帖由 longtcg 于 2007-3-1 18:47 发表0 T: N+ N1 \5 E; G1 O" [9 J. j, R
三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求./ S: z2 x6 k0 ?9 Q# K/ H4 O
比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.
( a! d2 |& u' h2 l6 `. k
CC中的View就相当于这个所谓的“开发库”1 b2 M7 \9 B) r0 j" Y0 m* x$ w
& X* f1 a  y! K) y5 A; c
大部分CM工具都会在一定程度上支持“工作空间管理”
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-3-19 16:37 , Processed in 0.088325 second(s), 9 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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