从 Smart 看选择敏捷方法

  • 麦天志

2009 年 5 月 21 日

话题:敏捷方法论架构文化 & 方法

Sander Hoogendoorn 最新发表了Accelerated Delivery Platform的敏捷软件开发平台,与此同时,也提出了一个叫作"Smart"的新敏捷方法,本文将介绍这方法并作出简短分析。

Sander 在文中首先介绍该经验累积的背景,Smart 原先是由 RAD 和 DSDM 实践开始,及后并亦加入一些 Scrum 及 XP 的实践。然后介绍了 Smart 开发方式的特点:

  • 紧密协作Smart 项目要求客户和项目团队包括开发团队和测试人员紧密合作。
  • Smart 用例驱动在 Smart 项目使用他们发明的Smart 用例,而且 Smart 用例也是用作他们估算和计划的粒度。
  • 短迭代以两星期或四星期迭作,Smart 开发周期还包括不同项目的迭代类型:Propose(计划)Scope(范围定义)Realize(实现)Finalize(定妥)Manage(管理)
  • 测试驱动每个 Smart 项目都要求單元测试Smart 测试。"Smart 單元测试"是用在 Smart 用例(通常是基于活动图,activity diagrams)去定义及执行功能测试的技巧。
  • 交付驱动尽量频密地交付,在 Smart 项目中软件可于每天交付(每个 Smart 用例)、迭代完结、发布(通常是三个月发布一次)。
  • 角色虽 然不像 Scrum 和 XP 等那么少,但是比 RUP 或者 DSDM 较少的,角色包括有 Project Owner(项目负责人)、User(用户)、Project Manager(项目经理)、Requirement Analyst(需求分析员)、Lead Developer(首席开发人员)、Developer(开发人员)、Tester(测试人员)、Configuration Manager(配置经理)。
  • 敏捷仪表板(Agile dashboarding)用的可能是报事贴、也可以是电子仪表板,加上 Burndown 图,监察进度及早发现问题。

网站还有不同关于这方法的详情,如果对此方法有兴趣,可以到该网站看看

相信 Smart 这开发方式还算可以称得上"敏捷"的实践,如果大家对此有所迷罔,一个简单的方法是看看 敏捷宣言 以及其 原則 。心水清的读者亦很容易察觉到 Smart 很有 DSDM(现称 Atern)和 RUP 的味道,并且发觉 XP 十分提倡而亦很常在 Scrum 团队中见到的测试驱动开发、重构、持续集成却没有提到。

Mike Cohn 就曾经做过一个 "Selecting an Agile process" 的演讲,里面用一些指标作比较,笔者就尝试根据这些指标为 Smart 作出以下分析:

个体与交互(Individuals and Interactions)  
授与权力自我管理团队 团队有多个角色内有几层架构
消除阶段 在周期中包括计划、范围定义、实现、定妥、管理的阶段,而且还是按次序进行
使用最少计划 在进行实现之前要完成计划和范围定义
伸缩性(Scalable) 根据 Sander 在网站上指出这方法已用在一些大型项目使用
持续过程改善 没有强调
可以工作的软件(Working Software)  
增量和迭代 大致上都算是,只是周期中有五个阶段
以可以工作的软件作为进度的基本量度 不是,而是强调使用 Smart 用例
要求交付最少的文档、图表(Artifacts) 同上
客户协作(Customer Collaboration)  
持续客户参与
适应性、以实际经验作为依据的客户关系
相应变化(Responding to Change)  
演变式的需求
频密监察 没有强调



如果跟 Mike Cohn 在该演讲内容提到的其他方法比较,Smart 相对上是不太敏捷的。

最后,这分析绝不是提倡为敏捷而敏捷,交付软件和替客户增值才是最重要,还有,用什么方法,始终团队最能够以了解当前状况去作出决定。

大家对这个新的方法有什么想法呢?不妨也一同分享。

敏捷方法论架构文化 & 方法