现在的位置: 首页 > 综合 > 正文

ClearCase 介绍

2013年09月28日 ⁄ 综合 ⁄ 共 10455字 ⁄ 字号 评论关闭

一、        软件配置管理的必要性

 

没有任何一个行业象计算机工业发展的如此迅速。在今天的软件产业更是如此,技术和产品的更新日新月异令所有技术人员和管理人员都感到明显的压力。软件产品的开发,市场投放速度成倍增长;Internet/Intranet应用的发展改变着软件的开发,传递,和分发方式;不断提高的软件质量的要求,使越来越多的软件机构感到取得ISO9000SEI Capability Maturity   ModelCMM)认证的迫切性;多平台,多操作系统,多开发工具,多对象类型,多计算机语言等,使复杂的软件开发环境更加难以控制。不仅如此,Internet/IntranetClient/Server,以及面向对象等新技术的兴起如同雨后春笋。在计算机工业进入90年代后期,所有上述挑战将会给没有充分准备的软件企业带来无可挽回的损失,无论人们的主观愿望如何,这毕竟是客观现实!

    我国信息技术产业的蓬勃发展促使各种先进技术和产品在国内被广泛的应用,为国内的软件开发注入了活力。然而,值得注意的是,各种先进的操作系统,开发工具等在带来效益的同时,也使得我们的开发环境日益复杂化而难以管理。无组织的开发环境会导致潜在问题的产生,直至影响整个系统的致命错误出现才会为开发人员所认识但已为时晚矣。  软件工程使软件开发从手工作坊上升到集团开发方式,软件开发管理工作围绕着软件生命周期的分析设计、开发、测试、运行维护四个阶段进行。通过使用软件工程的方法及工具,可以避免开发过程中许多可能出现的错误;提高软件的重用性;降低软件测试和维护中的工作量;大大地提高了软件产品的质量;缩短了开发周期。目前我国软件开发缺少相应的面向开发队伍的管理软件支持,忽视了当前国际上软件开发中的重要一环──软件开发的管理

今天,网络上团队化的工作方式已成为主要的软件开发方式,因此软件开发管理就显得更加重要,其管理的好坏将直接影响到软件产品的质量。如果缺乏对软件开发的统一管理,势必造成以下问题的出现。

 

l         由于开发经费及开发时间的限制,不可能一次开发就解决所有问题,许多问题有待维护阶段解决,因此带来的是软件产品的不断升级,而维护和升级所必需的文档往往非常混乱。

l         开发商开发过程缺乏规范化的管理,即使有源程序文档也由于说明不详细而不能对产品进行进一步的功能扩充,用户不得不再投入大量的经费去开发新产品,浪费大量的人力、物力和时间。

l         在软件的团队式开发中,人员流动在所难免,如管理不善,有些人员的流动将对开发产生致命的影响。特别是软件开发管理人员的流失,有可能造成无法确定软件产品中各模块所处的状态及阶段,使软件产品的版本出现混乱。

l         管理不善致使没经测试的软件加入到产品中,不但影响产品的质量,有时还会导致致命的错误,造成不可挽回的损失。

l         用户与开发商没有有效的产品交接界面,用户投入了开发费用后,得到的是有关可执行程序以及一堆杂乱无章的文档,即使是较好的文档,对不熟悉开发过程的专业人员来说也无从下手,更谈不上日后的维护和升级,用户的利益无法保证。

l         软件生产达不到规模化,无法生产出软件企业内部的软件标准构件仓库,使应用软件产品总处于一种低水平、重复开发的状态,不但时间得不到保证,而且成本也无法降低,使产品没有市场竞争力。

   

这些问题在实际开发中表现为,项目组成员沟通困难,软件重用率低下,开发人员各自为政,代码冗余度高,文档不健全等;造成的结果是,数据丢失,开发周期漫长,产品可靠性差,质量低劣,软件维护困难,用户抱怨使用不便,项目风险增加等。曾经在70年代波及西方发达国家的“软件危机”,就是出现了类似的现象。

