CMM-软件-从作坊中走出来(首发《中国电脑教育报》) - 软界韬略 - 马刚

(这条文章已经被阅读了 169 次) 时间:2001-04-16 10:07:50 来源:马刚 (马刚) 原创-IT

从作坊中走出来
——浅谈CMM,及CMM在国内软件企业中的实施

人类最复杂的劳动

众所周知,软件开发工作被称为“人类最复杂的劳动”。

之所以说它是“最复杂的”,不光因为其技术含量很高、脑力劳动强度很大的编程工作,而且,从软件的策划、设计,到具体的对编程工作的分工、管理、检测,还有对质量、成本和研发进度的控制等等,是一个相当复杂的系统工程。

人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动,统称为软件过程。只有那些具有良好软件过程的软件机构,才能够开发出高质量的软件产品。特别对于那些大型软件的开发来说,如果没有有效、合理的管理和控制,很容易出现预期功能和质量达不到、成本远远超出预算、既定完成时间被无休止地推迟,甚至整个开发计划失败等恶劣的结果。

软件开发团队之间的竞争,是这种综合实力的竞争,绝非象我们通常所认为的那样,是单纯的技术水平的较量。 实践证明,对于一个软件研发团队来说,软件开发的组织和管理需要不断完善、不断改进。软件过程能力,是一个软件企业的命脉所在。

CMM,软件工程的指北针

1987年,受美国国防部委托,卡内基·梅隆(Carnejie Mellon)大学的软件工程研究(SEI)院研制并发布了一套软件业规范,其中最重要的是软件能力成熟度模型(SD—CMM),简称CMM (Capability Maturity Model)。

它是一种用于评价软件研发管理能力并帮助其改善软件研发过程的方案,在实践中,逐渐成为评估软件过程能力与成熟度的全球通用标准。世界各国的软件厂商都把它作为改进软件过程能力的权威指导,参照CMM的标准,逐步改进软件过程的管理水平。

CMM分为五个等级,分别是初始级、可重复级、已定义级、已管理级和持续优化级。每个等级的标准是由一系列具体的任务目标所组成,这些目标既是通过相关认证的考核标准,又是帮助软件企业改良其研发管理的系统分类和行为指导。同时,这些目标一旦实现,其方法、经验、流程和文档就被固定下来,并稳定地保持下去,作为每个管理内容分支继续向更高层次改良的基础。

软件过程能力的改进是一个循序渐进、逐步改良的过程。CMM的最大作用在于指导软件企业改进软件过程能力。

作坊中的中国软件业

国内软件业的“小,散,软”现状是众所周知的,特别是软件研发管理水平,可以说大都还停留在手工作坊的级别上,一群高技术人员在底水平的组织和管理下工作。

在CMM的标准中,只要是进行软件开发工作,就自动进入第一个等级——初始级。这个级别的特征是基本上没有成型的管理模式和有效的管理手段,而软件的开发成功,主要依赖于某个或某几个核心成员的个人才智。

对号入座,大部分的国内软件企业好象都具备这种特点,大家统统稳坐在CMM一级上。笔者曾不止一次地听到国内某些市场占有率挺高的软件公司老总说,我们的某种产品,其实就是那一、两个人做出来的。这种一、两个人的技术挑着百、八十人的公司的例子太多了,也算是软件行业的“中国特色”吧。

几年前,某个杀毒软件厂商可能因为某一个病毒的出现而抓住机会,席卷全国的杀毒软件市场,但今天是不可能了,以后会更不可能。如今大家张口就是“反病毒和信息安全整体解决方案”、“企业商务管理全面解决方案”、“个人学习、娱乐、事务管理一次性解决方案”。不论哪个“方案”,如果想做得真有说得那么好,都不是某一个人或是某几个人所能完成的。

中国的软件业该走出作坊了,去拥抱CMM。

CMM,想说爱你容易吗

国内软件企业在实施CMM的过程中,肯定会遇到许多困难,其中最重要的两个问题,一是人才,二是观念和思想。

人人都知道国内有巨大的人才优势,但是,中国软件业乃至整个高技术产业,都严重缺乏一种重要的人才——软件设计和技术管理人才。可以说,业内有很多“软件技术工人”,却少有“软件工程专家”。

这个问题已经被业内所重视,随着国内软件业的发展和CMM的实施,会有很多人才转向这个领域。另外,笔者预测,在今后几年内,各相关理工高校中的“软件工程”或是类似的专业,会逐步热起来,就象现在的MBA一样。

在这里,笔者想对观念和思想的问题作一些分析,妄自对CMM在国内软件业界实施的过程中可能会遇到的某些问题作一些预测和分析。

首先一个问题就是,国内的大部分软件企业属中小型公司,规模不大,研发人员也不多,那么,他们有实施CMM的必要吗?

答案应该是肯定的。美国占据全球软件市场2/3的份额,分析其中原因,很重要的一条就是,无论规模大小,绝大多数软件公司都参照CMM理论,尽量规范化地管理软件过程,以优化研发过程、严格控制质量为中心,把达到相关行业标准放在很重要的位置上。另外,我们应该认识到,CMM的作用不止于让某个软件研发团队的研发工作标准化、系统化、规范化,更重要的是,它给你一个成长的线索。

