| 《软件配置管理策略与
Rational ClearCase》
软件配置管理(SCM)是一项基本的软件工程任务,用于管理当今复杂和快速发展的软件开发环境。
本书是一本综合而实用的软件配置管理指南,以市场上最流行的SCM工具Rational ClearCase作为示范工具。作者首先讲解了基础知识,然后展示ClearCase如何通过统一变更管理(UCM)模型实现SCM的最佳经验。本书清晰地展示了如何通过ClearCase简化和控制软件开发项目中的变更。本书并没有停留在基础知识层面,针对现实生活中的真实开发场景,讲解了很多高级技术专题,例如管理多个项目以及管理分布在不同地域的项目。
本书讲述的众多经验、技巧和见解来自于发掘和应用SCM最佳经验的工程实践,书中贯穿了众多精妙的见解和无数有价值的建议。作为一本出色的配置管理书籍,本书适合于所有软件工程师和管理人员阅读参考。
本书的内容
本书介绍作为软件工程规程之一的软件配置管理(SCM,Software configuration management)问题,说明如何借助广泛应用的SCM工具Rational
ClearCase?、贯彻“统一变更管理”(Unified Change Management,即UCM)工作模型实现流程自动化并支撑SCM的最佳经验。本书将介绍基本的SCM概念、项目和系统规模及复杂性增长过程中所面临的SCM问题、以及如何应用SCM工具和流程来解决这些问题。本书还讨论了一些高级的SCM话题,例如管理大型地域上分布的开发团队以及结合SCM规程与变更请求管理(或缺陷追踪)。
更具体地说,本书将基于SCM工具ClearCase来讨论SCM问题。尽管有些内容针对ClearCase,本书涉及的很多内容适用于不同种类的SCM工具。当今针对软件配置管理的书籍很少,针对采用某种工具实现SCM策略的书籍更少。很多项目在应用SCM工具时,经常容易碰到各种各样的问题甚至遭遇失败。
ClearCase是一个商业化的成熟工具。该工具适宜用来讨论相关问题,因为它提供了一个开放型的体系构架,用这种体系构架能够实现广泛的SCM解决方案。ClearCase适用于各类应用系统及多种开发环境,例如关键任务系统、嵌入式系统、电信通讯系统、金融应用、网站内容、以及其它种类的商业和政府软件系统。如今,各个行业不计其数的公司成功地将ClearCase作为其SCM环境的基石。
本书并不会一步步地教你如何使用ClearCase,也不是ClearCase产品文档的替代品。你可以使用本书的内容改进任一种SCM工具的应用。但是,如果你计划部署ClearCase或者改进当前使用ClearCase的方法,你将从本书中得到最大收获。
本书的内容实质上是我过去十年经验的积累,这些内容来自于我和SCM领域内众多出色人物的合作。读完本书之后,你能够更好地理解软件配置管理、用SCM工具及技术解决软件开发问题的更好想法、使用ClearCase解决这些问题并满足SCM需求的更明确思路。我真诚地希望你能喜欢本书并挖掘出其中的价值。
阅读本书之前需要了解什么
你取得成功的关键是理解SCM的含义,理解软件项目的相关需求、以及如何应用SCM工具满足这些需求。如果你刚开始接触软件配置管理,本书将帮助你起步。如果你事先有一些SCM的经验并使用过基本的版本控制工具,那么你将得到最大的收获。本书假设你熟悉软件开发流程。如果你在阅读过程中能够结合一个具体的开发项目,本书同样会很有帮助。
谁是读者和为什么要读这本书
本书不会讨论如何编写ClearCase触发器或是集成遗产工具脚本程序的细枝末节;相反,本书介绍一些通用SCM场景的高层次概念以及如何针对相关问题应用ClearCase。如果你已经在使用ClearCase或拥有很强的SCM基础,你最好浏览一下目录并挑选你感兴趣的章节。
针对软件工程师
对一个软件工程师而言,SCM工具所能作出的最大供献就是让他们不插手SCM。SCM应当以一种尽量透明的方式执行相关的功能。SCM工具的应用应当最大限度地允许对软件系统进行变更。虚弱的工具和设计不良的流程都可能给软件工程师的工作增添额外的时间与精力负担。本书能够帮你找到那些促使SCM工具与流程更有效率的办法。其中一个重要概念就是基于活动的软件配置管理。这种概念将抽象水平从文件提升至活动。应用这一概念使得应用SCM工具、追踪变更、以及和其他软件工程师共享变更内容的工作变得更加直观。
如果你刚开始接触软件配置管理,请阅读第1章“什么是软件配置管理”。如果想总览ClearCase所管理的对象,请阅读第4章“ClearCase对象功能概述”。要想理解ClearCase如何支持日常的开发活动,请阅读第8章“使用ClearCase
UCM模型进行开发”。
针对软件项目经理或者技术主管
作为一个软件项目的负责人,你关注对软件系统进行变更的决定,而后确保这些变更的发生。一个好心开发员作出的无计划变更也会给项目的进度带来风险,甚至拖延进度或降低产品质量。对变更的控制和追踪是确保项目成功的基本要素。
本书能够帮助你扎实地理解SCM,你可以获知为什么需要SCM,你可以学到如何借助ClearCase解决项目中的问题。具体讲就是第6章“使用ClearCase的项目管理”和第7章“协调多个团队以及其他场景”。如果你管理的团队不在同一个地点,请阅读第10章“地域上分布的开发”,这里探讨了相关的问题和策略。
针对工具工程师
工具工程师的角色经常被忽视,但这一角色是成功的关键,尤其在一个大型机构中。工具工程师的任务是描述一个机构的人和流程如何使用特定的工具。本书提供SCM和ClearCase的信息,借助这些内容你可以确定将ClearCase应用到开发项目中的最佳方案。
针对那些评估ClearCase的人员
本书是一个用于评估ClearCase的很好起点,因为这里介绍了很多常见的软件开发场景,包括一些比较复杂的场景,例如地域上分布的开发。本书基于一组SCM最佳经验讨论对SCM工具和流程的需求,介绍如何采用ClearCase支持这些SCM最佳经验。相关内容包括对ClearCase直接可用流程即“统一变更管理”的概述,以及对ClearCase对象的概述。
参考第1章“什么是软件配置管理”、第2章“找到你的SCM解决方案”内容,有助于你判断适用于特定项目的SCM工具需求。阅读其余的章节,进而判断ClearCase是否能够满足你的要求。
针对富有经验的ClearCase用户
如果你已是一个长期的ClearCase用户,本书中具有普遍意义的软件配置管理内容将向你揭示一些深入的见解,有助于在项目中更好地应用SCM解决方案。如果你要支持一个地域上分布的开发团队,本书给出了一些相关的建议(参见第10章“地域上分布的开发”)。
本书中概述了ClearCase直接可用的使用模型,即统一变更管理,这也是新近添加的内容(参见第3章“统一变更管理模型概述”)。如果你对变更请求管理与ClearCase的集成感兴趣,请阅读第11章“变更请求管理与ClearQuest”。
本书的内容编排
以下是对所有章节的简要介绍。
第1章,什么是软件配置管理,对软件配置管理及相关的最佳经验作一般性介绍。这一章回答:什么是软件配置管理(SCM)?什么是SCM工具?什么是SCM流程?
第2章,找到你的SCM解决方案,探讨了软件开发项目持续增长的复杂性,提出一个观念,即项目复杂性的不断增长将要求更充分的SCM支持。这一章回顾了SCM工具的发展历史,有针对性地将软件项目粗略地划分为五种类型,从一个人开发的软件应用扩展到地域上分布的多个团队协同开发的项目。
第3章,统一变更管理模型概述,介绍了ClearCase直接可用的使用模型,即统一变更管理,这一模型支持实现一种自动化SCM流程。这部分内容的组织线索是各种团队成员所承担的角色与责任,例如系统构架师、项目经理、开发员、以及集成员。
第4章,ClearCase对象功能概述,介绍了ClearCase对象的功能及相关概念。这一章介绍了SCM通用术语和ClearCase专用术语之间的对应关系。
第5章,创建初始的SCM环境,介绍用于创建初始SCM环境的信息。这一章讨论了ClearCase的基础构架。这一章还讨论了软件构架向SCM工具中构件的映射,并且简要介绍如何创建SCM存储池以及导入已有软件。
第6章,使用ClearCase的项目管理,重点介绍项目经理在SCM中所扮演的角色。特别说明了ClearCase中用于支持项目经理的自动化处理和功能。这一章给出了一个创建ClearCase项目的示例。
第7章,协调多个团队以及其它场景,讨论了协调并行工作的问题。这一章还探讨了一些相关的场景,例如多个小组针对同一个发布版本的协作,多个小组并行工作于不同的发布版本,针对IT/IS风格项目的协作,以及在面向文档类型项目中的协作。
第8章,使用ClearCase UCM模型进行开发,介绍如何使用ClearCase,着重说明开发员所扮演的角色。展示如何找到并加入一个已有项目,如何对文件进行变更从而完成活动,如何交付与活动相关的变更内容,以及如何利用其他项目成员所作变更内容来更新开发员的工作空间。
第9章,集成、构建与发布,着重介绍集成员所扮演的角色并讨论软件的集成方法。这一章概要地介绍构建、定基线以及提升基线。概述如何将构件放到一个用作交付的独立存储池中,在该存储池对那些被构建的可交付文件及目录进行版本控制。在对比不同类型软件系统的基础上,这一章讨论了如何发布软件。
第10章,地域上分布的开发,探讨为了实现成功的分布开发而必须克服的挑战,这些挑战来自机构的组织形式、沟通方式以及技术手段。这一章着眼于三种典型的分布开发场景及相关问题。这一章的最后还讨论了ClearCase
MultiSite的技术以及如何在三种典型场景中应用MultiSite技术。
第11章,变更请求管理和ClearQuest,讨论了变更请求管理(change request management,CRM)的内容,缺陷追踪就是变更请求管理问题的一个子集。SCM和CRM是两个紧密关联的软件工程规程,它们在一起形成综合的变更管理支持。这一章介绍了Rational
ClearQuest工具,讨论该工具如何与ClearCase配合,从而为统一变更管理模型提供技术基础。
所使用的表述习惯
命令和强调的文字
命令行操作用一种不同的字体表述,前面有“promt>”子样,例如:
prompt> command -flag1 -flag2
为了清楚起见,采用多行表达长的命令(参见下面的例子),实际操作中还是要在一行中键入,例如:
prompt> longcommand longobject-identifier
-flag1 //machine/pathname
-flag
注释
文字内容中一些需要强调的重点也会使用这种字体,前面还会有一个箭头作为提醒。
| 警告:
这种被灰色框突出的警告文字用于强调可能遇到和需要避免的问题或关注点。
ClearCase提示
带有“ClearCase提示”子样的灰色框中内容针对那些clearCase的已有用户。如果你不曾使用ClearCase,可以跳过这类提示。 |
UML图的格式
本书包括采用图形化建模语言表述的图示,这种建模语言就是统一建模语言,即UML。关于UML的更多信息,请参考Grady Booch、James
Rumbaugh和Ivar Jacobson所著《统一建模语言用户指南》[Booch 1999]。
以下说明本书中所使用的一些UML语言表述:用一个方框表示一个对象,其中是描述该对象的文字。连线表示对象之间的关联关系,线上的文字描述关联关系的含义。例如,一个房子有一个房顶:

可以为关联关系标注更多信息,例如多少个对象可以被连接在一起。这称为关联关系的多重性。例如一座房子只有一个房顶,一个房顶只能关联于一座房子。一座房子可以有多个窗户或没有窗户。一个窗户可能不对应房子(在它被安装之前),也可能对应一座房子。这些标注信息如下所示:
如果没有窗户的房子还算是房子么?如果不是,那么你可以用“1..n”而不是“0..n”表达窗户的多重性。
黑色菱形是对关联关系的另一种标注,用于表述组合关系。组合关系表示一个对象由其他对象组成。这种类型的关联关系表达了一层重要的语义。一个对象拥有另外的对象。也就是说,被拥有的对象可以被创建或删除,它们一旦被创建将一直与其拥有者在一起。如果拥有者被删除,其拥有的内容也随之被删除。例如,一个数据库拥有数据表。数据库被删除时,其中的所有数据表也将被删除。组和关系的UML表述如下:
最后,有一种UML关系叫作“泛化”,描述一般化事物和相对特殊事物之间的关系。例如,一般化事物可能是鞋子,特殊类型的鞋子有跑鞋、漫步鞋及网球鞋。泛化关系表现为指向一般化事物的箭头,参见图示如下:
|