如何选择配置管理工具

日期: 2008-01-30 来源:TechTarget中国

  面对这些形形色色,各有千秋的配置管理工具,如何根据组织特点、开发团队需要,选择切合适用的工具呢?笔者就结合工作实践中的经验与大家做一些交流与探讨。

  配置管理工具的选择所需考虑的因素大体包括以下几个因素:

  功能是否符合实际需求?是否符合团队特点?性能是否满意?费用是否可以接受?售后服务如何?接下来,我们就这几方面逐一深入地探讨:

  1)功能是否符合实际需求,是否符合团队特点工具就是用来帮助您解决问题的,因此功能是否符合实际需求是最重要的判断因素。而大多数主流配置管理工具的基本功能都能够满足,因此主要需要判断以下几个因素:

  并行开发支持

  在团队协作开发过程中,有两种主要的模式:集体代码权和个体代码权。采用集体代码权模式进行开发时,一段代码可能同时会被多个开发人员同时修改;而采用个体代码权模式进行开发时,每一段代码都始终被一个开发人员独享,别人需要修改时也会通过该开发人员完成。

  而配置管理软件针对这一情况,也采用了不同的策略:Copy-Modify-Merge(拷贝、修改、合并) 的并行开发模式、Check ut-Modify-Check in(签出、修改、签入)的独占开发模式。在并行开发模式下,开发人员可以并行开发、更改代码,Firefly会自动检测到代码冲突,并自动合并,或提示开发人员手动解决。

  表一并行开发支持比较表

工具名称 说明
ClearCase Copy-Modify-Merge 模式
Firefly Copy-Modify-Merge 模式
CVS Copy-Modify-Merge 模式
PVCS Check out-Modify-Check in 模式
VSS Check out-Modify-Check in 模式

  异地开发支持

  如果你的开发团队分布在不同的开发地点,就需要对工具的异地开发功能进行仔细的评估了。大多数工具都提供基于Web的界面,用户可以通过浏览器执行配置管理的相关操作,而且有些工具就通过这样的方法来实现对异地开发的支持。

  这种实现方法有太多的局限性,例如网络(Internet)连接带宽的限制、防火墙以及安全问题等。真正意义上的异地开发支持,是指在不同的开发地点建立各自的存储库,通过工具提供同步功能自动或手动同步。这样做的好处是与网络无关,即便各个开发地点之间没有实时连通的网络,也可以通过E-Mail 附件等其它方式将同步包发给对方,实现手动的同步。

  表二异地开发支持比较表

工具名称 说明
ClearCase 提供MultiSite 模块,通过自动或手动同步位于不同开发地点的存储库的方式,支持异地开发
Firefly 提供ServerSync 模块,通过自动或手动同步位于不同开发地点的存储库的方式,支持异地开发
CVS 无专门支持的模块
PVCS 无专门支持的模块
VSS 无专门支持的模块

  值得说明的是,在不同开发点建立各自存储库的方式,主要适用于两个或两个以上位于不同地点的开发团队协作开发的情况。如果仅是采用虚拟团队合作的方式,开发人员以个体的形式散落在不同地方,则更适合通过Internet 直接操作远程的配置管理服务器。 l 跨平台开发支持

  如果企业需要从事多个不同平台下的开发工作,就需要配置管理工具能够对跨平台开发提供支持,否则势必会给开发、测试、发布等各个环节带来不便,将使大量的时间被浪费于代码的手工上传、下载中。

  表三跨平台开发支持比较表

工具名称 说明
ClearCase 支持常见的平台
Firefly 软件本身基于Java开发,可在Windows、Linux、Solaris、HP-UX、AIX等常见平台上使用,平台之间的移植也非常方便
CVS 支持几乎所有的操作系统
PVCS 软件本身基于Java 开发,能够支持常见的平台
VSS 仅支持Windows 操作系统

  与开发工具的集成性配置管理工具与开发工具是编码过程中最常用到两种工具,因此它们之间的集成性直接影响到开发人员的便利性,如果无法良好集成,开发人员将不可避免地在配置管理工具与开发工具之间来回切换。

  表四与开发工具集成性比较表

工具|名称 说明
ClearCase 直接与资源管理器集成,十分易用
Firefly 与常见开发工具无缝集成
CVS 对开发工具集成性较差
PVCS 仅支持Windows 操作系统
VSS 与Visual Studio开发工具包无缝连接,其它开发工具集成性差

  2)性能是否满意

  配置管理工具软件的一些性能指标对于最终的选择也有着至关重要的影响。

  运行性能

  如果开发团队规模不大的情况下,配置管理工具软件的性能不会造成很大影响,但如果项目规模比较大,团队成员逐渐增多的情况下,其运行性能就会带来很大的影响。

  表五运行性能比较表

