随着信息技术的飞速发展,软件应用的领域不断扩展,软件产品的规模不断扩大,复杂度也越来越高。人们对软件需求越来越高的同时,对软件质量的容忍度却越来越低,现代质量管理理论强调质量形成于过程,所以软件是否有可信的质量这个问题引来了越来越多的学者的探讨。针对软件过程的研究,国际上已有超过30年的历史,发展出了ISO 9000[1]与CMMI[2]系列模型。其中CMMI是面向软件相关开发领域的过程成熟度模型,主要针对过程应该做什么的问题。

CMMI是被业界广泛采用的软件过程管理框架,用软件开发过程的知识技术解决软件管理流程.CMMI 定义了过程管理、项目管理、支持过程和工程过程4类供22个软件过程域,在每个过程域定义了一组过程实践来支持过程域的实现,并强调通过持续的过程改进来提高产品的质量.CMMI作为描述和评估软件过程的集成化框架,强调改进软件过程能力,帮助企业对软件工程产品开发过程进行管理和改进,增强开发能力,从而按时地、不超预算地开发出高质量的软件.由于CMMI为改进一个组织的各种过程提供了单一的集成化框架,消除了各个模型的 不一致性,减少了模型间的重复,增加了透明度,能够总体上改进软件开发组织的质量和效率.

CMMI由美国高国防部与CMU下的软件工程研究中心与美国高国防工业协会的在1994年共同开发和研制,几十年来为全球软件产业的健康发展作出了巨大贡献,它的主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面

CMMI为企业带来价值主要体现在以下几个方面:

  • 对开发流程进行标准化和规范化,保证项目进度和质量
  • 有利于成本控制,缩减不必要的项目开支
  • 建立完备的知识库,不畏惧人才流失
  • 持续改善流程,提高质量和效率
  • 在一些投标项目竞争中,更具有优势
  • 来自美国制定的国际标准,更能得到国外的认可

然而,CMMI在企业的实际应用中遭遇了诸多困难,大量企业在完成了CMMI认证之后就抛弃了CMMI,这表明CMMI与当前软件企业所面临的难题是有一定差距的,造成这一现象的原因是复杂的,本文试图从不同的角度探讨CMMI存在的问题,并讨论为什么CMMI不适合在当前软件开发中的应用。

CMMI 评估中的缺陷

中科院软件所王德鑫博士与王青博士在对嵌入式软件系统领域进行研究[3]时发现, 对于一个采用CMMI ML3-5进行过程改进的组织,依然有可信原则达不到2级的要求。这是因为CMMI强调过程的可管理性,在大多数CMMI的评估中,只观察是否有证据以及是否有强弱,而对证据本身的要求以及证据表现的性能并不关注。比如在开发支持,CMMI关注足够的资源支持开发活动,但评估时不会强调工具的覆盖范围。

另一方面,CMMI 只是依据过程的成熟程度来确定其目标等级,与产品本身的特点无关[4]。也就是说,CMMI本身并不关注组织的过程应该达到什么等级,CMMI ML5 级的企业可以只开发普通的民生软件,无需达到较高的可信级别,而开发航空航天软件的企业也可以只达到低级别。CMMI 是一个参考模型,主要解决应该做什么的问题。然而实际上很多企业并不知道应该采集什么数据来客观地证明过程实践的有效性,所以很多采用CMMI 的企业其过程能力的差异非常大。

当前业界软件开发特点

频繁的需求变化

在大众创新,万众创业的时代,抢占市场比开发一个合格的软件更重要。对于创业型公司而言,为了追求快速更新软件以抢占市场,需求文档通常只有寥寥几句话。频繁的需求变更使得最初的需求文档、设计文档成为一纸笑谈。甚至很多中小企业中,根本就不存在写文档的习惯,也不进行需求分析、可行性分析,技术路线由程序员自己拟定,管理员负责定期检查软件版本并不断更新需求。CMMI要求软件开发过程的可控,而在这类企业中,人们更推崇敏捷开发,拥抱变化,把变化当作需求。

浮于表面的形式主义

Code Review 是软件开发中的一个重要环节,它既能及时发现代码编写中潜在的bug,规范项目开发,也能帮助开发者提高代码质量。然而在实际的实施中,review 花费的精力和时间太大,最后很多公司都只是单纯的“走个形式”[5]。这种事情也发生在文档撰写的过程中。

有一家已经通过CMMI3级评估的软件生产企业,完成一个项目需要项目组填写接近90份文档。当笔者去做CMMI的差距分析时,发现在那些文档中有大量显而易见的错误。而这些文档还要给项目经理、QA人员及高层主管等多个角色去看,却没有人发现这些很明显的错误。其实这些人根本就没有去看这些文档!既然没有人去读,何必要写呢?