今天,软件技术在国民经济运行中发挥着举足轻重的作用,渗透到社会生活的各个方面,软件的质量水平直接关系到软件组织和企业的命运;而从根本上,软件的质量取决于开发过程良好的管理和控制体系。但是,由于软件本身的属性,即软件是无形的,没有任何物理性质,难以驾驭;而开发过程中又使用了多种开发工具、操作系统、对象类型和语言,造成开发环境复杂而难以管理,据有关调查结果显示:平均每个开发人员被包围在2个操作系统、3种语言、5个开发工具和若干对象类型当中;再加上,多人协同开发方式的引入,项目组成员共享同一个源代码开发,致使开发过程更加难以控制,代码冗余度高、数据丢失、工作相互覆盖等问题层出不穷;所有这些因素都会导致潜在问题的产生,往往直到发展为影响整个系统或项目的致命错误才被开发人员所认识,但为时已晚!在技术密集的航天、航空领域这一影响尤为严重,966月欧洲航空航天局耗资67亿美元的阿丽亚娜5号升空37秒后剧烈爆炸,就是由于软件中潜在的致命错误造成的。痛定思痛,为获得这一深刻的认识人们已经付出了昂贵的代价,然而问题远不在于此。事实已经表明,随着国民经济对软件需要的增长和整个软件业的迅速发展,没有得到有效管理的软件开发过程中所出现的风险和挑战将越来越突出!

     以上种种问题的出现,使得最终开发出来的软件产品的质量难以保证,应用难以稳定。综上所述,软件开发的管理是保证软件产品质量的非常重要的环节,怎样进行软件开发管理才能生产出高质量的软件产品呢?在ISO9000质量管理和质量保证标准中,制定了《在软件开发、供应和维护中的使用指南》标准,该标准除对软件生存周期的各个阶段做了严格的规定外,还在其质量体系中规定了与阶段无关的支持活动,其中软件配置管理被放在首位。那么什么是软件配置管理(Software  Configuration  Management)呢?软件配置管理有多种定义,在Wayne Babich的《Software Configuration Management : Coordinating  for  Team  Productivity》一书中把软件配置管理描述为“对软件开发组所建立的软件进行标识、组织和控制的艺术”。尽管这个定义比较简单,它仍反映出软件配置管理是多方面的。

总之,软件配置管理作为软件开发过程的必要环节和软件开发管理的基础,支持和控制着整个软件生命周期。若要有效的实施软件配置管理,除了培养软件开发者的管理意识外,更重要的是使用优秀的软件配置管理工具。

 

