敏捷开发流程实施注意事项

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

敏捷开发流程实施注意事项

1) 注重概念和架构设计,而轻详细设计

敏捷开发中,注重概念和架构设计,而轻详细设计。这里的概念设计,可以看成是为什么要做这个产品或模块,强调的是产品的路线规划、市场趋势、客户价值、技术趋势等。架构设计,可以看成从整体上看,概念设计应该用什么方式实现、分几个层次、多少组件、不同层次和组件之间关系是什么。详细设计,则是具体的设计和做法、API接口等。

一个产品,特别是面向行业的产品,概念设计和架构设计非常重要,需要考虑行业未来的发展方向,产品在市场中横向和纵向的比较,技术的发展方向,和每个模块的投入和收益的比例等,这样才能尽可能保证产品沿着正确的方向前进。在产品中新增或删除一个模块需要非常谨慎,因为一旦新增模块被客户使用,以后就很难在产品中去掉这个模块。还需要考虑产品各个版本之间的兼容性,以及客户的升级迁移。所以,在开始正式开发之前,通过概念设计和架构设计,梳理思路是非常必要的。

2) SWOT分析

以前在做项目时,大多是从技术角度来考虑哪一些功能模块需要做,哪一些功能模块先做,而没有一个系统化的分析方法。造成的结果是有一些功能模块投入很多资源,却并不一定是客户最想要的。

在敏捷开发中,更加注重客户需求。如果对产品进行SWOT分析,就能选出付出最小工作量,但能获得最大价值的模块。

SWOT分析阶段会在概念设计和架构设计之后进行,输入是概念设计和架构设计,输出是模块的重要度和需要的时间。这样按照性价比可以进行排序,选出最能符合市场的模块。

一款产品哪个模块重要,哪个先做,需要花多少资源和时间投入,花这么多时间和资源的模块是否在客户心中有相应的重要程度等,这些都是由这款产品的市场策略来决定。所有产品都是为了市场和赢利为目的,Agile方法更好地帮助企业实现了这一点。

3) 业务和客户驱动,而非技术驱动

这点说是体会,也可以说是教训。在我们的产品开发过程中,在某一新版本中重新设计了老版本的某一个重要模块,而引发了几个问题:一是,新版本的模块和老版本模块的兼容性问题,导致老版本客户无法平滑的迁移到新版本;二是,新版本的改进是纯技术方面的重新实现,不管对客户而言,还是对内部的架构而言,都没有明显好处;最后导致的结果是我们花了很多资源和人力去重新实现,但是在最后由于种种考虑还是废弃了重新实现的模块,依然沿用老模块。

在产品的敏捷开发中,虽说拥抱变化,但不盲目变化。产品的改动需要经过概念设计、架构设计以及SWOT分析后,三思而后行。敏捷开发中也强调"在整个项目开发期间,业务人员和开发人员必须天天都在一起工作",确保技术人员能够开发出客户需要的产品。

4) 时刻考虑版本兼容性

敏捷开发,废除了过多冗余的文档和繁杂的设计,强调拥抱变化。但作为产品,敏捷开发不意味着盲目地去变化。

当设计变动、API接口重构、配置文件变更时,要时刻考虑产品的架构、规划路线图,老版本的兼容性,及迁移平滑性。否则,随着版本的增多,必将面对着大量的维护工作。

5) 轻文档,但非无文档

敏捷开发强调沟通的重要性,而轻冗余文档。但敏捷开发并不意味着无文档。在敏捷开发过程中,适量的文档还是很有帮助,有助于整理思路,加快沟通和讨论。

我们产品中的文档包括:概念设计文档、架构图、当前版本要实现的功能列表,以及SWOT分析。

这些文档在每个产品版本开始之前会有产生,在每个迭代的过程中根据业务人员和市场的反馈也会有一些变更。通过我们实践证明,这对产品的思路、沟通讨论都非常有帮助。

而且这些文档,大多是几页PPT,书写和维护工作都很小。

敏捷开发过程

敏捷开发改进了产品的开发流程,提高了整个团队的效率。下面分析敏捷开发前和敏捷开发后的产品开发的各个阶段。

1) 敏捷开发"前"的产品开发过程

流程中的大多数活动都是串行进行。这样的一种类似瀑布的开发流程,前提是需求在产品的初始阶段就完整的被捕获并正确的分析,这样才能保证最后交付的产品是客户所需要的产品,但通常这样的理想状况很难实现。

类瀑布的开发流程缺乏灵活性,无法通过开发活动来发现不够确

切的需求,导致产品无法随着业务人员和市场的反馈而随需应变,开发出符合业务人员需求的产品。

2) 敏捷开发"后"的产品开发过程

市场和需求驱动,拥抱变化

在我们产品敏捷开发中,每个迭代结束,都会有一个产品迭代演示大会,把这个月的开发结果演示给组员、业务人员、售前,甚至客户,并收集反馈。此外,在开发的过程中,产品的业务人员和售前时刻保持与产品开发团队的沟通和工作,保证开发出来的产品是符合业务需求。

充分利用资源和时间

敏捷开发前,产品的需求设计阶段占用整个开发流程35%左右的时间,这段时间只需要几个核心的架构师和设计人员,无法充分地利用开发和测试人员。敏捷开发后,迭代开发、强调沟通、缩减文档,在每个迭代初期就可以充分地利用开发、测试人员的时间,达到效率最大化。

每日交付

产品开发过程中,每天都会做自动化Build,并生成可以交付的产品。业务人员、客户都可以试用并提供反馈和新需求。

充分自动化

敏捷开发强调拥抱变化,这必然带来动荡的产品代码变更。每一个新的功能和修改的功能,都可以影响到其他功能,造成副作用。所以,需要自动化去支持变化,在变化的同时保证质量和开发速度,包

括编译自动化、单元测试自动化、功能测试自动化、UI测试自动化、集成测试自动化等。

架构师和Scrum Master的重要性

流程的变化必将带来岗位和职责的变化,架构师和Scrum Master 是在敏捷开发中两个重要的人物角色:

1) 产品架构师

在产品的敏捷开发中,特别是我所参与的产品是面向行业的产品,架构师是个举足轻重的角色,需要有深厚的行业背景、创新能力,以及架构能力。

产品是为了解决一类客户需求而存在。但是,客户的需求往往是会随着业务的发展而变化,而且竞争对手也会有类似产品的推出。所以一个产品推出市场后,所具有的功能模块慢慢地会越来越成熟,并拥有越来越多的竞争对手,慢慢地失去竞争力。一个好的产品,特别是面向行业的产品,要具有长期的生命力,需要具有下图所示的产品模型:

成熟的模块:指的是推出市场有一段时间,这些功能模块因满足客户的需求而被广泛使用。随着市场趋于稳定,大量竞争对手的产品也推出类似的功能。这些成熟模块都是产品的基本模块,不代表产品的竞争力。产品中如果只具有这些功能模块,随着需求和竞争的激烈,慢慢会走向灭亡。如90年代的BP机一样,当手机一旦推出,这个产品也就走向灭亡。

发展中的模块:指的是刚推出市场并且具有强劲的市场生命力、

相关文档
最新文档