SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 105579|回复: 196

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

  [复制链接]
发表于 2007-3-1 10:25:15 | 显示全部楼层 |阅读模式
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了…… 5 f/ k& Z% D5 r/ s/ z7 N$ k
三库的概念被弄得挺严重,甚至被实现为物理上的多个库……1 e/ z) T; ?2 z' D; ?
! ~# E9 @6 O/ r3 r) R$ }
这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……+ l$ Z, ~  x7 X) z6 h
  Q0 \1 K# p* C% }0 Q6 x+ J0 {
==原文位置==
4 `4 |4 i' O3 G# @, M(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!)5 q+ D' f% Y1 _3 I

4 [. o, }( ]( e1 b) p. u( oCMMI V1.0 5 H# K1 @/ }5 Z: w: Y
=> level 2
! D8 i9 U# c0 m' |% C& w7 T' F=> Configuration Management
$ c) V% K# A+ X5 q$ {=> SG 1 Estabish Baselines , u% G) m# \# `  y, u$ I$ _3 s
=> SP 1.2 Establish a Configuration Management System1 L% p# Y( \* m& u, X+ m* {
=> Subpractices 2. Store and retrieve configuration items in the configuration management system.
+ h/ Q4 x. H2 y$ ^# B* p7 a2 ~
0 ^/ f& }- Z( c( T- n==原文==
" _5 k" V9 o6 P5 w/ t1 G
- g1 o5 N4 ~  j2 S9 L& vExamples of configuration management systems include the following:
0 B6 a' c. f3 S$ u2 t) {3 |" X  H3 r; @  F" g# K' P
Dynamic (or developer's) systems contain components currently being created or revised./ K2 O% T/ u( d& ~0 c( n2 I
They are in the developer's workspace and are controlled by the developer.
' }  Y1 o  [& S+ e. KConfiguration items in a dynamic system are under version control.
; b: A& Z( b& \+ q; h
$ ?9 ^4 I' K0 G; R& N3 o0 PMaster (or controlled) systems contain current baselines and changes to them.
1 ?+ i( R5 C/ J  t/ [! aConfiguration items in a master system are under full configuration management as described int ths process area.3 O. I$ U8 E! Q5 M; q
) S) [+ @) L) s5 {
Static systems contain archives of various baselines released for use.
) c; H. C$ E8 s1 r4 uStatic systems are under full configuration management as described in this process area.
1 l1 f& G; j  O: ?, l4 A' q. i0 U( B% N5 P
==翻译==
! \1 e' K5 s  |; |
8 m6 c, k2 m) l- Z( @& m(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)
1 c* l6 L% C! k7 W1 T( ^+ K
: R! K: a; v; O2 ICMMI V1.0
+ K' ^$ j( d: b* e3 F=> 第二级
$ ~" h' f  V' K+ t=> 配置管理* F8 Y- x% G. L6 X
=> SG 1 建立基线
$ w% x" r6 g5 j* y=> SP 1.2 建立配置管理系统
" O& H# j" p0 L- h- y=> 子实践 2. 在配置管理系统中存取配置项
. [/ R8 A& h% K, [3 F, }# K. x2 ~) B9 S4 F- D7 j
配置管理系统举例如下:$ Y% E; i0 Q9 ]5 y- X0 c0 ~
# j! T" \8 C3 t5 D) t, B" m3 ]' ~
动态(或开发者)系统,包含当前正在产生或修订的组件。
- e, G, C; i2 m- ]  e它们在开发者的工作区,而且由开发者所控制。- k# G* F" d/ ~5 l! [+ ?! i; k. y1 D
属于动态系统的配置项,在版本控制之下。; N- z9 [3 s& k* v8 {

1 f5 z& c, C  y$ |, G& k( J主(或受控)系统,包含当前的基线和基线的变更。* z/ D/ [& P. B0 ^3 E
属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。7 o  u! u( U$ X* ?1 [8 k

6 S" d. @8 u: A. C" u稳定的系统,包含已分发使用的各种基线的保存档。! E$ Z7 b* f. ^( U- L* K+ v
稳定的系统,在本过程域所描述的完全的配置管理之下。* X& {% p& i4 t) q
% `8 `7 A4 ^/ p' w

) T& Z9 }# Q0 o* n1 o==个人理解==- W6 P5 f5 ?3 l8 q7 L  K
; d. h( x) Y3 J0 A! {6 `7 n
首先,三库仅仅是举例,在实践中,并不是一定要弄出三个库来。
$ w/ j) Y* o! C其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。
. U' e# {2 {% c& a1 C. D根据定义,开发库可以大致映射为开发工程师的个人工作空间,在开发工程师本机上,个人目录下。当然,对于稍大的任务,也可以映射为存储库里的一个任务分支。
: p$ i& ~% x- X& `而受控库,则是开发工程师相互协作、交流最新工作成果的地方。大致上,可以映射为版本控制工具(svn/cvs/cc……)的repository(存储库)。这里,可能有不同的分支/目录做不同的用途,可能会打标签、基线。
) ~. C6 K' k) E; f+ z. L5 g静态库,又称基线库,指的是那些重要的基线,这些基线标志着项目的重要里程碑,或者这些基线被Release(发布)给了“外界”。在比较简单的版本控制工具里,一般可以用特定标签命名规范来把它们从其他标签、基线中区别出来;在SVN中,可以设置一个特别的Tag目录。而在比较复杂的版本控制工具里,也可以用基线/标签的某种属性(质量级别)来表达。例如,当某条基线通过了系统测试后,就把它的质量级别promote(提升)到“通过系统测试”。
& a5 H# o" q0 U( K& J对于静态库,再补充一点:对于这些基线,我们通常不仅要记录源代码,最好也保存一下编译结果/安装包。这样将来用起来会比较方便。编译结果/安装包一般就不要放到版本控制工具里去了,除非你受了商业宣传的蛊惑…… 在合适的机器上建个共享目录,设置合适的权限,来存储编译结果/安装包,一般就可以了。
4 I2 ~# N/ S6 m! W9 O, \" F
/ n* @/ D+ y; \; Z# E( {# u# O* {5 G1 z
个人意见。大家拍砖吧^_^

评分

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

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-3-22 12:08:11 | 显示全部楼层
谢谢大家的指导,特别感谢流水先生把我提的问题进行详细讨论3 n; A0 W4 A; E2 W4 I
% a' Y! j% K4 B" j" d0 M
“逻辑上独立,物理上一起”- u% T5 I  z5 g1 Q
' W8 u% M5 H* w
现在基本明白了,还要在以后实践中继续体会
回复 支持 0 反对 1

使用道具 举报

发表于 2007-3-2 17:40:08 | 显示全部楼层
嗯,一般配置管理工具都会支持配置库的建立。1 q3 v3 o( \  N" M

% s% u3 e' X: J但如何建立和管理还是需要结合公司的实际情况。
回复 支持 1 反对 0

使用道具 举报

发表于 2007-3-1 14:51:39 | 显示全部楼层
楼主写得很详细,比较赞同这种想法!
, K( T  n; a3 c% \% v, G4 I0 E1 X 4 ]; b7 G8 T* |; e. s3 z5 I
尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。"- l1 E" ~: L) T8 n4 K3 i6 r' P

* q- k# V5 L, `' U* [  H很多人可能都存在误解,觉得一定是要有严格意义的三个库.
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2007-3-1 15:10:32 | 显示全部楼层
现在很多公司在CMMI的考虑上面可能是为了过级,书上说什么内容就在库里面给出什么内容。
0 S- C: I5 Q6 X0 U理解其中的意思,选择正确的工具进行受控的管理
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

愚见

个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。
" o0 q/ h/ U, v1 W6 |9 ]2 j- w. J! i$ Y; p( k0 \/ Q, ]
动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。
6 J6 H) j$ q* L$ E( |1 p" k! g4 [( n; g/ W
受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。
- z/ N9 G, H8 Q" b: m8 `3 b; h" `* ^- M/ p
静态库应该主要指阶段性的成果,基线,里程碑成果等。
回复 支持 反对

使用道具 举报

发表于 2007-3-2 10:19:03 | 显示全部楼层
原帖由 longtcg 于 2007-3-1 18:47 发表) o( `7 K/ P/ y6 s+ L  V6 I
三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.
/ U1 |' |) \5 G- O+ \3 k: P6 D" K比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.

* a% R9 L& u7 }7 H' i- ^) ]( cCC中的View就相当于这个所谓的“开发库”
( S6 R: i7 d0 |, @$ D) a$ ^% Y9 J) Z4 G! t' M  d3 l$ R
大部分CM工具都会在一定程度上支持“工作空间管理”
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2018-11-17 20:02 , Processed in 0.072257 second(s), 9 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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