`

跟微软学敏捷开发

 
阅读更多

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

 

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

自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解释。

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

分享到:
评论

相关推荐

    微软研发团队敏捷开发最佳实践.rar

    微软研发团队在敏捷开发领域积累了丰富的经验,这些最佳实践旨在提高软件开发的效率、质量和响应能力。敏捷开发是一种以人为本、迭代、增量的软件开发方法论,强调灵活性和客户参与。以下将详细介绍微软团队在敏捷...

    asp.net core敏捷开发框架c#源码

    这个"asp.net core敏捷开发框架c#源码"提供了完整的C#源代码,适用于那些希望深入理解ASP.NET Core工作原理或者需要快速构建自己的应用框架的开发者。 在ASP.NET Core中,C#是主要的编程语言,它是一种面向对象的、...

    敏捷开发示例

    **敏捷开发示例** 在IT行业中,敏捷开发是一种流行的软件开发方法论,它强调灵活性、迭代性和团队协作,以快速适应需求变化并提供高质量的产品。本示例将深入探讨如何运用敏捷开发理念与asp.net技术相结合,以创建...

    敏捷软件开发C#版源码

    【敏捷软件开发C#版源码】是针对C#编程语言的一个实践项目,它与《敏捷软件开发》这本书紧密关联,旨在帮助读者更好地理解和应用敏捷开发的理念和方法。敏捷开发是一种以人为本、迭代、增量的软件开发方法论,强调...

    VS2010敏捷开发ppt培训

    在VS2010中,微软为敏捷开发提供了强大的支持,包括敏捷项目管理工具、测试驱动开发(TDD)功能和集成开发环境(IDE)优化。 首先,让我们深入了解一下敏捷开发的核心理念。敏捷开发的核心原则包括个体和互动高于流程和...

    软件开发的流程及微软的产品开发实践PPT学习教案.pptx

    6. **微软的传统文化与实践**:微软注重创新、快速迭代和客户导向,提倡敏捷开发方法,鼓励团队自我组织,以适应快速变化的市场和技术环境。 综上所述,软件开发流程不仅是技术实现的过程,更是项目管理的艺术。...

    微软公司软件开发模式简介

    微软软件开发模式主要基于敏捷开发理念,强调快速响应变化,以用户需求为中心,通过迭代和增量的方式进行软件构建。这种模式的核心在于灵活性和团队协作,旨在提高开发效率,降低风险,并确保产品质量。 1. **敏捷...

    《微软公司软件开发模式简介》

    敏捷开发是一种以人为核心、迭代、逐步交付的开发方法论,旨在应对快速变化的需求。书中可能会详细介绍微软如何将敏捷原则融入到日常开发流程中,如采用Scrum或Kanban等框架,以及如何进行定期的回顾和改进。 其次...

    高级软件开发过程——Rational统一过程、敏捷过程与微软过程-第一章.doc

    微软过程是微软提出的一套指导软件开发的流程,它结合了传统的软件工程方法和敏捷开发思想。微软过程提倡灵活、迭代的开发,鼓励团队根据项目需求选择合适的开发模型,如瀑布模型、迭代模型或敏捷模型。微软过程强调...

    软件开发的流程及微软的产品开发实践.pptx

    1. **敏捷开发**:微软采用敏捷方法,如Scrum和Kanban,强调迭代开发和快速响应变化,提高产品的灵活性和适应性。 2. **跨团队协作**:微软鼓励跨部门合作,通过建立跨职能团队,确保设计、开发和测试的紧密配合,...

    软件工程中的敏捷开发方法与实践经验分享讲座.pptx

    敏捷开发在实践中已经取得了显著的成效,许多知名公司如谷歌、微软等都在使用敏捷开发方法。例如,通过敏捷开发,团队可以更快地推出新产品特性,提高客户满意度,并且能够在市场变化时迅速作出反应。 #### 第5章 ...

    软件开发的流程及微软的产品开发实践课程.pptx

    1. **敏捷开发(Agile Development)**:微软采用敏捷方法,允许快速迭代和灵活响应变化,提高开发效率和产品质量。 2. **质量保证(Quality Assurance)**:微软重视测试,通过多种自动化和手动测试手段确保软件的...

    BPMS权限管理敏捷开发框架 C# ASP.NET

    **BPMS权限管理敏捷开发框架**是基于C#和ASP.NET技术栈构建的一款高效、灵活的权限管理系统。这个框架的设计目标是为了简化开发流程,提高软件开发的效率,同时确保系统的安全性和可扩展性。它提供了丰富的功能,...

    微软软件开发流程rar

    7. **项目管理**:在整个流程中,微软运用敏捷开发方法,如Scrum或Kanban,以适应快速变化的需求。项目经理通过看板和迭代规划会议来跟踪进度,确保团队协作有效。 8. **质量管理**:微软高度重视质量,采用TQM...

    微软系列课程中的软件开发过程

    在微软系列课程中,软件开发过程是一个至关重要的主题,它涵盖了软件从概念形成到最终产品交付的整个生命周期。这个过程不仅是技术实现的过程,更是管理、协作与创新的体现。在这个过程中,微软采取了一系列的方法和...

    敏捷软件开发:原则、模式、实践(CHM版)

    《敏捷软件开发:原则、模式、实践》是一本深度探讨敏捷开发理念和技术的权威著作,主要针对软件开发团队和管理者,旨在提供一套高效且灵活的软件开发方法。本书以CHM版的形式呈现,方便读者在计算机上查阅和学习。...

    RacingGame的代码的分析和敏捷开发

    总之,RacingGame的代码分析和敏捷开发涉及了游戏编程的多个层面,从底层的物理模拟到上层的用户体验,以及开发过程中的组织和协作策略。理解和掌握这些知识点对于提升游戏开发技能和团队效率都至关重要。

Global site tag (gtag.js) - Google Analytics