跟微软学敏捷开发

以人为核心的敏捷开发模式,强调团队成员之间以及开发团队与客户之间的充分沟通,微软正在身体力行地实践这种新的开发模式。

 

微软大中华区开发工具及平台事业部总经理谢恩伟主导了敏捷开发模式的导入

自2001年17位软件开发领域的领军人物 聚集在美国犹他州的滑雪胜地雪鸟雪场共同发布《敏捷宣言》开始,敏捷开发作为一种全新的软件开发管理模式和价值观开始在众多软件开发人员和团队中推广。经过8年多的发展,敏捷开发已深入人心,但许多业内人士指出,过去几年,IT业对于敏捷的讨论大多停留在什么是敏捷开发、敏捷开发的价值何在等理论或流派的讨论上, 敏捷开发在普及应用、知识产权建设、商业模式开发等方面还存在问题 - 尤其是如何将敏捷的精神与原则,融合到开发团队每日例行活动与工具使用中。

随着敏捷概念日益深入人心,如今,软件开发人员和开发部门的高管更关注如何将敏捷的概念应用到具体的开发实践中。微软中国研发集团的服务器与开发工具事业部正在身体力行地实践敏捷开发方式,并通过将敏捷方式融入自己研发的Microsoft Visual Studio Team System( 以下简称VSTS) 开发工具,使得采用这种开发工具的客户也可以利用VSTS来实施敏捷开发模式。微软大中华区开发工具及平台事业部总经理谢恩伟认为,这将把微软现有的开发资源带到一个新的局面,使对人才资源的控制得到加强,并使资源应用有所提高。

对客户需求快速反应

IDC的一份市场研究报告显示,软件行业只有30%的开发项目是在规定的时间段内和预算范围之内完成的。传统的瀑布式开发模式已存在了很长一段时间,在这种模式下,整个软件开发过程被严格地分成需要分析、架构设计、软件开发、测试等几个阶段,整个过程不可回溯。而通常一个软件开发的过程会花费几年时间,当软件最后开发完成后,开发人员往往面临的一个困境是,客户的需求已经发生了变化,或是最终的产品由于开发过程中存在的种种问题而导致最终偏离了客户需求。

为了跟上快速变化的市场需求,微软对软件开发过程进行了一些改革,实施敏捷开发的模式,以致力于解决传统瀑布式开发存在的这些问题。谢恩伟主导了敏捷开发模式的导入,作为在微软工作了十五年的高级管理者,谢恩伟深受微软创新文化的影响,在敏捷开发理念刚被提出的时候,他就支持属下的开发团队尝试敏捷开发方式的创新,"这种模式能提高资源的应用。它能帮助我们控制交货时间,使交货的精确度非常高,另外,我们可以提供试验版的产品放在网站上供用户下载试用,这也有利于改进用户体验。"谢恩伟说。

在敏捷开发模式下,整个软件开发周期与传统模式下并无两样,但整个开发过程被分成很多个小的迭代周期,一个迭代周期通常为两周到四周时间,软件开发的需求收集和分析、设计、编码和测试等几个流程被浓缩至每个小的迭代周期中。在每个迭代中,团队成员透过一套共同作业模式的规范,将每个迭代需要的分析、设计、整合、测试,形成一套作业惯例。而每个迭代周期之后,开发人员就能拿出一个可以演示的产品给客户。这个过程通过迭代周期的设置不断循环,使客户可以不断了解产品开发的进展。通过这种沟通方式,开发人员可以不断地和客户验证所发布的产品是否符合客户的真正需求,并且对客户的需求变化迅速做出反应。

敏捷开发模式保证了产品开发能迅速反应客户需求,而不是让客户在几年的开发周期之后才能看到最终的产品。符合微软"为客户而创新"的文化理念

