分类: 项目管理
2011-02-22 14:53:20
一、 软件配置管理的必要性
没有任何一个行业象计算机工业发展的如此迅速。在今天的软件产业更是如此,技术和产品的更新日新月异令所有技术人员和管理人员都感到明显的压力。软件产品的开发,市场投放速度成倍增长;Internet/Intranet应用的发展改变着软件的开发,传递,和分发方式;不断提高的软件质量的要求,使越来越多的软件机构感到取得ISO9000和SEI Capability Maturity Model(CMM)认证的迫切性;多平台,多操作系统,多开发工具,多对象类型,多计算机语言等,使复杂的软件开发环境更加难以控制。不仅如此,Internet/Intranet,Client/Server,以及面向对象等新技术的兴起如同雨后春笋。在计算机工业进入90年代后期,所有上述挑战将会给没有充分准备的软件企业带来无可挽回的损失,无论人们的主观愿望如何,这毕竟是客观现实!
我国信息技术产业的蓬勃发展促使各种先进技术和产品在国内被广泛的应用,为国内的软件开发注入了活力。然而,值得注意的是,各种先进的操作系统,开发工具等在带来效益的同时,也使得我们的开发环境日益复杂化而难以管理。无组织的开发环境会导致潜在问题的产生,直至影响整个系统的致命错误出现才会为开发人员所认识但已为时晚矣。 软件工程使软件开发从手工作坊上升到集团开发方式,软件开发管理工作围绕着软件生命周期的分析设计、开发、测试、运行维护四个阶段进行。通过使用软件工程的方法及工具,可以避免开发过程中许多可能出现的错误;提高软件的重用性;降低软件测试和维护中的工作量;大大地提高了软件产品的质量;缩短了开发周期。目前我国软件开发缺少相应的面向开发队伍的管理软件支持,忽视了当前国际上软件开发中的重要一环──软件开发的管理。
今天,网络上团队化的工作方式已成为主要的软件开发方式,因此软件开发管理就显得更加重要,其管理的好坏将直接影响到软件产品的质量。如果缺乏对软件开发的统一管理,势必造成以下问题的出现。
l 由于开发经费及开发时间的限制,不可能一次开发就解决所有问题,许多问题有待维护阶段解决,因此带来的是软件产品的不断升级,而维护和升级所必需的文档往往非常混乱。
l 开发商开发过程缺乏规范化的管理,即使有源程序文档也由于说明不详细而不能对产品进行进一步的功能扩充,用户不得不再投入大量的经费去开发新产品,浪费大量的人力、物力和时间。
l 在软件的团队式开发中,人员流动在所难免,如管理不善,有些人员的流动将对开发产生致命的影响。特别是软件开发管理人员的流失,有可能造成无法确定软件产品中各模块所处的状态及阶段,使软件产品的版本出现混乱。
l 管理不善致使没经测试的软件加入到产品中,不但影响产品的质量,有时还会导致致命的错误,造成不可挽回的损失。
l 用户与开发商没有有效的产品交接界面,用户投入了开发费用后,得到的是有关可执行程序以及一堆杂乱无章的文档,即使是较好的文档,对不熟悉开发过程的专业人员来说也无从下手,更谈不上日后的维护和升级,用户的利益无法保证。
l 软件生产达不到规模化,无法生产出软件企业内部的软件标准构件仓库,使应用软件产品总处于一种低水平、重复开发的状态,不但时间得不到保证,而且成本也无法降低,使产品没有市场竞争力。
这些问题在实际开发中表现为,项目组成员沟通困难,软件重用率低下,开发人员各自为政,代码冗余度高,文档不健全等;造成的结果是,数据丢失,开发周期漫长,产品可靠性差,质量低劣,软件维护困难,用户抱怨使用不便,项目风险增加等。曾经在70年代波及西方发达国家的“软件危机”,就是出现了类似的现象。
今天,软件技术在国民经济运行中发挥着举足轻重的作用,渗透到社会生活的各个方面,软件的质量水平直接关系到软件组织和企业的命运;而从根本上,软件的质量取决于开发过程良好的管理和控制体系。但是,由于软件本身的属性,即软件是无形的,没有任何物理性质,难以驾驭;而开发过程中又使用了多种开发工具、操作系统、对象类型和语言,造成开发环境复杂而难以管理,据有关调查结果显示:平均每个开发人员被包围在2个操作系统、3种语言、5个开发工具和若干对象类型当中;再加上,多人协同开发方式的引入,项目组成员共享同一个源代码开发,致使开发过程更加难以控制,代码冗余度高、数据丢失、工作相互覆盖等问题层出不穷;所有这些因素都会导致潜在问题的产生,往往直到发展为影响整个系统或项目的致命错误才被开发人员所认识,但为时已晚!在技术密集的航天、航空领域这一影响尤为严重,96年6月欧洲航空航天局耗资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 源文件的差异,非源文件修改的时间戳。
l 建立过程中执行脚本的差异,包含makefile中不同的宏值。
l 那些不影响clearmake或omake建立的非必要差异,包括建立时间/日期,主机名,视图名。
3.4 开发者间共享二进制代码,时间和存储空间的存储
基于makefile一个很重要的方面是避免不必要的建立过程。Clearmake和omake的建立策略是非常优秀的,专为并行开发方案做的特殊设计。
Clearmake和omake可以通过配置文件检测现场情况,检测哪些源对象可以在多个视图中被共享。这个工具还可以进行磁盘存储和建立时间存储。Clearmake和omake提供了三种可供选择的建立方式:
l 重用视图中现存的目标——clearmake和omake使用的技术,它比比较时间戳更熟练。配置信息可进行源版本对照,建立脚本对照,建立选项对照。
l 执行传送建立脚本——make、clearmake和omake以同样的方式执行目标建立。但是clearmake和omake可以对建立过程进行追踪,并将追踪信息分配到每一个重建过程相关的文件中。文件和它的配置信息组成了源对象。
l 从某一视图中wink-in源对象——clearmake和omake可以了解到早先在其它视图建立的同一目标的多种实例。在验证后,正确的源版本,建立选项和建立脚本被用于建立其它的实例,clearmake和omake将对视图执行一个wink-in操作。一个源对象现在可以被其它视图所共享。
3.5跨越不同机型进行并行分布式建立
clearmake支持分布式建立(使用其它主机上的执行脚本)和并行建立(执行一致的建立脚本)。比如:clearmake可以进行三方建立,所有的进程都在一个多处理器的计算机服务器上执行。在局域网中,它可以跨越所有工作站进行分布建立。
Clearmake也支持跨多种开发环境的建立。
3.6自动的跨多种主机(UNIX)的平衡加载,分布建立
clearmake有一个尖端平衡加载技术,可以优化分布式建立的执行。用户可以指定分布式建立的主机,并且设置变量,包括:时间、机器装载和控制每一台机器建立的用户id 。clearmake可以跨越这些主机自动平衡装载进行分布建立。
(四)过程控制:
软件开发的策略和过程由于行业和开发队伍的不同而有很大差异,但是有一点是肯定的:即提高软件质量,缩短产品投放市场时间。ClearCase为团队通信、质量保证、变更管理都提供了非常有效的过程控制和策略控制机制。这些过程和策略控制机制充分支持质量标准的实施与保证,如:SEI Capability Maturity Model 和ISO 9000。
ClearCase具有以下过程控制的功能:
4.1 利用元数据抓取状态信息
ClearCase元数据(在VOB中与对象相关联的数据)用于抓取特定对象的状态信息。在过程控制中共有三种类型的ClearCase元数据可用:
w 属性:一个属性是一对值“名字=取值”。开发者可对大多数对象赋予属性。属性可取多种类型的值,整型、字符串、日期等。取值被限制在特定的范围内,或限定于特定的枚举值。例如,Codequality属性可有A、B、C、D或F五个值。其强有力的查询工具允许用户查找,如一个叫John的用户在上个月创建的包含Codequality=A的所有版本文件。而采用附加机制则可以自动为对象分配属性。
w 超级链接:所谓超级链接是一个连接着两个对象的逻辑“箭头”。例如,一个超级链接可以连接设计文档和资源代码模块。超级链接可追溯到所有的元素变量、特定的版本(需求追踪也同样需要)、或者对象中的某一部分。它可跨越VOB,并可重命名、移动一个对象或这个对象所在VOB。利用超级链接浏览器,用户还可以显示、创建、访问、维护CLEARCASE超级链接的信息。
w 历史事件:ClearCase自动记录下来重要的状态信息,当对象发生变更的时候,它会收集谁、何时、为什么、作什么和用户注释信息、以及其它的重要数据。系统也会保留创建、释放项目时的类似信息。
4.2 可定制的附加策略工具
ClearCase的附加策略工具支持管理者建立一个好的软件开发策略。它包括:
w 事件预触发:事件预触发机制监视每一特定ClearCase操作(如:检入 check-in)或操作类(如:改变VOB的任一命令)的使用。在操作执行之前,触发开始后自动执行用户指定的程序、批处理文件、脚本、或其它内置动作。同时,一个触发还可要求在执行某个操作命令之前对它进行检查,并据此判断是继续执行、还是取消操作。
w 锁:针对于一个元素,锁禁止元素发生变更(即不可检出被锁元素)。锁可被划分的很细,例如:只锁住指定的元素变量或指定哪些人受锁的限制,也可以笼统而论(例如,锁住整个VOB)。一个典型的应用就是:在软件集成阶段,锁住所有主干元素。而且,每个锁可定义“锁定例外表”,允许特殊用户修改对象。
w 访问控制:对所有元素采用类似UNIX的保护机制。这种保护机制控制读、写、以及基于传统标准上的对象执行:单个用户的、开发团队的、或其它。同时,它还对文件系统之下的物理存储施加保护,有效的制止那些试图逃避ClearCase或破坏原始操作系统存储的小动作。
w 自动创建分支:当所有的变更动作是在分支上以同种模式进行时,最易于维护工作。而ClearCase恰恰增强了这一点,当元素检出的时候,ClearCase会为它自动创建分支,并指定一个名字。
4.3 “通知”功能可以自动生成报表、交流信息
w 事件后触发:事件后触发机制好象一个监视器,它在特定操作完成后运行。实际上,这一触发会在某个命令执行后、或给某个对象赋予属性后,把这些动作通知给用户。为了便于脚本和程序实施触发动作,ClearCase自动设置了一些环境变量。以一个“检入”的事件后触发为例,它会告之质量保证部门有一个用户已修改过某一特定的文件,并且,还会包括在“检入”时那个用户输入的注释。
w 查询功能:ClearCase中有一个 find(查询)命令,使得开发者迅速的获知当前项目的状态。实际上,find(查询)命令就是在一个或多个VOB数据库上实施查询操作。例如,查找不具有 Passed=QA属性且属于Release 2.0的所有版本文件。
w 动态配置规格:视图配置规格的方法是根据标签、属性、超级链接、以及历史事件选择版本文件。和find(查询)命令一样,这些方法同样具备查询功能。如,配置规格可以选择“具有Passed=QA属性的最新版本,或者是由用户Jacky创建的最新版本。”
ClearCase结构及设置
(一) 客户/服务器结构
ClearCase是运行在分布式Client/Server结构中的“组件”产品,。 ClearCase函数和开发数据的程序可以被分配到整个本地网络。这使得ClearCase的工作范围——从工作站上被加到网络中以便更多的开发者可以使用,从而使ClearCase的数据存储和数据处理资源的能力大大提高。
数据库组成如下:
• 永久性,共享数据存储库是VOB的集合。多个VOB也可以存放在同一主机中(要有充足的磁盘空间和处理资源的能力)。
• 开发者使用单独的(或共享的)工作区域称为视图——任何人都有一个小的私人存储区。视图的存储区域一般位于独立的工作站或PC上。主控服务器可存放共享视图或为那些将被重建或发布的应用程序建立视图。
• 增加灵活性, VOBs和视图可以存储在网络上的任意地点。
客户端和服务器可以通过远程调用过程(RPC)互相进行进程通讯,这使得开发者不必涉及数据存储的物理定位而进行ClearCase网络通讯。
(二) 图形用户界面
ClearCase包含传统的命令行界面和Motif及Windows点击图形用户界面(GUIs)包括任务设置GUI组件。UNIX和Windows的ClearCase的GUIs提供下拉和弹出菜单,工具条,context-sensitive帮助显示来简化公共用户级的命令。另外,界面包含文件浏览器,视图,VOB,版本树,超级联接,可选择的数据,及更多的可以简化在ClearCase中的公共数据对象的查询和选择。
GUI也提供直观比较和归并功能,用高亮度颜色来描述插入,删除,修改的内容。GUI可以通过扩展脚本语言被定制,使用户能创建自己的按钮,工具条,和多水平菜单。定制的组织政策和脚本能在GUI中被访问,而且外部命令也能与GUI进行集成。
另外,ClearCase具有图形事件和属性显示的功能。事件显示可提供相关ClearCase控制元素的历史记录信息,也可以被定制成当前全部元素的历史。关于当前元素或指定版本的属性信息,使用制表键可以显示,标签,属性,超级联接,触发器,安全性,加锁等信息。
(三) Windows资源管理器的集成
ClearCase for Windows包含和Windows资源管理器的集成,使得公共的ClearCase操作在资源管理器中用鼠标右键即可实现。此集成允许用户打开视图,mount VOB,检出/入元素,激活版本树浏览器,检查元素历史和属性,寻找检出元素,比较新老版本,及激活ClearCase Details,在线帮助也包括在内。
(四) ClearCase Details工具
ClearCase Details工具显示与ClearCase相关连的文件和目录的信息,比如检出状态,用户视图选择的元素版本,及用户选择的版本的配置设置。ClearCase Details工具允许用户去修改显示的属性,访问到其他目录,去调用更多的ClearCase命令和工具。
(五) 归并管理器
归并管理器是管理归并元素过程的图形工具。他自动为归并收集信息,并可以结合使用ClearCase Diff归并工具来比较版本并完成归并操作。
(六) 与VC、VB、PB和D2000的集成
在Windows环境中,ClearCase支持Microsoft公共源代码控制(SCC)接口配置,支持在Visual C++,Visual Basic,Power Builder和Developer 2000开发工具和源代码控制工具之间所关联的API,使ClearCase公共操作被映射到SCC接口中,开发者从VC、VB、PB和D2000的工具栏中直接访问ClearCase的功能,并使用标准(微软)SCC对话框。
例如:在Visual C++中,用户能访问公共ClearCase操作,包括:增加新文件到源控制;检出/入文件和激活ClearCase历史和属性的显示。在Visaul Basic中用户可以启动视图;mount VOBs;添加Visual Basic项目到ClearCase控制中;增加新文件;检入/出;激活ClearCase历史和属性的显示,PB和D2000也很类似。
(七)系统管理员
ClearCase包含一套工具,命令,和GUI应用以便建立、扩展及管理VOB,视图,和跨越站点的策略。系统管理员能管理物理磁盘存储,网络间的系统转换,确信VOB保密性,管理用户的License,限制对软件元素的访问。将状况和错误记录信息被送入记录浏览器。管理员可以使用他们现有的备份工具轻松备份ClearCase VOB。
(八)视图和VOB的储存注册
在每天的工作中,一般地,ClearCase用户会涉及配置VOB和视图使用名称(“tags”)。例如,项目团队可以在mount为“/vobs/gui”(UNIX)或“\vobs\gui”(Windows NT)的VOB中使用共享的“bug_fix”视图来访问项目。系统管理员通过ClearCase储存注册管理这些相应的视图和VOB库的完整名称和物理定位(路径名称)。储存注册是广域网资源,定位在指定的服务器主机中,他映射一般使用的视图和VOB名称到属性存储区。系统管理员能定义多个网络区,在客户端使用不同的“完整”路径名来访问相同的储存目录。
ClearCase的硬件需求及支持平台
(一)支持环境
• Digital Unix
• HP-UX
• IBM AIX
• NCR UNIX SVR4 MP-RAS
• Pyramid DC/Osx
• Microsoft Windows NT/95
• Silicon Graphics IRIX
• Siemens SINIX
• SunOS
• Sun Solaris
• SCO UnixWare
(二)内存需求
• 客户端系统:32 MB RAM
• 服务器端系统:64 or more MB RAM (depending on code base size)
NT Client访问UNIX Server需要通过NFS连接
三、使用ClearCase的益处
ClearCase帮助任何规模的开发组织进行更加有效的开发和维护、加强竞争力、增加收益、降低成本。独特的ClearCase带来的特殊利益:
l 提高团队效率 ——通过对并行开发的支持来实现,包括自动建立分支、图形化的比较和归并、丰富的标签信息、树形版本管理结构。
l 提高个人效率 ——通过灵活、可靠的工作空间管理和与开发工具及资源管理器的集成,可以使开发人员使用起来更为轻松,并有效的控制变更的传播,减少人员间的相互干扰。
l 简单的维护和对客户更好的支持 ——通过快速准确的重建以前的版本和文件良好的可回朔性来实现。通过版本控制可以记录所有项目文件发展的全过程,便于后期的升级和维护。
l 快速准确的产品发布 ——通过建立管理功能可以快速、准确地选择需要发布的元素版本,减少集成时间和人员。
l 节省硬件资源 ——由于一个存储库可以被多个人使用,因此可以避免文件多重拷贝所浪费的硬件资源,并能有效的确保文件的唯一性。另外一个存储库可以记录整个项目的所有版本,通过标签即可表示,无须通过建立多个目录来标识产品版本。
l 提高项目的安全性 ——由于ClearCase的存储库是安全可靠的,并且库中的所有元素均受保护,可以避免非法的删改。
l 有效的管理多个项目和强有力的并行开发支持——通过工作空间管理以及自动的分支和归并的功能来实现。
l 有利于企业知识库的建立——由于VOBs可以存储每个项目所有信息,所以我们每做一个项目都会积累下一些存储库,这样便于将来的项目利用以往的项目资源。使得软件生产趋于规模化。
四、用户心得
摩托罗拉中国公司使用ClearCase的一点心得
一、版本控制的重要性
1.软件工程需要版本控制
从事软件开发工作的人们都理解软件工程的重要性,而且还明白软件开发的基本步骤,传统的瀑布模型由需求分析、系统设计、结构设计、详细设计、编码、调试和维护七个阶段组成。其他的各种模型其实都可以说是由此派生而成,无非在某一阶段上增加一定的反馈而已。这七个阶段的产物是大量的文档和代码,如果说人们能一次就把文档和代码无差错的生产,那么在软件开发纵向来说,版本控制就没有存在的必要了。但是,人们在每一个阶段都不免由于认识上的不同,理解上的差异,主观与客观的诸多因素,使得我们的软件并不那么完善。因此,在来自用户、开发人员的不断反馈中,我们的各个阶段的文档就有了不同的版本,增加了、更改完善了各种各样的功能,从而也影响了我们的代码,增加完善了许多。有时我们的决定是错误的,需要在某个阶段上重新开始。因此,版本的保留在一定的时间里是必不可少的。
2.产品需要版本控制
成熟的产品不是单一的,其必然是系列化、多样化的。象摩托罗拉的手机,从模拟到数字,有若干个系列,几十个品种,在众多的产品背面,软件是大同小异,如果每一个品种需要独立的重新开发,其耗资是巨大而难以估算的,由于品种之间有着许多的共同之处,其软件也有许多是可以重用的,差异不过是各个品种之间的特性而言。软件的重用性早已为人们所重视,流行的面向对象方法最关注的就是文档的可重用性,但是我们说不光是代码,更重要的是文档的可重用性。软件的定义是文档加上代码,二者的可重用性使得产品大大缩短了其开发周期,提高了产品的竞争力,重用的概念不仅是立刻拿来就用,更重要的是拿来改一改就可用,因为后者提供了新的特性,这正是用户愿意花钱的地方。
3.软件的重用需要版本控制
重用通常就是在某一个版本上做的,如果不固定在某一个版本上某产品继续向前分层,而新产品可能就产生与这产品相冲突的内容。多个不同的产品分别分层起来后,我们的维护工作如果没有版本的保证,就会变得无的放失。某一缺陷可能仅对某一产品某一版本存在。软件包括文档和代码二部分,文档工作对于成熟的产品开发来说,共享的重要性不言而喻。我们只有把菜谱写下来,才能让别人来做同样的蛋糕,甚至加些果仁什么的,变化一下成为新的系列,文档的重用在软件开发中是至关重要的。重用文档,我们当然可以把文档拷贝到新文件中,再增删一些内容,但是这回丢失许多的信息,如谁改的,改了什么地方,至少你已经通篇比较一下原文才能得知改动所在,众多的版本控制软件在代码的这种diff修改上都能做得很好,但是在文档上,却做得尚不如人意,ClearCase和FrameMaker都能够在这方向给开发者提供很好的帮助。
4.代码需要版本控制
我们再来看以下代码,人们一般只关心的是源代码,源代码的版本控制重要性是显而易见的 。在开发阶段,版本控制能带来重用,而在维护阶段,又能给我们带来相对稳定的平面。其实,版本控制同样对目标代码有效,有MAKE使用经验的人也许已经意识到这就是一种目标码的版本控制,只有最新的版本,或称修改目的版本我们才对其进行编译。这对我们来说节约了无数的宝贵的开发时间,对一个大型软件尤其如摩托罗拉的手机软件,五六千个文件来说,其意义是巨大的,版本控制对于目标码来说还有一层更复杂的含义,由于并行开发的可能,不同的程序员面对的是不同的项目,其关心的非常可能就是同一源文件的不同版本。当两人分别或同时编译时,哪一个文件有效?当然是两个版本都有效。这时,版本控制需要提供这种复杂的编译机制,使得不同的设计人员能得到其要求的对应输出,并且又能利用上可能此前曾关心过同一文件版本的人员编译的结果,从而节约编译的时间和减少系统资源的占用。
5.并行开发需要版本控制
大型企业,特别是跨国企业,往往需要充分利用上各地人员知识的优势,同时又使研究的费用支出减少至最低,因此存在着并行开发的需要,开发人员需要工作在最新的开发结果上,共享各方的资源,有序而高校地同步开发着各自相关的部分,这种全球化广域的开发模式要求版本能得以更有效的控制,ClearCase的Multisite在此提供了有效的支持。
chinaunix网友2011-03-06 09:06:27
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com