关闭

项目配置管理工具研究

发表于:2016-4-26 13:38

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:chengjh06    来源:51Testing软件测试网采编

  ClearCase提供了比较全面的配置管理支持,其中包括版本控制、工作空间管理、Build管理等,而且开发人员无需针对其改变现有的环境、工具和工作方式。
  1)版本控制
  ClearCase 不仅可以对文件、目录、链接进行版本控制,同时还提供了先进的版本分支和归本功能用于支持并行开发。另外,它还支持广泛的文件类型。
  2)工作空间管理
  可以为开发人员提供私人存储区,同时可以实现成员之间的信息共享,从而为每一位开发人员提供一致、灵活、可重用的工作空间域。
  3)Build管理
  对ClearCase 控制的数据,既可以使用定制脚本,也可使用本机提供的make 程序。
  其最大的缺点就在于其价格不菲,每个客户端用户许可证大约需要几千美金,所以在国内应用群体有限。
  小工作组级:Merant PVCS
  MERANT 公司的 PVCS 能够提供对软件配置管理的基本支持,通过使用其图形界面或类似SCCS 的命令,能够基本满足小型项目开发的配置管理需求。 PVCS 虽然功能上也基本能够满足需求,但是其性能表现一直较差,逐渐地被市场所冷落。
  新秀:Hansky Firefly
  做为H a n s k y 公司软件开发管理套件中重要一员的Firefly,可以轻松管理、维护整个企业的软件资产,包括程序代码和相关文档。 Firefly是一个功能完善、运行速度极快的软件配置管理系统,可以支持不同的操作系统和多种集成开发环境,因此它能在整个企业中的不同团队,不同项目中得以应用。
  Firefly基于真正的客户机/ 服务器体系结构,不依赖于任何特殊的网络文件系统,可以平滑地运行在不同的LAN、WAN 环境中。它的安装配置过程简单易用,Firefly 可以自动、安全地保存代码的每一次变化内容,避免代码被无意中覆盖、修改。项目管理人员使用 Firefly可以有效地组织开发力量进行并行开发和管理项目中各阶段点的各种资源,使得产品发布易于管理;并可以快速地回溯到任一历史版本。系统管理员使用Firefly 的内置工具可以方便的进行存储库的备份和恢复,而不依赖于任何第三方工具。
  入门级:Microsoft VisualSource Safe
  Visual Source Safe,即VSS ,是微软公司为Visual Studio配套开发的一个小型的配置管理工具,准确来说,它仅能够称得上是一个小型的版本控制软件。 VSS的优点在于其与Visual Studio实现了无缝集成,使用简单。提供了历史版本记录、修改控制、文件比较、日志等基本功能。
  但其缺点也是十分明显的,只支持Windows平台,不支持并行开发,通过 Check out - Modify -Check in的管理方式,一个时间只允许一个人修改代码,而且速度慢、伸缩性差,不支持异地开发。甚至于微软本身也不采用其做为配置管理工具,而是使用一个名为SLM 的内部工具。
  开源免费: CVS、GIT、SVN
  CVS:
  CVS 是Concurrent VersionsSystem 的缩写,它是开放源代码软件世界的一个伟大杰作,由于其简单易用、功能强大,跨平台,支持并发版本控制,而且免费,它在全球中小型软件企业中得到了广泛使用。其最大的遗憾就是缺少相应的技术支持,许多问题的解决需要自已寻找资料,甚至是读源代码。
  SVN(Subversion):
  SVN全名Subversion,即版本控制系统。SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。作为版本管理工具,CVS出现至今,已经有二十个年头,可以说他已经走到了尽头,但可以肯定,它将继续存在着。SVN是作为CVS的代替产品而出现的。现在很多开源组织,都慢慢地转到SVN上,比如Apache跟SourceForge。SVN有着比CVS更强大的功能,比如,它可记录目录的更改,它的性能比CVS会快很多等等。
  GIT(Georgia Institute of Technology):
  GIT 是一个快速、开源、可扩展的分布式版本控制系统,因此它在(开源)和(协作编程社区)有取代SVN的趋势。GIT具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。GIT与我们熟悉的大部分版本控制系统的差别是很大的。我们熟悉的Subversion、CVS、Perforce、Mercurial等等,他们使用“增量文件系统” (Delta Storage systems), 就是说它们存储每次提交(commit)之间的差异。GIT正好与之相反,它会把你的每次提交的文件的全部内容(snapshot)都会记录下来。理论上,GIT可以保存任何文档,但是最善于保存文本文档,因为它本来就是为解决软件源代码(也是一种文本文档)版本管理问题而开发的,提供了许多有助于文本分析的工具。对于非文本文档,GIT 只是简单地为其进行备份并实施版本管理。
  GIT的优点主要有:适合分布式开发,强调个体;公共服务器压力和数据量都不会太大;速度快、灵活;任意两个开发者之间可以很容易的解决冲突;离线工作。
  GIT的缺点是:资料少(起码中文资料很少);学习周期相对而言比较长;不符合常规思维;代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
  四、如何选择配置管理工具
  面对这些形形色色,各有千秋的配置管理工具,如何根据组织特点、开发团队需要,选择切合适用的工具呢?
  配置管理工具的选择所需考虑的因素大体包括以下几个因素:功能是否符合实际需求?是否符合团队特点?性能是否满意?费用是否可以接受?售后服务如何?接下来,我们就这几方面逐一深入地探讨:
  1)功能是否符合实际需求,是否符合团队特点
  工具就是用来帮助您解决问题的,因此功能是否符合实际需求是最重要的判断因素。而大多数主流配置管理工具的基本功能都能够满足,因此主要需要判断以下几个因素:
  并行开发支持
  在团队协作开发过程中,有两种主要的模式:集体代码权和个体代码权。采用集体代码权模式进行开发时,一段代码可能同时会被多个开发人员同时修改;而采用个体代码权模式进行开发时,每一段代码都始终被一个开发人员独享,别人需要修改时也会通过该开发人员完成。
  而配置管理软件针对这一情况,也采用了不同的策略:Copy-Modify-Merge(拷贝、修改、合并 ) 的并行开发模式、Check out-Modify-Check in(签出、修改、签入)的独占开发模式。
  异地开发支持
  如果你的开发团队分布在不同的开发地点,就需要对工具的异地开发功能进行仔细的评估了。大多数工具都提供基于 Web的界面,用户可以通过浏览器执行配置管理的相关操作,而且有些工具就通过这样的方法来实现对异地开发的支持。
  这种实现方法有太多的局限性,例如网络(Internet)连接带宽的限制、防火墙以及安全问题等。真正意义上的异地开发支持,是指在不同的开发地点建立各自的存储库,通过工具提供同步功能自动或手动同步。这样做的好处是与网络无关,即便各个开发地点之间没有实时连通的网络,也可以通过 E-Mail 附件等其它方式将同步包发给对方,实现手动的同步。        跨平台开发支持
  如果企业需要从事多个不同平台下的开发工作,就需要配置管理工具能够对跨平台开发提供支持,否则势必会给开发、测试、发布等各个环节带来不便,将使大量的时间被浪费于代码的手工上传、下载中。
  与开发工具的集成性
  配置管理工具与开发工具是编码过程中最常用到两种工具,因此它们之间的集成性直接影响到开发人员的便利性,如果无法良好集成,开发人员将不可避免地在配置管理工具与开发工具之间来回切换。
  2)性能是否满意
  配置管理工具软件的一些性能指标对于最终的选择也有着至关重要的影响。
  运行性能
  如果开发团队规模不大的情况下,配置管理工具软件的性能不会造成很大影响,但如果项目规模比较大,团队成员逐渐增多的情况下,其运行性能就会带来很大的影响。
  易用性
  从工具安装、配置、使用等容易程度出发,是否需要专业培训还简单培训即可。
  安全性
  是否存在相应的安全隐患。
  3)费用是否可以接受
  像Rational ClearCase 、Hansky Firefly 等企业级配置管理工具软件都是收费的商业软件。
  4)技术支持如何
  出现相关的技术问题是否能及时的得到相应的技术支持,工具在使用过程中出现这样那样的问题是很平常的事,有些是因为使用不当,有些则是工具本身的缺陷。这些问题都会直接影响到开发团队的使用,因此随时能够找到专业技术人员解决这些问题就变成十分重要。
  五、主流免费开源配置管理工具(CVS、GIT、SVN)比较
  * 原子提交性(Atomic commit):描述了在提交更改时,能否保证所有更改要么全部提交或合并,要么不会发生任何改变。
  * 版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和分布式两种模式。在客户端/服务器模式下,每一用户通过客户端访问位于服务器的主版本库,每一客户机只需保存它所关注的文件副本,对当前工作副本(working copy)的更改只有在提交到服务器之后,其它用户才能看到对应文件的修改。而在分布式模式下,这些源码版本库副本间是对等的实体,用户的机器出了保存他们的工作副本外,还拥有本地版本库的历史信息。
  * 并发模式(Concurrency model):描述了当同时对同一工作副本/文件进行更改或编辑时,如何管理这种冲突以避免产生无意义的数据,有排它锁和合并模式。在排它锁模式下,只有发出请求并获得当前文件排它锁的用户才能对对该文件进行更改。而在合并模式下,用户可以随意编辑或更改文件,但可能随时会被通知存在冲突(两个或多个用户同时编辑同一文件),于是版本控制工具或用户需要合并更改以解决这种冲突。因此,几乎所有的分布式版本控制软件采用合并方式解决并发冲突。
  * 历史模式(History model):描述了如何在版本库中存贮文件的更改信息,有快照和改变集两种模式。在快照模式下,版本库会分别存储更改发生前后的工作副本;而在改变集模式下,版本库除了保存更改发生前的工作副本外,只保存更改发生后的改变信息。
  * 变更范围(Scope of change):描述了版本编号是针对单个文件还是整个目录树。
  * 网络协议(Network protocols):描述了多个版本库间进行同步时采用的网络协议。
  * 部分克隆(Partial checkout/clone):是否支持只拷贝版本库中特定的子目录。
  六、配置管理工具选择
  通过对常见的配置管理工具的了解并结合开发人员的操作系统、开发流程、项目规模、易用性、费用及与开发环境的良好结合性等考虑,我们将采用主流的免费开源配置管理工具(CVS、GIT、SVN)中的一个。
  通过它们之间的对比,可以看出SVN有着比CVS更强大的功能,比如,它可记录目录的更改,它的性能比CVS会快很多,适用于各种级别的开发团队,它的权限控制很方便等等。
  SVN相对于GIT的优点是:管理方便,逻辑明确,符合一般人思维习惯;易于管理,集中式服务器更能保证安全性;代码一致性非常高。而相对于GIT的缺点是:服务器压力太大,数据库容量暴增;如果不能连接到服务器上,基本上不可以工作;不适合开源开发。
  GIT相对于SVN的优点是:适合分布式开发;公共服务器压力和数据量都不会太大;速度快、灵活;任意两个开发者之间可以很容易的解决冲突。但相对于SVN的缺点也很明显:资料少(起码中文资料很少);学习周期相对而言比较长;不符合常规思维;代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
  综合考虑之后,个人觉得框架开发项目采用SVN进行配置管理比较合适。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号