SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 101243|回复: 196

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

  [复制链接]
发表于 2007-3-1 10:25:15 | 显示全部楼层 |阅读模式
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了…… # B1 D+ a- r1 P0 Y3 Q& o
三库的概念被弄得挺严重,甚至被实现为物理上的多个库……
, M6 d# M' r7 N4 a# L. s2 D
6 g' c9 A! g8 _4 ]2 \  I这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……
9 Y: F. `% V  _; f, n
4 i0 }  [3 R8 y$ z$ ?) ~4 }==原文位置==
5 K. U( y8 D! M(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!)6 @5 z, G: G6 g" L, Q9 S
0 q$ ]4 k8 n2 R7 [/ i
CMMI V1.0
+ n# Y7 W* M  ?* F/ V0 z  U=> level 2
" k' A' K5 r+ j=> Configuration Management. v& [8 c" }, Y1 o7 j
=> SG 1 Estabish Baselines 0 [* I' h- o$ B; u7 `: w
=> SP 1.2 Establish a Configuration Management System
/ U. X# ], o* H) Q: l( R=> Subpractices 2. Store and retrieve configuration items in the configuration management system.: i0 B  P, L+ F, e, \. C! B

$ N9 ?/ T% F/ t/ w  Q! u( j8 b==原文==
2 {% @, Q, t  W  U) @5 k
! Y0 K* n. X& k* c: q  cExamples of configuration management systems include the following:# r$ p6 y4 H- N' P
: G* S9 }2 t9 g, J. Q% W8 F  a. t( H
Dynamic (or developer's) systems contain components currently being created or revised.
0 d$ F' C% t( {They are in the developer's workspace and are controlled by the developer.6 r1 E- m$ ?( y* I2 A
Configuration items in a dynamic system are under version control.
6 A) e  Q9 ^% h5 E+ `: [+ C2 H$ g7 c( _' d
Master (or controlled) systems contain current baselines and changes to them.
) ^. w! s4 P6 r5 yConfiguration items in a master system are under full configuration management as described int ths process area.+ e) @5 Z! {8 Z4 Q" z8 @6 {

: h- V7 Q: G) L4 ?2 @! w6 Y  tStatic systems contain archives of various baselines released for use.
* s8 s) `- H5 s) aStatic systems are under full configuration management as described in this process area.
; A- ^) g8 C. s" R+ y& K
  e% ?; w: `8 P& o6 H) b  k==翻译==7 [) g* t- o) r+ l+ P$ ~

: J$ l- @. M/ D6 f/ p(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)8 i+ t% f: a# @  s
  q- e) N1 ^% ^; ?) \
CMMI V1.0 4 R" ^! V9 t* e/ c
=> 第二级 2 l# v% r/ w  b# ~5 x; G9 |
=> 配置管理
' ]. A& Q. Y, o9 K1 i) M; s=> SG 1 建立基线 : n8 }- s; R# q
=> SP 1.2 建立配置管理系统: ^9 `* `5 A# t( t! J
=> 子实践 2. 在配置管理系统中存取配置项: o* j3 j! k6 u$ k4 K

+ E5 R2 `5 k# Z& ?  F" @; s配置管理系统举例如下:
+ m2 O3 I" c1 S: K6 [+ C
: M0 S! R1 O6 i  c2 q* D动态(或开发者)系统,包含当前正在产生或修订的组件。, k% X" \/ ]% g, m2 p
它们在开发者的工作区,而且由开发者所控制。
  n. T. W( m- t( ]1 d  g属于动态系统的配置项,在版本控制之下。: e( D3 Q* @) {$ R  d6 h( u3 w

# g1 K9 V4 M8 |9 K主(或受控)系统,包含当前的基线和基线的变更。
3 v! j  D6 n5 v' l8 K属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。  {* T4 Z" i" q
  v& |. w3 ^6 e1 q2 c' E8 ]
稳定的系统,包含已分发使用的各种基线的保存档。
& e# ^! U) s3 b+ \+ a稳定的系统,在本过程域所描述的完全的配置管理之下。
) z. n: i% {: M/ T6 I1 l  B5 `# b/ L, I

5 B$ F" H1 E# j0 p==个人理解==
' e& z/ E; h& A9 e8 w* f: ?8 s6 _' E* D/ Q
首先,三库仅仅是举例,在实践中,并不是一定要弄出三个库来。; q) @" h! c, b8 N$ n' X# |
其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。
( t1 o) W( B8 S1 X" }/ Y# i2 g根据定义,开发库可以大致映射为开发工程师的个人工作空间,在开发工程师本机上,个人目录下。当然,对于稍大的任务,也可以映射为存储库里的一个任务分支。  |& @7 x3 b, v+ ]0 [
而受控库,则是开发工程师相互协作、交流最新工作成果的地方。大致上,可以映射为版本控制工具(svn/cvs/cc……)的repository(存储库)。这里,可能有不同的分支/目录做不同的用途,可能会打标签、基线。% H% D+ v1 {! M- d6 G% o
静态库,又称基线库,指的是那些重要的基线,这些基线标志着项目的重要里程碑,或者这些基线被Release(发布)给了“外界”。在比较简单的版本控制工具里,一般可以用特定标签命名规范来把它们从其他标签、基线中区别出来;在SVN中,可以设置一个特别的Tag目录。而在比较复杂的版本控制工具里,也可以用基线/标签的某种属性(质量级别)来表达。例如,当某条基线通过了系统测试后,就把它的质量级别promote(提升)到“通过系统测试”。
2 Y  t5 ^) g0 [- [8 h对于静态库,再补充一点:对于这些基线,我们通常不仅要记录源代码,最好也保存一下编译结果/安装包。这样将来用起来会比较方便。编译结果/安装包一般就不要放到版本控制工具里去了,除非你受了商业宣传的蛊惑…… 在合适的机器上建个共享目录,设置合适的权限,来存储编译结果/安装包,一般就可以了。  E. B/ D. O0 F  `8 G1 x

* k8 H8 N3 X. i( _- X) c1 ]; J0 [) z2 |8 d* O2 S3 X1 w
个人意见。大家拍砖吧^_^

评分

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

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-3-22 12:08:11 | 显示全部楼层
谢谢大家的指导,特别感谢流水先生把我提的问题进行详细讨论+ Y, t" n% e- o1 q' D

  ]/ u/ e! h8 V) U; V0 v“逻辑上独立,物理上一起”; b) [3 }; s) f% k% T
) }. w, z/ I5 n- P' K
现在基本明白了,还要在以后实践中继续体会
回复 支持 0 反对 1

