本文是敏捷外包工程系列的第一篇。

本系列是中科院研究生院《软件工程硕士-外包方向》的《敏捷外包工程》课程的课外扩展阅读材料(本人是此课程讲师)。同时也适合软件外包公司在本公司推行敏捷开发时参考。

 

定义

这里的“外包”指广义的外包,包含了传统的欧美外包、对日外包,也包含国内以销售合同驱动的项目型外包,如政府、银行、电信项目。

由于整体上外包工程属于管理活动,除了需求开发部分会借鉴XP的实践之外,本文所提到的“敏捷开发”一词多指Scrum方法。

“敏捷外包工程”整体上包含两个部分:交易过程和交付过程,本系列中两者均有涉及,当前以后者为主,前者会较晚推出。

前者包含市场宣传,客户接洽,合同商谈,计划制定,交付过程,交付后的培训,长期客户关系维护等内容。与产品研发相比,软件外包的交易过程尤为突出和重要,而由于敏捷开发本身不涉及这一过程的管理,因此需要配合其他方法来弥补。

后者包括需求开发,需求管理,项目管理,变更管理,质量管理,交付管理等若干内容。与产品研发相比,两者的核心差异在于需求来源和变更管理。在产品研发中拥抱变化代表着更高的客户价值,而在外包项目中,拥抱变化或被变化拥抱,极可能导致项目成本加剧乃至项目无法按合同完成(虽然这并不代表“拥抱变化”彻底失去价值)。

CMMI与敏捷

软件外包公司一般规模较大,多数已经采用了各种管理方法,尤其以CMMI居多。

与敏捷开发相比,CMMI是更专业的外包管理模型,因为它的初衷就是“为美国国防部选择和管理供应商设定标准”。此标准具有法律效力,按照国防部规定只有3级以上企业才可称为承包商。但也正因为有了“美国”“国防部”“标准”这些定语和中心词,导致我们在一般外包中使用CMMI会感到困难。

但与此相比,敏捷开发无论从定语和中心词都相差更远,尽管这不会导致敏捷开发完全不适用,但实践者应充分理解外包开发环境中对敏捷提出的要求。

管理和技术永远要服从于业务,从这一点上CMMI整体覆盖了部分业务和大多数管理和技术,而敏捷覆盖了部分管理和部分技术。笔者推荐以CMMI为整体模型,内部配合敏捷开发实践,而不是“用敏捷开发代替CMMI”

本文今后系列中会较多提到CMMI与敏捷的平衡。本人在两个领域均有4年以上咨询经验,将力求适当、可行地将两者结合在一起。

 

系列内容预告

本文将大致包含以下内容,随着开发过程将有增减:

团队结构,需求开发,变更管理,定额定期合同实施(可能稀释到各章节中),人才与微观活动管理等。

中间可能邀请其他相关人士编写某些笔者缺少实际经验的章节,本人进行转贴或翻译,以保证系列的完整性。如IIOM(国际外包管理学院)中国总裁Chris Jiang的外包交易内容,曾在NASA从事测试管理工作的Jerry Durant的敏捷外包测试文章等。他们均同时具备敏捷、外包两个领域的深入知识和实际经验,以及其篇章中所涉及的专业知识。