微软公司软件开发模式简介
Smalllamb
北京大学出版社 96 年底所出的《微软的秘密》一书是目前我所见到的对微软公司软件产品
开发过程介绍的最专业、最深入的一本书。通过本书,我们可以看到微软公司是如何对科学地对
软件产品开发进行有效地管理,我想这些经验对于中国的广大软件开发人员,尤其是关心中国软
件产业发展的各位朋友是大有益处的。所以特将此书中涉及软件产品开发的部分内容摘录出来
(第四章“产品定义与开发过程”),加上我在微软中国工作的实际经验总结出这篇文章,希望与
大家共同分享。本文作为摘录,自然是挂一漏万,所以建议大家若有时间还是找来原书一读。
在微软的产品定义与开发过程中,微软软件开发遵循着一种可称之为“靠改进特性(Feature)
与固定资源(Resource)来激发创造力”的战略。该战略可分为五个原则:
1、将大项目分成若干里程碑式(Milestone)的重要阶段,各阶段之间有缓冲时间,但不进
行单独的产品维护。
2、运用想象描述和对特性的概要说明(Program Specification)指导项目。
3、根据用户行为(User Behavior)和有关用户的资料确定产品特性及其优先顺序。
4、建立模块化的和水平式的设计结构,并使项目结构反映产品结构的特点。
5、靠个人负责和固定项目资源实施控制。
原则一:将大项目分成若干里程碑式的重要阶段,各阶段之间有缓冲
时间,但不进行单独的产品维护。
1、项目进度安排与里程碑
微软通常采用“同步-稳定产品开发法”。典型项目的生命周期包括三个阶段:
计划阶段:完成功能的说明和进度表的最后制定
开发阶段:写出完整的的源代码
稳定化阶段:完成产品,使之能够批量生产(Roll Out)
这三个大阶段以及阶段间内在的循环方法与传统的“瀑布”(Water Fall)式开发方式很不相
同,后者是由需求、详尽设计、模块化的代码设计与测试、集成测试以及系统测试组成的。而微
软的三个阶段更像是风险驱动的、渐进的“螺旋”式的生命周期模型。
计划阶段的产品是想象性描述与说明文件,用来解释项目将做什么和怎么做。在管理人员
拟定进度表、开发员写出代码之前,这些东西都促进了人们对设计问题的思考与讨论。开发阶段
围绕三次主要的内部产品发布来进行;稳定化阶段集中于广泛的内部与外部测试。在整个产品生
产周期中,微软都使用了缓冲时间的概念。缓冲时间使开发组能够对付意外的困难和影响到时间
进度的变故,它也提供了一种手段,可以缓和及时发货与试图精确估计发货时间之间的矛盾。
在开发和稳定化阶段的所有时间中,一个项目通常会将 2/3 的时间用于开发,1/3 的时间用
于稳定化。(Office 部门副总裁曾这样概述通常的进度:“一般说来,在总的进度表中,用一半的
时间写出产品,留下另一半的时间调试或应付意外事故。这样,如果我有一个两年的项目,我会
用一年来完成事先想好的东西……如果事情有点麻烦,我便去掉我认为不太重要的特性。”)。这
种里程碑式的工作过程使微软的经理们可以清楚地了解产品开发过程进行到了哪一步,也使他们
在开发阶段的后期有能力灵活地删去一些产品特性以满足发货时期的要求。
计划阶段