重量级IT项目敏捷管理方法研究.doc
重量级IT项目敏捷管理方法研究 摘 要:重量级 IT 项目具有高度复杂性和不确定性,以过程为基础的项目管理需要借敏捷方法加以改进。本文以阐明 IT 项目的复杂产品系统特性为起点,从复杂产品系统的模块化及分解入手,讨论了 IT 产品的动态形成过程,提出了一个重量级 IT 项目敏捷管理方法框架。在该方法中,探讨了复杂产品分解的随机 Petri 网概念模型、柔性团队行为模型、重载方法适度规范集以及基于知识转移的敏捷开发过程。 关键词: IT 项目管理 ;敏捷思想 ;管理框架 ;柔性团队 IT 项目敏捷开发方法,具有早期客户参与、快速迭代交付、自组织团队、柔性等典型特征,能够提供客户满意的知识产品,非常适用于特定的环境 —— 高风险、不可预测和小规模的探索型软件研发项目。但是,软件产品的规模日益庞大,重量级 IT 项目越来越多。相对而言,重量级 IT 项目具有较高的复杂性和不确定性,风险性、不可预测性也更高。本文针对重量级 IT 项目敏捷管理的需要,提出一个基于敏捷开发过程的重量级 IT 项目管理框架,反映传统开发方法的敏捷性改造,为改进重载方法过程、提高开发效率和产品质量提供基本思路。 1、 IT 复杂产品 系统及其模块化 复杂产品系统 (Complex Product Systems, CoPS)指高成本的、技术密集型的、用户定制、单件或小批量生产的生产资料、系统、网络、控制单位、软件包、建筑物和服务。 IT 产品规模日益庞大,其复杂性也日益增加。一方面,软件规模的扩展意味着功能扩展,整个软件的复杂度以更大的非线性增长。另一方面,软件本身的技术复杂性引发了更多的管理复杂性。 Ren 和 Yeo 认为, IT 项目是典型的基于人工的,实质上更富个人主义色彩,因而难以预测、控制和自动化。虽然有效的管理系统和管理过程是必要 的,但多数软件工程对规范系统背后的不确定性、不规范性估计不足。因此,工具与系统难以与项目绩效关键因素充分有效地结合,这些因素包括个体动机与决策、领导质量的变化、杂乱 (messy)的工作环境等。在沟通与团队建设、关系与接口、培训、领导力等方面的不足与失效,拖累了太多的软件项目。因此,以 ERP 系统为代表的大型 IT 项目属于复杂产品系统范畴。 对于复杂产品系统的开发,一般应首先采取模块化方法进行分解,才能有效实现产品目标。 Simon 等提出了系统的层级特性和可分解特性以便于降低系统的复杂性,并研究了软件结构化设计 程度与软件复杂性、多变性和改进之间的相互关系,系统地提出了复杂产品系统的特性和划分准则。 IT 产品的模块划分是在对整个产品系统框架以及功能需求分析的基础上,将整个 IT 产品系统的研发任务按照应用技术类别划分为相对独立的模块 /子系统进行的,在各模块开发完成后,交给集成商整合为一个完整的复杂产品系统。在这个意义上说,模块化是实施复杂产品系统的前提条件或必要条件。 2、 IT 产品的动态形成过程 从 IT 项目复杂性可以看出, IT 项目最终交付的软件产品,是多种知识、资源动态结合而成的知识产品。不少学者认为,敏捷产品是 知识产品,产品的价值主要产生于它所包含的知识,而非产品的有形部分,同时认为过程也是一种知识产品。 Wang 认为, ERP 实施的关键是组织中系统和过程的相互适应, ERP 系统知识必定产生于实施过程,并反映于产品之中。 ERP 系统作为一种典型的 IT 复杂产品系统,反映了重量级 IT 项目复杂性的两个方面:一是最终知识产品的高度复杂性,是业务知识、管理模型和软件技术的综合体 ;二是知识产品生产过程的复杂性,即据以对用户需求的预测,以人为载体的多种知识、资源的相互作用、相互影响、相互结合,由于人的因素,过程管理具有较大的不确 定性、不可预见性。实践中, IT 复杂产品系统的第二个复杂性,即动态生产过程的复杂性要远远高于第一个复杂性,而项目成败也多决定于此,项目风险的控制也主要存在于此。 3、基于敏捷过程的重量级 IT 项目管理框架 基于敏捷过程的重量级 IT 项目管理框架,力图达到的目标是:依据“敏捷灵活”与“过程规范”相平衡的原则,解决长周期性、高集成性、功能全面性等重量级项目特性下敏捷方法的有效性。框架的核心思想是:①建立复杂产品架构及系统动力学模型,实现复杂产品基于动态关系的分解与优化,导出最优知识产品单元划分 ;②构造基于多智 能主体的柔性团队,设定团队内部协同的元规则,设定团队功能绩效指标,实现外科手术式团队构建和能力评价 ;③基于能力的柔性团队与知识产品单元匹配,根据团队特性分配开发任务 ;④基于适度规范的过程管理,微观上是柔性团队的自组织迭代,宏观上是过程管理的规范框架,实现重量级 IT 项目的动态、柔性、规范。框架内容如图 1 所示。 3.1 IT 复杂知识产品的模块化分解 传统软件架构理论一般基于产品功能的静态划分,主要从信息流角度考虑模块单元的内聚与耦合关系,更多来自于项目初期基于需求的预测和设计 ;而敏捷方法更关注过程中需求创新,趋于对最终目标的逼近,是一种迭代更替渐进式方式。因此,此种方式下,关于知识产品的模型表述,势必与传统软件架构描述方法有所不同。复杂 IT 项目的模块化除了考虑 最终知识产品的功能特征外,还要考虑开发过程的协同与控制问题。为此可以建立 IT 产品基于最小完备单元图的随机 Petri 网模型,采用消解规则进行系统分析,静态分析和动态分析相结合,有效地反映产品结构中任务执行或信息传递的主要特征,反映知识产品单元之间顺序、并行、交叉等多种复杂的网状动态结构关系。 随机 Petri 网模型中,用变迁表示单元本身,而变迁之间的关系则代表单元之间的关系。根据每个变迁 (单元 )的内在特征,可形式化定义为一个七元组: P=(As, PI,PO, C1,C2,E,Ms), 即 {活动,输 入产品,输出产品,前置条件,后置条件,环境,度量指标 }。 其中, As(Activities)指开发过程中的具体活动,构成了功能模型。活动在人或程序的操作下,将输入产品转换成输出产品。时间、优先级、风险等是活动的关键属性。产品 PI (Input products)是指活动被输入或引用的相应程序、文档和数据。 PO(Output products)指活动输出的成果,也是相应的程序、文档和数据。 PI,PO 是原子的,或者是包括其他产品的复合产品,构成了产品模型。 C1,C2分别为活动的前置条件和后置条件,由活动间和 活动产品间的约束关系组成。 E是开发活动中涉及的环境及资源,包括场地、人员、工具、机器、技术等,是开发活动的基础。度量指标 Ms 则是量化的活动目标,可以用时间、生产率、健壮性、自适应和改善能力等来衡量。 3.2 柔性多项目团队 柔性团队是典型的“外科手术式团队”,其内部具有高度的柔性和灵活性,团队成员之间有深入的沟通和密切的协作 ;对外则呈现高度的开发效率和运行规范,能够进行显性的能力评价和绩效考核。柔性团队的概念模型可以表示为: T=F(Ma,Mr, ST,C,Ms); T 指柔性团队 (也称自组织 团队, Self Organizing Teams, or Well-structured Teams),是具有高度适应能力,自组织与他组织相结合的项目开发团队。 Ma 指多智能主体 (Multi-agents),即团队成员,具备能动性、协作性的知识主体,其中包括用户方的参与。 Mr 是指元规则 (Meta Rules),团队成员相互协作沟通的基本规则集。根据复杂适应理论,该团队系统由一群行动者组成,他们按照一套规则与其他人交流,通过探索实现目标,这其中“元规则”特别重要。它是团队协作的基本依据,其他规则是这些元规则的不 同函数。 ST 是共享的隐性知识 (Shared Tacit Knowledge),团队长期协作过程中所共享的默会知识集,与“元规则”共同构成柔性团队的运作基础。 C 是指情境 (Contextual),是柔性团队完成具体任务时所面临的资源、关系、环境、他人协作等状况。 Ms是指基于能力的柔性团队度量 (Measures),度量的目的一是与模块化的结果 ——知识产品单元的匹配,为产品单元寻找最佳的开发团队 ;二是对团队的绩效进行考评,并动态更新团队能力表征,指导团队的成长演化。 3.3 统一产品定义和标准 复杂 IT 产品 系统的开发强调相关模块的兼容性。为了使模块的开发团队一开始就考虑复杂产品各个模块的所有因素,统一的产品定义与技术标准是系统集成研究的关键,是支持各模块开发团队工作的必要条件,使各模块开发的专业人员有共同的语言,使用“同一种语言”进行交流。从而使各团队能相互协作和共享信息,通过彼此及时、有效地通信和交流,尽早地发现问题并予以解决,以达到各项工作协调一致。 3.4 重载过程适度规范集 敏捷软件过程主张结合企业业务,开发自己的软件过程,这就是“ Just Enough”策略。该策略指出,在进行软件过程改进时 ,应着重领会 CMM 等过程模型的精神实质和基本原理,建立适合自己的过程框架而不是拘泥于 CMM 等形式。在实施 CMM 时,必须考虑过程的多样性,从实际出发做好文档和过程管理,把过程管理与企业的业务目标紧密结合起来,同时探索可满足 CMM KPAs 的最小关键活动集合。 3.5 基于知识转移的敏捷过程 “基于知识转移的敏捷过程”是基于敏捷过程的重量级 IT 项目管理框架的核心。其中“知识转移”强调敏捷开发过程中,多智能主体与知识产品之间多种形式、多种类别的知识转移活动,并且最终的产出是这种转移活动集成的成果。在动态结合过程中,知识相互关系的处理,多主体的互动与影响等,都会导致最终成果的不同。 IT 项目开发中的知识转移是一个复杂过程,与知识主体的属性、关系、知识本身的属性等密切相关。 IT 开发过程涉及不同团队的各种知识和技术,专家知识分布于团队之中而不是某一个人,他们必须进行工作联合和知识集成去完成统一的 任务。这些知识在软件开发过程中不断在智能主体间、智能主体与产品间传递。敏捷开发过程由于强调人的主动性、适应性,强调团队的自组织特性,对知识转移的高效管理就显得尤为重要。 4、小 结 现有敏捷软件开发方法,由于过多地强调通过项目组自组织来改进团队行为,难以适应重量级项目的要求。本文通过平衡“过程定义”和“灵活性”,既考虑过程对活动的指导,又要保证活动与敏捷价值观的原则一致,提出基于敏捷思想的重量级 IT 项目的管理框架,实现拓宽知识转移的应用深度,拓展敏捷项目管理的应用广度。 该框架反映了重量级 IT 项 目开发的敏捷思想,但更多技术细节尚需解决,如复杂项目的模块化分解方法、柔性团队的构建及行为规则、产品与标准的定义、适度规范集及协同机制等,均需要进一步研究给出具体的模型、方法和机制。这是本文后续研究的主要内容。