成功启动过程改进程序的关键因素
( 北京航空航天大学软件工程研究所)
摘 要:过程改进启动是将过程改进程序置于正确道路上的关键一步,也是所有正在或将要进行过程改进的企业应该关注的首要问题。本文介绍了一些过程思想和过程改进实施模型,根据我们对基于CMM/CMMI研究和实践的体会,提出启动过程改进的关键因素及其相应的有效的过程改进基础设施模型和改进方法,可以作为各类组织实现过程改进程序的一般指南。
关键词 :过程改进 过程改进实施模型IDEAL 过程改进基础设施
1. 引 言
21世纪信息社会将高度地依赖于信息系统。面对着大量的现实的和潜在的计算机应用需求,我们不能不静静地思考一个问题:软件开发总是延期交付,开发和维护费用总是超支,计划常常失控等现象还能支撑企业生存多久。
随着技术进步和能力竞争的加剧,不能持续改进的组织很快就会被淘汰。[1] 随着软件过程成熟度模型CMM和能力成熟度模型集成CMMI被世界越来越多的软件组织所认可和采用,正成为指导改进软件过程的事实上的国际标准。目前国内的一些组织正在进行基于CMM/CMMI的过程改进,这些正在朝着CMM的目标努力、坚持持续过程改进的大军,最终将提高组织在市场、技术等领域的核心竞争力。诚然,在组织面临较高压力又要实施最佳的软件工程和管理实践的确是一个挑战。因此,仅仅改进是不足够的,应该有效地改进,才会真正发挥过程的作用。
首先,我们要牢牢吸取一些组织失败的教训:在开始一个改进程序时,必须以真实的过程改进为目标,而不能单纯追求成熟度等级。如果只关注达到某个成熟度等级,就会盲目开发出所有的过程和标准,其结果仅仅是构造了一件外衣,而组织内软件人员的行为却没有任何改变。这样的努力,其代价未免太昂贵了。
依据不同组织各自的特点,过程改革的内容各不相同。然而,过程改进的方法是具有共性的。本文根据过程改进先驱的经验和我们实践的体会,就如何开始一个有效的过程改进程序展开讨论,提出了启动过程改进程序的十个关键因素,给出了一个建立过程改进基础设施的有效模型和方法,供有关过程改进人员参考。
2. 过程改进的思想和过程规范
过程改进的思想是一种已由实践证明正确的信念,它向传统的思维方式挑战并试图改变它们。目前,这个信念已经派生出一整套行之有效的方针、政策、过程、规程和标准。但是,只有按照这个信念实践,才能收到实效。
我经常从一些企业那里听到:“我们已经有了一套指明软件开发和项目管理的标准文档,也已经对工程师进行了过程培训,只是还没有完全遵守,我们相信他们一段时间后会照着去做的。”仅仅定义一个好的方法集和实践集是远远不够的。战斗在第一线的软件工程师们必须坚信需要改变它,并且知道要作哪些改变,这样才能在学习和实践新过程时得心应手。
过程改进不能单靠自觉,否则改进工作会自发衰退,其趋势用“熵”这个物理术语来刻划比较恰当。“熵”是指物理过程的随机性或无序性的平稳增长。在缺乏有意识的努力时,人类过程的表现与此类似。要知道,过程改进需要所有成员的规范行为,没有规范的约束是不能持久的。[2] 规范化的过程描述了这种有序的集体行为模式。这种模式应该具备如下特征:
过程文档化了吗?
过程进行了培训并实践了吗?
过程强制执行了吗?存在强制执行过程的机制和规程吗?
存在跟踪过程性能的机制吗?
过程是有助于还是有碍于人们的活动?
管理人员是通过度量过程性能来管理他们所管理的的组织吗?
过程的质量对产品的质量有直接影响。基于Shewhart、Juran、Deming和Humphrey倡导的TQM原理,“产品质量主要取决于用于开发和维护该产品的过程的质量。”[3] 在其它工业界(如制造业)可提供很有力的证据来证明过程规范与产品质量的关系,软件工业也已经有了很多成功的实例。
什么是过程改进?就是要采取行动来改变组织的过程不仅满足而且能更有效地达到组织的业务目标。一个过程改进程序则是指所有的策略、方针、目标、职责、活动和计划的集合,它包含一个或多个完整的过程改进循环。
3. 基于模型进行过程改进
模型是描述通过经验证明为有效的过程过程的特征及其元素的结构化集合,用来帮助建立过程改进的目标和优序,为确保建立一个稳定的、有能力的以及成熟过程提供指南,以作为组织过程改进的指南。
美国卡内基梅隆大学软件工程研究所(CMU/SEI)研究开发的CMM和CMMI汇集了软件和系统工程的最佳实践,给出了提高过程成熟度的路线图,是指导组织实现过程改进的有力武器。[4,5] 其中CMMI采用两种不同的表示法:阶梯式表示法是用已证明为有效的过程域组来指导组织的成熟度改进,而连续式表示法适用于提高单一或多个过程域的能力。经过近20年世界范围的深入研究和广泛实施,许多企业都从中获益。
CMU/SEI还为过程改进的实施研究出了IDEAL模型,[6] 用以阐明建立一个成功的过程改进程序的要点和步骤,规范了改进的方法。在许多过程改进努力中已经证明,遵循IDEAL的阶段、活动和原理是有益的。IDEAL模型包括5个阶段:
I 启动(Initiating) 为成功的过程改进奠定工作基础。
D 诊断(Diagnosing) 与想达到的目标相比,确定当前所处的状态。E 建立(Establishing) 计划如何达到指定的期望目标。
A 行动(Acting) 按照计划进行过程改进工作。
L 学习(Learning) 从实践经验中学习、改进,以持续提高过程变更的能力。从过程改进“启动”开始到“学习”完成,是一个过程变更(改进)的实施周期。SEI的统计数据表明,软件过程改进的效果是令人振奋的(见表1)。从这些成功的历史得知,要想从过程改进中得到有效的结果,需要遵循正确的过程改进程序和使用有效的过程改进方法。
表1软件过程改进效益
分 类 |
结果 |
年生产率提高 |
37% |
年产品上市时间降低 |
19% |
年产品交付后缺陷数降低 |
45% |
CMM过程改进年投资回报 |
5-8倍 |
4. 成功的过程改进启动
各组织可以由各种不同的原因启动一个过程改进程序。“启动”是过程改进实施的第一个阶段,也是走上正确的过程改进道路的关键一步。企业在他们的实施过程中,或多或少的遇到了实施进度和效果不尽如人意的地方,很多问题都可归结于启动问题。现实的世界和历史的教训使我们不得不加倍重视这一阶段的工作,这无疑是对成功的过程改进的有效指导。
成功的过程改进启动的关键因素
启动阶段的主要任务是完成启动阶段的关键基础工作,明确地将改进工作与组织的业务情况联系起来,标识出哪些是为满足组织的业务目标所作的改进工作及其与组织其它工作的关系。关键的管理人员要承诺所需要的资源,将管理实施的相关基础设施安排到位,是过程改进可靠的保证和成功的基础。在我们的经验中,如果组织希望高效达到改进目标并长期实施改进,重视启动准备是至关重要的,否则就会面临过程改进失败的风险。
下面给出在启动时要考虑的十个关键因素:
要有说服力的改进动因,正确处理政策上的压力。为什么要进行过程改进?组织中存在哪些不满意的现象?改进是为了满足哪些需要?有定量或定性的度量指标吗?可能有一些奖励政策及市场订单要求组织达到CMM某个等级。但若一个组织的高层领导的动因是“等级证书第一,过程改进第二”,则偏离了改进的概念,改进不会收到实效。
要借鉴历史的经验教训。了解历史有助于确保将来的成功。认真思考前面的过程改进或质量改进程序的历史,它是成功的还是失败的?有哪些经验或教训?如果有一些成功的经验,就要联系当前实际认真记取;如果是失败的教训,则要弄清原因,在今后的改进程序中力求避免。
要适当投入过程改进资金。过程改进不是免费的,要投入计算机资源、人力资源、工具和技术、培训及咨询费用。要考虑组织上有多少可用的资源投入在过程改进上,并定期度量过程改进的回报。
选择合格的过程改进人员。成功的过程改进启动应该指派合格的过程改进负责人。一些最佳的支持过程改进的候选者同时又是关键项目的开发人员或管理人员。他们要理解高层经理的策略方向、组织文化、软件支持活动(如SQA、SCM)、现代软件工程技术及方法、基本的项目管理实践以增加成功的可能性。他们也要了解组织文化,知道如何管理技术变更,掌握一定的组织能力及咨询技能。在下面还将详细阐述如何构建有效的过程改进组。
提高软件工程能力。过程改进组的成员有必要花时间了解基本的软件工程原理和当前的方向,有能力决定如何实施培训、训练和指导,以便正确地支持过程改进启动。
确定过程改进的实施范围。无论在过程改进启动时,还是在准备评估、评价或审计时,必须决定是对整个组织考察,还是只对个别部门或个别项目考察。过程改进的实施范围过大和过小都会有风险。范围过大,会因实施资源不够或管理力度不足等原因而导致进展缓慢、士气低落。范围过小,改进变成少数人的事情,也难于列入高层管理的议题,同样会导致没有真实的改进。为了规避风险,清晰地定义过程改进启动的范围,组织要问自己:
• 我们是将CMM L2的管理实施在整个组织制度化吗?
• 从策略上看,将关注的范围放在一个产品线上是否最合适?
• 哪一个部门适合此次过程改进启动?有没有特定的项目因不适合此次过程改进而需要分离出来?
• 是否有必要先进行试点,然后再将成功的经验逐渐地推广到组织的其它部分?
• 过程改进启动需要多少资源(如人员、费用、设备、工具、方法和技术、培训以及外部咨询等)来支持这项工作?
客户和组织文化。文化问题对我们日常的思维和行动有着巨大的影响。组织文化不仅影响软件的开发和维护,也极大地影响着员工的士气。多数组织,高层领导对组织文化、产品质量和过程改进有很重大的影响。当然,要注意的是,质量管理标准和目标是不分国籍和文化的,对其随意裁剪是不科学的。
选择改进模型或标准。组织需要遵循一个标准来实施过程改进。目前已有众多的标准支持质量和过程改进,如ISO和IEEE标准等。美国卡内基梅隆大学软件工程研究所的CMM及CMMI已经成为一个事实上的国际标准,其作用远不不止是一个路线图和指南。
要得到各级管理层和参与人员的理解和支持。各级管理人员的领导、理解和支持,是任何过程改进成功的关键。[7]没有高层经理倡导和出资,改进是缓慢的;中层经理承担部门繁重的日常资源管理等工作,一线项目经理往往更关注于技术问题,忽视对过程的管理;虽然,过程改进的本质非常强调管理实践,而成功的过程改进启动也必须得到所有参与人员的支持。各组、各级管理及参与人员必须受到培训、指导和训练。
紧密结合业务目标,详细确定支持该目标的具体做法,以有效地支持企业的长远发展(见图3和4)。典型的业务目标是,缩短产品投放市场的时间、提高产品质量以及增加市场份额。要使一个过程改进成功,改进要紧紧地与组织的业务目标联系,以满足高层经理的远景构想。将那些影响组织发展的主要因素,作为组织过程改进的最高优先级。例如,要“将测试阶段发现的缺陷率降低到20个缺陷/KLOC左右”作为质量管理的目标,从CMM L2和L3的实践描述中,好似没有针对解决这问题的实践。我们就需要在实施项目的计划跟踪时,在适当的检查点上要明确检查此目标的实施情况,然后在工作产品审计或在配置管理对缺陷修复报告的状态审计时进行检查。一定要有明确的检查标准、明确的检查点以及明确的检查结果。
有效的过程改进基础设施模型
过程改进的基础设施典型地是由一些核心组所组成的。为了管理、促进和实施过程变更,在过程改进的整个过程中,都必须赋予这些组特定的职责和任务,通过组织和管理以及技术和工具两个领域行使责任。前者需要指定、建立和支持所需要的过程管理职责和任务;后者需要为指定、建立和支持收集过程性能以及过程定义的数据并促进过程活动的自动化。两个领域的责任应该覆盖组织的不同层次、过程的不同类型和主要目标,形成一个3个层次结构的过程改进队伍及其管理体系:
管理指导组 MSG的主要职能是将过程改进程序与组织的构想和使命结合在一起,开发过程改进策略计划;组建基础设施和分配关键资源;承诺对实现过程改进目标的领导,授权、帮助和鼓励软件工程过程组行使职责;清除过程改进的障碍,为软件工程过程组和过程行动组营造过程改进氛围。
软件工程过程组 SEPG是一个组织实施过程改进的执行机构,通常由3-7人组成。他作为变更代理,通过网络方式支持变更工作。变更是否成功的关键是这个组的质量。
• SEPG的组长要充分理解质量管理方法,善于学习和乐于学习,有一定的管理技能(如沟通、磋商与群组工作),能提出适合高层管理的想法的策略性建议,是高层经理在过程改进方面的主要助手。
• 成员要具有综合的知识和技能以及改革的热情。负责定义、维护和改进组织级的过程和资产,协调和监督改进活动。为MSG提供建议与支持,为PAG编制章程和提供培训。在过程改进的工作中负责培训、指导和内部评估,并维护过程改进的目标。过程行动组 PAG应为具体实施过程改进的不同领域划分子组,每个子组的规模为4-6人,具体负责一个指定范围的过程改进问题。其成员来自与要改变的过程相近的领域,这样不仅有兴趣、有经验且有自信,而且有利于减小项目组对变更的抵触。他们负责定义和评价现存的过程,并与组织的业务目标和参考标准进行比较,定义领域级的新过程,支持整体产品解决方案,帮助组织采纳过程改进的新过程和新技术。
MSG和SEPG在“启动”阶段建立。当经过“诊断”阶段后,找到待改进的重点过程,才开始由SEPG选择PAG成员,为不同的过程变更建立PAGs,由SEPG领导。PAG活动通过SEPG活动追溯到MSG的改进策略,当一个改进程序完成时,此组可以解散。然后针对要改进的新的方面和技术,重组另外领域的过程改进组。图5为3个过程改进核心组织结构模型,其中矩形框中带“L”的为过程工程组组长的标志。
建立成功的软件工程过程组
SEPG是软件过程改进的专职技术资源。他们具有明确的过程改进任务并掌握适用的方法。过程改进一般规律是高投入、高回报,但在过程能力成熟度等级较低的软件组织中,开发人员主要致力于生产工作,专职过程改进人员投入不足,因而很难取得有效的进展。下面从几个方面给出一个成功的过程工程组的特征、具备的知识及其任务:
精心地选择SEPG 成员
• 组长是组织中受到尊敬的、经验丰富的软件工程专家,有充分的时间投入此项工作的全职人员,并至少有两年参与过程改进的实践经验。
• 成员必须具备能成功完成任务的适当的综合知识和技能。
• SEPG的规模一般为开发人员的2%-3%,其中专职人员应占有适当的比例。SEPG要足够稳定,以保持其工作的持续性。
研究的知识领域
• 过程改进的价值。例如,开发人员工作效率的提高情况,每个阶段缺陷数减少情况,估计偏离度的减小情况,培训效果的提高情况以及客户反馈的缺陷数减少情况等。
• 能力成熟度模型。必须了解改进目标并倡导满足此目标的正在采纳的众所接受的方法。
• 管理组织变更。必须理解技术和社会问题及障碍。当遇到问题时,计划和进行可能的风险规避。
• 沟通和咨询技能。作为组织内部的过程改进咨询师,能够展示自己对过程理解并具有说服能力。
• 团队支持。SEPG成员应有效地工作并帮助其他组,了解如何诊断和如何改进组的性能。
SEPG 的主要工作。要明确自身的工作,精心开发过程行动计划,并定期检查实施效果。SEPG要做好下列工作:
• 过程标准开发
• 技术采用
• 过程评估
• 过程数据存贮
• 过程资产维护
• 改变团队支持设备
• 过程教育
• 项目咨询
5. 结论
如何启动过程改进程序一直是成功的过程改进的重要主题之一。若能在过程改进启动时标识出影响过程改进成功的因素,用于指导组织选择正确的过程改进策略。并根据自身的特点,考虑如何启动过程改进程序,投入多少资源,如何度量改进效果,以支持过程改进的决策。“软件危机”已经消亡,[8] 软件已不再是令人束手无策的洪水猛兽。只要坚持过程管理和过程改进,可以像管理其它问题一样来管理软件。