SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 103925|回复: 196

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

  [复制链接]
发表于 2007-3-1 10:25:15 | 显示全部楼层 |阅读模式
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了……
8 v6 Y5 q6 Z  L- F三库的概念被弄得挺严重,甚至被实现为物理上的多个库……9 {4 R* J7 x8 d" v$ ]1 k8 c  k
4 B( W5 d! G% D* M7 `3 n& F
这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……
" I& v8 p5 d8 ?
9 v3 ^( Q) M% ~( z==原文位置==# D  g/ _  Q+ N' @& U3 K
(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!)
8 K3 n+ Y  x' [3 @2 V$ }/ `3 ~' F, h; a+ l  \" x
CMMI V1.0
" @3 f$ b( [6 ~6 M6 ^. [: ^=> level 2
" M$ |/ s& [7 K$ a=> Configuration Management
* N1 j8 z4 [3 q7 M1 Y4 p. v3 ?=> SG 1 Estabish Baselines
# K8 ~7 n, v6 M% G5 b  w=> SP 1.2 Establish a Configuration Management System
2 ], i5 w* d/ e% Q# z! g=> Subpractices 2. Store and retrieve configuration items in the configuration management system.! c% [  z& @8 {, q
* [. k) y5 T' F+ v' U  b
==原文==9 F7 ?1 ]* p/ I. Z; M7 S0 ^

- C) Y* }4 v* X* fExamples of configuration management systems include the following:
4 q& L8 r8 m& O5 M4 Y8 }. E5 ]* |2 S: J" Z
Dynamic (or developer's) systems contain components currently being created or revised.& [  Y, ]8 X: B% _6 N) I
They are in the developer's workspace and are controlled by the developer.
! O; d. y3 j& g1 n  I/ T" e$ k3 yConfiguration items in a dynamic system are under version control.; r& m3 i  ^" N1 Y/ m

$ s: x+ Z1 ~% G* f* zMaster (or controlled) systems contain current baselines and changes to them.
3 ?8 `6 t5 {6 F. k& Z/ t' \8 sConfiguration items in a master system are under full configuration management as described int ths process area.4 \+ k9 Y* T9 I2 \& G
0 E/ T$ |( n0 b1 d/ d, x$ R
Static systems contain archives of various baselines released for use. - w( G( b2 d+ B1 L, _, l3 R
Static systems are under full configuration management as described in this process area.
3 l& I: z1 X3 ]1 I$ b  G) O
1 u* t4 f& h/ _==翻译==
/ }  d9 `9 l6 ]& w* H) o6 w5 r/ z  b4 V3 ~/ ]- i0 F! @  T( r
(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)
3 V2 s0 _* I. {% |8 A' j
5 K) K$ x# B0 \+ _+ ACMMI V1.0 7 @, @( j$ v( p2 |* t% M2 X
=> 第二级
4 G7 n+ R) i" a' {4 W' R=> 配置管理
! i, V) p5 n3 D  K=> SG 1 建立基线
1 c+ ^: P* X. s6 H* w=> SP 1.2 建立配置管理系统  c' V) B1 z! e* p
=> 子实践 2. 在配置管理系统中存取配置项
$ W# T" j+ ]% o6 f/ y5 S2 U7 k2 u9 a6 o
配置管理系统举例如下:) T3 J  g! J, ]; y" K
8 l/ ]1 {+ y1 Q/ z8 q. c& c* m
动态(或开发者)系统,包含当前正在产生或修订的组件。2 v4 ^. u4 N+ H
它们在开发者的工作区,而且由开发者所控制。; p4 ?1 V3 a0 g/ y& u* W
属于动态系统的配置项,在版本控制之下。
/ q* a& G  W8 V8 q! _1 }9 e, q4 L7 r6 [/ E& |
主(或受控)系统,包含当前的基线和基线的变更。
" {; [& ~' |7 d! P) \- B6 L属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。2 F- ]! a) q$ M6 U# A
+ K( s& ?; F! ]/ f/ ^/ D- N  h
稳定的系统,包含已分发使用的各种基线的保存档。
, W, D2 t& E, X+ t$ r稳定的系统,在本过程域所描述的完全的配置管理之下。
8 U0 Y# s5 r0 h; D* W5 L) B' C7 C5 F# P: g. V
" o' m$ \7 U* W8 V1 V
==个人理解==
* c( e6 Y, z, t" J
2 F8 t2 j. P2 y5 D' Q0 f. _% s8 I首先,三库仅仅是举例,在实践中,并不是一定要弄出三个库来。4 @+ I* z" G4 u1 u! u: B
其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。: B7 c6 A- J, p* u6 T9 s
根据定义,开发库可以大致映射为开发工程师的个人工作空间,在开发工程师本机上,个人目录下。当然,对于稍大的任务,也可以映射为存储库里的一个任务分支。6 m- ^5 B3 |( ]. H! V7 z* E7 l
而受控库,则是开发工程师相互协作、交流最新工作成果的地方。大致上,可以映射为版本控制工具(svn/cvs/cc……)的repository(存储库)。这里,可能有不同的分支/目录做不同的用途,可能会打标签、基线。
( x2 ]! Z6 Q) C* K5 G, g静态库,又称基线库,指的是那些重要的基线,这些基线标志着项目的重要里程碑,或者这些基线被Release(发布)给了“外界”。在比较简单的版本控制工具里,一般可以用特定标签命名规范来把它们从其他标签、基线中区别出来;在SVN中,可以设置一个特别的Tag目录。而在比较复杂的版本控制工具里,也可以用基线/标签的某种属性(质量级别)来表达。例如,当某条基线通过了系统测试后,就把它的质量级别promote(提升)到“通过系统测试”。$ H  s& r( f% k4 h$ J* Y: j
对于静态库,再补充一点:对于这些基线,我们通常不仅要记录源代码,最好也保存一下编译结果/安装包。这样将来用起来会比较方便。编译结果/安装包一般就不要放到版本控制工具里去了,除非你受了商业宣传的蛊惑…… 在合适的机器上建个共享目录,设置合适的权限,来存储编译结果/安装包,一般就可以了。
. `% T/ l( q  F( G# Y5 N2 I% T3 z5 [3 x8 X' S: I6 ^. g2 b& W; b- ?" b
. `( d. E" D4 B" F
个人意见。大家拍砖吧^_^

评分

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

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-3-22 12:08:11 | 显示全部楼层
谢谢大家的指导,特别感谢流水先生把我提的问题进行详细讨论. f( j7 Y7 T3 E# z' n3 V
# T& g0 o0 w4 u& D. N1 r% B) e
“逻辑上独立,物理上一起”
  d+ {1 l3 g  K: y8 g6 B9 ~+ }6 a% I0 A2 t/ l
现在基本明白了,还要在以后实践中继续体会
回复 支持 0 反对 1

使用道具 举报

发表于 2007-3-2 17:40:08 | 显示全部楼层
嗯,一般配置管理工具都会支持配置库的建立。
. a6 g+ Y7 ?7 F2 G  \3 ]
& L) f: d1 n: y  |; h! P, e$ G$ ?2 }但如何建立和管理还是需要结合公司的实际情况。
回复 支持 1 反对 0

使用道具 举报

发表于 2007-3-1 14:51:39 | 显示全部楼层
楼主写得很详细,比较赞同这种想法!
0 j3 [: |/ v7 v3 Y8 Q+ f5 v  N
) G, R$ S& Q. x- v+ w% V8 ?尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。"6 [2 P* m$ |( r

. l6 A( q* s2 ^: r8 d% `4 ]+ ^很多人可能都存在误解,觉得一定是要有严格意义的三个库.
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

愚见

个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。: W+ n9 Q. x% ^" c5 D2 F8 T1 F- ~  H

- m# D, u- `" U9 [动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。& ]1 N0 G' Y+ w

# q0 [* h4 N, v0 {2 d受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。- W/ u1 ?8 X5 F( G, `2 P4 J
5 n& V7 |" N/ |; U- ?% S2 j
静态库应该主要指阶段性的成果,基线,里程碑成果等。
回复 支持 反对

使用道具 举报

发表于 2007-3-2 10:19:03 | 显示全部楼层
原帖由 longtcg 于 2007-3-1 18:47 发表5 `' M2 {) @, E- o0 D
三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.
% k: W' B5 z! Y) o- b5 a比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.

0 N  D5 h/ m- o7 ZCC中的View就相当于这个所谓的“开发库”# n7 a: w( R8 F- u. M

" x# k; c" D! ]$ W1 y大部分CM工具都会在一定程度上支持“工作空间管理”
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2018-7-19 17:45 , Processed in 0.082619 second(s), 16 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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