二、  优秀的配置管理工具(ClearCase

 

介绍ClearCase及配置管理

    随着软件团队人员的增加,软件版本不断变化,时间的紧缺,多种平台的复杂环境,使得ClearCase所拥有的特殊组件已成为当今软件开发人员(工程人员和管理者)所必须的工具。分布式操作使得基于Client/Server的运算结构跨越于网上客户机和服务器,ClearCase的先进功能直接解决了原来开发团队所面临的难以处理的问题。

    软件开发所面临的问题包括:对当前多种产品的开发和维护,保证产品版本的精确,重建先前发布的产品,加强开发政策的统一和对特殊版本需求的处理通过解决这些问题,ClearCase用资源重用的方法帮助开发团队使他们所有的软件建立得更加可靠。

Rational  公司的ClearCase是软件配置领域的先导,它主要基于Windows和UNIX的开发环境。它提供了全面的配置管理──包括版本控制、工作空间管理、建立管理和过程控制,而且无需软件开发者改变他们现有的环境、工具和工作方式。

 

ClearCase的四种功能

    ClearCase主要应用于复杂的产品发放、分布式团队合作、并行的开发和维护任务,包括支持当今流行软件开发环境Client/Server网络结构。在激烈的市场竞争中,ClearCase的特点直接响应了软件团队的需求,如:软件生产、发布、维护等。

       

ClearCase在某些方式上和其它的软件配置管理系统有所不同,从本质上,ClearCase是无可比拟的,因为它包含了一套完整的软件配置管理工具而且结构透明、界面可亲。虽然ClearCase是一个可集成使用的环境,但实际上我们仍可以把ClearCase的所有特性划分为四个具体功能范畴。

版本控制(Version Control)

    ClearCase自动追踪每一个文件和目录的变更情况,通过分支和归并功能支持并行开发。在软件开发环境中,ClearCase可以对每一种对象类型(包括源代码、二进制文件、目录内容、可执行文件、文档、测试包、编译器、库文件等)实现版本控制。因而,ClearCase提供的能力远远超出资源控制,并且可以帮助团队,在开发软件时为他们所处理的每一种信息类型建立一个安全可靠的版本历史记录。

 

工作空间管理(Workspace Management)

    ClearCase给每一位开发者提供了一致、灵活的工作空间(有时也称为“Sandboxes”)。ClearCase采用一种称为View的创新技术,它可以选择所指定任务的每一个文件或目录的适当版本,并呈现它们。View可以让开发者在资源代码共享和私有代码独立的不断变更中达到平衡,从而使他们工作互不干扰、效率更高。

 

建立管理(Build Management)

    ClearCase能准确的选择所要建立的文件版本,产生软件建立过程的记录信息,而且可以完全、可靠的重建任何以往的版本。ClearCase也可以通过共享二进制文件和并发执行多个建立脚本的方式支持有效的软件构造。

 

过程控制(Process Control)

    ClearCase能有效的规范开发团队的管理。可以通过对全体人员的不同授权来控制哪些人可以修改、浏览、执行哪些文件或目录。自动的产生常规日志可以监控软件什么时间、被谁修改、修改了什么内容以及执行政策。提供用户可定制的触发机制,使软件开发的管理趋于自动化。

   

ClearCase四大功能详述

 

(一)版本控制

    ClearCase的核心功能是版本控制,它是对在软件开发进程中一个文件或一个目录发展过程进行追踪的手段。ClearCase采用的是一种元素级的版本管理机制,系统中的各种文件和目录均可以被视为元素,因此ClearCase可以对文件系统的所有对象(包括文件、目录)进行版本控制,其中文件类型包括:源代码、可执行文件、位图文件、需求文档、设计说明、测试计划、和一些ASCII和非ASCII文件。目录的版本记录整个目录的发展状况,包括目录内文件的建立、重新命名、重新构造、添加和删除等操作。另外ClearCase的版本控制功能还提供了自动的版本分支和归并功能,从而更有力的支持并行开发。

 

1.1 独有的存储库VOB(Version Object Bases)

   ClearCase把所有版本控制的数据存放在一个永久、安全的存储区中,这个存储区被称为版本对象类(Version Object Bases),项目团队(或管理者)可以决定它们所需要的VOBs的数量,可以决定什么样的目录或文件需要被维护。VOBs不仅是一个可连接的文件系统而且也是网上的资源──主机可以连接任何数量的VOBs.

ClearCase VOBs的组成模式跟UNIX、Windows NT的文件系统和分布式的数据库系统非常类似。ClearCase采用Raima数据管理机制来维护VOB数据库。对于文本文件来讲它采取的是增量方式存储,而对于其他非文本格式的文件ClearCase采用标准的压缩技术存储,这比以往的存储形式节省了50%70%的存储空间。当VOBs在ClearCase中被连接和访问时,VOBs以标准目录树的形式出现在客户面前,包含标准的文件对象:目录、文件、符号链接和硬链接。但事实上,文件系统已经有广泛的版本控制组件:它包含目录元素、目录元素版本、文件元素、文件元素版本、VOB符号链接和VOB硬链接。开发者也可以查看和这些文件系统对象相关的数据。这些数据包括事件记录,建立审核以及用户自定义项,如:版本标签和属性。

   

1.2 使用常见的检出/编辑/检入范例

    ClearCase的命令可以控制元素的变化,确保存储区有序的繁衍并使数据损坏的程度达到最小。ClearCase采用一种检出/编辑后检入的范例,类似于传统的版本控制工具如:RCS和SCCS。ClearCase除了可以进行检出、检入以及取消检出操作外,它还可以通过命令设置另外的操作,如:删除版本、建立/删除分支、可按时间顺序或结构顺序排列出版本历史、比较版本间的差异,并且可以归并分支上的版本。

    由于VOBs中所有的元素都是受保护的,因此,当要对某一个文件进行编辑时,系统指出该文件具有只读属性──这意味着它不能被编辑或删除。而检出(即出库)操作可以对该文件的某个版本形成一个可编辑的拷贝。它无须将文件拷贝到另一区域工作。检出的注释可以被提供。当编辑完成后,该文件被检入(即入库),于是在版本树中形成一个新的版本,并且自动将可编辑的拷贝删除。为了检验文件的变化,在检入过程中可以填入注释信息。文件一旦被检入,即刻回复到只读状态成为共享数据,可被所有成员使用。

ClearCase支持两种检出,保留以及非保留。保留检出可以保证版本历史形成的正确范围,并且同时只允许一个人做保留检出的操作。非保留检出无须保证建立一个成功的版本,如果多个用户同时对同一元素执行非保留检出,也企图进行检入操作,那么第一个检入操作被允许,而其他用户必须通过归并操作合并它们的结果。

 

1.3 在版本树中管理元素发展的过程

    在ClearCase中,元素版本的管理体现在版本树的结构中。一个版本树的结构可以按目录结构定制,还可以包含多层分支和子分支。

    在一个典型的开发环境中,很多元素的版本树最初仅包含一个分支,即元素的版本排列在同一条线形队列中。随着时间的发展,当用户做一些错误修复、代码的组织、一些实验性修改或指定平台的开发时,它们可以给一些相关元素定义子分支,从而脱离主干进行开发。ClearCase可以支持多级分支的操作,还可以给分支命名。

1.4 对目录和子目录进行版本控制

    ClearCase可以对目录和子目录进行版本控制,允许开发者对他们数据的组织发展过程进行追踪。目录版本是对一些改变进行控制,如:建立一个新文件、修改文件名、建立新的子目录或在目录间移动文件等。

    ClearCase也支持对目录自动建立分支和进行比较、归并的操作。

 

1.5 丰富的注释信息和版本数据的报表

    ClearCase存储了和文件系统对象相关又截然不同的信息类。这些信息实际上并不包含在对象中,它是一些额外数据。这些数据可以由ClearCase产生,也可以由用户自己定义。在VOB数据库中存储了所有的数据。

    ClearCase产生的这种数据信息提供了可靠的、面向文件系统的版本注释信息。比如:这些数据可以验证在某一时刻,元素A建立了一个新的版本。用户定义的数据可以用来表达额外的功能──比如:该文件的版本曾被用于构造应用系统的4.31版。

    ClearCase的操作(如:检出、检入、和版本归并)可以建立时间记录,记录数据包含这些操作信息。这些记录被存储在VOB数据库中,主要描述了该操作的属性“谁做的、做什么、什么时候、在哪个地方及为什么”,比如:敲入命令的人员的ID号,操作的种类,操作的时间,主机名称及用户填入的描述。可以通过“lshistory”的命令显示存储在VOB中的事件记录,并且可以通过历史信息浏览器提供的图形接口观察VOB中的事件记录。

    用户可以针对多种目的来定义数据,包含分支的名称、版本标签、元素任一版本的注释信息。

    ClearCase数据的另一种应用是形成注释的文本文件。注释命令可以通过行显示的形式列出任何一个版本文本文件的内容,这使得我们可以更容易的看到什么时候在不同的地方做了添加或删除的操作。

   

1.6 通过分支功能支持并行开发

    ClearCase支持并行(同步)开发,每一个元素都可以沿着不同的分支同时发展,即新的版本加到独立的分支上。ClearCase可以很容易的产生分支,也可以很容易的将不同分支进行合并。这样一来,即便某一部分的工作被冻结或加锁,开发者仍然可以继续自己的工作(如:在软件集成期)。在这种情况,开发者可以在分支上工作,我们知道,ClearCase的自动化操作和图形归并工具可以让我们很容易的重新集成新的工作。

 

    并行开发是非常重要的,因为:

l         它允许不同的项目在同一时间使用同一资源树。

l         它将目前不可和其他人员共享的修改成果进行隔离。

l         它将绝对不可和其他人员共享的修改成果进行隔离(如:已发布版本中的错误修复)。

l         它使得在软件集成期间开发工作无需停止,程序员可以先在分支上开发,以后再集成。

 

    为了支持并行开发,ClearCase可以轻松的建立分支,追踪分支的使用,进行文件比较,自动或手动归并。

 

1.7 自动的比较和版本间的归并

    并行开发的特点是需要对同一元素的不同版本进行定期比较,还需要对版本间内容进行归并。在ClearCase中,对于元素或文本文件进行比较和归并的操作有两种:基于字符型和图形界面型。其中,diff命令执行多文件比较,不执行归并。而归并命令可以处理任意方向的归并。

    ClearCase可以自动辨认归并选项并实现归并。ClearCase也可以对需要归并的项目元素进行定位。如果所有的“成员”(归并元素)是同一元素的不同版本,系统会自动确定基础“成员”,通常是最低版本。此外,ClearCase会记录基础版本和某一归并元素版本间的差异。如果,所有的“成员”间差异互不相同,ClearCase会自动建立归并版本。如果两个归并“成员”文件内容中存在差异冲突部分,归并功能会提示开发者选择归并内容。ClearCase也可以实现反向归并——从主分支向子分支归并。

    与其它版本控制系统不同的是,ClearCase允许开发者在执行归并操作后继续工作。此外,ClearCase对于在哪一种分支上进行哪种方向归并没有限制。

   

(二)工作空间管理

    快速、有效的工作空间建立对于提高个人和团队的效益是非常重要的。通过视图(VIEW)的使用,ClearCase提供了一套独立的工作空间管理设施,可以实现动态评估、选择指定版本和透明的访问多种元素的功能。

 

2.1版本间的透明访问

    ClearCase提供了对版本进行透明访问的功能。它可以让开发者和应用者以一种标准文件目录树的形式访问VOB。这个特性被成为透明——ClearCase的版本控制系统因而变得可视化。透明是一个非常重要的特性,它允许ClearCase在使用系统软件、商业应用和内部工具时进行平滑的工作。比如:象grep,more,ls,cc这种标准UNIX程序,在操作ClearCase版本控制数据时与操作一般的文件系统对象的方式一样。

    通过ClearCase的多版本文件系统(MVFS)可以在虚拟文件系统上实现透明操作。MVFS是中断标准的I/O调用,并且ClearCase的版本选择结构可以细化到从一个元素到另一个元素版本的目标调用。

    对于Windows NT,ClearCase的MVFS一般缺省作为“M:”驱动盘出现,活动视图作为“M:”盘的根目录出现。正常情况下,ClearCase可以为每一个活动视图分配更多的虚拟盘。把VOB设置成每一个虚拟盘的目录。这样就可以让开发者使用自己的工具透明的访问被ClearCase控制的数据,甚至是UNIX VOBs和视图。

 

2.2通过视图规则选择并显示版本

    ClearCase的视图提供了强大的、独立的工作空间管理(也称作“环境管理”或“沙盒管理”)。通过使用动态评估、用户指定版本选择规则,视图可以让开发者对任何元素的任何版本进行透明的、文件级的访问。ClearCase的视图具有灵活性、可调性、有效性并可随时自动更新。

    开发者可以通过ClearCase控制数据和程序的版本选择,视图可以对完整的文件系统配置进行动态管理。它也可以访问主机上的其它数据和程序。

    ClearCase支持规范的开发环境,它可以维护公有和私有两种数据存储类型。所有的ClearCase用户可以共享VOB中存储的数据,它们包括一些常规访问的文件。存储在视图中的私有数据一般包含属于开发者个人的文件,如:通过标准工具被检出的文件元素版本,在视图中由ClearCase建立的原始对象,和由视图用户在VOB目录中新建立的文件和目录。视图在“虚拟工作空间”中存储这两种数据,开发者每天对其执行检入、检出、编辑原文件操作、建立软件和修复系统等操作。

    在视图中选择版本的规则可以称为视图配置。视图配置是动态的并可以在任何时候被开发者修改。视图配置在配置规格说明的一系列规章中被定义。一般的,视图的配置在通配符和助记符的术语表中被定义,而不是通过指定具体的版本名称。

    每个开发者都可以拥有多个视图,并且可以在任何视图中设置规则。此外,不同视图可以看同一路径名下的同一元素的不同版本。比如:一个视图可以浏览某一元素最近的版本;另一视图也可浏览该元素的某一特定版本,它可能曾经用于构造某一具体的发布版本;可能还有其它视图浏览该元素用于修复错误的版本。

    此外,那些不受ClearCase版本控制的所有的文件和目录(标准文件、本地的脚本和程序,等等。),也都可以通过视图进行浏览。从而使得ClearCase与开发者更加友好,当他们使用视图浏览数据文件、修改框架脚本、编译程序时,通过使用扩展视图的路径名或扩展版本的路径名,开发者可以提高透明度。扩展视图路径名可以覆盖当前视图并且可以访问当前出现在其它视图中的元素的版本,扩展版本路径名可以通过版本树的位置或版本标签定制一个特殊的版本,而不管该版本究竟出现在哪个视图中。

 

2.3从没有安装ClearCase的主机平台进行视图访问

在局域网中ClearCase所控制的数据对于未安装ClearCase的机器也可使用。比如:一个ClearCaseUNIX主机可以通过一种特殊的视图输出VOB;而网上的其他主机可以通过NFS机制连接它。这样它就让开发者在未安装ClearCase的主机平台上使用自己的工具对视图进行读写访问,编译并建立自己的应用。未安装ClearCase的主机必须重新注册或使用安装ClearCase的UNIX主机上的X-Windows系统做检入、检出操作。

 

(三)建立管理

使用ClearCase,构造软件的处理过程可以和传统的方法兼容。对于ClearCase控制的数据可以使用自制脚本或本机的make程序,但ClearCase的向上兼容建立工具clearmake和omake为构造提供了重要的特性:自动完成任务、保证重建的可靠性、存储时间和支持并行的分布式结构的建立。

 

3.1支持UNIX和Windows型的makefile的建立

    ClearCase包括两种独立的建立程序,clearmake和omake。这两种程序合并了ClearCase的主要建立特点,包括配置lookup,二进制文件共享,和配置记录。Clearmake程序主要适用于使用UNIX型的makefile文件。Omake主要适用于那些需要和Windows上的建立程序(包括:Borland Make、Microsoft NAMAKE、Intersolv Configuration Builder、和OpusMake)兼容的用户。

 

3.2自动检测所关联的原文件,包括所关联的头文件

    clearmake和omake通过使用当前视图的配置,可以在视图中灵活的建立整个或部分软件系统。Clearmake和omake在makefile时无须描述所关联的头文件(或任何所关联的原文件)。

    在ClearCase开发环境中,原始对象扮演着决定性的角色。源对象是由clearmake和omake 建立的文件对象或目录对象。典型的源对象应该包括由文档系统产生的对象模块,可执行程序,库文档,规格文档,内容表。源对象组件包括:作为目标被建立的文件名;独立的源对象ID;数据容器指针(存储建立脚本所产生的数据的文件);配置记录指针(信息清单);和参考计算(指示源对象当前出现的视图号)。

   

3.3 自动的追踪建立,产生永久性的资料清单

    在执行建立脚本期间,clearmake和omake在ClearCase的多版本文件系统下执行一个建立追踪。MVFS记录了在连接的VOB中每一个被读或执行的文件的版本;它也可以注释哪些文件被建立(或被覆盖)。在执行建立脚本之后,clearmake和omake将追踪的数据写入配置记录中,并存储到VOB数据库中。

    配置记录就是源对象信息清单,包含它的内容和建立时的有用信息:

l             存储在VOB中,在重建时使用的文件元素的版本——包含ClearCase控制下的源文件和工具(比如:编译器)。

l             在建立过程中使用的每一个私人视图文件。

l             makefile过程中使用的非ClearCase文件。

l             建立脚本的文本及所有的可扩展宏。

l             操作系统版本和CPU类型。

l             执行建立过程的用户;执行建立脚本的主机;由clearmake设置的视图和建立过程开始的日期和时间。

     ClearCase的配置文件可以让源对象进行比较——不依靠对象数据,而依靠它们的建立配置信息。Diffcr(compare config rec)命令可以输出不同配置文件间的差异,包括:

l

抱歉!评论已关闭.