分类:
2008-10-15 16:43:47
软件项目管理是针对软件开发进行的项目管理,它既有项目管理的共性,也有其特殊性。它的特殊性主要表现在软件项目的开发过程及其项目的最终产品——软件产品上。
国内开展软件项目规范管理的时间并不长,软件企业各级管理者对软件项目管理的认识也很不够。目前很多软件项目的成功主要归功于技术高手的个人努力,或者碰巧由一位有能力的项目经理来管理项目,偶然性的因素很大。随着市场竞争的日趋激烈,市场环境的日益成熟,特别是在中国进入WTO后,国内软件企业与国外软件企业的竞争,以及开拓国外市场的需要,软件项目管理不完善的问题便越来越突出,软件项目管理显得越来越重要。
为此,许多企业引进了目前世界上较完善的公认软件业标准CMM(软件能力成熟度模型Software Capability Maturity Model),希望通过CMM的实施来提高公司的软件项目管理水平。
但是,由于对软件项目管理的认识不足,人们对CMM的期望值也很大,对CMM的实施普遍存在以下误区:1. CMM能很快提高企业的软件产品质量;2. CMM能解决软件开发过程中的所有问题;3. 迫于市场压力去拿一张CMM评估证书,而不去考虑CMM的真正作用;4. 技术水平比管理水平更重要,当技术水平提高时,再考虑实施CMM 5. ……
当抱着以上想法去实施CMM时,其效果便可想而知。而当有些企业认识到软件项目管理不能立竿见影地解决他们面临的问题时,他们当初对CMM实施的信心便开始动摇,就有可能走上形式化的死循环。
那么,CMM是什么呢?
从内容上看,CMM标准分5个级别,每一级别由一些关键过程域(KPA)组成,也就是说,CMM的管理方式是基于过程的管理方式。每一个KPA都有目标(GOAL)要求,要通过CMM某级别的评估,必须达到本级别 所有KPA的所有目标要求,以及本级别以下级别的所有KPA的所有目标要求。如过CMM三级,要达到CMM L3的要求,也要达到CMM L2的要求。
对于如何达到目标要求,CMM标准又规定了以下五方面内容:1. 执行约定:实施本KPA的方针要求与高级管理者的承诺与支持;2. 执行能力:实施的先决条件,包括组织结构、资源、培训等方面的要求;3. 执行的活动:为实现一个KPA要求所必须的角色和规程。包括制定计划,进行工作,跟踪,并在必要时采取纠正措施;4. 测量和分析:采集数据表明过程的状态,预防问题的发生。
5. 实施验证:确保已建立流程的实施。包括三级验证,即高级管理者、主管和项目经理,SQA对过程相关活动的实施进行验证。
总之,CMM规定了要达到的目标,实施需要的条件(约定、能力),需要做的工作(过程活动、测量和验证)。而具体如何去实现,则须根据公司实际,可以八仙过海,各显神通。正如,规范化管理不会制约开发人员的创造力,而是使开发人员的创造力在正确且明确的轨道上,得到更充分、更有效的发挥,实施CMM的真正目的,是使公司的软件项目管理潜能,在借鉴成功企业的经验,结合本公司实际后,得到完全的展现,从而保证软件开发过程和软件产品的质量。
推行CMM,相当于在企业内引入一种新的软件项目管理的方式,是软件项目管理的一场变革。它的成功,有赖于大多数组织成员,特别是各级管理者的赞同、支持和配合。所以,在实施CMM之前,公司应对面对的变革阻力有充分的认识和准备。
首当其冲的,便是对CMM的正确认识。正如前面所介绍的,由于CMM推广在国内才起步不久,其真正作用目前还没有得到充分的证实。所以,过高、过分的期望,或者是怀疑、抵制的情绪,普遍存在。由于CMM实施的是一项长期的管理工作,不能一蹴而就,所以前者也会对CMM的真正落实实施起阻碍作用。因为,当他们意识到CMM不是万能的,不能满足他们过高、过分的期望时,他们反过来会否定CMM的意义和作用,从起初热情的拥护者转向坚决的反对者。所以,CMM的正确认识是推行CMM前必须达到的共识。
解决对CMM正确认识的方法可以通过理智而循序渐进的宣传和培训活动来实现。为什么要强调理智呢?正确的认识是为了有一个正确的态度。当一个人的情绪过于激动时,就不能冷静地、理智地思考问题。情绪的影响能较快地产生反响,但持续的时间不长。反之,理智、冷静的接受的观点,能较长时间的保持。CMM实施是一项长期的工作,不能凭一时的冲动,需要持久、稳定的推动力。所以培训和宣传要考虑采用条理清楚、说理充分的方式。培训和宣传工作也不是能一步就到位的,有一个对CMM标准逐步深入了解的过程。而且循序渐进的宣传和培训就像不断加深的记忆,起到了强化的作用,有助于对人们对CMM的认识深入而持久,不会轻易改变。
其次,是管理与技术的对立与统一。CMM是软件项目管理的一个标准,软件项目能否成功,技术因素也是关键。技术水平直接影响着软件项目管理的方式方法,对管理起着制约作用。反过来,成功的软件项目管理则对技术的进步起到保障的作用,巩固技术改进的成果,使技术的积累与提升沿着正常的轨道有效地发展。没有管理的技术进步,也是不能持久的。
目前,绝大多数企业的项目经理都是技术出身,所谓“技而优则仕”。重技术,轻管理的现象普遍存在。而且技术对项目质量立竿见影的效果,也使项目经理对软件项目管理的缓慢而持久的对项目质量的保障作用持怀疑态度,或者说有只关注眼前利益,而不顾长远的利益的心态。
这里,我想补充说一下,为什么CMM标准2级只有管理方面的内容,而到3级才引入软件工程、技术管理方面的概念。CMM标准的5级,就像是台阶,每上升一级,代表者软件过程能力的成熟,软件项目管理水平的提高。下面的台阶是向上走的基础。CMM2主要关注的是需求的管理(注意:是管理,而不是需求分析等技术)、项目策划、项目跟踪与监督、软件配置管理和软件质量保证。这里,没有技术的内容在里面。为什么呢?因为只有建立了管理的机制,技术的进步才能有保障;只有有了管理的基础,才能实现技术的积累与提升。
项目经理是实施CMM的中坚力量,项目经理管理意识的提高是实施CMM成功的关键。为此,企业应建立有效的引导、激励机制,加强项目经理的管理知识及其应用的培训,并逐步建立有效的项目经理选拔培养制度。
既然是变革,必然就有新观念、新概念的引进。前面已谈到CMM的正确认识对消除变革阻力、有效推行CMM的重要性。这是在较高层次上对CMM进行抽象后的认识,它起到的是统一思想的作用。在具体的实施过程中,会遇到CMM标准中的各种新的名词(实际上就是新的概念,新的管理思想的引入),包括CMM的组成结构。概念的理解是CMM标准理解的重要组成部分,概念不理解,就不能很好地理解标准要求。如何在操作中体现和落实这些思想,是我们实施过程中要去克服的。如果不能很好地处理这个问题,容易使人沮丧,从而有可能逐步丧失对CMM实施的信心。
有人认为,只要SEPG成员(SEPG: 软件工程过程组Software Engineering Process Group,负责CMM实施的小组,主要工作有组织过程的制定、维护和改进的组织工作)理解CMM标准要求(包括理解CMM标准中的各种概念)就可以了。其他人员,包括各级管理者、项目经理、开发人员不需要理解这些要求和概念,只要告诉他们如何去做就可以了。本人对这种说法持否定态度。如果不理解CMM标准要求,不理解各种概念的真正含义,只知其然,而不知其所以然,实施者如何能把CMM标准在具体工作中真正落实。就像只告诉你怎么走,而不告诉你往那里去,你将如何处理遇到的意外情况?如果所说的行不通,怎么办?你又如何根据实际情况有效地到达目的地?
也许在某些行业,这种“只告诉你如何做,不告诉你为什么要这么做”的方式是有效的,但这种方式绝对不适用于软件企业。为什么?因为人的差异。我们要根据不同的人采取不同的激励方式。因为CMM推行本身就是引导和激励企业全体开发人员的持久的支持和参与,所以要根据开发人员本身的价值和他们的追求采取相应的CMM推行措施。开发人员的整体素质相对较高,从事的又是创造性很强的软件开发工作,自主性相对较强。让他们理解标准要求,理解各种概念,对于调动他们的积极性,从而有效的实施CMM是非常有帮助的。
另一方面,CMM标准的核心管理思想,过程改进,也只有在全体实施者理解标准要求的基础上,积极参与的过程中才能实现。SEPG制定的初始过程文件可能是最好的、理想的,但绝对不可能是最适用的、最可行的、最可操作的。这需要各级实施者在使用文件定义过程的基础上,结合标准要求进行过程改进,从而找到符合标准要求的、适用于本企业的软件管理方式。
所以,对各级人员进行CMM标准理解的培训非常重要。培训可以分为不同层次进行,一层一层逐步从抽象到具体。培训的方式也可以有演讲、座谈、案例讲解、讨论小组、实际操作中的指导等不同的方式。
总而言之,有效推行CMM的关键,在于充分理解CMM标准的要求后,结合企业软件项目开发的实际,找出适合于本企业的软件项目管理方法。CMM标准的实施,重在解决企业软件项目开发过程中存在的问题,实现软件开发过程的持续改进。企业应当充分认识到推行前及推行过程中可能遇到的困难和阻力,并根据企业实际,采取有效的措施。只有这样,才能使推行CMM真正成为企业提高软件项目管理水平,保证软件产品质量,从而提高企业市场竞争力的有效手段。