软件配置管理为软件开发提供了基础性的支持环境,它与软件开发中的所有角色都有联系,因此本书是写给所有与软件开发有关的人士看的,而不仅仅是写给软件配置管理人员的。

本书分为两篇,上篇详细介绍了软件配置管理的基本知识;下篇主要讲述了软件配置管理的一些实际问题。本书的目标是让读者用很短的时间就能掌握软件配置管理的基础知识,在参与软件开发时,具备软件配置管理方面的基本素养。

本书的一大特色是作者用诙谐生动的语言来讲述专业的技术知识。文中充满睿智的调侃,为读者营造出一种轻松的氛围,让原本比较沉闷的技术阅读成为一种愉悦的享受!

致本书读者

据说我小的时候,吃西瓜就喜欢吃尖儿。一桌西瓜刚切好,大人一不留神,就有很多块儿已经没尖儿了。这说明的第一个问题是,打小我就不是个老实本分的孩子。这说明的第二个问题是,西瓜数尖儿最好吃,最甜。如果肚子容量不大的话,应该先吃它。

我现在要做的事,就是和本书的读者们一起,去吃西瓜尖儿。软件配置管理可是个大西瓜,涉及很多方面,有很多细节在里面。作为广大读者,特别是并不以软件配置管理为生的读者,恐怕没这个闲心,钻研每一个方面的每一个细节,吃到西瓜露出青皮儿。这本书介绍的是软件配置管理的基本概念、基本思想、基本方法和基本要点,总之,是最核心的内容,框架性的内容。本书的目标是,让您用几个小时的时间,掌握软件配置管理的基础知识。

软件配置管理与软件研发中的所有角色都有关系。开发人员需要版本控制来帮忙,以避免版本混乱,工作成果丢失;测试人员需要缺陷跟踪系统来帮忙,防止自己发现的 Bug ,程序员忘了改,最后连自己都忘记了;项目经理关心项目进度,这同样和软件配置管理有关。所以,不论您现在专注于什么工作,不论您将来的理想是什么,只要与软件研发相关,相信本书都会有利于您的成长!

流水先生(董越)

2 版前言

本书第 1 版的写作完成于 2007 年秋天。四年以来,软件配置管理领域最大的发展变化是,以 Git 为代表的分布式版本控制工具日渐流行。本书第 2 版添加了专门的章节( 3.5 节)介绍分布式版本控制工具,并在其他已有章节(第 2 3 4 5 7 12 16 章)中,介绍如何在不同的场景中使用这个新 装备

然而,引入分布式版本控制工具,只是第 2 版所修订内容的一小部分。读过第 1 版的读者在预览本版目录时会发现,本书的篇章结构发生了不少变化。比如,持续集成的内容进行了扩充,作为单独的一章(第 6 章)体现出来。再如,在讲解变更管理时,用一节的篇幅( 10.2 节)讲解了 Scrum 等开发方法中,以特性( Feature )为单位的开发管理。

在具体内容的修改中,替换了第 1 版中两三成文字,以进一步突出重点、说清本质,并帮助读者更好地学以致用。此外,第 1 版中使用的若干术语在本版中进行了更新。比如改称任务单元为变更集,与业界通用术语相符。

本书第 2 版的具体内容改变了很多,但与第 1 版相比,本书的叙述风格和目标读者群没有发生什么变化。本书仍然力图以生动、易懂的叙述,让广大的软件开发人员、管理人员、质量保证与流程优化人员,当然也包括配置管理人员,对软件配置管理有一个基本的了解。

感谢电子工业出版社张春雨等编辑的辛苦工作,使本书第 2 版得以付梓。同时感谢如下评审者认真、细致的评审:我的配置管理同行李靖雯、李晓琴、李越、罗晓辉、王晓翔、赵延涛、郑博星,他们足以保证本书的专业性;从事软件研发中不同工作的关恒、齐文、张辉、庄孝德等同事,他们帮助我从不同视角审视考量本书;以及并不从事软件研发工作的我的夫人,她负责保证本书的叙述通俗易懂,即使外行也能理解。感谢你们的帮助!

