思步网

查看: 102705|回复: 54
打印 上一主题 下一主题

[其他理论] 敏捷开发正走向成熟

  [复制链接]
随着人们对软件开发灵敏度的要求逐渐提高,敏捷开发的方法得到更加广泛的认可,它正逐步走向成熟。

VISIONONE公司在2008年6月至7月进行了关于敏捷开发的问卷调查,根据得到的来自80多个国家的超过2300份问卷反馈得知,95%的公司在软件开发中使用了敏捷方法,其中超过60%的公司使用超过了一年时间。

Scrum和XP作为最重要的两种敏捷方法,超过70%的公司在使用,下面我们就来了解这两种常用的敏捷开发方法。

两种常用敏捷方法

敏捷方法是数十种“方法集”的统称(“方法集”)就是为了开发软件而定期做的每一件事情,包括比较有代表性的Scrum、Extreme Drogramming(后文简称XP),Unified Process和Crystal Clear等。这些“方法集”共同的特点就是轻量级,迭代增量式的开发和交付,以及适应需求变化。

敏捷方法之一:Scrum

Scrum的创始人是JeffSutherland和Ken Schwaber,他们在1995年提出了Scrum方法。近年来Scram已经变成了敏捷开发中最流行的方法之一。Scrum使用“产品backlog”、“Sprint backlog”和每日例会(Daily Scrum Meeting)分别对整个项目、每个迭代周期和每个工作日进行计划完成情况追踪,并根据每日例会、Sprint计划会议和Sptint评审会议得到的反馈,不断对项目开发计划和过程进行调整。

敏捷方法之二:XP

XP是一个非常著名的敏捷方法,最早是由Kent Beck在1996年提出的。XP注重使用更短的迭代周期(1至2周)和大量的工程实践,包括用户故事、结对编程、持续集成、测试驱动开发,重构和自动化测试等。

例如,在奥博杰天公司正在进行的几十个软件开发项目中,使用Scrum和XP的项目占80%以上,而且一些项目结合了Scrum和XP的相关实践。其中,在我们给某客户开发的项目中,在需求分析、规模估计,项目计划和迭代开发计划制定等过程中均采用Scrum的方法进行,而在每个迭代内部,我们使用了测试驱动和持续集成的XP工程实践,取得了很好的效果。

欧美外包项目需求

根据笔者在软件外包业多年的经验,一般的欧美客户倾向于跟服务提供商签署长期的时间和材料,(简称T&M)合同。签署长期合同的原因主要在于保密性和降低领域知识学习的重复性成本,而T&M合同则是由于欧美外包项目的特殊性造成的。

顾名思义,T&M合同就是按照实际工作时间(人小时或者人天)计价的合同类型。因为一般欧美客户在项目开发的初期阶段,都没有一个特别详尽的需求文档,因为很多产品只是处于—个概念或概要需求阶段。

即使提供了需求文档,在项目开发过程中也要不停的变化。除了一些对交付时间特别敏感的项目外,绝大多项目项目都适合于T&M合同。客户在开始的时候给出一个大概的项目需求,服务提供商根据得到的需求进行估算,并给出项目初始的估算和计划(需要得到客户的确认)。

在项目进行过程中,客户可以根据市场的变化等原因添加、更改或者删除需求点,服务提供商根据需求的变化相应的更新开发计划和交付时间。这样就避免了签订固定时间成本合同后,遇到需要额外工作量的需求变化就要找到能够去掉的已定义需求,或者当没有可以去掉的需求时,需要重新商谈合同的麻烦。作为成熟的服务提供商,会引导客户尽早完成重要部分的需求分析,从而减少需求变更带来的时间和成本浪费。

当然,T&M的合同对客户也有一定的风险,因为一般客户与开发团队距离非常遥远,很难实时监控开发团队的工作。一般服务提供商都是通过建立客户的信任和频繁的项目进度质量报告来解决这样的问题。当然,解决这样的问题需要一个长期和复杂的过程,本文不再详述。

敏捷方法的应用

在欧美外包项目中,需求分析工作贯穿于产品开发的始终,而且需求变更会经常发生。敏捷方法作为“拥抱”需求变化的方法,是最适合这类项目的。

另一方面,敏捷方法采用短周期迭代和增量交付的方式,可以最大程度的避免需求理解的偏差,并且帮助客户明确和完善需求。特别是Scrum在每次迭代结束的时候,开发团队通过产品演示阐明了对需求的理解,同时根据在演示中双方的沟通,明确一些有歧义的需求,并且引导客户对需求进行进一步的完善。

除此之外,敏捷方法也能满足欧美客户对开发过程的其他方面要求。比如,客户希望开发团队采用本公司熟悉或者与本公司软件开发类似的开发方法。

事实上,敏捷方法被世界上越来越多的公司和团队使用,并且项目成功率和质量很高,欧美很多公司也有敏捷方法的实践,所以一般来说欧美客户很容易接受团队使用敏捷方法。再比如,客户希望可以经常得到可以运行的版本,帮助他们通过给潜在终端客户的演示,了解市场和最终客户的需求,这无疑也是敏捷方法的强项。

