SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 106581|回复: 196

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

  [复制链接]
发表于 2007-3-1 10:25:15 | 显示全部楼层 |阅读模式
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了…… 6 I' D+ |" n) F3 {" a
三库的概念被弄得挺严重,甚至被实现为物理上的多个库……3 |- l. x" ]8 i( r# F
0 z( K5 R7 O! p! d! `9 W; _6 M5 [! O1 X
这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……8 _+ `8 ^0 N) n! s9 a' h
2 x$ v$ E) c3 H9 f
==原文位置==7 v% F) P) d3 F7 G
(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!)
3 q$ i% a) G! s+ I4 M+ U" J! V6 t: [
CMMI V1.0
0 F4 z+ U& [5 ^2 L=> level 2 : y! {8 c6 h, x3 w  K: ~( b
=> Configuration Management+ e+ |+ t8 f# k2 M
=> SG 1 Estabish Baselines
/ o8 [8 s: A4 h# a5 [3 t: k=> SP 1.2 Establish a Configuration Management System  c  M9 ]. j# [6 s5 ^% L# o. Z
=> Subpractices 2. Store and retrieve configuration items in the configuration management system.
4 q6 E4 s  a' }  w4 x  ~$ o9 g
9 h# S3 l7 r, f% f- _; |5 w) w==原文==
$ h3 l7 @9 s4 E" {! v9 h8 q, |/ n
! a' ]  K3 H& g4 s. r3 L: U. iExamples of configuration management systems include the following:8 x; A/ q4 d7 R" D, @  @: j

1 U- c1 {: y2 E4 kDynamic (or developer's) systems contain components currently being created or revised.
& ~7 O; Y; M4 J2 L6 }They are in the developer's workspace and are controlled by the developer.
$ K1 K+ k- y, C" c9 t! wConfiguration items in a dynamic system are under version control.3 |7 b: H: Y/ O" F+ s! E
# C$ f2 y& m$ s7 w& [
Master (or controlled) systems contain current baselines and changes to them.
6 Q0 F  u+ D2 [* j9 b9 g' ^Configuration items in a master system are under full configuration management as described int ths process area.2 f) x5 W& \  l' D9 v  a
% q" k5 p  e( v+ h, k; |* H
Static systems contain archives of various baselines released for use. 3 r% D8 f; C  y' ?1 `: u' z
Static systems are under full configuration management as described in this process area." d9 s4 ?9 @; g0 b! k6 S

% c; G" e5 B/ a* M  h==翻译==3 ?* ?0 ^5 [" z. v  w

: G. g8 L& C9 K0 p! K& p+ C(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)) a. Q; [# ~# r; {

1 m' n2 W6 a: j! E+ U/ ~, C3 W! }CMMI V1.0
" R* h7 l' U* J=> 第二级 % e9 l: _4 E2 C% p
=> 配置管理3 `7 b- L8 t& V
=> SG 1 建立基线
: W" t, [& N- {=> SP 1.2 建立配置管理系统5 ~1 v! u; b2 L" \; q
=> 子实践 2. 在配置管理系统中存取配置项* W% J; ]8 _5 j9 a) _+ F& G

8 ~  x+ X" @3 `配置管理系统举例如下:
* Q9 f( C& N2 ]/ h- C
- ~5 _- w/ W# k* S# F动态(或开发者)系统,包含当前正在产生或修订的组件。" }# d) Z& [3 G5 t
它们在开发者的工作区,而且由开发者所控制。6 Y; D2 n5 \% X- `9 P  A
属于动态系统的配置项,在版本控制之下。* C6 h2 r4 P9 C, O5 t

" E* m! h! N) K0 F6 g6 k主(或受控)系统,包含当前的基线和基线的变更。
1 r$ d/ v1 F$ h$ T属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。' G* l+ }$ B& S4 M: M3 m

7 g2 X; h  o8 o+ T: H0 N稳定的系统,包含已分发使用的各种基线的保存档。
0 ^( V* b) W/ t( M. h稳定的系统,在本过程域所描述的完全的配置管理之下。
. @! |; @8 K0 Z6 H, ?1 x) B
* u5 K: b7 ^* z; N* Y
/ A( ]4 v; [6 k! G: g==个人理解==
8 H0 Z6 ^2 n1 N" X9 h( Y6 e1 k+ v8 c. |
首先,三库仅仅是举例,在实践中,并不是一定要弄出三个库来。
; K# i, ]( R( S) Y, j0 X) }其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。
4 C) a* _* f! T6 R& g4 H5 C; c根据定义,开发库可以大致映射为开发工程师的个人工作空间,在开发工程师本机上,个人目录下。当然,对于稍大的任务,也可以映射为存储库里的一个任务分支。
* ]! q% U6 I9 z. I/ J5 I而受控库,则是开发工程师相互协作、交流最新工作成果的地方。大致上,可以映射为版本控制工具(svn/cvs/cc……)的repository(存储库)。这里,可能有不同的分支/目录做不同的用途,可能会打标签、基线。
9 t& a: g1 t0 M9 i/ m( K8 S1 Z静态库,又称基线库,指的是那些重要的基线,这些基线标志着项目的重要里程碑,或者这些基线被Release(发布)给了“外界”。在比较简单的版本控制工具里,一般可以用特定标签命名规范来把它们从其他标签、基线中区别出来;在SVN中,可以设置一个特别的Tag目录。而在比较复杂的版本控制工具里,也可以用基线/标签的某种属性(质量级别)来表达。例如,当某条基线通过了系统测试后,就把它的质量级别promote(提升)到“通过系统测试”。
5 ]; d3 D5 }5 R. s# s- h0 ?对于静态库,再补充一点:对于这些基线,我们通常不仅要记录源代码,最好也保存一下编译结果/安装包。这样将来用起来会比较方便。编译结果/安装包一般就不要放到版本控制工具里去了,除非你受了商业宣传的蛊惑…… 在合适的机器上建个共享目录,设置合适的权限,来存储编译结果/安装包,一般就可以了。  c6 g) U$ G  q% m6 _. d0 C

: y, l8 a# W, J" H( i4 s& A+ c; v6 d' O4 Z' _' H, h2 Q+ l
个人意见。大家拍砖吧^_^

评分

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

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-3-22 12:08:11 | 显示全部楼层
谢谢大家的指导,特别感谢流水先生把我提的问题进行详细讨论" X9 t1 L! v0 V. }  a0 ?$ u, c! O

/ C8 c& a; ~8 T, `1 X  t“逻辑上独立,物理上一起”
9 N) r9 l$ h6 S4 {- T9 ?1 L# K! N/ v7 O7 W5 E9 l- C
现在基本明白了,还要在以后实践中继续体会
回复 支持 0 反对 1

使用道具 举报

发表于 2007-3-2 17:40:08 | 显示全部楼层
嗯,一般配置管理工具都会支持配置库的建立。
$ [$ G, [, O, ?' ?: d 4 h/ a& y; N1 V) u: S3 Q7 T$ p8 M
但如何建立和管理还是需要结合公司的实际情况。
回复 支持 1 反对 0

使用道具 举报

发表于 2007-3-1 14:51:39 | 显示全部楼层
楼主写得很详细,比较赞同这种想法!9 m$ J5 R& U  i# Z
- J. R1 e2 b. n( H
尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。"
4 X3 y& A3 _2 U) G0 }# A* j , J9 F+ R% s2 V: ^
很多人可能都存在误解,觉得一定是要有严格意义的三个库.
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2007-3-1 15:10:32 | 显示全部楼层
现在很多公司在CMMI的考虑上面可能是为了过级,书上说什么内容就在库里面给出什么内容。
* G+ d' ?" A  v) B: T) w! }! n- N5 K理解其中的意思,选择正确的工具进行受控的管理
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2007-3-1 18:47:52 | 显示全部楼层
三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.9 j2 m/ O* E1 h! \' M5 v
比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.
回复 支持 反对

使用道具 举报

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

愚见

个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。5 \% |9 o5 l- \+ ~) C3 I; s# X
" _* k8 t0 \- L% D! y- z5 N
动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。! G$ k" q: d7 G- Y; |1 L! w
0 F& s! K3 e! d: e: ^
受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。
  \# Z& `' }, \$ W
  `+ {( s; e+ j& `9 J. S, ]静态库应该主要指阶段性的成果,基线,里程碑成果等。
回复 支持 反对

使用道具 举报

发表于 2007-3-2 10:19:03 | 显示全部楼层
原帖由 longtcg 于 2007-3-1 18:47 发表
3 {2 N% `# ^) \4 C9 I8 Q( ]6 k三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.
! ?) E4 z: n: |2 h, X- L比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.
: d$ S: C& o# g# B0 ]
CC中的View就相当于这个所谓的“开发库”
2 g" ~- L3 \; \7 Y1 P0 Z- G5 H; y* T. h* F' Y
大部分CM工具都会在一定程度上支持“工作空间管理”
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-1-22 09:09 , Processed in 0.073750 second(s), 12 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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