【IT168 技术文章】
软件过程管理的研究提出过许多模型,包括面向敏捷性的和不面向敏捷性的,在敏捷软件开发中的各个方法集也都在相似的理念下各自拥有抽象或具体的过程管理模型,以下是几个影响较大的模型。
1 软件过程成熟度模型
软件过程成熟度是指一个软件过程被明确定义、管理、度量和控制的有效程度。成熟度等级用来描述某一成熟度等级上的组织特征,每一等级都为下一等级奠定基础,过程的潜力只有在一定的基础之上才能够被充分发挥。Carnegie Mellon大学Software Engineering Institute(SEI)提出了软件成熟度模型(Capability Maturity Model,CMM),将软件过程改进的进化步骤组织成5个成熟等级:初始级、可重复级、已定义级、已管理级、优化级。
CMM的过程成熟度模型
CMM提供了一个归一化的、严格的过程能力改进模型,基于度量和改进的模型解决了过程优化的问题,但是模型完全以过程为中心而忽略了执行过程的主体和过程运行的环境,造成在复杂多变的市场环境下,最优化的过程却不能输出成功的产品,或者对优化过程的投入难以获得预期的产出。
2 方法论模型
不同的项目应该使用不同的过程。敏捷软件开发的代表人物Alistair Cockburn从方法论的角度来研究软件开发过程,把方法论定义为包括了13个基本要素的团队采纳的一组惯例,不同的惯例适用于不同类型的项目。方法论的关键特征是它的规模(组织要素的数量)、形式(细节和具体形式)、重量(工作产品的规模和形式)、容限(项目团队的可变性)等。基于对20年内几十个软件项目的考察,Alistair Cockburn 在他的Crystal方法中给出了方法的框架和设计要素:沟通的负荷(称为颜色维)、系统的关键程度(称为硬度维)、项目优先级。方法论模型强调人员之间的沟通与方法的适用性,认为人和沟通是软件开发中每一要义的关键问题,方法论是面向领域的和刚好够用的。
方法论模型
方法论模型强调了过程的适用性,主要的手段不是“优化”,而是“选择”,优化是连续的,而选择为软件过程的管理创造了跳跃性的变化,把过程管理的焦点从过程转移到人和环境上。但是,方法论模型基本属于一种权变思想,还应该注意到软件开发组织在复杂环境下自组织的能力以及组织与环境的强交互作用。
3 生态系统模型
Highsmith认为要改变思想,必须改变使用的语言,所以使用“生态系统”来改变对软件过程的看法。生态系统模型描述了由三个成分交织在一起的整体环境,三个成分是:混沌有序的观点、协作的价值和原理、刚好够用的方法论,三者相互结合、共同作用,形成敏捷生态系统。混沌有序的观点来自复杂自适应系统模型,表现为产品目标不可预测但可以达到、软件过程不可重复但可以帮助人们一致地工作。协作的价值和原理代表了敏捷项目内部、外部的人与人之间的相互关系,是敏捷软件过程的环境特征。刚好够用的方法论源自方法论模型,体现了敏捷软件过程管理以实践为中心而不是以过程为中心的本质。
生态系统模型
生态系统模型有比较全面的理论体系和哲学基础,为敏捷软件过程管理提供了非常有价值的理论工具和崭新的语汇,尤其是它强调创新的结果出现于“混沌的边缘”,复杂系统中的突变序是软件开发组织创造力的源泉,从而揭示出了敏捷性的根源。
生态系统模型试图把各种敏捷软件开发方法都概括到这个理论框架中来,但是,它过于抽象了。可以说生态系统模型为敏捷软件过程管理提供了一套系统的哲理,能够用这个模型来作为敏捷软件过程管理的指导理念,但组织很难凭借生态系统模型获知明确的组织过程改善途径和了解组织过程目前的发展状态。
4 复杂自适应系统
复杂性科学被称为21世纪的科学,复杂性理论指导我们从整体的角度研究系统。对复杂性的研究,始于1984年成立的圣达菲(Santa Fe Institute,SFI)研究所。1994年J.Holland在SFI正式提出了比较完整的复杂自适应系统(Complex Adaptive System,CAS)理论,把复杂系统理论从自然科学领域提升到哲学的高度,使其开始应用于社会科学的研究。钱学森和他的合作者在90年代初就提出了开放的复杂巨系统理论,将自然界和人类社会中一些极为复杂和规模巨大的系统总结归纳为开放复杂巨系统。
复杂自适应系统理论是敏捷软件项目管理的基本原理之一。CAS理论认为具有适应能力的、主动的个体,可以根据环境的变化改变自己的行为规则,以求生存和发展。CAS理论提出了三个主要概念:主体(Agents)、环境(Environments)、突变(Emergence, 或称为突现、涌现),在一定环境中的主体相互竞争和合作,导致系统产生突变。
突变性说明整体行为模式不能根据其个体行为规则进行预测,或整体模式不能还原为其个体行为,突变是整体有而部分无的特性,宏观层次特性的突变基于微观个体的主动的适应和学习的行为规则。复杂自适应系统的本质就在于其进化过程中突变的永恒的新奇性。Jim Highsmith基于CAS提出了自适应软件开发(Adaptive Software Development,ASD),旨在通过提高组织的自适应力以应对极度变化、难以预测的快速软件开发要求。
敏捷软件开发项目构成一个复杂系统,复杂自适应系统理论使我们以整体的、变化的观点来研究软件项目中过程管理的问题,本文基于复杂自适应系统提出一个三维的系统框架,在这个框架中,包含了对于软件项目复杂系统中的主体、环境、突变三个基本要素的管理,表现为:对软件项目中主体与过程的相互作用的管理、对项目内外部环境变化的容变过程的管理、对作为系统突变性成果——过程知识产品的管理。
1) 软件过程管理中的主体要素——人
Holland提出了“适应性主体”的概念,有效地解释了部分与整体之间的有机关系,而且把复杂适应系统组成单元的主动性提高到了复杂性产生的机制和复杂系统进化的基本动因的重要位置。软件过程管理以人与过程的相互作用为核心,人与过程的智能性和创造性是组织核心竞争力的源泉。
项目团队与软件过程构成一个复杂系统,系统的复杂性在于人与人、过程与过程、过程与人之间不是一种机械动力学关系,而是一种复杂的、难以用数学方法刻画的相互作用、相互联系。这样的系统依靠自学习、自组织、自适应的模式来形成一个有机的结构,系统中的主体是智能化的,有其对自身、组织和环境的反应能力和认知规则,组织适应性的基础在于人与过程对其相互作用和相互联系的认知和反应能力。
2) 软件过程管理中的环境要素——变化
软件项目最大的特点是内外部环境的快速变化和不确定性。知识社会的环境复杂性表现在:(1)边际收益递增;(2)竞争者的协同进化;(3)由“经济人”到“复杂人”;(4)企业环境信息误导;(5)企业环境的迅速变迁;(6)旧经济规律的不断失效。软件过程对于机遇和风险的把握能力和创新的能力,决定了组织对市场和竞争环境变化的应对能力。
敏捷软件过程管理对于快变和不可预测的复杂环境,采取“拥抱变化”的态度,不只快速有效的回应这些变化,而且主动的创造变化以获得组织的竞争地位。容变的软件过程使项目能够从容应付快速变化和不断变化的市场,获得组织的长期效益。
3) 软件过程管理中的突变成果——过程
知识管理是软件过程管理的本质,软件过程管理把知识作为一种基本的资源和产品,知识的开发利用渗透到软件产品生产的所有生产要素之中,贯穿于组织各项活动之中。
过程作为一种知识产品,是把人们的精力集中于结果的组织化结构,这种组织化结构是系统演化和突变的结果。复杂系统内部要素的相互作用是非线性的,要素之间的非线性相互作用使新的特性涌现出来,即产生突变。
知识管理的核心是在工作环境中高效地使用知识和创造新的知识结构。敏捷软件过程管理不只是对现有过程知识资本的维护,更是对工作环境的改善,使知识更容易交流,更容易创造和积累。知识环境对过程管理的知识活动起着推动或阻碍的作用。