千寻 2008-5-16 10:10
针对流水先生对三库的理解,发表一点拙见
本想跟在流水先生的贴后,但是帖子太长唯恐不会被注意到,而又很疑惑,所以发了新贴。::em54::
流水先生不随大流,见解很独特,也引发了我对这三个概念重新思考:
我对流水先生的解释大部分都赞同,但也存在些疑问:
1、根据流水先生的解释,开发库是在开发人员的本地空间,不需用到配置管理工具,但是从引用的那段CMMI原文里,
Configuration items in a dynamic system are under version control.
从这段话可以看出:开发库(动态库)的内容是配置项,在版本控制下,所以应该在配置库,就是说服务器端有个存储库,只是它是经常变化的,可以在开发人员本地有工作副本或服务器端有动态视图,但那些组件还未纳入基线管理。
不知道是不是误解了流水先生的解释,我对开发库的理解是:从物理上来说开发库和受控库、静态库是一个存储库,开发库是受控库和静态库的基础,从逻辑上说那两个库都是在开发库基础上做基线和标签链接,开发库只是未做基线时的一个状态,即没有进行系统的受控,它跟受控库的区别就是开发库里配置项之间没有联系而受控库配置项之间被做进了基线打上了标签并且需要基线变更管理。
2、基线库是指受控库还是静态库。根据流水先生的解释,基线库是静态库。仔细看那段CMMI原文里,其实没有基线库这个概念。基线库只是我们头脑中的一个理解,我认为受控库和静态库都可以叫做基线库,因为里面的对象都可以称作基线,只不过受控库里主要是开发过程中所有的基线(集成基线、分支、版本实质都是基线),而静态库是从受控库里挑出来的稳定已发布的基线。
一点拙见,有问题还请大家指出。
solomn 2008-5-16 13:26
对于你提到的第一个问题,我也有相同的疑问,就是开发流可能存在两种不同的形式:一种是在本地工作拷贝中,一种就是在版本控制之下。对于后一种来说,每个开发人员都有自己的分支,集成人员所要做的就是每日集成,去合并这些分支到主干中或特定的项目级分支中,开发人员开始下一天工作的时候就需要再次建立新的分支并检出,这样可以保证工作在严密监控下,不会长时间丢失。如果这样的话,分支合并就成一个经常使用的动作。而如果是前一种形式的话,合并冲突的工作开发人员自己就可以做,但开发人员的每天检入检出推行难度就大一些
ottafei 2008-5-18 21:26
配置管理的三库
一 CMMI中描述的三库的含义
请看CMMI模型里的描述 :
Dynamic (or author’s) systems contain components currently being created or revised. They are in the author’s workspace and are controlled by the author. Configuration items in a dynamic system are under version control.
Master (or controlled) systems contain current baselines and changes to them. Configuration items in a master system are under full configuration management as described in this process area.
Static systems contain archives of various baselines released for use. Static systems are under full configuration management as described in this process area.
在上述的描述中,注意:
动态库(或叫动态系统)是要纳入版本管理的,即也要用版本管理工具进行控制,而并非失控。如果没有任何控制就不是配置管理了。
主库(或叫受控库,受控系统) 这是配置管理的核心库,所以叫主库!这是要全面纳入配置管理的库,所有的基线都在这里!
静态库(或叫静态系统,产品库):这是指发布客户后的产品库!是不常变化的。所以叫静态库!如果是基线但是没有发布给客户就在主库中,是基线也发布给客户了就在静态库中了。
二 在国标中的定义
在国标GB/T 12505-90中对此三库的定义如下:
3.8 软件开发库 software development library
软件开发库是指在软件生存周期的某一个阶段期间,存放与该阶段软件开发工作有关的计算机可读信息和人工可读信息的库。
3.9 软件受控库 software controlled library
软件受控库是指在软件生存周期的某一个阶段结束时,存放作为阶段产品而释放的、与软件开发工作有关的计算机可读信息一人工可读信息的库。软件配置管理就是对软件受控库中的各软件项进行管理,因此软件受控库也叫做软件配置管理库。
3.10 软件产品库 software product libary
软件产品库是指在软件生存周期的组装与系统测试阶段结束后,存放最终产品而后交付给用户运行或在现场安装的软件的库。
虽然和CMMI的用语不同,但是含义是一样的。
三 区分物理库与逻辑库
上述的三库是一种逻辑上的定义,在物理上可以是1个库,也可以2个库,也可以是3个库,甚至是4个、5个库等。
但是,每个配置项在物理上要保持唯一性,即不能同一个配置项存放在2处(库),可以从2个地方读取(备份的用途除外)。比如一个文档不能即存在目录(库)A下,也存在目录B下,因为这样如果修改了A目录下的文档,而B目录下的没有修改,如果有人在B的基础上去做修改,以为B是最新版本,则就出现错误了。所以如果物理上不是1个库,则在多个库之间要用剪切而非拷贝配置项实现配置项的在不同库之间的移动。如果物理上是一个库,可以通过打标签的方式标志CI的状态的变化。即不同的标签代表了该CI处于不同的库中,也即具有不同的控制权限。
四 区分库与控制级别
库与控制级别可以一一对应,如有的公司定义:
动态库:开发人员自己控制变更;
受控库:CCB控制变更,不需要客户参与;
产品库:CCB控制变更,客户参与;
库与控制级别也可以并非一一对性,如有的公司将受控库又细分:
受控库:
受控项,PM控制变更
基线项,CCB控制变更
Iccmary 2008-7-21 16:16
动态库(或叫动态系统)是要纳入版本管理的,即也要用版本管理工具进行控制,而并非失控。如果没有任何控制就不是配置管理了。
主库(或叫受控库,受控系统) 这是配置管理的核心库,所以叫主库!这是要全面纳入配置管理的库,所有的基线都在这里!
静态库(或叫静态系统,产品库):这是指发布客户后的产品库!是不常变化的。所以叫静态库!如果是基线但是没有发布给客户就在主库中,是基线也发布给客户了就在静态库中了。
一动.两静....