本书第 1 版在当当网( http://www.dangdang.com/ )和中国互动出版网( http://www.china-pub.com/ )得到了读者的较好评价,并且从出版至售罄,一直位列两网站软件配置管理书籍销量榜首。作为作者,最希望的事情就是写出的一点东西能得到读者的认可,对读者有所帮助。很高兴本书第 1 版初步实现了这一目标,并期望本书第 2 版能够给读者带来更大的收获。

2012 3

许多工科学生都参加过一门称之为 金工实习 的课程,会在生产车间内真实地体会车、铣、刨、磨、钻、铸、锻、焊等诸多生产工艺,同时也会领略到流水线生产的高效和有序。实际上配置管理就是保证这些工艺过程按生产大纲的安排,并行而有序地开展,最终将原材料或毛坯变为成品的关键方法。但软件毕竟和制造业产品或硬件不同,软件是 的,灵活性高,而且易变。因此,如何理解软件配置管理,并进而把握软件配置管理的内在规律,真正使软件配置管理起到为软件交付保驾护航的作用,的确是值得业界仔细思考和研究的一个课题。

从流程角度看,软件配置管理是整个软件开发生命周期中一个非常核心的管理过程。配置管理实际贯穿了从需求分析、架构设计、项目管理、开发、集成构建、测试,以及上线的全过程。这一过程不仅涉及宏观的项目进度控制、配置管理规范及计划、多地点开发规划等,也包括更细粒度的分支模型、构建及集成方式、变更处理流程,还包括微观的与开发人员直接相关的版本控制、差异比较与归并等。绝不夸张地讲,软件配置管理是一门 八面玲珑 的技术或艺术,而读者可以从董越先生的《未雨绸缪 —— 理解软件配置管理》一书中切实感受到这一点。当开发人员从配置管理工具的版本树中静静欣赏自己作品的成形轨迹时,当集成人员从组件基线树把握整个应用组件的里程碑脉络时,当项目管理人员面对缺陷发展趋势以判断产品发布时机时,当构建生产人员顺利将正确版本的源代码从版本库中取出、构建并在生产系统投产时,配置管理及相关工具不仅仅是这些人员的有力助手,而且随着时间的推移它带给大家更多的将是一份信任和感动!

从人员角度看,软件配置管理人员在软件企业中起着非常重要的作用,绝不是许多人头脑中的文档管理员、档案管理员或者什么其他的人员。他们是软件企业中所有软件资产的管理员,是最洞悉软件整个开发及变更过程并参与其设计的关键人员,是能与项目经理 / 人员、质量保证经理 / 人员、软件分析 / 设计 / 开发 / 构建 / 测试人员充分沟通并与之打成一片的 公关 人员,是了解操作系统管理、网络管理、各类开发语言和环境、深谙软件过程改进理论和相关工具的技术人员。通过本书,读者可以加深对配置管理的理解,加强企业配置管理的相关工作,重视配置管理人员的培养和提高。

全书尽管只有二百余页,但却深入浅出地道出了与配置变更管理相关的多个基本概念,如版本控制、配置管理、缺陷跟踪与变更管理、构建、组件、集成、分支等。同时书中根据不同实际场景给出了业界的最佳实践,而且处处渗透了作者在软件配置管理方面的心得,例如,对分支运用的分析、对组件复用的理解和实践、对于集成过程及集成责任的清晰阐述等。并且,本书结合工具( ClearCase ClearQuest Subversion Bugzilla 等)简单明了地指出了当前流行的配置工具是如何实现这些最佳实践的。可以看出,《未雨绸缪 —— 理解软件配置管理》一书是作者多年专注于软件配置管理理论和实践的结晶,书中不少观点实际上也代表了包括我在内的很多软件配置管理相关从业人员的感受和心声,是值得所有软件开发从业人员仔细阅读、细细品味及随时参考的好书!

非常感谢董越先生在紧张工作之余为大家所做的切切实实的贡献!

2007 10

李纪华,现任 IBM 中国有限公司软件部 Rational 软件北方区技术负责人。曾经为国内外多家大型软件研发组织提供软件咨询服务,范围包括软件需求管理、软件配置与变更管理、 IT 项目管理、实时系统测试等多个方面。此前在 Rational 澳洲亚太技术支持中心专门从事亚太地区 ClearCase 用户的技术支持工作。在加入 Rational IBM 之前,李纪华先后在 Platinum Technology 中国、 Computer Associates 中国担任技术顾问,主要从事软件生命周期解决方案的咨询工作。在软件工程技术方面,李纪华有着多年的实践经验,目前主要专注于软件配置与变更管理、项目组合管理及企业应用现代化等领域。

(电子邮箱: lijim@cn.ibm.com

据说我小的时候,吃西瓜就喜欢吃尖儿。一桌西瓜刚切好,大人一不留神,就有很多块儿已经没尖儿了。这说明的第一个问题是,打小我就不是个老实本分的孩子。这说明的第二个问题是,西瓜数尖儿最好吃,最甜。如果肚子容量不大的话,应该先吃它。

我现在要做的事,就是和本书的读者们一起,去吃西瓜尖儿。软件配置管理( Software Configuration Management SCM )可是个大西瓜,涉及很多方面,有很多细节在里面。广大读者,特别是并不以软件配置管理为生的读者,恐怕没这个闲心去钻研每一个方面的每一个细节,吃到西瓜露出青皮儿。这本书介绍的是软件配置管理的基本概念、基本思想、基本方法和基本要点。总之,是最核心的、框架性的内容。本书的目标是,让您用几小时的时间,掌握软件配置管理的基础知识。

本书是写给所有与软件研发有关的人士的,而不仅仅是写给软件配置管理专业人员的。原因之一在于软件配置管理的特殊性。软件配置管理与软件研发中的所有角色都有关系。开发人员集中精力于编写代码,但是需要版本控制来帮忙,以避免版本混乱,工作成果丢失;测试人员集中精力于测试,但是需要缺陷跟踪系统来帮忙,防止自己发现的缺陷开发人员忘了改,最后连自己都忘记了。项目经理关心项目进度,这同样和软件配置管理有关:如果能正确地运用分支这个手段,让不同的工作(比如系统测试和开发人员继续开发)并行起来,可以大大加快项目的进展速度。还有需求管理人员、系统架构师、用户文档编写人员、质量保证人员 …… 每个人都要面对软件配置管理,都应学习使用它,并从它那里受益,因为软件配置管理为软件研发提供了基础性的支持环境。

另一个理由是,在很多情况下,软件配置管理应该怎么做,深深地受当时特定情况的影响。而这特定的情况、特定的背景,往往是研发团队的其他成员要比软件配置管理工程师更清楚。就好像衣服穿多了还是穿少了,要听本人的意见,冷暖自知。

对于正在从事或打算从事软件配置管理工作的读者,这本书也是颇有价值的。日常的工作,可能会让我们只见树木,不见森林。而通过这本书,可以概览软件配置管理的全貌,系统地了解我们要做的事情,了解我们的使命。另一方面,本书所给出的软件配置管理的基本原理和基本方法,来自于业界的最佳实践和已经形成的解决模式。这些为解决特定研发背景下的具体问题,提供了很好的指导。我们需要做的是,考察具体问题、具体情况,融会贯通地运用软件配置管理的基础知识,产生优秀的具体解决方案,并付诸实施。

至于本书的书名,其中的 未雨绸缪 有如下三层含义。首先,记录历史,以供不时之需,这是软件配置管理的重要功能之一。其次,在软件研发中,随着软件研发规模的不断扩大,软件系统复杂性的不断增长,对软件配置管理的需求也会越来越强烈。因此,了解软件配置管理,是在为明天做准备。最后,本书帮助读者充实自己。谁不想成长呢?不论你现在专注于什么工作,不论你将来的理想是什么,只要与软件研发相关,相信本书都会有利于你的成长!

最后说一下本书的风格。就像这篇自序的风格一样,本书通俗易懂,偶尔还诙谐一下。希望读者在阅读时,能分享我写作时的愉悦。

平日里读书时,每当看到作者列出的长长的致谢名单,我心中总是不免起疑。但这种想法不会再出现了,因为我自己终于也经历了出书的过程 —— 这需要许许多多的帮助和支持,这需要许许多多古道热肠的人。幸运的是,我遇到了他们。

首先感谢 SCMLife 的创始人孙常波先生。本书的写作,缘起于他的约稿。而在写作完成后,常波又付出了大量的心血,帮忙联系出版。没有你,就没有这本书!

传诚科技的晓黎女士, IBM 的浦雪(神仙姐姐)、王燕青、杨杨和朱宏,在联系出版的过程中,也搭手相帮。谢谢你们!

电子工业出版社的博文视点是本书的出版商。这本书能在博文视点出版,令我十分喜悦。感谢你们在阅读后把这本书归类为好书并决定出版,感谢你们几个月以来辛苦的工作。

本书推荐序的作者, IBM Rational 的李纪华先生,在软件配置管理领域有很高的威望。能得到他百忙之中的指点,进而欣然作序推荐,我感到非常的荣幸。

本书写作完成后,得到了如下同行和(前)同事的评审。

摩托罗拉: 石庆东、石莹莹、耿倩、张莹

爱立信: 赵延涛

诺基亚: 张晓昀

西门子: 雷琼

北电: 孙奕凌、朱东、周涛、陈胜利、刘晓钰、宋爱贤

雅虎: 刘振飞、徐晓明、李雪江

伟创力: 陆媛

新浪: 付丽

华为: 李靖雯

神州数码: 宋京

中兴通讯: 任艺

上海贝尔阿尔卡特: 唐雪蕾

是你们的反馈,帮助纠正了本书初稿中的某些技术问题,补充并完善了本书的内容;是你们的反馈,让我有了把本书公诸于众的信心。真诚地感谢你们!其中,孙奕凌女士的评审格外严谨、细致,甚至在遣词用句方面都帮忙做了很多润色。在这里特别感谢你,奕凌!

最后,感谢我的母亲,感谢您所给予我的鼓励和支持。在每章初稿完成时,您总是第一个读者,并随后提出中肯的建议。我没有辜负您的期望,在您的著述出版二十年后,我的著述也将要出版了。