答案:Product Developing Process in Microsoft
上图中: QA是微软大的产品部门下设的一个比较专业的测试部门(Quality Assurance Dept)
1. 项目进度表中的缓冲时间(Padding Time)
微软使用缓冲计划,以在最高的效率与较好地对未来作预计之间求得平衡。这种应付突发事件的时间在开发和稳定化过程中是每一个主要里程碑的一部分。缓冲时间主要用于弥补由于对特性(Feature)的不完全理解,或者是技术困难或是由于疏忽而忘记把任务写入进度,或者是未料到的难题而形成的漏洞。缓冲时间有助于一个项目适应意料之外的事件。
原则二:运用想象性描述和对特性的概要说明指导项目
为了给出足够的开发框架以使工作能持续进行,并且能容纳开发过程中出现的变化并保持足够的灵活性,微软采用想象性描述和概要的说明来指导项目开发,而不是在一开始就努力写出一份完整和详细的说明。所谓想象性描述是由程序经理和来自市场营销组的产品计划人员共同编写的一份非常短的文件,在其中主要是定义产品开发的目标(不涉及产品的具体细节!)。通常对一个全新的产品,想象性描述一般会相对较详细,在其中还含有一份粗略的说明文件。总的来说,微软对于想象性描述的要求是:
越短越好,尽量说明"产品不做什么"(而不是"产品要做什么"!)。
运用想象性描述,程序经理开始编写功能说明文件,该文件解释产品的特性是什么以及这些特性如何与其他特性及产品易做图。最初它只是一个概要性的说明文件,随着项目的进展,程序经理会随时向其中添加更多的细节,最终的说明文件将变得象用户手册一样。完整的说明不只起着对产品最新功能的描述作用,而且它还是在产品投产与发货之前进行测试与评估的主要依据。
想象性描述有助于决定删除哪些特性。
微软内的各个开发组采用想象性描述帮助细化产品版本的规定主题,然后以此主题来决定是否需要增加产品各个可能的特性。通常不要轻易改变所确定的主题,否则可能造成产品开发上的混乱。
编写说明文件
说明文件在产品小组的所有成员之间,产品小组之间以及产品小组与管理部门之间起着传递产品的设想与要求的作用。在说明文件中必须清楚地描述产品特性(描述每个特性如何工作,外观如何以及从用户的角度出发如何与用户交互。如果特性有一个界面,还应包括一张示意图,以显示出界面的效果),并赋于其相应的优先级。程序经理据此建立起项目的开发进度表。此外在其中还应包括以下各项内容:用一句话表示的项目开发目的,关于产品是什么与不是什么的清单,对顾客的定义,对竞争产品的定义,产品对系统的要求(包括操作系统版本、最小内存要求、硬盘空间、处理器速度以及显示器分辩率),对第三方(如打印机驱动程序、组件)的任何依赖性。程序经理负责协调并"写下"说明
程序经理(Program Manager)应考虑以下问题:
这项特性的要点是什么?
用户如何使用该特性?
这项特性有意义吗?
该产品中或微软的其他产品中有类似的特性吗?
有哪些问题被遗漏了?
组内的交流令人满意吗?
最终程序经理通过与组内开发人员的共同讨论决定有关特性的内容,并将其写下来。
1. 构造原型
构造原型是程序经理具体说明一件新产品或一个新版本的最好方法,这从许多方面来说都使开发前测试成为可能,尤其在可用性方面,并且有助于对与用户交互情况作出好的理解,它也能使产品说明更紧凑。
微软的开发人员通常采用VB构造用户界面原型,但是对于构造计算机屏幕模型之类的工作,画笔(Paint brush)也是一个很好用的工具。死板的说明变成有生命的文件,说明不应过于详细以至限制了发明创造。在项目开发过程中,说明文件的早期版本会有相当大的增加与改变。由于说明的变动可能会导致相应开发工作的极大变动,所以微软通常是将精力首先集中于那些没有什么用户界面的特性上,因为在完成开发前不必去了解用户对它们有何反应,也就是说这些特性不大可能改变。然后再面对其它特性。但是当产品开发到一定程序后,例如40%之后,程序经理必须严格控制对特性的修改(主要是指增加新的特性),否则不光会造成开发延迟,而且会压缩可用的测试时间。
原则三:根据用户行为和有关用户的资料确定产品特牲及其优先顺序
对于一个开发项目而言,如何确定最终产品中应包含什么特性通常是比较困难的一件事。为此微软采用了一个称之为“基于行为制定计划”的方式来进行特性选择与优先级安排。
基于行为制定计划法从对用户行为,诸如写信或做预算,做系统研究开始。然后,根据某一特性在支持重要的或者是经常的用户行为上的程序对其进行评价。这样做的优点是对特性取舍更具理性:讨论对顾客想要做什么加以更好的安排,对某个给定特性是否方便了特定任务的更集中的辩论,可读性更强的说明,以及在市场营销、用户教育和产品开发中更好地同步。
1. 特性选择和优先级安排中的基于行为制定计划
基于行为制定计划法中的关键点在于按用户行为、产品特性以及行为和特性之间的内部联系来分析产品。程序经理和产品计划者把产品试图支持的用户任务或方案分成大约20个“行为”,然后他们努力把行为(以及任何子行为)映射入微软的现行特性和竞争对手产品的特性中去。他们也把行为映射到不同的顾客形象或不同的市场部分中去。
当说明产品的新版本时,基于行为制定计划法帮助程序经理和开发员集中他们的精力与创造力。象Excel之类的项目,争取在每个新版本中加入的主要行为不超过四个。绝大多数特性直接映射入这些行为之中。该做法使项目可以按特性对用户的价值来进行分级。通过分级,促使程序经理和开发人员都行动起来,使他们的特性支持尽可能多的行为。这种良性竞争对于用户有益,同时也利于提高生产率。
2. 为顾客行为而非产品特性准备资料
基于行为制定计划进度,项目在计划阶段首先集中于行为,其次才是特性。程序经理和市场营销人员并不去思考和排除他们喜爱的特性,再围绕它们搞出想象性描述的草案。他们真正做的是列出一份顾客都做些什么的清单,然后把想象性描述集中于支持那些行为的特性上。
3. 以行为为中心对产品进行全面考虑
由于基于行为制定计划法是从整个产品的观点着眼,因此有助于在不同职能上工作的项目成员理解产品做什么,以及其他产品的相应特性如何可能支持那些需要或不需要其他应用软件产品的行为。
4. 做市场营销研究以支持基于行为制定计划法
为支持基于行为制定计划法,从市场营销组来的产品经理与程序经理、开发人员一起开展一些联合的研究,如指导对用户的研究工作。然而,一般来说是产品经理做大多数的研究,并可使其更明确地影响微软产品的演进。
原则四:建立模块化的和水平式的设计结构,并使项目结构反映产品结构的特点
微软产品设计中的一个关键概念是产品的基础结构(Infrastructure),尤其是生命周期短的应用软件,应随项目的进展变得更加单一(而不是错综复杂)。当开发组构造产品的第一版时,他们更多地使用分级式结构,好为产品设计规定出一个最初的架构。随着时间推移,他们向单一的结构迈进,以使项目能集中于特性开发。微软越来越强调不同产品间的特性共享。共享有助于使不同产品的“性能与感觉”(Look and Feel)都统一协调起来;它也方便了需要不只一个应用软件的用户,减少了代码的重复书写,缩小了单独一个应用软件的规模。
微软用特性小组组织产品开发,这种方法使得每个人都容易明白小组是如何与整个产品相关联的。项目从规定概要说明开始。概要说明的形式是一份已确定了优先级安排的内容清单,涉及产品下一版本将要开发的相对独立的特性,以便由分开的特性小组加以开发。
程序经理和开发员把项目分成特性子集,再将之分配给每个特性小组,让他们在3到4个主要的内部项目里程碑中进行生产。这种产品组织与开发方法使微软能靠简单地增加开发员和创建一个大的小组来渐进地增加产品的功能。
5. 把特性(与函数)作为开发单位
微软软件产品的特性是用户最终可见的相对独立的功能单位,就如建筑材料一般,对应用软件产品更是如此。系统软件产品,如NT或者95的特性,对最终用户通常不直接可见。微软和其他公司有时简单地称这些不直接可见的特性为“函数”。
程序经理承担开发一组特性或函数,实现从说明经测试、文档化直到最后完成的过程。他们必须与开发员合作,后者负责估计进度表与完善每个特性。开发员还要在一台联网开发计算机上存储一到几个文件,用以保存特性的程序源代码。大多数特性的开发与改进只要一名开发员,而有的大型特性则要一个小的小组。
6. 产品结构是决定其长期结构完整性的基石
产品结构是产品内部的基干,它规定了重要的结构构件以及这些构件如何组装到一起。产品结构及用于组装结构的构件,提供了实现产品特性(即做详细设计与编码)的支柱。产品的结构对最终用户而言,通常并非直接可见。只有结构要实现的特性是可见的。产品结构也是决定产品长期结构完整性的基石。产品功能的任何改变都不应造成潜在的产品结构散架。
7. 产品的层次结构
对于产品,也可以采用层次结构的方法加以分析。通常定义良好的层次结构有助于对产品特性进行灵活的增加、删除与改进。此外良好的层次结构有助于产品在不同平
上一个:转微软公司软件开发模式简介(上)
下一个:继承与接口