微软中国研发集团服务器与开发工具事业部的部门经理Ramesh Rajagopal是敏捷开发模式的实践者,他的团队利用敏捷开发模式开发VSTS开发工具,同时他们自己也利用VSTS实施敏捷开发模式。"我们首先用自己的产品来进行开发,把一些潜在的问题都暴露出来,修复之后再交付给客户使用。"Ramesh说。

 

微软中国研发集团服务器与开发工具事业部的部门经理Ramesh Rajagopal是敏捷开发模式的实践者

微软Visual Studio产品系列开发团队由几千名开发人员组成,在全球的不同地域和不同时区间进行协作。他们在开发过程中也创建了很多工具来使整个开发流程更简单高效。把这些好的工具,与全球客户共同分享是微软开发VSTS系列产品的初衷。"我们利用自己开发的VSTS工具来与客户共同分享微软的开发经验。"Ramesh说。

敏捷开发模式保证了产品开发能迅速反应客户需求,而不是让客户在几年的开发周期之后才能看到最终的产品。谢恩伟认为这种开发方式正符合微软"为客户而创新"的文化理念,这也是整个开发工作的方向。微软刚在今年5 月发布了一个Visual Studio 2010 BETA1试用版,一些客户试用了这个版本后提出,应在产品中加入更多的颜色,使客户能够有更丰富的颜色来定义图形。这些新的需求被写入Visual Studio 2010 BETA2的待办事项中,并在接下来的几个迭代周期中加以改进。"我们在10月发布的版本中就具有这些新功能,这要是放在以前瀑布式开发模式下,这种客户临时提出的新需求肯定就没有机会满足。"Ramesh解释。

敏捷开发模式还使得微软可以获得对产品缺陷更强的管理能力。在瀑布式开发模式下,产品先设计再开发,这要经历一个很长的不可回溯的过程,等到最后的测试阶段,开发人员往往发现产品的缺陷数可能呈现一种难以控制的增长势头,这些缺陷大多是由以前开发过程中一些没有想到的问题引发的。而在敏捷开发模式下,每个迭代周期之后都有测试,开发团队会借此对产品质量有新的考虑,这使他们可以把产品缺陷数置于一个可控的情况下。微软刚做完的Visual Studio 2010 BATA2版本在进行内部测试时,其产品缺陷数为零,这在传统开发模式下是很难实现的。

根据Ramesh的经验,无论整个产品的总体开发周期多长,都应在开发中遵循敏捷开发的短迭代周期原则。

在开发过程伊始,开发团队通常会通过收集和分析客户需求,形成一个产品待办事项列表,这些待办事项将在整个开发周期中全部完成。但通过迭代周期的设置,在一个迭代周期的开始,项目经理会挑出待办事项列表上最重要的两到三项,根据总体待办事项的概念,把之转化成更具体的用户规范,这被微软称为用户故事(User Story)。用户故事详细地描述了用户的具体需求,开发团队与用户之间有怎样的响应和沟通。然后再由开发人员进行实施,以及由测试人员完成功能测试,标注该待办事项已经完成。"通过这种方式,我们能够非常明确我们所做的每一个开发都是朝着提升用户价值的方向来努力的,通过这个短的迭代周期的设置,我们可以不断调整我们的方向。"Ramesh说。

迭代周期的长度可能会根据不同的产品来做调整。"比如我们自己的VSTS产品,产品开发周期通常为2年,迭代周期也会长一些,而一些发布到互联网上的产品,3到6个月就是一个发布周期,那么迭代周期也会相应的缩短。"Ramesh介绍,一些为客户定制的产品,会根据客户需要提前试用的要求,为客户量身订做一个迭代周期。

保持沟通

"敏捷开发模式能让我们最终以比较低的成本发布更好的软件产品,更贴近客户需求。"谢恩伟说。敏捷开发方式带来的对客户需求-哪怕是小开发需求-的迅速反应,帮助微软准确地把握客户需求,通过这些一点一点小改变的积累,微软产品的可用性得以提高。

