只有版本控制软件,仍然不足够

<script>funp_genButton("http://scmteamwork.blogspot.com/2009/08/blog-post.html");</script>

昨天在Plurk与同人 讨论一个最近遇到的问题, 为何现在还有公司在使用Visual Source Safe? 同人的一句话倒是将我点醒了

同人: 站在开发者的立场,我认为这不是主要问题,而是最需要解决SCM的问题是什么?

由于公司代理的CodeBeamer产品, 其最大特色就是与版本控制软件软件做整合, 所以经常会遇到客户来询问版本控制软件的相关问题?或是codeBeamer跟版本控制软件整合有什么好处? 所以我有一部分的时间都在回答这方面的问题, 但也因为这样, 让我容易陷入工具与技术的漩涡, 而忘记了问题背后的问题.

使用版本控制软件要解决什么样的问题? 这个问题的反面是版本控制软件没有解决那些问题?

这个问题的重要性远比你要选择什么样的版本控制软件来的重要, 但是确被你我忽略了, 了解了这个问题后再来选择工具, 你会更清楚你的团队适合什么样的版本控制工具而不会人云亦云, 陷入选边站的迷思.

为了找寻以上的答案, 我们先从版本控制在维基百科的定义


繁体中文  版本控制
简体中文  版本控制

维基百科很清楚的定义版本控制的用途, 并完整的描述了版本控制有那些模型, 例如Merge ,Lock 等等, 还有版本控制常用的专有名词例如Baselines,labels,tags等等,所以透过维基百科的解释, 我们可以很清楚的了解版本控制简而言之主要帮我们管理与记录档案的变动, 并让团队的参与者可以重现或是取得一致性的档案. 但是维基百科的条目并没有解释 版本控制软件没有解决那些问题?

在找寻这个答案之前, 我想先厘清一些名词, 至少以我而言, 这些名词困扰了我一阵子

1. SCM (source code management)请参考 Revision Control
In software engineering , software configuration management (SCM) is the task of tracking and controlling changes in the software
Configuration management (CM) is a field of management that focuses on establishing and maintaining consistency of a system's or product's performance and its functional and physical attributes with its requirements, design, and operational information throughout its life. For information assurance, CM can be defined as the management of security features and assurances through control of changes made to hardware, software, firmware, documentation, test, test fixtures, and test documentation throughout the life cycle of an information system.

从以上三个维基百科的条目解释, 你会发现原来一般顾问口中的SCM有两种意涵, 而且SCM不等于CM , 我建议如果在指source code management应该用VCS(Version control system )比较好. 至于CM(Configuration management) 与 SCM (Software configuration management) 差别在那里? 简而言之, 范畴的范围不同, CM含括了SCM, SCM只是CM的一小部分 . 举个例子来说
一台计算机的组成有主机板, BIOS, OS, 键盘等, 这时候CM对你的开发团队就相对的重要, 当主机板+BIOS+OS+键盘, 当主机板换了一个零件, 会不会造成BIOS无法work ?? BIOS无法work, 会不会造成OS无法work?所以CM在产品工程与系统工程是很重要的概念, 而SCM只涵盖到了软件工程的变更管理.

了解这三种名词的差异性, 可以知道版本控制软件只解决了档案变动的问题. 但确无法追踪这些档案的变动与软件的变更或是臭虫(Bug)甚至系统的规格变更有什么关系? 举个例来说, 一般的版本控制的软件都有支持Tag/Label的功能虽然你我都知道当软件要Release时要做Tag与Label , 而且在做Tag与Label同时也会描述与记录这个Tag/Label , 但是我们还是无法得知, 这个Tag/Label所Build出来的软件解决了那些Change Request/Bug(or Release Note)?这也是目前市面上所有VCS软件的限制. 为什么Tag/Label要能与记录Change Request/Bug的信息系统做关连? 如果Label与Tag的用意在让Developer可以重现当时的release版本, 那么这个关连性除了可以让项目经理清楚知道这个Label/Tag存在的原因, 也可以让Developer去review是否目前release的版本中的bug, 是由这些关连的Change request所产生, 并可快速找到问题的症结.

结语:
当我们去了解VCS可以做什么, 不可以做什么, 接下来再来思考使用什么VCS工具以让团队的工作更顺畅, 就更有意义了.


此文轉貼自http://scmteamwork.blogspot.com/2009/08/blog-post.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值