Posted on 2005-12-07 23:23
非鱼 阅读(4938)
评论(5) 编辑 收藏 所属分类:
管理
我在最初开发软件的时候,是根本没有版本管理的概念的。直到2000年我在广州某数一数二的软件公司工作,该公司为了通过ISO9000认证,开始使用
VSS(Visual Source
Safe)进行版本管理,之前,他们也没有进行版本管理。除了VSS,后来又用过PVCS、CCC-Harvest等版本管理软件。现在看来,以前也只是
使用了版本管理软件而已,没有真正进行过“版本管理”。某项目经理说:“我们喜欢把VCS叫做SCM啊,更高级。”其实叫什么不重要,重要的是“管理”,
而不是“使用”VCS/SCM。
什么是版本管理?
简单的说,一个文件(或任何其他人工制品)的一次修改称为一个“修订”;一批相关联的文件(或任何其他人工制品)经过各自N次修订,做为一个产品达到一个
稳定状态,这些文件/人工制品在稳定状态下的形成的产品就是一个版本。版本管理,就是对这个版本的管理;但更重要的是:版本管理是对产品的管理。
版本管理,意义何在?
首先,版本管理维护产品的稳定性。刚刚讲到,产品达到一个稳定状态后称为一个版本,版本管理自然管理了产品的稳定性。其次,版本管理是产品改进的基石。在
产品达到一个稳定状态后,我们把这个状态做为版本固定下来,对于这个产品以后的改进就可以基于这个状态进行了,一旦在改进的过程中发生错误,我们还可以从
这个稳定的状态再次开始,避免了很多不必要的劳动。最后,基于产品版本可以进行并行操作,在改进产品的同时对现有产品进行维护,即满足客户产品改进的要
求,又满足客户对产品质量的要求。
特别是软件迭代、增量开发的情况下,版本管理更是至关重要的。
版本管理,有哪些重要内容?
这里只说重要的。首先是产品版本的定义,就是在产品达到稳定状态时,标记这个稳定状态下的所有组成部分。这个标记,就是版本了。一般在达到稳定之前,会有诸如alpha
版、beta版之类的预定义,根据不同组织的政策而不同。其次是版本的生成,即取得定义好的版本的所有组成部分,并形成一个完整的可运行的产品以供测试、
发行。最后是版本的分支/合并,在稳定产品的版本上进行分支,可以同时进行产品下一版本的研发和当前版本的维护。一般在主分支上进行新版本开发,在维护分
支开发当前版本的补丁;当补丁测试通过后需要把维护分支上的修改内容合并到主分支,以避免在新版本中仍然含有已经修正的。
版本管理的缺点何在?
不能认为有了良好的版本管理就万事大吉了,良好的版本管理也不是万能的,很多事情是版本管理做不到的。首先版本管理不能保证产品中没有缺陷,其实没有什么
东西可以保证这一点,即使你有再充分的测试也不能保证;版本管理只是对产品状态的管理,对于这个状态下产品的内容无能为力。其次,版本管理无法保证工作人
员的行为,版本管理要求工作人员按照一定的规范行事,但除了制度没有任何工具或监控/预测手段来保证人的行为附合规范,如果存在违反规范的行为,也只能通
过事后检查来发现、纠正。最后,在版本合并操作上,工具自动处理可以减轻人的劳动,但也有很多时候不能自动处理,不能过于依赖于版本管理工具。
产品发行管理(on the way, please wait...)