在每个迭代周期之后,开发团队会与客户一起召开评估会来评估这个迭代周期的成果。这个评估会能给开发团队带来很多反馈,包括客户对已开发产品的意见,以及对未来需求的期望,开发团队据此调整后面几个迭代周期内的需求优先级。"通过这种方式,我们能够保证两件事情,第一,我们所开发的功能确实是客户想要的,第二,我们永远都在做客户需求优先级最高的事情。这在传统的瀑布式开发模式下是没有办法实现的。"

曾有一家荷兰的IT 咨询公司在试用了VSTS工具后,要求微软服务器与开发工具事业部的开发团队按照自己的管理流程来加强附加功能来管理他们的流程模板,这些附加功能在原本的计划中优先级并不高,根据客户的这个需求,开发团队马上升高了这一功能的优先级。

因为应用了敏捷开发方式,微软得以提前为客户展示一些新功能并让他们进行深度试用,这样微软就得以与客户之前进行经常性的深度沟通,不断使客户需求在产品中得以体现。"以前在软件开发过程中我们很难去与客户进行深度沟通,比如我才进展到设计阶段,我不能跟客户说你来帮我看一下这个文档,这太没意思了。而现在每个迭代周期之后,我们都有软件产品或是新功能让客户试用,这样客户比较有兴趣,我们也能够收集到我们需要的反馈意见。"对于更上级的老板或外包方的CIO 来说,他通过敏捷开发模式以及微软的VSTS工具提供的剩余时间表图,可以知道每天的开发进展情况以及剩余的时间和任务还有多少,以此获得对整个开发流程的及时掌控。

敏捷开发的核心管理理念是强调沟通交流和协作,这是敏捷开发中非常重要的环节,每个迭代周期的设置都非常短,所以团队成员对开发工作的全身心投入以及保持畅通的沟通渠道非常重要。微软为了保证沟通畅通有效,将一个开发小组的所有成员都集中在同一个房间里工作,这样保证一旦出现什么问题,团队成员之间能通过面对面的沟通迅速解决问题。另外,当整个团队中某一个人的任务落后时,其他团队成员也会一起协助他,这也保证了整个开发团队以最高效的形式来运行。

在敏捷开发模式下,微软弱化了传统意义上的项目经理角色,他的职责分别由产品负责人和整个团队来一起担当。产品负责人决定所有用户需求的优先级,根据各个迭代周期之后的用户反馈,制作产品待立项列表。而项目经理原有的考评职责则由整个开发团队一起来担当,大家一起来评估一个功能需要多长时间来开发,并且相互监督在规定的时间内顺利完成任务,这使得整个团队的考评不会有失偏颇。

在那些对敏捷开发方式有兴趣的人来说,他们通过研究微软的敏捷开发模式发现,这种模式对于管理者来说,还是一种有利于降低开发成本的选择。成本的节省主要来自因沟通顺畅而避免的开发错误,以及在团队协作的良好氛围下带来的新进人才迅速成长以及减少成熟人才的流失。"团队协作度比较好,学习的进度也比较快,我们发现,一个新手通常经过两个迭代周期下来,就可以迅速成长为一个熟手,这也为我们节省了成本。"Ramesh解释。

"我们应该重新回到敏捷开发这个大概念上来,想想什么才是敏捷,然后在实施过程当中,记住我们的原则。"谢恩伟说。在他看来,敏捷开发的核心内容是,个人的交流胜过于流程和工具,整个软件开发的核心是人,通过人去制定开发流程,根据流程去采用工具,整个过程的原则不是要有更多的流程,而是要通过工具使大家的敏捷开发更简单,更切合自身的需求。"这不仅仅是个技术议题,"谢恩伟为微软的敏捷开发经验做了一个总结:"所有的高阶技术管理者都应该开始关注敏捷开发方法所带来的管理效益。"

你可能感兴趣的:(敏捷开发)