品前进行测试与评估的主要基础。在说明过程的早期,程序经理会建立一个

员需要有这样的自由,即能决定如何用实际代码完成特性目标。

“lotus1—2—3用户帮助”,9ord有“9ordperfect用户帮助”。这些特性

excel和9ord的新版本以及其他微软新应用软件如po9๗erpoint包含

为一个开员的所有能ม力,但他们喜欢解决什么样的问题却是一种偏好。”

在系统软件领域,程序经理显然更技术化一些,因为ฦ他们帮助设计某些特性,

的反面教训中,人们获益非浅,并逐渐走向里程碑式过程。我认为ฦ他们

人们认识到不管程序是多么เ地充满想象力或创造力,如果不实用,也只

员的?它是如何达到其统治地位的?本书๰旨在揭开这团迷雾,告诉世人微软

代前言

7之后的那天进行记录。这与步骤

8和

9是同一天。在

excນel,记录约

5到

60分钟,这取决于文件的数目。

11生成每日构造

每天在记录的最终时限比如下午

2:00后,一个被指定为ฦ项目“构造主ว管”的开员运用源

文件的中ณ央主版本生成一个完整的产品构造,由这一构造形成的新的内部产品版本被称为“每日构

造”。这是在产品展和不断提高功能的过程中拍的一张相对稳定的快照ั。不管有多少开员在一天

内记录他们的源代码改变,项目都必须在当天生成每日构造。构造主管管理构造过程,直到所有的代

码编译成功构造结束。这也许要求他们工作至深夜甚至凌晨,这取决于完成构造所需的时间长度。构

造完成之后,构造主管执行一系列自动测试。这些保证了产品的基本功能运作良好,构造基本稳定。

然后构造主管把每日构造给所有项ำ目人员,包括项目经理、开员、测试员以及用户培训人员,

供他们使用和评价。

────────────────────────────────────────────

供他们使用和评价。

────────────────────────────────────────────

无论单个开员多久向源代码记录一次他的改变,一个专门指定的被称

为项目“构造主管”的开员每天都要运用源代码的主版本生成产品的一个

完整的构造。生成产品的一个构造的过程由执行一系列ต良动的被称为“构造

计划”的命令组成。这创造了一个产品的新า内部版本,还包括许多“编译”

源代码的步骤。自动编译把产品的源代码翻译成一个或多个“可执行”文件

可执行文件可以直接在计算机上完成特定的操作,而不像那种也๣许只包括

一些文档或一些数据的文件。每天所构造的产品的新内部ຖ版本就是“每日

构造”。乔恩·德·沃思,excel的前任开经理和office的现任开经理,

曾经这样解释excel组所遵循的每日构造过程背后的规则和逻辑亦可见于

表51:

思路是我们总希望所记录的代码拥有尽可能ม高的品质。为了做到这

一点,我们建立了一些规则。第一条规则是:

如果你今天想做记录,在两点以前做。你所记录的代码必须被编译

和链接。对于excel9๗el

和日本版的9indo9sexcel这样做。我们还在大量excນel源代码的基

础上做了一个ฐ叫作graph的程序。这样9aທph和ma9๗toshgraph也必须编译和链接。9๗indo9๗s和maທcexcel必须通过一个快

测试宏,这种宏是用来测试那ว些经常会出问题的部分的。人们必须ี把他

们的版本下载到他们的机器并启动宏,但这之后它就是自动进行的了,

所以你可以在两点以前๩记录完毕。当我说到你必须能够编译和链接,我

的意思是你必须在前๩一夜已๐经与项目同步化,解决了你所有的融合冲

突,以及已能够从一个ฐ清洁的状态构造我所说的一切。很多人每天保持

同步,但你的确只需在记录的前一天做这项工作。我确信我们几乎每个

人都不止每两天做一次。

每日构造——保持小组之ใ间协调的严格法则ท

每日构造工作给项目小组了关于产品进展状况的迅信息反馈。

9๗indo9snt的软件工ื程经理娄·帕雷罗里认为每日构造是痛苦的但是有用

的:“每日构造工ื作是世界上最痛苦的事。但它也是最伟大的,因为ฦ你可以

得到立即的信息反馈。”微软的法则是很少的,但是项目必须严å格遵守经常

构造的过程,因为这保证了开产品中每天之间的稳定性,并把所有的开

活动组织到了一起。就像ms-dos和9indo9๗s的前任测试经理戴夫·马里茨所

评价的:“每天五点整必须有一张关于构造的快照,这绝对是一条严格的军

事化的纪律。我坚信总是会有什么东西要出乱子。所以你永远应该每天拍一

张快照,无论生了什么เ,即使第二天是假期,你知道不会有人要用它。每

个人所需要知道的是节奏并感觉到เ项目是受控制ๆ的。即使你知道从现在起两

周后的构造也仍将是不稳定的。星期型的构造也还是引起剧烈的低谷或gao潮

的波动,但那并不重要。”

个人所需要知道的是节奏并感觉到项目是受控制的。即使你知道从现在起两

周后的构造也仍将是不稳定的。星期型的构造也还是引起剧烈的低谷或gao潮

的波动,但那并不重要。”

pc软件的早期。但是大

的项ำ目不再只是小的小组之和。由于对产品构件的需要,他们也非常依赖于

许多其他的组和个人。即使一个ฐ特性小组里的单个ฐ开员也需要利用其他人

所改变的源代码来工作。弗莱斯描述了每日构造过程如何保证了小组之间的

协作:“那确实非常重要。我们不可能使这样大的一个组没有每日构造过程,

因为我们需要合作。我们努力像小的小组一样工作。但我们不是小的小组。

我们需要别人所做的工作。我们也需要产品基本上在任何时候都能运行,否