SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 110080|回复: 196

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

  [复制链接]
发表于 2007-3-1 10:25:15 | 显示全部楼层 |阅读模式
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了…… 9 [6 |2 ?: D' d3 D
三库的概念被弄得挺严重,甚至被实现为物理上的多个库……
* C) A: w4 G6 f' X* v9 z( p) }- ]5 T" u' @( ?
这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……) C9 i& `" \% X$ r

' _) r( U  v$ u==原文位置==0 M8 l/ G  W+ |! p3 A
(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!); h, c6 Q' S" E/ Z# \$ r1 f
6 C( B. }- m) o; z1 q* M
CMMI V1.0
: s1 X9 e4 J2 [* |=> level 2
9 ]: B; y) ]# X=> Configuration Management
0 h/ @  _2 f  c0 G) z2 g( o=> SG 1 Estabish Baselines
3 Y+ j. g% E& G+ T+ V' f=> SP 1.2 Establish a Configuration Management System1 t8 a3 s5 B+ Y
=> Subpractices 2. Store and retrieve configuration items in the configuration management system.+ D- s( j2 K) \# p* f4 }
1 K6 `* s8 r& m) X
==原文==
, X- ^: G# k4 {/ V; S# ]! r3 N
Examples of configuration management systems include the following:
! y& B% O4 v3 y$ G4 ^) C! Z; H* |& L& x: f: D: N
Dynamic (or developer's) systems contain components currently being created or revised.
0 J' B/ V3 |! \7 r% O4 rThey are in the developer's workspace and are controlled by the developer.
/ [( Q, l3 C7 h' }& EConfiguration items in a dynamic system are under version control.
! v; C8 c3 @& M8 |9 q; \. ~6 q% \
+ p* O  k! H2 d/ H9 XMaster (or controlled) systems contain current baselines and changes to them.. k3 y  f" L1 Y  |) s8 M; a6 D0 w8 i
Configuration items in a master system are under full configuration management as described int ths process area.
$ R: ?) u& H' Y; i+ P. n" f; A1 O) @2 d0 P: n  E
Static systems contain archives of various baselines released for use.
* s3 b1 w( K  K, {! @) V8 mStatic systems are under full configuration management as described in this process area.) P' J& c6 f1 _! L3 Z+ l

6 O' x5 N# }' m==翻译==/ n8 h- `: X! ?0 X. G
2 h. n8 A; |6 E+ G
(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)! w) F, \/ s& [3 W$ N

& L1 R8 s7 l! ]! q# ^CMMI V1.0 / |7 P9 ^) w. o
=> 第二级 4 H( V5 t, l' X( ^
=> 配置管理
$ V1 f& m7 f+ n: l: J/ w) |$ q=> SG 1 建立基线
  q0 n, Y, l8 E' r# q* X=> SP 1.2 建立配置管理系统" M4 ~- s- H/ S  L" y
=> 子实践 2. 在配置管理系统中存取配置项: U# ?) v' o9 g0 P0 \
: v* @0 ~: P  o' |' a% m1 x
配置管理系统举例如下:
; B' P" N4 X' C9 `% @; p
* b6 C1 ~9 k6 X5 {1 Z2 }动态(或开发者)系统,包含当前正在产生或修订的组件。
8 o* I, I, @, c7 J. A( W它们在开发者的工作区,而且由开发者所控制。
/ E# M" R6 I! T5 t, V; G+ ^属于动态系统的配置项,在版本控制之下。5 k5 r, A9 b6 U) A8 s% y
& U% ]( [  e. Z0 o1 \: e$ S
主(或受控)系统,包含当前的基线和基线的变更。
/ K3 d, J8 l" Q& h: }2 i8 i2 v5 P% `属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。
/ I+ o0 g% E- w
* V$ v3 Q$ [' M, S# _6 O# ]稳定的系统,包含已分发使用的各种基线的保存档。7 K( ~6 k& R% P+ Y0 x4 t
稳定的系统,在本过程域所描述的完全的配置管理之下。0 y% i: J  u$ y# ^4 Y/ q
0 t3 b9 f/ \: Z
. X& Q, X; w! G: |8 @& r" h
==个人理解==
0 D  s0 A6 T: J& D0 s: K, f$ }. R- O
首先,三库仅仅是举例,在实践中,并不是一定要弄出三个库来。- X0 f5 g8 g  B/ m
其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。" X$ z5 @1 B) P# z* u6 `
根据定义,开发库可以大致映射为开发工程师的个人工作空间,在开发工程师本机上,个人目录下。当然,对于稍大的任务,也可以映射为存储库里的一个任务分支。  L6 x1 k3 ]1 a; B3 ^2 g- N
而受控库,则是开发工程师相互协作、交流最新工作成果的地方。大致上,可以映射为版本控制工具(svn/cvs/cc……)的repository(存储库)。这里,可能有不同的分支/目录做不同的用途,可能会打标签、基线。& k) m; X# k/ [7 L& b2 c5 f4 c/ Z
静态库,又称基线库,指的是那些重要的基线,这些基线标志着项目的重要里程碑,或者这些基线被Release(发布)给了“外界”。在比较简单的版本控制工具里,一般可以用特定标签命名规范来把它们从其他标签、基线中区别出来;在SVN中,可以设置一个特别的Tag目录。而在比较复杂的版本控制工具里,也可以用基线/标签的某种属性(质量级别)来表达。例如,当某条基线通过了系统测试后,就把它的质量级别promote(提升)到“通过系统测试”。
. n3 \2 H! R# L对于静态库,再补充一点:对于这些基线,我们通常不仅要记录源代码,最好也保存一下编译结果/安装包。这样将来用起来会比较方便。编译结果/安装包一般就不要放到版本控制工具里去了,除非你受了商业宣传的蛊惑…… 在合适的机器上建个共享目录,设置合适的权限,来存储编译结果/安装包,一般就可以了。2 P  {; t# V4 K; t. D

; `4 K# X, K0 q/ y  e$ O2 S. b  D' g; G4 `
个人意见。大家拍砖吧^_^

评分

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

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-3-22 12:08:11 | 显示全部楼层
谢谢大家的指导,特别感谢流水先生把我提的问题进行详细讨论
$ E" U1 I5 l6 O( S- W0 o; I5 |* D+ M  ^8 L% Z
“逻辑上独立,物理上一起”
& E7 r/ v9 j* |; ^; ?5 M+ J9 a+ z9 F1 |7 D: ~5 _
现在基本明白了,还要在以后实践中继续体会
回复 支持 0 反对 1

使用道具 举报

发表于 2007-3-2 17:40:08 | 显示全部楼层
嗯,一般配置管理工具都会支持配置库的建立。
% s; R1 S- M6 E5 `; M& S1 L : d5 K# w+ v. B4 U" N
但如何建立和管理还是需要结合公司的实际情况。
回复 支持 1 反对 0

使用道具 举报

发表于 2007-3-1 14:51:39 | 显示全部楼层
楼主写得很详细,比较赞同这种想法!
7 @6 ^% q$ J/ H5 S3 j , ^5 n; E% D/ T* ?6 t
尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。". I- ^2 t6 E2 ?* _4 R
: h+ ?- H4 g2 h8 R  C( V% a2 Z
很多人可能都存在误解,觉得一定是要有严格意义的三个库.
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2007-3-1 15:10:32 | 显示全部楼层
现在很多公司在CMMI的考虑上面可能是为了过级,书上说什么内容就在库里面给出什么内容。) m& E& Z; T/ ?; I( Q$ N" f
理解其中的意思,选择正确的工具进行受控的管理
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

愚见

个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。
0 K4 J- F% p" c, Q; Y, A+ O. T& w. x; {  o: i; G( C: H
动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。# a; {% J$ J" m% j* f5 L4 R7 {! w4 S
3 z# p: _7 b  e
受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。4 u* A% `; N1 A$ S/ v' u  ?  p# p
# W9 P$ C: R! R# p6 q$ r" Y+ g/ n
静态库应该主要指阶段性的成果,基线,里程碑成果等。
回复 支持 反对

使用道具 举报

发表于 2007-3-2 10:19:03 | 显示全部楼层
原帖由 longtcg 于 2007-3-1 18:47 发表
! v) k5 |3 {1 J% q三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.
  P" s( I4 T/ O/ j比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.

* e4 o- i2 N8 p9 p3 J5 f5 jCC中的View就相当于这个所谓的“开发库”
+ r) ^. f* N! h3 ^' B& E! Z% j$ a; \  G+ J+ @' {
大部分CM工具都会在一定程度上支持“工作空间管理”
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-8-26 03:52 , Processed in 0.063984 second(s), 10 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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