CMMI评估需要企业提供3种证据:直接证据、间接证据和人证。每条实践都必须有直接证据。直接证据包括了产出的文档、使用的工具等等。由于直接证据是必须的,于是,为了满足评估的需要,很多企业做了上百个文档来满足模型的要求,其实这是不对的。模型是强调直接证据,但是并非文档越多越好。文档只是用来证明某个实践你做到了,只要达到了这个目的就可以了。而且一个文档可以满足多条实践的要求,可以作为多条实践的证据,这是最经济的做法。只要内容有了,也并非在乎文档的多少与格式。

实施CMMI之前,项目组往往不写文档或者很少写文档;实施CMMI之后,写的文档又可能太多—这是两个极端,需要平衡。

究其原因,都是企业为了“节省成本”。一份合格的需求文档、设计文档编写难度极大,需要专业的工程师们花费大量的时间和精力,而企业通常追求快,不愿意把时间花在这些地方,只想快速看到产品的迭代。

CMMI与中国软件开发环境“水土不服”

CMMI诞生的初衷就是规范软件开发,尽可能的避免软件开发中的延期、经费超支等问题,频繁的需求变化、不规范的文档编写必然导致这些问题,而中国的互联网企业也开发出了一套自己的解决方案——“996模式”(上班时间从早上9点到晚上9点,一周6天)、“9-12-7模式”(上班时间从早上9点到晚上12点,一周7天),使用严重超时的加班来处理无端增加的工作量。从企业的角度,这种模型即能快速更新产品,又保证了软件的质量,然而从员工的角度,这无异于牺牲了个人生活。这是中国软件开发环境的一大弊端,但是短期内几乎没有解决办法。

2017年,华为开除了34岁以上的技术员工[6],而同时以高薪从各大高校挖取IT毕业生。越来越多的这种企业的做法促成了IT行业毕业薪资奇高的现象,也引发了越来越多的程序员关于中年危机的思考。很多企业在通过了CMMI3级的正式评估后,急于通过CMMI的5级评估。为什么呢?一是企业从市场竞争方面想把竞争对手甩在后面,便于争取更多订单;二是政府有巨资资助,企业通过高级别CMMI认证对当地的政府来讲有业绩;三是对于咨询公司来讲,企业通过高级别CMMI认证可以扩大对外宣传,增强客户对自己的信任。几种因素综合在一起,企业不由自主地就开始了向高成熟度组织的迈进之路。据统计,在中国,2006年一年内通过CMMI5级评估的软件公司就超过了10家。也很不幸,在中国进行CMMI5级评估的主任评估师有的受到SEI(美国卡内基·梅隆大学软件工程研究所)的处分。自2007年始,SEI开始对CMMI高成熟度组织的评估师进行重新考试。并非所有的主任评估师都可以做4~5级的正式评估。在全球,SEI加大了对4~5级评估的审计工作,尤其是对东方的软件大国。然而实际上,CMMI的作用在这些企业拿到了证书的那一刻就结束了。

如果一个IT企业,严格按照CMMI的规范,很容易就在市场竞争上处于劣势。对于当前的中国IT行业,时间就是生命,比对手提前上架一个可用的但是充满bug的软件比晚上架一个完美的软件更为重要。CMMI试图通过大量的规范将程序员变成建筑的搬砖工人,将软件开发变成盖大楼那样的可控、可见,这对于管理者而言显然是十分有效,然而对于软件开发而言,每一个员工的代码风格、文档习惯都将影响合作的队友,每一个看起来无关紧要的问题累加起来,可能就像蝴蝶效应,最终导致了软件开发中的巨大的不可控风险。所以,以“拥抱变化”为口号的敏捷开发受到越来越多的开发者的欢迎。

最后,想讲一个故事就是,2004年,一个哈佛大学生只用了约一个星期的时间就建好了一个社交网站,并迅速成长为全球最大的社交网络——Facebook。

引用

[1] Int’l Standards Organization. ISO 9000. 2015.

[2] CMMI for development, Version 1.3. 2010. http://cmmiinstitute.com/resources/cmmi-development-version-13

[3] 王德鑫,王青,贺劼.基于证据的软件过程可信度模型及评价方法.软件学报,2017,28(7):1713−1731. http://www.jos.org.cn/1000-9825/5102.htm [doi: 10.13328/j.cnki.jos.005102]

[4] 王德鑫,王青.支持软件过程可信评估的可信证据.软件学报,2018,29(11):3412−3434. http://www.jos.org.cn/1000-9825/5291.htm

[5] 大家的公司的 Code Review 都是怎么做的?遇到过哪些问题, 知乎, 2018. https://www.zhihu.com/question/41089988/answer/536046729

[6] 如何看待华为要求清理34岁以上的员工, 知乎, 2017. https://www.zhihu.com/question/55538190/answer/236000738

点击量:1004


发表评论

电子邮件地址不会被公开。 必填项已用*标注