我们在欧美项目外包项目开发的实践中,也发现了一些使用敏捷方法的问题。比如,一些客户需要量化的数据来评估开发团队的效率和质量等指标;再比如客户要求服务提供商证明开发团队在一段时间内,通过对业务领域知识的深入了解和开发过程的不断优化,为客户提供了越来越高的价值,特别是成本方面。

这些要求已经超出了—个单独项目管理的范围,更多的需要服务提供商从项目集(portfolio)或者公司组织级层面对项目团队提供帮助。

CMMI和敏捷方法的融合

CMMI和敏捷方法并不矛盾,结合CMMI和敏捷方法实践会带来更高的生产率和更好的产品质量。CMMI5为敏捷团队带来的不仅是文档和相对严格的过程,更多的是如何采用量化的方式对项目进行管理,并通过过程持续改进达到更高的客户满意度。

针对上面说过的在敏捷方法外包项目开发中面临的两个问题,笔者管理的团队根据公司组织级的要求,在项目进行过程中把项目相关基础数据和信息录入到公司级软件管理工具中,并把从工具中得到的进度,质量和生产率等方面的量化指标和分析结果以天、星期、迭代和里程碑为周期向客户方进行报告。依据量化指标,通过与客户的交流和沟通,对开发过程进行不断的微调。经过几年的实践证明,这种方式不但加强了组织级对项目的监控和管理,而且提高了客户的满意度。

为了能够在公司内部实施敏捷方法并且达到客户满意,除了对项目团队进行敏捷方法和公司级流程的培训外,公司还需要从组织架构和工具等多方面对敏捷团队予以支持和帮助。

以笔者所在的奥博杰天公司为例,公司成立了TEC(Technology Excellence Committee,技术卓越委员会),PMO(Project Manage-ment Office,项目管理办公室)和DOO(Delivery Operation Office,项目交付办公室)分别对项目的技术能力、管理能力和过程能力进行管理和监控,比如TEC进行的代码质量审查,PMO对项目经理进行的周期性项目管理审查和DOO对项目量化指标和过程执行的过程审查等。各种审查的结果就是要找到各个敏捷团队存在的问题和弱点,并从公司角度采用各种培训和论坛帮助项目团队在各个方面进行提高。

当然,由于CMMI对项目管理的要求,以及公司对项目管理的管理和监控,不可避免的给敏捷团队带来一些额外负担。但是第三方工具的使用能够帮助项目团队在满足这些的要求的同时,又保证了足够“敏捷”。

这些第三方工具包括代码检查工具(FindBugs,FxCop等),代码审查工具(Review Board),缺陷管理工具(JIRA,Bugzilla)等等。项目团队在项目过程中除少量需要手工录入外,大部分的数据和信息采集直接通过工具集成实现,并能够自动产生外包客户需要的报告(包括Daily Report,Weekly Re-port和Milestone Report等)。

敏捷方法作为近年流行的一种软件开发方法,由于适应欧美软件项目需求频繁变化的特点,同时满足客户对于短周期增量交付的要求,在欧美软件外包行业中得到了越来越广泛的应用。经过多年的时间证明,敏捷方法能够提高开发团队的生产率,产品的质量和客户客户的满意度。对于软件外包服务商而言,在公司组织级需要采取相应的措施,以对敏捷团队进行支持和监控,并满足客户不断提高的要求。




上一篇:在任务关键型系统开发中应用敏捷的5大技巧
下一篇:大力提倡敏捷开发
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
回复 论坛版权

使用道具 举报

看了LZ的帖子,我只想说一句很好很强大!
膜拜神贴,后面的请保持队形~
没人回帖。。。我来个吧!
鼎力支持!!
路过的帮顶
看起来好像不错的样子
very good.
非常好,顶一下占位编辑
好帖是需要鼓励的~
看了LZ的帖子,我只想说一句很好很强大!
确实不错,顶先
我也来顶一下..
鼎力支持!!
看了LZ的帖子,我只想说一句很好很强大!
您需要登录后才可以回帖 登录 | 注册

本版积分规则



思步组织思步科技|思步网|火花学堂|思步文库|思步问答|思步英才|天下心
© 2007 思步网 浙ICP备10212573号-4(首次备案号:浙ICP备07035264号)|邮箱:service#step365.com(将#换成@)|服务热线:0571-28827450
在线培训课程|求职招聘|思步文库|官方微信|手机APP|思步问答|微博平台|官方QQ群|交流论坛|软件工程透析|关于我们|申请友链|
点击这里给我发消息     点击这里给我发消息
思步 step365 过程改进 CMMI中文 质量保证 质量管理 流程体系 需求跟踪矩阵 敏捷开发 Scrum 软件度量 项目评审 全员改进 流程管理 人力资源 6sigma 信息安全 ISO27001认证 IT服务管理 ISO20000认证 ISO9000认证 软件测试 SQA 配置管理 IPD 软件工程 PMP认证 PMP试题 PMBOK中文 精益研发 agile 顾问式管理培训
返回顶部