第二个问题是,在企业实施CMM的过程中,要付出一定的代价的,时间、精力和资金。

在具体的实施过程中,要配备专门的研发管理人员,要成立专门的各种项目的管理、实施小组,要做大量的人员培训、制订多种细分的计划、数据、表格,每个参与软件过程的员工都要录入大量的文档并分析、整合,要召开许多讨论会、总结会等等。而且,CMM的实施初期,肯定会对正在进行的软件研发计划造成一定的冲突,提高了成本,滞后了软件研发结束日程等等。在目前软件行业并不太景气的情况下,这些代价是每个公司都愿意并且都可以承受的吗?各公司的决策者舍得这种投入吗?

上述这些问题,是对那些想实施CMM的软件公司的不小的考验。问题是,今天的投入是为了明天更多的产出,今天的慢是为了明天的快,今天的困难是明天更大的成功的基础。套用一句老话,“磨刀不误砍柴功。”

最后一个是行为习惯和文化背景的问题,这也是最困难的问题。特别是对于那些已经达到了CMM较高级别的公司,更有可能因为这个原因而很难继续提高、继续进步。

CMM的行为模式的底层和精神内核,从根本上来说,源自于西方传统文化中的思维模式、价值观、方法论和系统论等资源。可以说,它秉承了西方人重视理论建设和提升,讲究逻辑,不放过哪怕是对微小差异和经验进行判断、研究和归纳的特点。说到底,是严谨的科学和实验精神在软件工业中的现代翻版。

CMM理论中,各种繁杂而差异甚小概念区分,各种具体而微的行为规范等等,还有大量的文档记录、分析、整理,大量的数据统计等等,让我们不由得想起西方人的某些行为特点。

譬如,一个德国人有可能对中国的菜谱感到很头疼,他不能接受盐“少许”,味精“适量”等说法,在操作中,会对这些比较模糊的概念无所适从。按照他们的想法,菜谱就是“做菜的理论”,要有精确的数据,甚至应该精确到一斤白菜要放几点几克盐那样。再例如,以色列军方认为,对具体事务的详细的统计分析是提高军事素养的重要保证。在一个优秀的以军连队里,你可以从一堆非常繁杂详细的管理文档中,查到某一颗螺丝钉何时被下发到连队,何时被用在哪个器材上,何时损坏,直到最后是如何处理的。

对中国人来说,这些做法近乎不可理解。但这的确反映了西方人的思维方式和行为习惯。他们相信,在这些纷繁复杂的统计、分析和归纳中,蕴藏着无穷的智慧和创造力。而在我们的文化传统中,崇尚的是直观概括和顿悟式的灵感,对复杂的统计分析和逻辑演绎不感兴趣。

东西方的文化差异不是本文探讨的内容,谁优谁劣,要看具体的情况。问题在于,争取商业利益最大化的愿望是不分东西方的,对软件质量的要求和标准是不分东西方的。如果不重视这些问题,别说让国内软件走向世界了,随着国内和国际的接轨以及WTO的到来,我们会连能不能保住自己的饭碗都难说。

印度软件业的成功经验非常值得我们借鉴。80年代初,印度软件产业的规模跟当时中关村的情形差不多。可是,印度软件业界从一开始,就非常重视软件企业的国际化管理,尤其是技术方面的标准化。几乎所有的印度软件公司,不论大小,都能做到在文字方面打破民族偏见、在经营方面以IBM等公司为参照,在开发过程中更是采用严格的国际标准。

因此,只要中国软件业想存活、想发展、想走向世界,那就没有理由、也没有可能不去拥抱CMM。

CMM-软件-从作坊中走出来(首发《中国电脑教育报》) - 郭轶峰 - 2001-04-16 11:08:08

星期六晚上和一个朋友谈起个类似的主题。就是说软件工程不仅仅是学和考察等等,而是应该用这种思想去指导日常的工作,可是目前国内的问题是,从大学教育和以及各种计算机书籍的培养的目标是codeing型人才,这个转换是很难的。另外,对于国内大多数程序员和中小型软件公司来说,都有很强生存压力,这种压力迫使大家更加注意眼前效益,至于UML、CMM等等需要长时间消化的东西,很难去在实际中实践。 不过大家对这个东西越来越重视正昭示着未来吧!

Re:CMM-软件-从作坊中走出来(首发《中国电脑教育报》) - 无翼天使 - 2001-04-16 14:03:29

老兄,你对UML了解多少??我想做一个整体了解,下载了一些东西,在UML播种机网站上,我觉得不错,你也去看看吧,有时间我听听你的想法,向你学习去

Re:CMM-软件-从作坊中走出来(首发《中国电脑教育报》) - 郭轶峰 - 2001-04-16 14:46:52

向你学习才是真的:)有时间我们可以讨论一下。

UML我也是学习没有多久,你说那个站倒经常去,不过看的多说的少。 北京航空航天大学计算机系目前是UML国内的权威,那个播种机好象他们也有关系。你们清华反而没听到过什么动静,可能是我孤陋寡闻了。