1、毕业论文论文题目论述如何做好版本控制内容摘要近年来,随着网络技术和数据库技术的发展,使得软件规模越来越庞大。多单位、多团队的协作开发使得开发队伍的离散化程度增加,多种数据库和多种开发平台的应用以及软件需求不确定性的增加,使得软件开发过程越来越复杂,作为软件过程中的版本控制管理面临着更多的挑战,使得单纯的版本控制系统在面对复杂的开发环境时显得力不从心。又因为版本控制是一项繁琐的工作,和整个软件的开发活动紧密地联系在一起,所以在实际工作中更需要有得力的工具辅助。从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实
2、际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,从而能够提高软件开发的质量。那么,随着软件产业的崛起,软件工程技术正吸引着越来越多关注的目光,作为软件工程的一个重要领域,版本控制管理也日益受到人们的重视。版本控制工具各有所长,因而只有根据项目的预算和和开发组织的实际情况出发,正所谓“好用就好”。在这里,本人就软件市场上的主流版本控制工具做一些介绍和个人的看法。关键词软件项目管理版本控制管理版本控制工具的比较ABSTRACTINRECENTYEARS,WITHTHEDEVELOPMENTOFNETWORKTECHNOLOGYANDDATAB
3、ASETECHNOLOGY,WHICHMAKESSOFTWAREMOREANDMORELARGESCALETOCOORDINATETHEDEVELOPMENTOFMULTIPLEUNITS,MULTIPLETEAMGIVESRISETODISCRETEDEGREEOFDEVELOPMENTTEAMINCREASETHEVARIOUSDEVELOPMENTTOOLS,DATABASEANDAVARIETYOFDEVELOPMENTPLATFORMANDTHESOFTWAREDEMANDUNCERTAINTY,MAKINGTHESOFTWAREDEVELOPMENTPROCESSMORECOMPL
4、EX,ASTHESOFTWAREDEVELOPMENTPROCESSINTHEVERSIONCONTROLMANAGEMENTISFACINGMORECHALLENGES,MAKINGTHESIMPLEVERSIONTHECONTROLSYSTEMISPOWERLESSINTHEFACEOFTHECOMPLEXDEVELOPMENTENVIRONMENTANDBECAUSETHEVERSIONCONTROLISATEDIOUSWORK,ANDTHEENTIRESOFTWAREDEVELOPMENTACTIVITIESCLOSELYTOGETHER,SOINTHEACTUALWORKNEEDST
5、OHAVETHERIGHTTOOLSCONCEPTUALLY,THESOFTWAREPROJECTMANAGEMENTISTOENABLESOFTWAREPROJECTACCORDINGTOTHESCHEDULEDCOST,SCHEDULE,QUALITYOFFINISH,ANALYSISANDMANAGEMENTACTIVITIESONCOST,SCHEDULE,QUALITY,RISKS,ETCINFACT,THESIGNIFICANCEOFPROJECTMANAGEMENTSOFTWAREISNOTONLYSO,SOFTWAREPROJECTMANAGEMENTWILLBECONDUCI
6、VETOTHEDEVELOPMENTOFTHEPERSONALDEVELOPMENTCAPABILITIESINTOENTERPRISEDEVELOPMENTCAPABILITIES,SOASTOIMPROVETHEQUALITYOFSOFTWAREDEVELOPMENTTHEN,ASTHESOFTWAREINDUSTRY,SOFTWAREENGINEERINGTECHNOLOGYISATTRACTINGMOREANDMOREATTENTION,ASANIMPORTANTFIELDOFSOFTWAREENGINEERING,VERSIONCONTROLMANAGEMENTISALSOINCRE
7、ASINGLYATTENTIONEACHONEHASHISGOODPOINTSVERSIONCONTROLTOOL,ANDONLYACCORDINGTOTHEACTUALSITUATIONOFPROJECTBUDGETANDDEVELOPMENTORGANIZATION,ISTHESOCALLED“GOODISGOOD“HERE,IHAVETHEMAINSTREAMVERSIONOFTHESOFTWAREONTHEMARKETCONTROLTOOLTODOSOMEINTRODUCTIONANDPERSONALVIEWSKEYWORDSOFTWAREPROJECTMANAGEMENTVERSIO
8、NCONTROLMANAGEMENTCOMPARISONOFVERSIONCONTORLTOOLS目录1版本控制的基本概念211什么是版本控制212为什么要版本控制22版本控制的发展史321第一代配置管理322第二代配置管理323第三代配置管理43不同“级别”的版本控制工具431“元老级”的CCC432RCS3533SCCS4534“新秀级”的HANSKYFIREFLY535“入门级”的VISUALSOURCESAFE536“中坚级”的CLEARCASE537开源软件通用的CVS和SVN6371CVSCONCURRENTVERSIONSSYSTEM6372SVNSUBVERSION64技术的潮
9、流大势开源版本工具841选择开源版本控制工具的理由8411服务器端是否和客户端一样看起来很美9412服务器端是否在使用数据库来作版本控制的数据引擎9413是否支持到其他版本控制系统的迁移10414可否定制是否可以对提交说明(COMMITLOG)进行检查10415客户端是如何状态保持的10416成本因素10417客户确认软件中没有木马、间谍软件么101引言随着软件产业的崛起,软件版本控制日益受到人们的重视,版本控制对软件产品的质量非常重要。版本控制的目的是实现开发团队并行开发、提高开发效率的基础。其目的在于对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文
10、件的丢失、修改的丢失和相互覆盖,通过对版本库的访问控制避免未经授权的访问和修改,达到有效保护企业软件资产和知识产权的目的。版本控制的功能在于跟踪记录整个软件的开发过程,包括软件本身和相关文档,以便对不同阶段的软件及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修改,辅助协调和管理软件开发团队。因此,我们需要从技术方面进行突破和创新,以此来配合我们的工作需求。21版本控制的基本概念11什么是版本控制版本控制1是程序开发、管理必不可少的工具,特别是在多人协作的团队中,适宜的版本控制工具可以提高开发效率,消除很多由代码版本带来的问题。通过使用版本控制技术及工具
11、,可以确保在软件项目开发中不同的开发人员所涉及的同一文档都得到正确的更新。版本控制包括两个方面一是保证测试人员得到的是最新的版本,二是记录历史版本的测试状态。版本控制是对系统不同版次进行标识和跟踪的过程,而版次则是指一系列版本变迁的其中一个。版本标识的目的是便于对版本加以区分、检索和跟踪,以表明各个版本之间的关系。版本控制的功能在于能跟踪记录整个测试过程,包括测试本身和相关文档,以便对不同阶段的待测软件及相关文档进行标识和差别分析,也便于协调和管理测试团队的工作。版本控制对于测试人员来说,它是不可或缺的工具。测试人员可以通过版本说明文档了解到当前的测试版本中和上一版本有哪些显著的变化。明确了这
12、些情况之后,测试人员可以更加高效,有针对性的执行测试。12为什么要版本控制在前面已经介绍了版本控制的概念,那么这一章节我们重点了解为什么要版本控制。软件开发的混沌1版本较多,不知道如何选择一个合适的版本进行下一步的工作2团队经常得不到一个可以工作的版本而苦不堪言3有多个版本而不能很好的整合4用户出现问题,而你却无法获取和重构用户版本5变更2无法追踪,无法有效的追溯版本的变化6经常处在无法说清楚项目的真实状态。以上这种情况的发生,让开发人员和测试人员都会非常头疼,因为在实际生产环境中,如果没有版本控制工具的协助,在实际工作中我们经常会遇到下面的一些问题1用户权限混乱。所有开发人员和各自负责的模版
13、,在管理权限上没有明确,就会出现如果是别人添加或删除一个文件,又没有文字或邮件说明,你很难发现。甚至出现文件丢失,或新版本代码被同伴无意覆盖等现象。2多人修改一个文件。一旦出现这样的情况,很有可能别人辛勤劳动的工作,就会毁于一旦。最原始的办法是手工打开冲突文件,逐行比较,再手工粘贴复制。更高级的做法是使用文件比较工具,但仍省不了繁杂的手工操作,一不小心,甚至会引入新的BUG。是一个费力不讨好的工作,效率低,质量不能得以保证。3在代码整合期间引入深层BUG。开发人员互相使用文档,对原有的代码进行复用和修改,又不通知其原有负责模块的同事,使得代码被修改,用途变得不一致,对产品本身3产生更大的影响。
14、4项目不同版本发布困难。在产品开发过程中,会频繁的进行版本发布,没有一个好的管理工具,产品质量和进度很难得以保证。5测试人员投入人力资源过多,测试时间过长,测试进度缓慢,测试成本增加,从而导致软件质量下降。那么,如果有那么一套系统1管理档案2救回删除或被覆盖的档案3可以从新的版本再出发4告诉你个版本间的差异5告诉你专案开发的顺序及修改人员6冻结程序码,以及在BUG的同时,修改了其它的CODE而增加更多新的问题7从一个人到很多人都可以使用这就是版本控制工具的神奇妙用,因为拥有了版本控制工具就可以有效解决因为代码版本不同引起的各种问题,让我们的开发人员能更多的把精力花费在开发上面,提高软件质量。而
15、不是每次都花费很多时间进行代码整合和解决版本不同带来的各种问题。在实际工作中,就可以及时了解团队中其他成员的进度,轻松比较不同版本之间的细微差别,记录每个文件成长的每步细节,利于后期使用。资料共享,避免以往靠邮件发送文件造成的混乱,人人为我,我为人人。所有成员维护的实际是同一个版本库,无需专人维护所有文件的最新版本;协同工作,大大提高团队工作效率,无论团队成员分布在天涯还是海角。2版本控制的发展史21第一代配置管理1时间七十年代开始2特征A基于文件(FILEBASED)的版本控制。B支持CHECKOUT/CHECKIN模型。C简单分支3解决问题文件丢失和覆盖的问题。4最佳经验A标识工件,将工件
16、存入安全的版本库。B控制并记录对工件的变更。C保持稳定,一致的工作空间。22第二代配置管理1时间八十年代中后期2特征4A基于项目库将元数据与配置项分开存储管理。B从而更好地支持并行开发、团队协作以及过程管理。3解决问题并行开发。4最佳实践A支持工件的并行开发。B及早集成,经常集成。C记录并追踪变更跟请求。D保证软件BUILD可重现。23第三代配置管理1时间2000年2特征以活动为中心的组织和集成3解决问题如何在复杂的软件开发中把握变更4最佳实践A将工件组织成版本化的构件“构件的引入”有利于逻辑设计和物理实现相对应,提供一种机制来更智能的创建和使用基线;构件是对众多的文件进行合理分类以呈现系统的
17、设计要素可以大大简化项目开发控制,可以通过合理的目录来组织构件。B以活动为中心的组织和集成建立活动变更集的映射。C在项目里程碑处创建基线更好的标识阶段点和提供开发复用的基准。3不同“级别”的版本控制工具版本控制在软件项目开发中非常重要,但是不同的项目需要不同的版本控制工具,需要对所有的版本控制工具有一个认识和理解,才能更好的运用到工作中。所谓“工欲善其事,必先利其器”,因此需要我们从专业角度和实践经验来仔细了解、剖析一下软件版本控制工具。版本控制工具也有“级别”之分,其中有“元老级”的CCC(CHANGEANDCONFIGURATIONCONTROL)、RCS(REVISIONCONTROLS
18、YSTEM)、SCCS(SOURCECODECONTROLSYSTEM),“新秀级”的HANSKYFIREFLY,“入门级”的VISUALSOURCESAFE,“中坚级”的CLEARCASE,还有开源软件通用的版本控制工具CVS(CONCURRENTVERSIONSSYSTEM)和SVN(SUBVERSION)。CVS在一段时期内几乎成为版本控制工具的“代名词”,大概有着30多年的历史,而SVN是CVS的理想替代者,并出自同一人之手,被一些人誉为“迄今为止最好用的开源源码版本控制工具”。31“元老级”的CCCCCCCHANGEANDCONFIGURATIONCONTROL。在20世纪60年代末
19、70年代初,软件配置管理的概念开始提出。20世纪七十年代初期加利福利亚大学的LEONPRESSER撰写了一篇论文,提出控制变更和配置的概念,之后在1975年,他成立了一家名为SOFTTOOL的公5司,开发了自己的配置管理工具CCC这也是最早的配置管理工具之一。32RCS3RCSREVISIONCONTROLSYSTEM。诞生于1980年,由WALTERFTICHY于美国的在INDINA州的PURDUE大学开发,是基于单一文件的版本维护系统。33SCCS4SCCSSOURCECODECONTROLSYSTEM。SCCS是一种基本的程序源代码版本控制工具,它适用于任何正文文件的版本维护。基于单一文
20、件的版本控制,通常它的软件储藏室和要维护的文件在同一目录下SCCS工作时,有一个专门的SCCS格式的文件保留其源文件的编码版本,其记录了足够的信息来生成新的版本,并记录了谁对文件有修改权,拥有该版本的“锁”。34“新秀级”的HANSKYFIREFLY5HANSKYFIREFLY作为HANSKY公司软件开发管理套件中重要一员的FIREFLY,可以轻松管理、维护整个企业的软件资产,包括程序代码和相关文档。FIREFLY是一个功能完善、运行速度极快的软件配置管理系统,可以支持不同的操作系统和多种集成开发环境,因此它能在整个企业中的不同团队,不同项目中得以应用。FIREFLY基于真正的客户机/服务器体
21、系结构,不依赖于任何特殊的网络文件系统,可以平滑地运行在不同的LAN、WAN环境中。它的安装配置过程简单易用,FIREFLY可以自动、安全地保存代码的每一次变化内容,避免代码被无意中覆盖、修改。项目管理人员使用FIREFLY可以有效地组织开发力量进行并行开发和管理项目中各阶段点的各种资源,使得产品发布易于管理;并可以快速地回溯到任一历史版本。系统管理员使用FIREFLY的内置工具可以方便的进行存储库的备份和恢复,而不依赖于任何第三方工具。35“入门级”的VISUALSOURCESAFE6VISUALSOURCESAFE简单易用、方便高效、与WINDOWS操作系统及微软开发工具高度集成。36“中
22、坚级”的CLEARCASECLEARCASEIBM旗下RATIONAL公司2003年被IBM收购的一款重量级的软件配置管理SCM,SOFTWARECONFIGURATIONMANAGEMEN工具。与CVS和VSS不同,CLEARCASE涵盖的范围包括版本控制、建立管理、工作空间管理和过程控制。从最初的软件配置计划,到配置项的确立,从变更控制到版本控制,CLEARCASE贯穿于整个软件生命周期。CLEARCASE支持现有的绝大多数操作系统,但它的安装、配置、使用相对较复杂,并且需要进行团队培训。6CLEARCASE的核心功能是版本控制,它是对在软件开发进程中一个文件或一个目录发展过程进行追踪的手
23、段。CLEARCASE对所有文件系统对象(包括文件、目录和链接)增强了版本控制系统功能。可定版本的文件包括源代码、可执行文件、位图文件、需求文档、设计说明、测试计划、和一些ASCII和非ASCII文件。目录的版本记录了整个组织基础资源的发展状况,包括源文件的建立、重新命名、重新构造和删除操作等。这种版本控制系统提供了先进的版本分支和归并功能用于支持并行开发。37开源软件通用的CVS7和SVN371CVSCONCURRENTVERSIONSSYSTEMCVS是有着三十年以上的时间的考验。CVS是开放源代码软件世界的一个伟大杰作,有人认为如今开源成功发展的幕后功臣之一当CVS莫属。LINUX的创始
24、人LINUS就把LINUX的成功,归因于CVS。由于CVS功能强大,跨平台,支持并发版本控制,而且免费,所以它在全球中小型软件企业中得到了广泛使用。CVS最大的遗憾就是缺少相应的技术支持,许多问题的解决需要自已寻找资料,甚至是研究源代码。CVS是一个典型的服务器/客户端软件,有UNIX版本的CVS、LINUX版本的CVS和WINDOWS版本的CVS。CVS支持远程管理,项目组分布开发时一般都采用CVS。372SVNSUBVERSIONCVS纵然易用,但也有一些与生俱来的缺点,比如CVS不支持文件改名,只对文件控制版本而没有针对目录的管理,等等。之后CVS的创始人之一在其现任公司的资助下开发了S
25、UBVERSION,用以替代CVS。SUBVERSION的设计目的就是针对CVS的一些弱点进行改进。下面从几个具体介绍SUBVERSION。SUBVERSION是什么SUBVERSION是一个自由/开源版本控制系统,它管理文件和目录可以超越时间。一组文件存放在中心版本库,这个版本库很像一个普通的文件服务器,只是它可以记录每一次文件和目录的修改,这便使你可以取得数据以前的版本,从而可以检查所作的更改。从这个方面看,许多人把版本控制系统当作一种“时间机器”。SUBVERSION的历史2000年,COLLABNET,INC就开始寻找CVS替代产品的开发人员。COLLABNET提供了一个名为COLLA
26、BNET企业版(CEE)的协作软件套件。这个软件套件的一个组成部分就是版本控制系统。尽管CEE在最初采用了CVS作为其版本控制系统,但是CVS的局限性从一开始就很明显,COLLABNET知道,迟早要找到一个更好的替代品。遗憾的是,CVS已经成为开源世界事实上的标准,很大程度上是因为没有更好的替代品,至少是没有可以自由使用的替代品。所以COLLABNET决定从头编写一个新的版本控制系统,这个系统保留CVS的基本思想,但是要修正其中错误和不合理的特性。2000年2月,他们联系到OPENSOURCEDEVELOPMENTWITHCVSCORIOLIS,1999的作者KARLFOGEL,并且询问他是否
27、希望为这个新项目工作。巧合的是,当时KARL正在与朋友JIMBLANDY讨论设计一个新的版本控制系统。1995年时,他们两人曾经开办了一个提7供CVS支持的公司CYCLICSOFTWARE,尽管他们最终卖掉了公司,但还是天天使用CVS进行日常工作。使用CVS时的挫折促使JIM认真的思考如何管理版本化的数据,并且他当时不仅使用了“SUBVERSION”这个名字,并且已经完成了SUBVERSION版本库的最初设计。所以当COLLABNET提出邀请的时候,KARL马上同意为这个项目工作,同时JIM也找到了他的雇主REDHAT软件公司允许他到这个项目工作,并且没有限定最终的期限。COLLABNET雇佣
28、了KARL和BENCOLLINSSUSSMAN,详细设计工作从三月开始,在BEHLENDORF、COLLABNET、JASONROBBINS和GREGSTEIN(当时是一个独立开发者,活跃在WEBDAV/DELTAV系统规范制订工作中)恰到好处的激励下,SUBVERSION很快吸引了许多活跃的开发者,结果是许多对CVS有过失望经历的人很乐于为这个项目做些事情。14个月的编码8,2001年8月31日,SUBVERSION能够“自己管理自己”了,开发者停止使用CVS保存SUBVERSION的代码,而使用SUBVERSION本身。SUBVERSION的功能介绍1包含绝大部分CVS的功能CVS是最基本
29、的版本控制系统。SUBVERSION包含了CVS的大部分功能,并且针对有些功能还稍加改进。2目录的版本化SUBVERSION将目录名以版本号的形式体现。3基于版本的复制,删除和重命名无论复制,删除还是重命名,都会被打上版本号,尽管这听上去有些奇怪。4自由的版本化元数据操作SUBVERSION允许任何元数据附加在文件或目录中。这些属性是键/值对,并且被版本化。SUBVERSION也提供对修订版附加任何键/值属性的方法,这些属性不会被版本化因为他们会自动将元数据附加到版本空间中,但他们可以随时被更改。5混合追踪SUBVERSION15开始,加入了混合追踪功能。6文件锁支持文件锁定,当多个用户试图编
30、辑同一个文件时会收到警告。7APACHE网络服务的支持,基于WEBDAV/DELTAV协议9使用基于HTTP的WEBDAV/DELTAV协议进行网络通信,而APACHE网络服务器提供网络存储的站点服务。8可执行的标签当一个文件是可执行的时候SUBVERSION会提示,并且当这个可执行的文件被放在版本控制中时,SUBVERSION会防止该程序检查其他目录,恢复到一个较早的版本。9独立进程模式SUBVERSION可以运行在独立模式下。10一个只读的存储镜像10SUBVERSION提供一个工具,SVNSYNC,用于同步主服务器上的文件到一个子存储服务器上,并且标为只读的属性。我们通过上面的功能介绍已
31、经了解了SVN,那么CVS与SVN之有什么依存关系和不同之处那我们知道CVS是使用最广泛的版本管理软件。CVSCONCURRENTVERSION8SYSTEM协同版本控制系统,服务器上保存所有的开发项目,开发者们通过服务器上的共享目录,共同开发同一个项目,达到追踪所有的工作进度,而服务器上也会保存历史版本信息,以方便开发者的排错。通过下面的对比,我们更能做出对产品更全面的认识。SVN与CVS对比的优点如下1统一的版本号。CVS是对每个文件顺序编排版本号,在某一时间各文件的版本号各不相同。而SUBVERISON下,任何一次提交都会对所有文件增加到同一个新版本号,即使是提交并不涉及的文件。所以,各
32、文件在某任意时间的版本号是相同的。版本号相同的文件构成软件的一个版本。2原子提交11。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏。3重命名、复制、删除文件等动作都保存在版本历史记录当中。4对于二进制文件,使用了节省空间的保存方法。5目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。6分支的开销非常小。7优化过的数据库访问,使得一些操作不必访问数据库就可以做到。这样减少了很多不必要的和数据库主机之间的网络流量。4技术的潮流大势开源版本工具通过第3章对各种版本控制工具的介绍,相信你们对
33、版本控制有了初步的了解,那么各种版本控制都有自己的特点,都有产品本身的利和弊,那么怎么样来判断他们的优劣,然后可以更加适用自己的工作那那么,本章针对现在软件开发项目中实际案例总结,总是会选择开源版本控制工具,为什么会这样做41选择开源版本控制工具的理由先来看下CVS的基本工作模式9图41CVS基本工作模式CVS在服务器端维护代码文档库,不同的开发者在本地机器上建立对应代码树,并利用CVS保持本地代码文档同代码文档库的一致。当由于多个开发者对文件的同时修改造成本地与库中的代码文件冲突时,CVS报告并协助解决冲突代码的合并问题。普通开发者(非管理员)对CVS的使用流程如下所示图42CVS使用流程C
34、HECKOUT命令只需在开始建立本地代码树时使用一次,其后更新本地代码则使用UPDATE命令。UPDATE命令比较服务器和本地代码库的区别,并把本地代码树中过时的文件自动更新。当完成对代码的修改之后,在提交代码之前同样需要使用UPDATE命令,以获取他人并行修改的的代码。如果出现冲突(即对同一文件同时进行了修改),CVS将在本地代码中把两者都保留并标记出来,要求开发者处理冲突。在冲突不存在或已解决的情况下,使用COMMIT命令将服务器代码更新为本地代码。CVS要求为更改提供注释,并自动为更新的文件处理版本编号。当软件需要正式发布时,使用EXPORT命令导出不包含CVS设置信息的源代码树。即使不
35、用拿CVS的升级版SVN,就算是拿没有目录版本控制功能的CVS来和商业的版本控制工具相比,我们也有充足的选择开源版本控制工具的理由。411服务器端是否和客户端一样看起来很美有一些商业软件12的服务器端简直就像是一个垃圾场,用流水号命名的文件名,一个目录下动辄成千上万个文件。CVS以文件为核心,即面向文件的管理方式,项目文件可以方便地组合和移植。412服务器端是否在使用数据库来作版本控制的数据引擎为了支持目录的版本控制工具,大多数商业软件选择了一个最为简单和直接的解决方案数据库,用数据库将文件名和版本库对应。但是引入数据库,服务器的稳定性、可10维护性大大下降,成为管理员的噩梦。增量备份计划难以
36、实现,不知道什么时候会出现数据库崩溃。413是否支持到其他版本控制系统的迁移对于商业软件,这个答案是否定的。如果允许将版本库导出到其他版本控制系统,简直就是将自己好不容易积累的客户拱手相让。414可否定制是否可以对提交说明(COMMITLOG)进行检查可否每一次的提交事件能够收到邮件通知CVS的CVSROOT脚本扩展13,以及SVN的HOOKS钩子脚本,可以让用户充分发挥想像的空间。而商业版本控制工具,有此功能的寥寥。415客户端是如何状态保持的熟悉CVS和SVN的用户应该知道工作目录下的CVS和SVN隐含目录的作用,就是用于记录版本控制状态信息的。而很多商业软件并没有这个机制,而是靠服务器端
37、来维护此记录哪台主机、检出哪个版本的代码、存储到哪个目录。这么做的一个弊病就是工作目录不能自由在硬盘中移动,系统重装导致的状态丢失。416成本因素一是软件采购成本14。商业软件版本控制工具动辄十几万美金,而且是和用户数目挂钩的。二是学习成本。商业软件版本控制工具的部署范围非常有限,不能保证新员工一定熟悉该系统,但是如果选择开源的版本控制工具,那么员工的培训费,可能就可以省下了。417客户确认软件中没有木马、间谍软件么客户肯定不会去购买你竞争对手开发的版本控制工具,那么您为什么还会相信其他闭源的版本控制工具呢再优秀的版本控制工具都是软件项目15开发中的一部份,况且,一个项目的完成并不只只涉及版本
38、控制工具,还包括其他的一些工具。一个软件项目的开发成功需要涉及工具的使用,开发人员资源的管理等因素。但是,选择一款优秀的、适合开发团队和项目需求的版本控制工具能够提高开发工作效率和代码的优质性。对于版本控制工具的选择,秉持的一个原则是“不选贵的,只选对的。”11总结与展望通过这次的软件工程课程设计,我比较熟练的掌握了软件开发的基本思想以及软件开发的基本流程。我受到了一次用专业知识、专业技能分析和解决问题的全面系统的锻炼。并且在综合知识的选用方面,在应用软件开发的基本思想、方法方面都向前迈了一大步。为日后成为合格的测试人员打下良好的基础。这次在指导老师的帮助下,在同事的帮助下,基本上完成了毕业设
39、计,在软件的设计方面也有了一定的提高,熟练掌握了SVN版本控制工具的使用,为今后的工作打下了扎实的专业基础。在这次的课程设计中,让我深刻认识到版本控制工具的妙用,开始我只是以完成任务的心态去学习版本控制软件的使用。但随着慢慢深入的学习和使用,再结合以前工作中遇到开发人员因没有正确运用版本控制软件而造成的种种麻烦,终于让我体会到了版本控制工具的无穷妙用。由于现在的软件开发项目几乎都是多个开发人员共同负责同一个软件文档的开发,每个人在各自的机器上有整个软件文档的备份,并对之实施编程开发,在分别完成各自任务之后,再通过文本比对工具将各自机器上的不同版本的程序整合到一台机器上,故对我们这些有可能会从事
40、软件开发工作的人来说,掌握软件控制工具是我们的必备技能之一。让我也体会到进行软件开发不是一件简单的事情,它需要设计者具有全面的专业知识、缜密的思维、严谨的工作态度以及较高的分析问题、解决问题的能力,而我在很多方面还有欠缺。在以后的学习过程中我会从这次课程设计中汲取教训并寻求高效率优方法的学习态度不断充实自我完善自我。12注释1HTTP/WWWOSCHINANET/P/SUBVERSION开源社区网。2张海潘软件工程北京清华大学出版版社,2003年4月第一版3SVN搭建和使用手册HTTP/BLOGSINACOMCN/HOUZAICUN4SUBVERSION的好处HTTP/BAIKEBAIDUCO
41、M/VIEW/429581HTM5(美)梅森(MIKEMASON)版本控制之道,电子工业出版社,2007年3月1日出版6董越未雨绸缪理解软件配置管理(第2版),2012年6月1日,电子工业出版社7美PAULMDUVALL(保罗M杜瓦尔)STEVEMATYAS(史蒂夫迈耶斯)ANDREWGLOVER安德鲁格洛弗著,王海鹏译持续集成软件质量改进和风险降低之道,电子工业出版社,2012年6月8谢希仁计算机网络北京电子工业出版社,20089萨师煊、王珊数据库系统概论(第四版),高等教育出版社,2005年4月10SVN中文教程HTTP/WWW99191COM11版本控制软件HTTP/BAIKEBAIDU
42、COM/VIEW/2942399HTM12(美)瓦力(WALI,U)著,李纪华译,人民邮电出版社,2006年7月13阳王东等编著,软件项目管理与实践,水利水电出版社,2009年1月14SUBVERSION的好处HTTP/BAIKEBAIDUCOM/VIEW/429581HTM15孙强南,孙昱东计算机体系结构(第二版)北京科学出版社,200013参考文献1HTTP/WWWOSCHINANET/P/SUBVERSION开源社区网。2张海潘,软件工程,北京清华大学出版版社2003年4月第一版,第131页3SVN搭建和使用手册HTTP/BLOGSINACOMCN/HOUZAICUN4SUBVERSIO
43、N的好处HTTP/BAIKEBAIDUCOM/VIEW/429581HTM5(美)梅森(MIKEMASON)版本控制之道,电子工业出版社,2007年3月1日出版,第53页6董越未雨绸缪理解软件配置管理(第2版),2012年6月1日,电子工业出版社7美PAULMDUVALL(保罗M杜瓦尔)STEVEMATYAS(史蒂夫迈耶斯)ANDREWGLOVER安德鲁格洛弗著,王海鹏译持续集成软件质量改进和风险降低之道,电子工业出版社,2012年6月8谢希仁计算机网络北京电子工业出版社,20089萨师煊、王珊数据库系统概论(第四版),高等教育出版社,2005年4月10SVN中文教程HTTP/WWW99191COM14致谢首先,我要衷心感谢老师在我的课程设计过程中给予我的极大帮助,使我能够及时、顺利地完成此次的软件工程课程设计。同时,也要感谢我的其他任课老师的教诲,感谢在本次的设计过程中给予我大力支持和帮助的各位朋友。最后,请老师指导,我会继续努力的。