三库(开发库、受控库、静态库)的概念及个人的理解
作者 流水先生   查看 18948   发表时间 2007/3/1 10:25  【论坛浏览】
记得第一次在国内的坛子里看到三库的讨论的时候,登时就晕了…… gnunzp
三库的概念被弄得挺严重,甚至被实现为物理上的多个库……gnunzp
gnunzp
这里,首先贴一下三库定义的原文、翻译,然后再谈谈个人的理解……gnunzp
gnunzp
==原文位置==gnunzp
(中国国家标准也有三库的定义。这里就不再给出了。这里给出的是CMMI的定义,若有其它国际上比较权威的定义,烦请熟悉的同志贴一下,谢!)gnunzp
gnunzp
CMMI V1.0 gnunzp
=> level 2 gnunzp
=> Configuration Managementgnunzp
=> SG 1 Estabish Baselines gnunzp
=> SP 1.2 Establish a Configuration Management Systemgnunzp
=> Subpractices 2. Store and retrieve configuration items in the configuration management system.gnunzp
gnunzp
==原文==gnunzp
gnunzp
Examples of configuration management systems include the following:gnunzp
gnunzp
Dynamic (or developer's) systems contain components currently being created or revised.gnunzp
They are in the developer's workspace and are controlled by the developer.gnunzp
Configuration items in a dynamic system are under version control.gnunzp
gnunzp
Master (or controlled) systems contain current baselines and changes to them.gnunzp
Configuration items in a master system are under full configuration management as described int ths process area.gnunzp
gnunzp
Static systems contain archives of various baselines released for use. gnunzp
Static systems are under full configuration management as described in this process area.gnunzp
gnunzp
==翻译==gnunzp
gnunzp
(感谢cmmi_cn@163.com等同志对CMMI的翻译工作!)gnunzp
gnunzp
CMMI V1.0 gnunzp
=> 第二级 gnunzp
=> 配置管理gnunzp
=> SG 1 建立基线 gnunzp
=> SP 1.2 建立配置管理系统gnunzp
=> 子实践 2. 在配置管理系统中存取配置项gnunzp
gnunzp
配置管理系统举例如下:gnunzp
gnunzp
动态(或开发者)系统,包含当前正在产生或修订的组件。gnunzp
它们在开发者的工作区,而且由开发者所控制。gnunzp
属于动态系统的配置项,在版本控制之下。gnunzp
gnunzp
主(或受控)系统,包含当前的基线和基线的变更。gnunzp
属于主要系统的配置项,在本过程域所描述的完全的配置管理之下。gnunzp
gnunzp
稳定的系统,包含已分发使用的各种基线的保存档。gnunzp
稳定的系统,在本过程域所描述的完全的配置管理之下。gnunzp
gnunzp
gnunzp
==个人理解==gnunzp
gnunzp
首先,三库仅仅是举例,在实践中,并不是一定要弄出三个库来。gnunzp
其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。gnunzp
根据定义,开发库可以大致映射为开发工程师的个人工作空间,在开发工程师本机上,个人目录下。当然,对于稍大的任务,也可以映射为存储库里的一个任务分支。gnunzp
而受控库,则是开发工程师相互协作、交流最新工作成果的地方。大致上,可以映射为版本控制工具(svn/cvs/cc……)的repository(存储库)。这里,可能有不同的分支/目录做不同的用途,可能会打标签、基线。gnunzp
静态库,又称基线库,指的是那些重要的基线,这些基线标志着项目的重要里程碑,或者这些基线被Release(发布)给了“外界”。在比较简单的版本控制工具里,一般可以用特定标签命名规范来把它们从其他标签、基线中区别出来;在SVN中,可以设置一个特别的Tag目录。而在比较复杂的版本控制工具里,也可以用基线/标签的某种属性(质量级别)来表达。例如,当某条基线通过了系统测试后,就把它的质量级别promote(提升)到“通过系统测试”。gnunzp
对于静态库,再补充一点:对于这些基线,我们通常不仅要记录源代码,最好也保存一下编译结果/安装包。这样将来用起来会比较方便。编译结果/安装包一般就不要放到版本控制工具里去了,除非你受了商业宣传的蛊惑…… 在合适的机器上建个共享目录,设置合适的权限,来存储编译结果/安装包,一般就可以了。gnunzp
gnunzp
gnunzp
个人意见。大家拍砖吧^_^

序号 评论者 共有评论 93   【论坛浏览】  【发表评论】 评论时间
1 qingqing 楼主写得很详细,比较赞同这种想法!

尤其是"其次,三库是逻辑上的概念,在实践中,并不是要对应到物理上的三个库。"

很多人可能都存在误解,觉得一定是要有严格意义的三个库.
2007/3/1 14:51
2 i子休 如果在物理上将这三个库分开,管理起来就过于繁琐了 2007/3/1 15:01
3 xmlsy 现在很多公司在CMMI的考虑上面可能是为了过级,书上说什么内容就在库里面给出什么内容。
理解其中的意思,选择正确的工具进行受控的管理
2007/3/1 15:10
4 流水先生 谢谢大家!谢谢!其实三库的概念是我自己不太吃得准的概念,写出来特别想知道大家的意见…… 看到大家亦有类似的见解,很高兴啊…… 2007/3/1 15:53
5 flyee_cn 逻辑上独立,物理上一起 2007/3/1 17:32
6 longtcg 三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.
比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.
2007/3/1 18:47
7 shuku 愚见
个人也认为所谓的三库应该指项目过程的三个状态,就像上面所的应该只是逻辑上的关系。

动态库应该强调项目组成员日常的工作成果,比如日常开发的代码,为成形的文档,项目管理类的文档,配置库的使用应该也包括对这些日常工作成果的管理,当然这种管理应该是最低层次的管理,主要目的是为了保护他们的工作成果,当然还有也为度量之用。

受控库应该说的是通过评审的文档,测试的程序的控制库。这个应该是配置管理的重点,包括版本,标志,审计,状态统计的重点。

静态库应该主要指阶段性的成果,基线,里程碑成果等。
2007/3/1 20:13
8 i子休

  引用:
原帖由 longtcg 于 2007-3-1 18:47 发表
三库也好,一个库也好,都是为了更好的保护软件资产.那么建几个库,要根据实际的要求.
比如使用CC工具,完全可以建立两个库,开发库和产品库,受控库可以是包含的基线的内容.

CC中的View就相当于这个所谓的“开发库”

大部分CM工具都会在一定程度上支持“工作空间管理”
2007/3/2 10:19
9 qingqing 嗯,一般配置管理工具都会支持配置库的建立。

但如何建立和管理还是需要结合公司的实际情况。
2007/3/2 17:40
10 among 觉得只要控制好权限
所谓的三库不过是状态标识而已,通过基线,分支可以做到 物理的单独一个库
2007/3/3 19:56
 共有评论数 93  每页显示 10
页码 1/10  |<  <<   1 2 3 4 5 6   >>  >|