SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 103230|回复: 196

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

  [复制链接]
发表于 2007-3-1 10:25:15 | 显示全部楼层 |阅读模式
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了……
, F! x7 g4 K0 q1 r三库的概念被弄得挺严重,甚至被实现为物理上的多个库……
5 Q( l( Z! m4 Y& K* G! Z. J  {- d6 ^
这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……; n; w) A% t% W- {/ h/ _
% M. J, p5 A7 [8 D( J0 E
==原文位置==' H* A! t2 q& s: r' u, P
(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!)0 o- U4 `. P; }* ~/ p) ]
  a3 y1 F7 i% Y. }# t6 ]
CMMI V1.0
9 ~0 _7 n+ d# k- S) L5 n=> level 2
8 l* N' c5 K9 s1 X8 M' \* N( A=> Configuration Management
/ G  L9 H1 X/ C6 _4 t! W=> SG 1 Estabish Baselines
6 _5 t5 q. V4 j5 n2 C. G=> SP 1.2 Establish a Configuration Management System
. u+ c2 G6 Y( `* s; l- j=> Subpractices 2. Store and retrieve configuration items in the configuration management system.: g) b8 |  B. X$ @: `

- _7 V* x! p8 A! f  n, P. N: \==原文==
0 m( L5 {+ d5 i9 r3 Y0 W2 x6 e/ c$ g) v" J. o2 W
Examples of configuration management systems include the following:
$ C3 i% e4 h9 B/ g1 `. _
9 u, _2 |- [, K" S, EDynamic (or developer's) systems contain components currently being created or revised.& s. o" Q) g2 j4 F$ y7 S
They are in the developer's workspace and are controlled by the developer.
6 c/ F& i  F" f" U+ K7 NConfiguration items in a dynamic system are under version control.3 o3 u4 n# [) \( ~9 J) V% k2 |! H7 S

5 A% x( \6 d) v9 u1 K# Z1 yMaster (or controlled) systems contain current baselines and changes to them.
" a( M1 J6 x. i5 C: o3 KConfiguration items in a master system are under full configuration management as described int ths process area., s6 v8 H5 |# @0 k  h

  {: Z  f0 [" J- v% B# R; QStatic systems contain archives of various baselines released for use. 9 i: ?' e* b* R& J
Static systems are under full configuration management as described in this process area.! e! g, R2 b' E6 |

# V$ B2 }( u( a. a" Y+ N$ f==翻译==/ D, N! G, g' i- ]0 m/ F
: N/ C! n! k" A: S6 f
(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)0 ]" H) t( W8 N' k$ G+ x' _
0 k" C$ p: F3 b; H' g2 B, O& Y- t
CMMI V1.0
! d8 z5 y' s0 z! y" @=> 第二级
/ `) e8 N& j5 J7 |=> 配置管理
( h* G+ S8 ]' K$ _1 S=> SG 1 建立基线 1 J6 x  K3 y' [3 Y- B
=> SP 1.2 建立配置管理系统7 s) h. O. _9 K3 D7 ~2 b
=> 子实践 2. 在配置管理系统中存取配置项
6 y6 l5 W( R: V+ h. ~' x/ ^
0 Z& C% E6 C) g" Y& i1 n9 m配置管理系统举例如下:& L# u- J) z5 @0 j5 j

7 P) I1 S0 u5 Y5 E  }' Z动态(或开发者)系统,包含当前正在产生或修订的组件。
6 z: k4 m7 z3 e5 ]1 i它们在开发者的工作区,而且由开发者所控制。! o9 Q8 h1 a- ~. i. x2 r9 |/ n, T% `
属于动态系统的配置项,在版本控制之下。- T- _) l5 l* Q% B) h

1 @7 D! e, I3 k2 x1 S% V: K- J' ^主(或受控)系统,包含当前的基线和基线的变更。
( D/ z( b3 x4 L( Z& N属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。
5 N! {, p2 m- Y& V4 A1 p
1 e, Y1 h! m2 D) ?5 _稳定的系统,包含已分发使用的各种基线的保存档。; `* _, y, f4 H6 @' V
稳定的系统,在本过程域所描述的完全的配置管理之下。( }' X- m2 P7 ?$ [" Z

3 V* j- X: v0 w6 c6 l2 P$ k- C; `) n6 o+ G2 k- Z! O, F
==个人理解==# I2 u1 p0 a2 [7 T7 Z. D, y# U
0 d3 R" ~6 L! h6 U5 m
首先,三库仅仅是举例,在实践中,并不是一定要弄出三个库来。3 s( W6 c- ]& Q; i  |: z. E
其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。
# @  \) |! m7 `+ e0 Y8 n根据定义,开发库可以大致映射为开发工程师的个人工作空间,在开发工程师本机上,个人目录下。当然,对于稍大的任务,也可以映射为存储库里的一个任务分支。
8 _( G1 F1 T+ Q% d/ H. }: `5 e而受控库,则是开发工程师相互协作、交流最新工作成果的地方。大致上,可以映射为版本控制工具(svn/cvs/cc……)的repository(存储库)。这里,可能有不同的分支/目录做不同的用途,可能会打标签、基线。( O; E" j" t4 I0 E8 r
静态库,又称基线库,指的是那些重要的基线,这些基线标志着项目的重要里程碑,或者这些基线被Release(发布)给了“外界”。在比较简单的版本控制工具里,一般可以用特定标签命名规范来把它们从其他标签、基线中区别出来;在SVN中,可以设置一个特别的Tag目录。而在比较复杂的版本控制工具里,也可以用基线/标签的某种属性(质量级别)来表达。例如,当某条基线通过了系统测试后,就把它的质量级别promote(提升)到“通过系统测试”。5 p) x' I5 B* D$ B' l8 k4 {5 F
对于静态库,再补充一点:对于这些基线,我们通常不仅要记录源代码,最好也保存一下编译结果/安装包。这样将来用起来会比较方便。编译结果/安装包一般就不要放到版本控制工具里去了,除非你受了商业宣传的蛊惑…… 在合适的机器上建个共享目录,设置合适的权限,来存储编译结果/安装包,一般就可以了。2 E- V; C+ v# y; q+ k" N9 Y) o- Z; b

6 S+ V- g; H5 K3 w7 Z1 n' G$ J' f- y
个人意见。大家拍砖吧^_^

评分

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

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-3-22 12:08:11 | 显示全部楼层
谢谢大家的指导,特别感谢流水先生把我提的问题进行详细讨论# z7 w" ~$ H; d; `/ F5 t7 A/ h
& }: d+ }$ d" o  I: a. |7 z
“逻辑上独立,物理上一起”* a# a% v) m. r* N

  j  y& G, J9 v7 O1 Q现在基本明白了,还要在以后实践中继续体会
回复 支持 0 反对 1

使用道具 举报

发表于 2007-3-2 17:40:08 | 显示全部楼层
嗯,一般配置管理工具都会支持配置库的建立。
% w" k* `) m/ m- w9 c
6 J' s9 }8 r( n5 I. L' C4 O# R但如何建立和管理还是需要结合公司的实际情况。
回复 支持 1 反对 0

使用道具 举报

发表于 2007-3-1 14:51:39 | 显示全部楼层
楼主写得很详细,比较赞同这种想法!
2 Z4 [" H/ Z- O* e& |* N+ I
8 h) u, V: s& R) u- W3 E; ?尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。"# `$ j; G  E+ I& u- w0 e

1 @8 s1 I. ~* ]" v/ o" I很多人可能都存在误解,觉得一定是要有严格意义的三个库.
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

愚见

个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。9 N$ {6 l/ }0 M2 \: Q$ k; A0 x

% w3 |7 o' n% ~8 @. M7 r7 V动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。
9 f! d! c+ z% f! z3 F4 f: }5 M
) S0 C8 C. T! |% R* n: }- ?* L受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。4 I( ]7 G2 r# B; K' x& @6 Z

8 n+ |; t4 @" _; D2 S静态库应该主要指阶段性的成果,基线,里程碑成果等。
回复 支持 反对

使用道具 举报

发表于 2007-3-2 10:19:03 | 显示全部楼层
原帖由 longtcg 于 2007-3-1 18:47 发表) t& J. V( @9 K3 ?3 x
三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.
* o) d# D: w) s# W% b比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.

0 X. z7 v4 m8 `, k9 s" A0 dCC中的View就相当于这个所谓的“开发库”! R: R' o1 M1 w) I
1 f8 V! k/ D$ t) F$ J% d8 T
大部分CM工具都会在一定程度上支持“工作空间管理”
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-5-21 11:08 , Processed in 0.070228 second(s), 12 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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