使用道具 举报

发表于 2007-3-2 17:40:08 | 显示全部楼层
嗯,一般配置管理工具都会支持配置库的建立。
! G# D7 \( P( h9 D. C$ ?
" D8 S5 ^1 e( t9 q但如何建立和管理还是需要结合公司的实际情况。
回复 支持 1 反对 0

使用道具 举报

发表于 2007-3-1 14:51:39 | 显示全部楼层
楼主写得很详细,比较赞同这种想法!5 E& Z% v* O: o4 k3 Q
3 O& Y3 i' @  X! O9 `
尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。"6 K4 d; [% `: A# {; q
- e! ?9 l8 t# D$ |( s3 M
很多人可能都存在误解,觉得一定是要有严格意义的三个库.
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

愚见

个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。
; B6 F" l+ k9 U. a
* d. I, F1 g$ W动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。- V4 q, n$ M, }$ K! ^: y4 z

4 r7 Z* I  @1 z+ r8 d' j7 c" l8 ^受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。
/ ^+ i5 R* w+ {, ^) A+ L7 ^$ H6 E, L* o3 U
静态库应该主要指阶段性的成果,基线,里程碑成果等。
回复 支持 反对

使用道具 举报

发表于 2007-3-2 10:19:03 | 显示全部楼层
原帖由 longtcg 于 2007-3-1 18:47 发表4 ^, J1 \* ]- _# X6 a: _) z
三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.
- Y, |2 j/ }% g* B; W/ w比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.
; S. L- _: U( w/ d/ b
CC中的View就相当于这个所谓的“开发库”
% T2 S2 J. M0 u& a4 d5 k. w5 H6 @0 z* T3 ^& A; E  t
大部分CM工具都会在一定程度上支持“工作空间管理”
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-1-21 07:56 , Processed in 0.072968 second(s), 9 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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