追随智慧-第59章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
软件的生产不同于一般制造业。一辆汽车或者一台电视,都是在所有配件全都做好之后再来总装配,甚至电脑的硬件部分也是这样完成的。惟有电脑软件不行。它的每一个部分,必须在产生过程中,随时随地和其他部分衔接配合,在整合的工程中改进“零件”,又在改善了“零件”之后再来整合。如此交替反覆数百次甚至数千次,方能成型。比如微软公司的“视窗NT”,源码多至5000万行。“视窗98”小一些,也有大约2000万行。此类大型软件由数千个“零件”所组成。在这些零件形成的过程中,几乎每天都要进行一次“总装配”,如果装配的档案记录为“2195”,这就表明其装配整合的工作累计已有2195次。
软件制作的这种性质,使距离成了问题。这一边,希格玛大厦每天都要将自己的数十万行程序加以完善,每一天都要将完善的结果与大洋彼岸的总部系统加以匹配,再拿回这一边来测试。这一切,可以通过微软公司的专用网线来实现。尽管如此,我们还是可以想像,浩瀚的太平洋给王庆带来多大麻烦。
530“臭虫档案”
大多数软件公司今天对于“臭虫”的理解,已与过去大不相同。过去人们觉得这是一件不得了的事情,现在则觉得这是一个正常的现象。
2000年元旦过后,王庆又一次离开北京来到美国,住进距离微软总部不到500米的哈利泰吉花园公寓。这回,他至少要在这里住到2月28日了。在这里,人们都叫他的英文名字“泰瑞”,其身份是项目经理。这表明,他不仅代表微软中国研究院,而且要代表这个项目。他处在协调中美两个研究院的位置上:召集会议,检查进度,洞悉项目在每一个阶段的进展以及障碍,收集所有正常的和意外的情况,向太平洋两岸的任何一方通报。
雷德蒙的冬季气候温和而湿润,西南边不远处,瑞尼尔山白雪皑皑,但山下却是绿草如茵。阴雨绵绵无尽,偶尔云开日出,天空湛蓝,日月俱澄澈。每天早晨,王庆从哈利泰吉花园公寓出来,一边呼吸着新鲜空气和红杉树散发的清香,一边走上第40大街,再拐一个弯,就到了微软总部115楼3319号房间--他的临时办公室。
微软公司的中枢服务器已将前一天诞生的产品版本准备531就绪。他上班后的第一件事情,就是在电脑上找到它。
准确地说,这是一个半成品。王庆和微软公司所有开发人员,都把它叫做“Build”。这个词可直译为“建造”,本身是一个动词,在这里却具有名词的含义。简单地说,建筑一个软件有如建筑一个楼房。但要更加准确地理解这个词的含义,就不能不涉及微软公司内部的软件制作程序。
微软的软件产品通常具有极大规模,大型产品小组通常集中着数千人的智慧和精力。每一个人都拥有自己独立的空间来想像和创造,但所有人的发明最终须结合在一起,互相融合而不致互相抵触,这就是所谓“整合”
的工程。如果坐视开发人员各自为政,尽情发挥,对相互不能衔接甚至冲突的环节不加过问,就必然会形成一大堆互不相关的“零件”。你要把一个飞机发动机装在汽车上,就算那东西再好也必然导致失败。由于这样的理由,在微软公司内部,属于个人创造的部分越是精彩纷呈,整合的工作也就越是频繁严谨。到了一个产品将要定型的最后阶段,这种整合就必须每天进行。
“整合”的工作并非人工完成,而是由服务器中枢532自动实现。其具体的操作方法是:所有开发人员随时将自己完成的工作通过网络传送到服务器上,无论是几十人开发的小产品,还是几千人开发的大产品,均须遵循此项规则,一丝不苟。服务器依靠自己内部的工具程序,每天将所有人的工作汇聚在一起,自动加以整合,“建造”
为一个新的版本。公司内部各个产品小组,大体上每天都会提交一个新版,但却无法做到让每一个新版都处在稳定状态,也无法确保每一天的工作都能同别的小组相互配合。他们只需将其中比较稳定的版本标定存档,供其他小组使用,自己则可以继续往前走。这样,每个组都在奋力向前,又都在自己的身后留下一系列“新版”。
一望而知,这中间的要点是所有参与者必须同步前行。
你盯着别人,别人也会看着你。如果大家都在前进,只有一个人停滞不前,那就不仅是落后,而且还会造成整体系统失去协调。各个产品小组的“新版”则需不断整合在一起,以供检测小组检验。服务器中枢大楼中一批功能强大的电脑,则在每天将全部“新版”拷贝,并且转移到安全的地方,以防失火、失窃一类不测事件。
在电脑屏幕上显出期待着的“新版”程序之后,王533庆便下意识地查找中文部分是否已被整合在其中,又是否产生了新的麻烦。
检测在微软公司的软件制作过程中乃是极为重要的一环。同一般制造业中的情形不同,微软公司的软件测试和开发制作是同步进行的,并不像人们通常想像的,等到产品完成之后再来检测,而是伴随在产品制作的全部过程中。检测人员数量巨大,与研究开发人员的比例,大致为1∶1。
北京方面的检测工作,由希格玛大厦第六层的微软研发中心负责。微软中国研究院的这套语音识别程序,每天必须检测的内容超过400种。在整个开发过程中,只有极少时候能够一帆风顺。在大多数情况下,检测人员总会抓出很多“臭虫”。消灭“臭虫”的具体方法是,发现者首先要有办法使“臭虫”能够再现,而且能够记录其出现的时间、条件和表现方式。当另外的人使用同样办法可以让“臭虫”再现的时候,就证明检测的结论有效。但并非所有的“臭虫”都在必须消灭之列。研究人员通常是依据“臭虫”对软件的损害程度,将其分成四个“优先等级”。“最高等级”的“臭虫”一经发现,534则直接责任者必须在彻底解决问题之后方能离开办公室。对于大多数并不会造成后果的“臭虫”则有可能不予理睬,甚至永远留在产品中。
王庆在太平洋两岸不断传递这套语音系统的两个月中,检测人员总计发现了2500个以上的“臭虫”。其中有重要影响因而必须消灭的,则有几十个。每一个“臭虫”都有一个独立的编号,并且详细记载其生存周期,也即它的出生、发展和死亡,消灭它的方法,以及在消灭的过程中是否产生了新的问题,是为“臭虫档案”,以供日后人们在类似问题面前可以参照,又可在产品完成之后,对“臭虫”数量、消灭了多少、还有多少隐藏在产品中,一一加以统计。“臭虫”的“平均寿命天数”,乃是判断开发人员工作质量的标准之一。对于那些必须加以消灭的“臭虫”,则由研究院的开发人员找出程序源码中的错漏,修正之后由检测人员再行检测,直至确认“臭虫”的确已经死亡。
不过,很多时候,在消灭一个“臭虫”的同时,又会产生更多的“臭虫”。美国软件业中公认所谓“程序的正确性不可证明”,就是说的这种情况。有些软件,必须535做到绝对无误,比如用在卫星航天方面的软件,就是这样,但通常在一个庞大的个人计算机操作系统中,你不论怎样努力,也不可能实现“零臭虫”。所以微软公司对于自己产品的要求,叫做“足够好”,而不是“绝对好”。
王庆说:“你要把视窗2000做得一个‘臭虫’都没有,100年也做不到。只要万分之一的‘不好’不致影响万分之九千九百九十九的‘好’,就算成功。”这样的道理固然可以成立,但就算你真的做到只有“万分之一不好”,你几千万行源码,也就有了几千个“臭虫”。有人说微软产品的错误无数。看来也不是全无根据。
2月28日的“里程碑”之日越来越近。王庆觉得,语音产品小组的节奏明显加快。经理已经宣布,所有新的东西一律不许再加入产品,所有人员全力检测和消灭“臭虫”。那些天,王庆每天早晨打开电脑,都会看到一大片“红色的小方块”,分外刺目。一个红方块就意味着检测人员又发现了一个“臭虫”。测试人员和开发人员通常会发生矛盾,这个说发现了“臭虫”,那个却不承认是毛病,所以,颜色只是一个参考,并不具有绝对的意味。
536不过,如果哪个小组出现一片“红色”,小组的全体员工还是会紧张起来,压力也在无形中增加。当一个“臭虫”
正在被消灭的过程时,那块红色就会变成黄色。就算修改者确认自己已经把臭虫消灭,也不能随意改变其颜色,而须请最初发现“臭虫”的人来检测,直到检测通过,黄色变成绿色。你如果不能在当天工作的时间把所有“红色”改变成绿色,那么晚上就难免要加班了。2月的最后一个星期,每天夜幕降临的时候,雷德蒙总部语音小组的员工,都不能回家,整个大楼灯火通明,“新版本”不是一天发出一个,而是每隔半个小时就发出一个。它向全体员工昭示,已经解决了多少“臭虫”,但还有许多“臭虫”仍在横行。
王庆的任务仍是保证中文部分能够跟上整体结构的变动。因为任何其他部分的更改都有可能影响中文。软件程序的错误和“臭虫”造成的后果通常并不能画等号。
有时候很大的错误不一定会有很严重的后果,有时候一个细小的疏漏却有可能导致电脑“死机”一类重大的恶果。
这一天,当王庆打开系统将鼠标点击“中文”栏的537时候,系统立即崩溃,接着电脑屏幕上出来一些乱七八糟的东西。王庆目瞪口呆。过去两个月里,也呈现过类似的情形,比如那一次刚刚开机,应用程序就关闭起来。
还有一次是在400多种汉语语音中,忽然进来一个英文的字母读音。电脑是一个最聪明的傻瓜,立即被这小小的意外来客搞得无所适从。诸如此类的问题曾经无数次地出现,每一次的原因都不一样。王庆后来说,“消灭‘臭虫’就像是走迷宫一样,也不知道什么时候走通了,顿觉心里一阵激动,但你不可能回到同样的道路上来,因为同样的问题不会重现。”现在是在产品制作的最后阶段,出现这样的情况,乃是致命的。对于王庆来说,这时候,最困难的事情是判断错误发生在什么地方。他在匆忙之中打开服务器,从最初的记录逐一向后,寻找每天的“版本”。这工作一直持续了一个星期,直到有一天,他发现系统在2000年1月9日还能运行正常,但到了10日,系统便忽然拒绝工作。他回过头去调查这一天的记录,发现雷德蒙总部的语音识别大系统做了某些修正,但希格玛大厦没有随之更改自己的程序。想必这就是问题的所在。但他又花538了一个星期的时间,还是搞不清楚,究竟是什么人在什么地方改了什么。他情急火燎地请微软公司语音开发小组的人来帮忙。结果终于发现,问题出在一个数据格式模块上,微软总部的开发人员在那里加注了一个英文和日文的语言模型参数,中文这一边却没有增加。王庆长出一口气,打开中文程序源码,只用一秒种就解决了问题。
这个叫王庆两个星期寝食不安的“臭虫”,仅仅是一个“句号”!
“足够好”并不足够好雷德蒙微软总部115号楼里,王庆一心一意建立“臭虫档案”的时候,相隔不远,8号楼人力资源部的经理们,