软件工程与能力成熟度模型CMM
20世纪70年代中期,软件工程管理引起广泛注意。当时美国国防部曾立题专门研究软件项目做不好的原因,发现70%的失败项目是因为管理不善而引起的,而不是因为技术实力不够。他们进而得出一个结论,即管理是影响软件研发项目全局的因素,而技术只影响局部。这个结论非常重要。软件项目失败的主要原因有:需求定义不明确;缺乏一个好的软件开发过程;没有一个统一领导的产品研发小组;子合同管理不严格;没有经常注意改善软件过程;对软件构架很不重视;软件界面定义不善且缺乏合适的控制等等。在关系到软件项目成功与否的众多因素中,软件度量、工作量估计、项目规划、进展控制、需求变化和风险管理等都是与工程管理直接相关的因素。由此可见,软件工程管理的意义至关重要。
软件项目的特殊性
软件工程管理和其它工程管理相比有其特殊性。首先,软件是知识产品,进度和质量都较难度量,生产效率也较难保证。其次,软件系统复杂程度也是超乎想象的。例如,宇宙飞船的软件系统源程序代码多达2000万行,如果按过去的生产效率一个人一年只能写1万行代码的话,将需要2000人年的工作量,这是非常惊人的。正因为软件如此复杂和难以度量,软件工程管理的发展还很不成熟。
CMM,逐步的成熟
美国Carnegie Mellon大学软件工程研究所(CMU/SEI)主持研究与开发的CMM/PSP/TSP技术,为软件工程管理开辟了一条新的途经。CMM是英文“Capability Maturity Model”的简称,意为能力成熟度模型。CMM的本质是软件管理工程的一个部分。根据软件生产的历史与现状,CMM框架可用5个不断进化的层次来表达:其中初始层是混沌的过程,可重复层是经过训练的软件过程,定义层是标准一致的软件过程,管理层是可预测的软件过程,优化层是能持续改善的软件过程。任何单位所实施的软件过程,都可能在某一方面比较成熟,在另一方面不够成熟,但总体上必然属于这5个层次中的某一个层次。在某个层次内部,也有成熟程度的区别。在一个较低层次的上沿,很可能与一个较高层次的下沿非常接近,此时由这个较低层次向该较高层次进化也就比较容易。反之,在一个较低层次的下沿向较高层次进化,就比较困难。在CMM框架的不同层次中,需要解决带有不同层次特征的软件过程问题。因此,一个软件开发单位首先需要了解自己处于哪一个层次,然后才能够对症下药地针对该层次的特殊要求解决相关问题,这样才能收到事半功倍的软件过程改善效果。任何软件开发单位在致力于软件过程改善时,只能由所处的层次向紧邻的上一层次进化,即软件过程的进化是渐进的,而不能是跳跃的。而且在由某一成熟层次向上一更成熟层次进化时,在原有层次中的那些已经具备的能力还应该得到保持与发扬。
CMM家族包括CMM集成产品集、SACMM(软件获取能力成熟度模型)、SECMM(系统工程能力成熟度模型)和IDEAL模型。其中CMM集成产品集为工业界和政府部门提供了一系列集成产品,以支持软件过程和产品的改善;SACMM用于单位获取和采购基于软件的应用系统的软件过程,美国国防部、陆军、海军和一些商用单位都已采用SACMM对他们的获取能力进行评估;SECMM是描述一个单位为保证实现一个好的系统工程的主要元素;而IDEAL模型则是一个单位用于启动、规划和实现过程改善措施蓝图的模型,概括了建立一个成功的过程改善项目的必要步骤,其中I代表Initiating(启动)、D代表Diagnosing(诊断)、E代表Establishing(建造)、A代表Acting(措施)、L代表Learning(学习)。
美国曾在1995年做过软件产业成熟程度的调查,发现在美国的软件产业中,CMM成熟度等级为初始级的竟占70%,其特征是软件开发过程不能预测,风险度高;为可重复级的占15%,其特征是软件开发过程需小心谨慎方能避免失败;为定义级的所占比例小于10%,其特征是软件开发过程相当稳定,进展顺利且可以预测;为管理级的所占比例小于5%,其特征是软件过程预测准确、值得信赖;为优化级的所占比例小于1%,其特征是软件过程能持续改善。
CMM还需绿叶配
需要注意的是,并不是实施了CMM,软件项目的质量就能有所保障。CMM不是万能的,它的成功与否,与一个组织内部有关人员的积极参与和创造性活动是密不可分的,而且CMM并未提供实现有关子过程域所需要的具体知识和技能。因此,个体软件过程PSP(Personal Software Process)也就应运而生。PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。在软件设计阶段,PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计结束准则,而不是设计方法的选择。根据对参加培训的104位软件人员的统计数据表明,在应用了PSP后,软件中总的缺陷减少了58.0%,在测试阶段发现的缺陷减少了71.9%,生产效率提高了20.8%.PSP的研究结果还表明,绝大多数软件缺陷是由于对问题的错误理解或简单的失误所造成的,只有很少一部分是由于技术问题而产生的。而且根据多年来的软件工程统计数据表明,如果在设计阶段注入一个差错,则这个差错在编码阶段要引发35个新的缺陷,要修复这些缺陷所花的费用要比修复这个设计缺陷所花的费用多一个数量级。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。PSP的推出,在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。
仅有CMM和PSP还是不够的,因此,CMU/SEI又在此基础上提出了群组软件过程TSP(Team Software Process)的方法。TSP指导项目组中的成员如何有效地规划和管理所面临的项目开发任务,并且告诉管理人员如何指导软件开发队伍始终以最佳状态来完成工作。TSP实施集体管理与自我管理相结合的原则,最终目的在于指导一切人员如何在最少的时间内,以预定的费用生产出高质量的软件产品;所采用的方法是对群组软件开发过程的定义、度量和改进。实施TSP的先决条件有3条:首先,需要有高层主管和各级经理的支持,以取得必要的资源;其次,项目组开发人员需要经过PSP的培训并有按TSP工作的愿望和热情;第三,整个单位在总体上应处于CMM二级以上。在实施TSP的过程中,首先要有明确的目标,开发人员要努力完成已经接受的委托任务。在每一阶段开始,要做好工作计划。如果发现未能按期按质完成计划,应分析原因,以判定问题是由于工作内容不合适或工作计划不实际所引起,还是由于资源不足或主观努力不够所引起。开发小组一方面应随时追踪项目进展状态并进行定期汇报,另一方面应经常评审自己是否按PSP的原理工作。开发人员应按自己管理自己的原则管理软件过程,如发现过程不合适,应及时改进,以保证用高质量的过程来生产高质量的软件。项目开发小组则按集体管理的原则进行管理,全体成员都要参加和关心小组的规划、进展的追踪和决策的制订等项工作。
总之,单纯实施CMM,永远不能真正做到能力成熟度的升级,只有将实施CMM与实施PSP和TSP有机地结合起来,才能发挥最大的效力。
目前国内对软件工程管理存在的最大问题是认识不足。管理实际上是一把手工程,需要高层管理人员的足够重视。据国外有些大公司的介绍,他们在软件工程管理方面的投资一般占软件开发费用的10%左右,这些都需要得到高层管理人员的支持。而且软件过程的重大修改也必须由高层管理部门启动,这是软件过程改善能否进行到底的关键。此外,软件过程的改善还有待于全体有关人员的积极参与,否则不仅他本人将失去从软件过程改善中获得提高的机会,甚至还会成为过程改善的阻力。
除了要认识到过程改善工作是一把手工程这个关键因素外,还应认识到软件过程成熟度的升级本身就是一个过程,且有一个生命周期。因此,过程改善工作必然具有一切过程所具有的固有特征,即需要循序渐进,不能一蹴而就,需要持续改善,不能停滞不前;需要联系实际,不能照本宣科;需要适应变革,不能凝固不变。而且我认为,要将CMM/PSP/TSP引入软件企业,最有效的途径是要对单位主管和主要开发人员进行系统的培训。美国 Carnegie Mellon 大学软件工程研究所曾经尝试让软件工程师通过自学的方式来进行,但实际上只有不到20%的人能够坚持到底。另外一个有效的途径是自顶向下的课程培训,即从高层主管依次普及到下面的工程师。
现在国内软件产业的发展可以说已经具有一定规模了,但除了北大方正、东大阿尔派、用友等大企业外,做软件工程项目更多的是一些规模在数十人左右的中小企业。也许有人会问,像这样一些人力物力资源匮乏的企业,如何进行软件开发项目的管理呢?我建议这些中小企业可以以CMM为框架,先从PSP做起,然后在些基础上逐渐过渡到TSP,以保证CMM/PSP/TSP确实在企业中生根开花。总之,我们必须从软件过程、过程工程的角度来看待CMM的发展,从经济学的观点来分析这个过程的价值。我相信在实施CMM/PSP/TSP的过程中,只要坚持改善软件工程的管理,并在实践中注意总结适合自身的经验,一定能取得很好的效果。
- 1台风、雨季施工安全保证措施
- 2浅谈如何加强进度管理以提高带动项目管理
- 32015机电工程要点:非金属材料的类型及应用
- 42015矿业工程要点:矿业工程施工组织设计的编制依据
- 52015机电工程要点:风管系统的施工技术要求
- 6海南省文昌“两桥一路”工程滨海旅游公路昌洒至铺前段工程中心试验室招标中标公示
- 7工程项目竣工结算管理
- 8柳州某大桥改造工程(三防)应急安全预案
- 9揭阳市交警支队高速公路重点路段、主要出入口监控抓拍系统采购项目中标公告
- 10一级建造师复习资料:防治施工照明污染
- 11住房城乡建设部关于印发2013年国家建筑标准设计编制工作计划的通知
- 12【建筑工程管理与实务知识汇总】第3章 第五节
- 13一级建造师复习资料:建造合同的类型
- 14深圳地铁某区间安全专项施工方案(2011年 基坑支护)
- 15建设部安全生产委员会第三次会议纪要
- 16【硕士】模糊事故树分析及其在施工安全管理中的应用
- 17桩基础安全施工方案
- 18江苏2015年造价员考试大纲:工程造价计价依据概述
- 19职业化项目经理是怎样锻造的
- 20施工合同风险管理的防范
- 21同源高速公路工程某段施工便道与国道交叉口安全方案
- 22关于发布二○○一年度部级优秀勘察设计评选结果的公告
- 23关于对近期发生的两起建筑施工重大伤亡事故的紧急通报
- 24青兰高速某段火灾应急预案
- 252015年造价员考试知识点辅导:各种涂料容量比重参考
- 262015矿业工程要点:常用钢材加工方法及对钢材性能的影响
- 27广西南宁市环城高速公路收费站迁建项目工程(一期工程)监控、通信、收费综合系统工程施工招标评标结果公示
- 28西游记 古代最成功的项目管理案例
- 29一级建造师复习资料:竣工质量验收的标准
- 30襄城县公路运输管理所采购交通运政执勤作训服项目(二次)成交公告
成都公司:成都市成华区建设南路160号1层9号
重庆公司:重庆市江北区红旗河沟华创商务大厦18楼