- 1: 敏捷开发的可交付成果 ---不事先规定可交付成果的细节
敏捷软件开发的特征不仅仅在于能以较低成本应对变更,而是使软件尽可能具有应对变更的能力。敏捷项目管理的假设是,某个项目难以用传统的流程进行管理。即,Goal会随着时间的变化而变化。因此,重点在于认识到可能发生变更的风险,提高应变能力。
但是,通常情况下,人们认为如果可交付成果不断变化,开发可能无法收尾。因此,敏捷项目管理把开发期间分解成几个短的区间,把每个短区间的可交付成果在一定程度上固定下来。在项目进展过程中,一边听取客户反馈,一边调整可交付成果。
可交付成果的灵活性要保持在多大程度?这个取决于流程的设计,是敏捷项目管理中非常重要的内容。
但是,采用敏捷软件开发和采用传统的瀑布式开发,客户和开发团队所承担的风险是不同的。
首先,传统的管理方法是制定计划,根据执行结果和计划之间的偏差来评估可交付成果。可是因为可能存在变更,无法严密地定义可交付成果。因此,就出现了以下两种做法:
- 做各种假设,无论如何定义出可交付成果,决定金额和交货期
- 虽然对可交付成果不是很清楚,但还是决定了金额和交货期
采用方法a的话,变更带来的风险由客户承担。即,如果假设和实际不相符,可交付成果和实际的业务需求就不一致。采用方法b的话,开发团队承担仕样变更的风险,因为一边要遵守金额和交货期的约定,一边还要完成可交付成果的变更。
一般来说,很难让某一方承担全部风险。通常的做法是采用折衷案。即,暂不考虑谁是谁非,客户和开发团队共同承担上述风险进行项目活动。
敏捷软件开发中,客户和开发团队要一起承担变更可能性带来的风险。客户有责任解释说明并排序选择软件需求。可是,如果客户不能从开发团队得到有关项目进度的反馈,就无法做合适的判断。这就是沟通上的风险。
另外,事先没有约定可交付成果的细节,因此,项目能够在预算和进度要求内完成的保证就没有了。开发团队也要充分了解这一风险,并作出应对。
外包公司可能会尽可能降低成本,既满足事先决定的交付期和可交付成果,又使计划和执行之间的Gap转向有利于开发商一方,从而实现利益最大化。但是,敏捷软件开发中,没有事先约定可交付成果的细节,所以,很可能不存在如上所述的提高利润的空间。
开发商如果采用敏捷软件开发,就要认识到这样的风险,同时最大限度地满足客户需求。
敏捷管理小知识:敏捷项目管理中,计划(Planning)非常重要。计划之前,开发团队要估算出任务的大小(size)。这和传统的瀑布式项目管理究竟有何不同呢?敏捷软件开发中,估算有两个特征:一是以顾客能够管理的需求为单位进行估算,另一个是只需估算出需求的相对大小。