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

序号 评论者 共有评论 93   【论坛浏览】  【发表评论】 评论时间
51 ajaxzm007 回复 37# 的帖子
这个理解 要是用在clearcase上 是再合适不过的啦
666 理解的好
:0::
2008/4/2 15:39
52 ajaxzm007 回复 39# 的帖子
在理
我以前的公司 就是把发布的产品刻录成盘 储存在保险柜里 这就算是一个物理的产品库吧
2008/4/2 15:50
53 windshow 三库觉得对源代码的管理存在困难
其实建议源代码单独进行管理,在三库的理论中,源代码最后打包(rar),然后进行管理
2008/4/3 17:07
54 crppdzl 所谓的三库,我理解是这样的:
首先是个人开发空间,这个相对独立,互不影响,也叫开发库;
其次是小组或者项目空间,一般情况下,指的是模块级的开发小组,应为开发人员提交开发结果之后,要集中在一起进行编译、打包。这个过程也可能会进行合并处理,还要检查相互之间程序的冲突,一般情况下,可以由专门的配置管理员来负责编译,也可以由开发组长来负责。模块级的集成,交付给测试。
在一个就是产品集成发布,一般是继承测试完成,进入系统测试之前要进行的一项工作。这个空间里面存储的是整个产品的源代码。对于编译之后的结果可以不用进行版本管理。但是,编译的环境是要生成版本的。对于产品集成之后是内部发布还是交付最终用户,需要在基线中进行说明,和修改属性。
个人理解。可以是物理上的,也可以是逻辑上的。有些工具,例如CC就是逻辑上的。
如果工具不能做到逻辑区分,即使是使用最原始的方式,就是建立不同的文件目录拷贝,也要区分这些空间。
2008/4/13 07:14
55 yyygww 我们一个库最好,要不然,代码COPY,还要一些脚本,不是很方便,人手也不足。 2008/4/14 14:24
56 asukataozi 最近关注了这个版块受益非浅啊,对于这一论题我的理解和大家差不多
开发库+受控库:实施版本控制,不仅能实现并行开发,提高了开发效率,降低Bug率,并且一切活动都可追溯
静态库:归档,发布的文件等.
2008/4/24 13:17
57 xuyanli 做个记号,明天过来好好学习一下 2008/4/29 22:16
58 浩子 分析的非常到位,确实是高手,佩服。 2008/5/2 14:14
59 bzcyer 马上要建配置库了,还在考虑结构怎么去建
头晕
2008/5/4 17:17
60 solomn 版本控制系统与开发库、受控库、静态库的关系
根据自己的理解画了一个图,用visio画的,大家拍砖
2008/5/5 13:46
 共有评论数 93  每页显示 10
页码 6/10  |<  <<   1 2 3 4 5 6 7 8 9 10   >>  >|