软件开发如何又快又好

为加强华为的软件开发能力,华为公司在1995年就开始在研发系统掀起向世界最优秀的软件公司——微软公司学习的热潮,并对比总结出几点微软做得奸、而华为当时尚欠缺的地方,如系统设计、软件成熟度不高(即功能虽然开发出来,但问题可能很多)等方面。

1996年华为中研部为了加强软件成熟度,专门引入了系统设计师,并按照软件的系统设计理论成立了中研部的测试部。1998年测试部发展成为中研部一个大部门,拥有300多位测试工程师,大致每两位开发工程师拥有一位测试工程师。华为中研部的测试部与许多公司的测试部完全不同,许多公司的测试部只是一堆小姑娘打打电话看看功能能否实现,而华为中研部的测试部对工程师的要求远高于一般的开发工程师。测试部要跟踪全球最新的软

件测试方法、测试的技术手段,还要对软件程度实现从系统级到模块级的自动测试。

中研部的测试部实现了和软件开发的同步工作,在一个新的软件项目立项时,测试部就开始做软件的可靠性评估以及测试模块的设计工作。在软件功能研发之时,测试部也开始根据同一份功能设计开始了测试软件的编写,这样,当软件功能的研发接近完成之时,测试部可以开始对这些功能和软件代码进行自动测试,测试的各种分支情况可以达到上万种,把可能的问题点消灭在开发的过程中。最后,测试部通过仿真以及现实的实验室环境再做系统级的软功能及兼容性测试,以确保对硬件及系统的支持。

比如有一座山,山上并没有路供游人行走,所以有人顺溪涧逆流而上,有人沿峭壁苦苦攀缘,这样既慢,还易出事故。如果修一条尽量方便游人行走的大道,就会又快又安全。以前华为公司的软件开发人员习惯了“走小路”,为了赶进度有很多不规范的行为,写软件如写“天书”,让其他的工程师无法配合工作,除了他自己没有人能看懂他写的软件。结果表面上赶了进度,事实上在后续的产品上却问题不断,于是工程师又忙于解决问题,最终结果不好,而且总体进度也没有快多少。

为进一步加强软件研发的水平,华为从1998年就开始了对国际软件开发的标准CMM(软件能力成熟度模型)的学习和认证工作,旨在为软件产品开发套上成熟的模型,研发部负责人洪天峰亲任CMM认证的负责人。

CMM中的过程就是指这样的一条大道。用于规范大家的做事方式,在任何时候都能够既“把事情做对”又“做对的事情”,CMM通过需求管理、配置管理,质量保证、质量验证等一系列手段来保证软件的质量。CMM把软件开发过程的成熟度由低到高分为五级,等级越高,表明该企业软件开发失败风险越低、整体开发时间越短,并能减少开发成本、降低错误发生率、提高产品质量。CMM的五级认证分别是c

CMMI一级,项目的目标得以实现,但是由于任务的完成带有很大的偶然性,企业无法保证在实施同类项目的时候仍然能够完成任务。企业在一级上的项目实施对实施人员有很大的依赖性。这个阶段经常出现,只有某个技术‘大侠’能搞定项目,大家对“大侠”充满仰慕。

CMMI-'级,企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对相关的项目实施人员有相应的培训,对整个流程有监测与控制,并与上级单位对项目与流程进行审查。在这个阶段,引入了很多的评审点,项目进行到哪一步,就必须通过哪一步的审核才能继续向下进行。

CMMI三级,企业不仅能够对项目的实施有一整套的管理措施,并保障项目的完成:而且,企业能够根据自身的特殊情况以及自己的标准流程,将这套管理体系与流程予以制度化。这样,企业不仅能够在同类的项目上得到成功的实施,在不同类的项目上一样能够得到成功的实施。在这一阶段,项目的成功成为人人可以做到的“简单的事”,企业不再依赖某个“大侠”才能做好项目。

CMMI四级,企业的项目管理不仅形成了一种制度,而且要实现数字化的管理。对管理流程要做到量化与数字化。通过量化技术来实现流程的稳定性,实现管理的精度,降低项目实施在质量上的波动。在这个阶段,所有的工作都不是一句简单的“可以了”,而是通过列出目标是多少度,而目前完成了多少度,工作可以量化衡量。

CMMI五级,企业的项目管理达到了最高的境界。企业不仅能够通过信息手段与数字化手段来实现对项目的管理,而且能够充分利用信息资料,对企业在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。

在企业里推行规范并不是一件受欢迎的事,一开始CMM规范的建立与推行相当困难,甚至是举步维艰。很多研发人员说:其实我也很想按规范做事,只要给我足够的时间,但我实在太忙了,时间太紧了,市场压力太大了。

为此,CMM认证小组在中研部进行了广泛的宣传和细致的培训工作。一段时间中研部的墙壁上张贴了不少的宣传语和宣传画,宣传在研发设计时遵守规范的重要性,如“就像闯红灯的人,如果一切OK,节省了两分钟时间,如果对面冲过来一辆车,就是一起车祸;如果每个人都为了节省两分钟而闯红灯,后果不堪设想”。CMM小组还组织工程师到印度去学习,请印度的专家到中国来培训,终于使从研发管理者到工程师,都养成了自觉遵守规范的好习惯。

研发管理者通过有效的规模估计、工作量估计,合理安排了开发进度,通过充分的风险估计和规避措施,一旦出现突发事件,不再手忙脚乱,通过严格的评审、检视活动,使质量从源头得到保证。作为工程师,建立了依据规范写好每一篇文档、编好每一段代码、做好每次评审与检视的良好习惯。渐渐地,当所有的软件工程师都习惯了用相同的规范和标准来做软件时,企业里就形成了一条又快又好的“康庄大道”,大家的工作效率反而有了成倍的提高。2001年,华为印度研究所率先获得CMM四级认证,此后,华为北京研究所、南京研究所也先后在2003年1月和6月取得CMM四级认证。华为已在研发系统普遍实施CMM管理,之后,那种华为早期研发人员在机房里几天几夜解决软件问题的紧张场面再也不见了。