20世纪70年代中期美国国防部立题专门研究软件项目做不好的原因,发现70%的项目是因为管理不善而引起,而并不是因为技术实力不够,进而得出一个结论,即管理是影响软件研发项目全局的因素,而技术只影响局部。 由此诞生了CMM(Capability MaturityModel能力成熟度模型),目前,学术界和工业界公认美国Carnegie Mellon大学软件工程研究所(CMU/SEI)以W·S·Humphrey为首主持研究与开发的软件能力成熟度模型CMM是当前最好的软件过程,已成为业界事实上的软件过程的工业标准。 1 实施CMM的必要性 软件开发的风险之所以大,是由于软件过程能力低,其中最关键的问题在于软件开发组织不能很好地管理其软件过程,从而使一些好的开发方法和技术起不到预期的作用。而且项目的成功也是通过工作组的杰出努力,所以仅仅依靠“精英”的成功,不能为全组织生产和质量的长期提高打下基础, 必须在建立有效的软件如管理工程实践和管理实践的基础设施方面,坚持不懈的努力,才能不断改进,才能持续的成功。拿CMM标准与国内软件工程的实践相对照,就可以发现, 目前国内软件工程的缺陷主要在于: ①缺乏制度保证,使得软件开发的过程是一个相对独立的工程建造过程 ②缺乏严格的经济技术评价程序,更重要的是,缺乏对评估结果的正确认识; ③缺乏规范的 项目开发管理。有软件开发经验的人们都知道,许多在开发进程中存在的问题不是没有解决之道,不是没有恰当的工具,而是没有恰当的组织和恰当的协调。这些问题在国内软件企业的工作过程中普遍地存在着,问题往往也就出在这里。 试图解决这一问题其实就是卡内基梅隆大学的软件工程研究所SEI(Software EngineeringInstitute)提出的软件能力成熟度模型追求的目标:软件开发组织如何提高自己的成熟度水平。这个成熟度水平的衡量标准的难点并不在体系内部,而是在体系的外部和边界处。 2 认识CMM CMM是由美国卡内基梅隆大学的软件工程研究所受美国国防部委托研究制定并在美国,随后在全世界推广实施的一种软件评估标准,主要用于软件开发过程和软件开发能力的评估和改进。CMM标准共分五个等级,由低到高分别为:初始级、可重复级、定义级、管理级和优化级。 CMM对软件开发项目最大的贡献在于,它把组织和管理的精神明确地纳入到软件开发的过程中来,它不是基于目标和方法的管理,而是基于过程的管理。 通过CMM并不是目的,关键是学习先进科学的软件开发流程,改进软件过程,不断提高自身研发管理水平,保证产品质量,让软件企业走上规范化发展道路。众所周知,软件生产不同于汽车、纺织等制造行业的生产,它完全是由人进行创造的,外界无法观察, 也很难进行监控,同时软件也不像制造业的产品那样可以方便地进行检测评估,这就给软件的管理和控制造成了很大的麻烦。国内的软件企业正是由于缺乏一套完善的管理办法,致使经常出现不能按时发布、产品质量低劣、项目组中个人作用过于放大等问题。 因此,企业要想真正提高软件质量,在行业具有竞争力,就必须改变整个软件业管理的方式方法。而管理正是CMM的强项,它提出的过程监控以及文档先行,让企业在软件生产的每个步骤都留下翔实的文档,从而实现软件生产的标准化控制, 让企业有效地控制软件生产各方面的问题。CMM作为SEI许多专家多年研究的结晶,是一座金矿,乍一看就是一堆砂,但其中蕴藏着金子。要想得到它,需要付出很大的努力!一个有志于改进自己软件过程的企业以CMM作为镜子对照自己,作为尺子来衡量自己, 找出差距和不足,进而采取措施有目标、有针对性地提高自己的软件设计能力,或者说提高软件过程的成熟度,这才是CMM的真正意义所在。CMM不是个别人的事,组织中每个人都应不同程度地参与。每个人都要想想我应该尽到什么职责,要“调整心态,从我做起”。 能否有效实施CMM,能否让CMM在企业发挥应有的作用,最关键的两个人物是高层经理和项目经理。对于高层经理来说,需要正确认识CMM实施带来的额外工作量,配备必要的资源,CMM实施最直接的后果就是带来了很多的事务性管理工作,这要求设立一些专职的角色, 如SQA、SCM,或者配备适当的工具,把相应的工作量从项目经理的身上分离出来。否则一旦技术和管理展开竞争,牺牲的肯定是管理;高层管理有必要改变自己的管理习惯,原来很多事都口头裁决,现在需要先看有没有规范,如果有,就尊重规范,规范就是文档化的组织意志。 最后,实施体系就是打破旧平衡,建立新平衡,这个过程中体系会相对混乱,对正在运行的项目会产生一定的影响,甚至于在个别企业中,出现技术人员由于适应不了新的工作方式而离职的例子,这些情况,高层管理者都应该心理上有所准备,对CMM抱有坚定的信心。 对于项目经理来说,要改变技术本位主义,国内的项目管理,大多是技术出身,没有接受过系统的管理知识,心态多是技术带头人而已。CMM本质就是解决管理问题,所以对项目经理来说,做CMM就是从技术上分出一部分时间来做管理,管理者需要主动调整心态以适应新的情况。 项目经理的从我做起还包括,他们是沟通项目层和管理层的桥梁,对于CMM的贯彻起着承上启下的作用。贯彻CMM不可能奢望全体人员一致拥护,但是项目经理的积极参与却是必要的。CMM实施的内部驱动有两个:高层经理和项目经理。 高层经理通过资源和政策驱动,项目经理以实际问题驱动。项目经理要做过程改进的“明白人”,认识到过程改进工作正是为项目服务的,而不单单是被动的服从高层经理的安排和质量经理的规划等等。
|