SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 108958|回复: 196

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

  [复制链接]
发表于 2007-3-1 10:25:15 | 显示全部楼层 |阅读模式
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了…… . ]! S; h6 h9 y9 l
三库的概念被弄得挺严重,甚至被实现为物理上的多个库……! y! u- o2 ~- u, E  r1 V9 n
7 F) F: m9 b' P3 t5 B1 T. j
这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……. K4 ?# r$ v" F
( R$ V" ?: e$ d8 f7 o# b
==原文位置==
, {3 E' Q& Z6 l(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!)* N3 B0 h) @% O' |

6 r) D/ W" X9 N) b. o5 dCMMI V1.0
3 ~6 y' t2 V! ^=> level 2 3 T% J& ~$ S& H; B( r$ T' e
=> Configuration Management
9 m- ^% ^  h7 p5 [! o% s% \( f=> SG 1 Estabish Baselines * f+ A& z" u6 m6 W' Y, j
=> SP 1.2 Establish a Configuration Management System
) I2 @& s  w! U5 I7 E1 m8 \3 ?=> Subpractices 2. Store and retrieve configuration items in the configuration management system.
3 z$ X; ~1 k. C9 z; @8 D9 f. L) _! g4 R* e) |
==原文==
8 |0 V2 s: s+ W& ]7 {1 ^' Z- `
) }9 [; `0 ^* |* _. C$ @5 D: {Examples of configuration management systems include the following:
- A* N, q* _! u. }" r
+ X4 a, u- c" `1 F$ ~$ @* P% CDynamic (or developer's) systems contain components currently being created or revised.% b2 X7 a/ c5 e, k+ Q8 k6 _
They are in the developer's workspace and are controlled by the developer.$ Y1 e& x" i( P7 W
Configuration items in a dynamic system are under version control.
8 G# i( n& l/ c7 ~' C* k3 q5 b6 q" m
Master (or controlled) systems contain current baselines and changes to them.9 d$ L" ^( X3 k
Configuration items in a master system are under full configuration management as described int ths process area.
5 W1 d, K' g7 ?- b4 {
1 w% w  I) R1 i8 xStatic systems contain archives of various baselines released for use. 5 s- M' |! u' c5 |1 ~& X6 Z; I3 N/ h
Static systems are under full configuration management as described in this process area.
* R+ P" V6 T9 G8 |+ X/ ?6 i7 X4 m/ u- q3 X7 o3 L4 A
==翻译==: m( n& e' j+ f: B# s

) c) C& r: Z4 i' W+ y! K(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)
; B' v9 _6 U' [0 Y( a$ |' D8 T1 ]& W, o! G/ d
CMMI V1.0 . F' e: z. r* w+ b1 v6 R! w6 f
=> 第二级 % j1 t2 L* s% G0 l# j" H4 F
=> 配置管理
6 ]/ y' B+ V6 N  T1 t# L" u( g  G=> SG 1 建立基线
. M' j+ C  s$ N& W  Q" A2 w4 c=> SP 1.2 建立配置管理系统
) ]' }. U: c  ^7 o1 I; r2 Q=> 子实践 2. 在配置管理系统中存取配置项6 O. i; N2 ^& b6 d* o( e

/ m. b! k+ C2 i0 E3 J: A# z3 v+ N配置管理系统举例如下:
; u8 w6 w  Z% C7 }: ?% x- r! G% \( M5 i3 ]; Y* y
动态(或开发者)系统,包含当前正在产生或修订的组件。
, C: k! ^6 Z+ \. o: F+ P( {它们在开发者的工作区,而且由开发者所控制。# @/ Q( j' f% B0 }
属于动态系统的配置项,在版本控制之下。
; o- S4 L3 M8 _8 D+ c: u! R8 M) c! b, x! d: U' T
主(或受控)系统,包含当前的基线和基线的变更。
9 ~, a5 u! \9 S( ?: V) R; c1 n6 x属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。' [% w8 m" m) W+ ^4 C

! s# T. i$ u; p: O/ t# M1 M稳定的系统,包含已分发使用的各种基线的保存档。
# c: [2 j6 [1 O, I稳定的系统,在本过程域所描述的完全的配置管理之下。- p/ y/ _( v6 e+ J% X- h0 \2 v

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

评分

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

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-3-22 12:08:11 | 显示全部楼层
谢谢大家的指导,特别感谢流水先生把我提的问题进行详细讨论
  o) n6 V& O9 B. w5 O% }6 E. Z/ F* M/ q, I" k+ t  T' l2 v. }
“逻辑上独立,物理上一起”
7 h! r! }% G$ b/ {' A. z' v! n. N) r* R  [- b+ y- [) n
现在基本明白了,还要在以后实践中继续体会
回复 支持 0 反对 1

使用道具 举报

发表于 2007-3-2 17:40:08 | 显示全部楼层
嗯,一般配置管理工具都会支持配置库的建立。4 @7 {: K3 L4 O7 c% s* M6 M3 {
- l( o- Y+ B. ^* }1 f( \( ?  Y
但如何建立和管理还是需要结合公司的实际情况。
回复 支持 1 反对 0

使用道具 举报

发表于 2007-3-1 14:51:39 | 显示全部楼层
楼主写得很详细,比较赞同这种想法!: N' F6 Q* c7 V! X7 b0 R" f7 u9 n, Q

. f7 A4 {: f  m  p尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。"
) D; E, k' v" a$ a: l6 o
& E0 }5 D. |: O. M2 x很多人可能都存在误解,觉得一定是要有严格意义的三个库.
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

愚见

个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。; t: G; X$ V! t! u/ j. b3 f  V
; \$ M9 [. L$ z3 d4 j
动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。
/ U  U% u/ P& d" ?3 o; |* K0 G; [0 D: ], z; I$ ]5 x: t2 ]. W+ S1 f
受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。: w" C  q8 |7 q' h# K2 o4 y6 ]
3 T5 x  `: \* ]6 {
静态库应该主要指阶段性的成果,基线,里程碑成果等。
回复 支持 反对

使用道具 举报

发表于 2007-3-2 10:19:03 | 显示全部楼层
原帖由 longtcg 于 2007-3-1 18:47 发表
9 q: `6 {) y& ~2 X三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.( @6 Q# h# s4 n5 q" e" q
比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.
! h! V4 S- d# t; ~
CC中的View就相当于这个所谓的“开发库”
' C& v( d& i4 [
9 K2 S* ^2 X* t. {) Z- W; ^2 K5 E. \大部分CM工具都会在一定程度上支持“工作空间管理”
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-6-18 05:42 , Processed in 0.077727 second(s), 10 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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