SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 104767|回复: 196

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

  [复制链接]
发表于 2007-3-1 10:25:15 | 显示全部楼层 |阅读模式
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了…… / |0 B, x5 ^" W* S. L( T' C  H" {
三库的概念被弄得挺严重,甚至被实现为物理上的多个库……
* K7 @3 ?+ j% @; y: z% G
+ b! q  n% F. t! @2 i) \这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……: z; F0 f1 N; Z1 b  ~
; W0 ^2 v$ [9 y; g+ f
==原文位置==$ ?9 K8 r0 `. T! m/ A: n. @
(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!)
* k& }3 E. ^2 i. I0 w( u9 u! f
  Y4 C1 A9 }2 m: K0 U  |' I; i! HCMMI V1.0
) w0 X9 {, m/ @7 m% w) }$ `. d3 G=> level 2
- h6 X7 x8 C" U  Y=> Configuration Management% t6 }/ o9 ~. h; d/ I
=> SG 1 Estabish Baselines ; I$ I' C# f; W# U( z( @. A" L6 j+ e
=> SP 1.2 Establish a Configuration Management System5 ~: p; K7 U: p9 w2 q
=> Subpractices 2. Store and retrieve configuration items in the configuration management system.
/ Y# n2 H  x6 g! j6 a- X. ]) I8 w* d; n; \7 Y8 c3 Z0 ?
==原文==
# M* _2 K3 X3 X3 _: ]1 c1 P
: E. \8 w: U2 p; o+ ~Examples of configuration management systems include the following:6 H) @0 u& F- R) [

0 d) U" g: S8 O# q' f+ ~Dynamic (or developer's) systems contain components currently being created or revised.
. H2 _' U. q) E0 PThey are in the developer's workspace and are controlled by the developer.
1 t. G- M- _7 uConfiguration items in a dynamic system are under version control.
  m# M" Z  o; k) a& V) Y" G0 I
6 e7 R+ [7 }4 [( _$ T% IMaster (or controlled) systems contain current baselines and changes to them.. O$ {  c: Y! B) s/ M9 n8 G
Configuration items in a master system are under full configuration management as described int ths process area.: d% P. y( ?3 K$ @

/ Q! R& g# K3 b/ @; wStatic systems contain archives of various baselines released for use.
5 R, t. `! T9 D/ Z8 b6 NStatic systems are under full configuration management as described in this process area., S( j' J/ x* a* Z1 b
5 J  Q7 w: Q& ^. |
==翻译==
! L7 N# S: O' g* k# {' C, \. ^2 G* ~9 Y4 d) {2 e2 K
(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)
, ?' V$ k! _- A% |! Q. z8 j2 h3 _& p5 h4 A5 z" f+ X
CMMI V1.0 : U' f9 d% e/ e" j
=> 第二级 $ [. S4 ?& {; w' h9 E. v! ^
=> 配置管理0 b2 Q$ T7 r0 \! v+ X2 u
=> SG 1 建立基线 + |. Q2 ?; z, R8 A5 R' [/ y
=> SP 1.2 建立配置管理系统
' a: P& t7 V' H% B) _=> 子实践 2. 在配置管理系统中存取配置项
$ S3 N; G4 R. u& N+ N$ a; ?. @6 g' A# f8 z) B
配置管理系统举例如下:' W7 _+ U& C8 W  W- t/ Q

+ E+ D# @& @" P) `* B6 [- T; ~2 E  _动态(或开发者)系统,包含当前正在产生或修订的组件。
% I2 v6 ^9 d; W& e8 g" l& |3 J它们在开发者的工作区,而且由开发者所控制。# N2 \: }; ~2 [0 `
属于动态系统的配置项,在版本控制之下。
2 F0 N. l0 n/ M8 |& o1 x: W& R) K0 u
主(或受控)系统,包含当前的基线和基线的变更。: M% H3 A* [" r9 {4 l" ?5 e' ]" k
属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。
3 x, B, V+ f' K: X$ c6 |. n6 q. r* x5 ^/ |( ^, H  V9 {- ^
稳定的系统,包含已分发使用的各种基线的保存档。/ n3 T* t4 {& e: i' {2 C
稳定的系统,在本过程域所描述的完全的配置管理之下。% N8 W& k+ ^- {, [, ?8 h3 q

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

( O/ l& w! m. w) W1 F3 M9 v' m; F
  c; l9 I% g; f! b6 M) `个人意见。大家拍砖吧^_^

评分

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

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-3-22 12:08:11 | 显示全部楼层
谢谢大家的指导,特别感谢流水先生把我提的问题进行详细讨论
9 ]1 e" Y' Y% u8 s" z! D
5 l2 \# d6 z/ x, P1 F* ^“逻辑上独立,物理上一起”' P0 d+ }8 @/ u4 q8 d
, r  E! F3 V9 k& r7 V: N" w
现在基本明白了,还要在以后实践中继续体会
回复 支持 0 反对 1

使用道具 举报

发表于 2007-3-2 17:40:08 | 显示全部楼层
嗯,一般配置管理工具都会支持配置库的建立。
% w7 ?- y& H- s/ j, Z 9 r; }, r" O9 v, ]6 \
但如何建立和管理还是需要结合公司的实际情况。
回复 支持 1 反对 0

使用道具 举报

发表于 2007-3-1 14:51:39 | 显示全部楼层
楼主写得很详细,比较赞同这种想法!
- b5 u# f  s% G5 N: T0 _) Q& |
0 S, v, [3 r3 E5 j尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。"
6 r& }9 W0 \( j  v. {
* p' U7 A4 `- ?; L% d很多人可能都存在误解,觉得一定是要有严格意义的三个库.
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

愚见

个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。
4 Z  k  n$ B: @
% B, Q) e& o& i* z动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。
  |+ n$ n5 Z- {$ j% R4 g0 @, b( r# P5 u; V
受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。+ d: E$ s# ?) I
4 j' ?! d2 R2 A9 _
静态库应该主要指阶段性的成果,基线,里程碑成果等。
回复 支持 反对

使用道具 举报

发表于 2007-3-2 10:19:03 | 显示全部楼层
原帖由 longtcg 于 2007-3-1 18:47 发表
5 S7 O+ x6 q1 G三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.( v( u9 X' o, `
比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.
% c: d3 {5 r9 G( N1 `( h1 G
CC中的View就相当于这个所谓的“开发库”+ t! P& g6 R6 I" z# j, ?& ]/ ^
4 v- o* ]/ c$ @  {4 _: @
大部分CM工具都会在一定程度上支持“工作空间管理”
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2018-9-19 23:36 , Processed in 0.109467 second(s), 9 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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