技术开发 频道

软件开发与软件开发团队

【IT168 技术文章】

  一个伟大的软件后面都有一个伟大的故事,一个伟大的软件后面也有一个伟大的方法。

  当Windows 2000经过胎死腹中的危机,终于如凤凰涅般再生时,微软决定给整个产品组成员拍摄一张合影,以纪念这个历史时刻的诞生。到了拍摄那一天,微软人发现,他们只有把摄像师安排在飞机上才能干好这件事儿——因为Windows 2000产品组整整有5000人!

  “团队=软件”,微软软件开发管理理论的基础可以这样一个恒等式来表达,软件可以忠实地展现创造它的团队的一切优点和缺点。软件业中没有两个完全相同的失败,但最常见的莫过于新版本跟不上对手的脚步,微软开发模式的精髓之一,便是通过产品组团队中每个成员对职责的承诺来控制产品的开发过程,保证新产品准时地、经常地被推出。

  这正是软件业最大的金科玉律!

  开发周期四阶段

  微软的产品开发遵循一个完整的开发周期,这个产品开发周期被分为四个阶段:规划阶段、开发阶段、测试阶段(也叫稳定化阶段)和产品发送/出品阶段 .

  微软中国研发中心中文技术部经理李东女士告诉记者,在产品的规划阶段要做三件事:拟定基于客户数据的目标描述、基于目标描述的规格/特性说明和基于规格说明和特性优先级制定的进度表。规划阶段中最重要的事情是让整个产品组的成员对共同的目标形成共同的认同。一座伟大建筑的诞生往往只缘于一位伟大建筑师的不朽贡献,但一个伟大软件的设计却需要成百上千人的智力创造。

  第二个阶段是开发阶段,这个阶段也叫主要里程碑阶段。微软的任何一个产品组在这个阶段都将根据特性将项目划分成若干个子项目,每一个子项目的完成就对应于一个里程碑。在李东的经验中,一般微软中国研发中心会在这个阶段把产品划分成2~3个里程碑。Milestone1(第一个里程碑,简写为M1)内要完成的是核心的特性和功能,或今后需被共享的部件。那些将对产品稳定性形成很大影响的功能,也应该被放到Milestone1.Milestone2可以放比milestone1次要一些、但也是比较重要的特性和功能。Milestone3放的特性和功能对核心特性和功能的依赖性不大,有的甚至可能根据市场的变化重新评估和取舍。总体来说,应根据特性和功能在结构上的重要性来决定它应当被放在M1、M2或M3来做。

  在每一个子项目(里程碑)内,进度表应当具体到每一个开发人员,而且进度表中应当加入缓冲时间。在子项目的执行过程中,程序经理(其角色下面详述)负责协调开发过程并更新规格说明,在开发人员编码、优化和调试的同时,测试人员进行Bug测试及报告,直到特性稳定化之后,里程碑才达到。开发阶段有一个微软所有的产品组都会用到的重要里程碑:代码完成(CC:Code Complete)。达到这个里程碑,意味着所有特性的编码任务全部完成,特性的集成测试通过后,除解决Bug以外,不再有新的代码进来。代码完成是明显的界线,标志着产品可以交付测试。至此开发周期进入第三个阶段。

  第三个阶段是稳定化阶段,也叫测试阶段,或叫QA阶段。测试人员对软件做各种各样的测试,其中开发和测试工作是始终并存进行的:测试人员发现Bug,开发人员解Bug,测试人员再检测这个Bug是不是解了。如果你是一个程序经理,这个时候去看记录Bug的数据库,会发现一大堆Bug急剧涌现,随着一个个Bug被解,Bug量逐渐递减。当Bug量控制到某一个特定范围内就可以发Beta版,进行外部测试。这个时期程序经理要跟踪监督用户的反馈,开发人员及时解决用户发现的Bug.Beta测试结束之后,再经过一段时间的测试,就会达到零错误版本(ZBR)里程碑,零错误版本里程碑的达到,并不意味着没有Bug或遗漏的功能,而是标志着团队的成品达到了事先规划的品质水平,可以向发布候选(RC)里程碑进军了。值得注意的是,作为RC的产品,应包含出品之前所必须具备的全部文档资料。发布候选(RC)可能会经历RC0、RC1、RC2 等(非常好的情况是RC0测试之后没有一点问题,那是最后要发布的那个产品了),但如RC0以后又发现了Bug,并且大家认为这个Bug必须要解,就又出来RC1,Windows 2000就是经过RC3之后才进入产品发送/出品阶段的。

  产品有了稳定的版本就进入最后的阶段——产品发送/出品阶段。对于研发队伍来讲,十月怀胎、孩子终于出世的那一天就是发送投产(RTM——Release To Manufacture)。RTM之后到用户真正拿到这个软件产品之前还要经过我们耳熟能详的产品发布会(Launch Event),当然,这部分工作已经被微软的研发机构移交给市场和销售机构,由产品经理完成相应的产品宣传策划,把产品推向市场。

 

0
相关文章