工具名称 说明
ClearCase 服务器采用多进程机制,使用自带多版本文件系统MVFS,对性能有较大负面影响。做为一款企业级、全面的开发配置管理工具,适用于大型开发团队
Firefly 服务器采用了多线程的应用服务器,性能表现优秀,做为一款企业级、全面的开发配置管理,能适用于50 人到上千人的团队
CVS 较高的运行性能,适用于各种级别的开发团队
PVCS 服务器采用文件系统共享方式,对CPU、内存及网络要求较高,性能一般,仅适用于中小型项目团队,不适合于企业级应用
VSS 相对功能单一、简陋,适用于几个人的小型团队,在数据量不大的情况下,性能可以接受

  从用户界面、与开发工具的集成性角度来说,这几款主流的配置管理软件均有较好的设计,均有较好的易用性。

  表六易用性比较表
 

工具名称 说明
ClearCase 安装、配置、使用相对较复杂,需要进行团队培训
Firefly 在提供全面配置管理功能的情况下,安装、配置、使用较为简单,包括安装、配置、培训在内的整个实施周期一般不会超过一个月。
CVS 安装、配置较复杂,但使用比较简单,只需对配置管理做简单培训即可
PVCS 使用比较简单,只需对配置管理做简单培训即可
VSS 安装、配置、使用均较简单,很容易上手使用

   
  安全性

  表七安全性比较表

工具名称 说明
ClearCase 采用C/S模式,需要共享服务器上的存储目录以供客户端访问,这将带来一定安全隐患
Firefly 服务器上的存储目录不用共享,对客户端不透明,客户端不可直接访问存储目录,使系统更安全可靠
CVS 采用C/S 模式,不需要共享服务器上的存储目录,安全性较好
PVCS 基于文件系统共享,而且需要以“可写”的权限共享存储目录,存在较大的安全隐患
VSS 基于文件系统共享实现对服务器的访问,需要共享存储目录,这将带来一定安全隐患

  3)费用是否可以接受

  Rational ClearCase?、Hansky Firefly 两款均属于企业级配置管理工具软件,ClearCase?价格较贵,,相比之下HanskyFirefly? 是一款不错的选择。而PVCS其价格大约是每客户端几百美元的水平,对于国内企业来说,性价比不太划算。VSS 是微软打包在VisualStudio?开发工具包之中的,显然花费的精力不大,价格也比较便宜,可以做为个人、小项目团队版本控制之用。而CVS则是一款完全免费的开源软件,性能较之企业级配置管理工具差距不大,也是一种不错的选择。

  4) 售后服务如何

  售后服务与产品支持也是一个很重要的考察点,工具在使用过程中出现这样那样的问题是很平常的事,有些是因为使用不当,有些则是工具本身的缺陷。这些问题都会直接影响到开发团队的使用,因此随时能够找到专业技术人员解决这些问题就变成十分重要。

  表八售后服务比较表

工具名称 说明
ClearCase 大型商用软件,已被IBM公司收购,但国内市场拓展有限,因此服务支持会受到限制。现在中国用户的支持是由位于澳大利亚悉尼的支持中心联系
Firefly 大型商用软件,已在中国成立分公司,全面拓展市场之中,在北京设有支持中心
CVS 做为开源软件,无官方支持,需要用户自己查找资料解决技术问题,现在也出现专门为CVS做技术支持的公司
PVCS 在中国市场开拓有限,国内没有支持中心
VSS 做为微软的非核心产品,技术支持有限。在其网站上有提供一些常见问题,只有对正式购买的用户提供一定的技术支持

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • Android启动程序中现6个新漏洞

    在温哥华举行的USENIX会议上,9名计算机科学家组成的团队展示了他们的研究成果,以及他们用来发现发现这些漏洞的工具。该工具被称为BootStomp,主要用于搜索易受攻击的启动程序。

  • 当数据中心越来越虚拟化时 保护工作该怎么做?(上)

    随着企业越来越多地投资于虚拟化技术,安全专业人士都在试图管理这种环境下的安全性。然而很多公司不得不面对的现实是:虚拟环境内的安全性并没有达到传统物理网络和系统的标准……

  • 配置管理

    配置管理:每一个软件项目,无论是工程类项目,还是产品类项目,都必须经历需求分析、系统设计、编码实现、集成测试、部署、交付、维护和支持的过程。