CMMI是帮助软件企业提高开发效率、降低开发成本,通过过程控制以不断改进提高软件开发质量的国际通行标准。通过对CMMI开发模型的研究,阐述了基于AUTOSAR软件架构的软件开发模型,详细论述了基于CMMI的软件质量保证过程。
0引言
在中国软件行业发展的近30年中,集成能力成熟度模型CMMI(Capability Maturity Model Integration)已经在国内的软件企业广泛实施并探索出有效的实施方法,越来越多软件企业通过实施CMMI来规范企业管理体系,提升软件产品质量。
随着中国汽车电子的飞速发展,汽车与软件的联系越来越紧密,已成为汽车创新发展不可缺少的因素之一。为了在有限资源范围内最大限度地提高主机厂自主开发的软件质量,必须引入CMMI管理体系指导软件开发。
1CMMI概述及应用现状
CMMI起源于美国政府和军工软件企业的一些成功经验及实践。2002年1月,由美国国防部、卡内基-梅隆大学与美国国防工业协会共同开发研制并发布的CMMI 1.1版本,标志着CMMI模型的正式启用。其研究目的主要是提高软件行业开发能力,帮助企业建立适合企业自身发展的软件开发质量保证体系,从而保证软件产品能及时、高效地输出到客户。另外,通过不断积累和发展使软件开发向着流水线方向发展、帮助企业节省开发成本也是CMMI的重要目的。CMMI按企业软件的成熟度共分为5级22个过程域,分别为初始级、可重复级、已定义级、量化管理级、优化管理级。
自1999年起,中国软件企业开始接受并逐步推广CMMI体系,通过学习和不断探索,已经在软件开发标准化方面取得了一定进展。据SEI统计,通过评估的软件公司对项目的估计与控制能力提升了40%~50%,生产率提高了10%~20%,软件产品出错率下降超过1/3[1]。截至2011年底,包括IBM中国、宝信软件、东软集团等在内的28家企业通过了CMMI5级认证。如今,已有越来越多软件企业通过了CMMI认证,主要涉及计算机、手机软件等相关行业。随着汽车电子的快速发展,其规模和复杂度也日益提高,汽车嵌入式软件与其它行业软件相比有着更高的质量要求,其对响应速度及安全性的要求更高。
2CMMI软件开发模型
CMMI开发模型(CMMI For Development)是在产品与服务开发活动中处理问题的最佳实验[2],此模型涵盖了工程学科共有的开发与维护活动,涉及产品开发的过程均可利用此模型来进行过程改进,包括银行、计算机软硬件、航空航天、国防等在内的各个领域。CMMI开发模型包含16个核心过程域及5个开发活动特有的过程域,这5个关于开发活动特有的实践包括:需求开发、技术解决方案、产品集成、验证和确认。
CMMI指出,CMMI的本质是软件管理工程的一部分[3]。就目前CMMI发展总体情况而言,SPI(Software Process Improvement)是软件管理工程的核心问题。对软件过程进行改进,可高效、高质量和低成本地开发软件,能够通过过程监控管理达到提高开发质量、减少产品缺陷、减少退货、提高用户满意度等目的,对于提高软件产品质量与生产率、缩短上市时间也能够起到重要的指导作用。
3CMMI软件过程改进实施
汽车软件因其特殊的应用领域,不同于一般软件产品,其对产品的安全性和可靠性有着严格要求。因此汽车软件不仅需要一般的软件工程方法、软件质量管理手段来提高软件可靠性,为了满足针对性,首先要结合自身特点,如组织结构、工作范围、公司状况来明确当前需要改进的地方。选择合适的方法,从人力、物力上保证,对CMMI模型进行合理裁剪,避免周期过长、程度不够深入以及无法实施等问题。
3.1支撑V模型开发的完善工具链
通常的产品开发模式是,开发工作从客户的需求定义开始,经过系统设计、软硬件架构设计到单元开发完成为止,将工程参数层层分解,需求逐步细化,最终形成软件代码。在该过程中首要的因素是各级理解必须正确,然后是追溯开发过程没有产生遗漏。当前业内流行的开发方式是V模型,不但满足了一般的开发需求,还将测试和验证过程加入开发迭代。
V模型的价值在于其非常明确地描述了测试阶段与开发过程期间的对应关系,工程开发人员往往期望有一款工具既能够支持V模型的工程开发需求,也能够实现测试和验证自动化。然而在业界,这样的工具往往属于大型企业的秘密,不会出售,一般软件也往往只解决流程问题,而无法解决技术整合问题。因此,泛亚汽车技术中心摸索开发了一系列自主工具,既能在流程上符合V模型开发方式,又能整合各层次的技术资源和分类工具,彻底实现了一个完整的工具开发链路,具有很高的产业价值。
3.2基于AUTOSAR架构的分工和交付物管理协作模式
随着团队的扩大以及更细的人员分工,制定一套标准的开发流程能够显著降低开发成本,缩短开发周期。从制定各个里程碑开发节点出发,到软件需求理解、软件架构设计、软件编码及建模,再到软件集成测试,每个开发活动都有明确的输入需求、交付物以及对应人员。创建符合CMMI的软件开发流程关键,还在于在项目开发大节点有相应的质量阀评审,若评审不通过,则需要对交付物采取补救措施。
AUTOSAR(Automotive Open System Architecture,汽车开放系统架构)由全球汽车制造商、部件供应商及其它电子、半导体和软件系统公司联合建立,是目前汽车厂商统一、开放的软件架构,但国内应用此架构开发的汽车厂商还不多,都还处于初级阶段。企业应基于AUTOSAR架构原理,根据专业工作细化结果,结合团队自身特点,制定相应措施以达到提高开发效率、缩短开发周期的效果;另一方面,还应强化软件架构设计及软件集成的执行,从软件架构流程确保整个项目开发的统一设计,再逐步细化到各个子模块的实现中,同时确保所有交付物都通过专家评审,力保在软件设计之初就发现问题,从而有效降低开发成本;此外,通过软件持续集成、统一发布,控制开发节奏,驱动开发进展,逐步完善软件成熟度。图1为基于AUTOSAR软件架构的软件开发流程。
3.3软件质量目标定义
软件开发的质量管理主要细分为质量保证及质量控制两类活动。其中,质量保证是针对开发过程开展的活动,质量目标包括评审度量指标、评审投入比例、过程失控度目标等。质量控制主要是针对测试及验证活动,定义的主要度量指标包括项目测试收束目标、测试逃逸率以及逃逸的千行代码缺陷率。最常用的3个质量目标定义如表1所示。
3.4软件度量制度建立
项目的健康化发展离不开对缺陷数据的统计,通过统计可知道项目的薄弱点,也能对项目进行横向比对。Mantis系统是软件行业最常使用的bug跟踪系统,在原有的统计功能上可通过定制化统计功能将上述3个指标(未修复不符合项平均Open时间、未解决不符合项数及过程失控度)通过二次开发纳入Mantis统计中,从而能够实时监控软件bug的状态;另外,通过Mantis系统能够对问题的各个纬度进行统计,包括问题的状态、项目、严重性、报告阶段、处理员等,通过这些数据能够清晰了解项目目前的缺陷状态,若出现超标和即将超标的情况,QA(Quality Assurance)人员将及时对项目报警,分析原因并采取相应措施,使项目处于一个健康状态。图2为应用Mantis软件对bug进行处理的流程。
4结语
目前,我国汽车软件的开发和管理能力与世界水平还存在一定差距,要开发高可靠性与稳定性的软件产品必须建立良好的软件工程文化和管理制度。本文基于CMMI开发模型,建立了软件开发流程及管理制度,有效提高了开发效率,缩短了开发周期。此外,软件质量保证体系的建立,可通过自查、评审、测试等活动在软件开发前期发现软件缺陷,从而大大降低因后期更改而带来的巨大维护成本,有效地提升了软件开发质量,加快软件管理的规范化进程。
作者:周晓翠 王辉 董宗祥 王丹 来源:软件导刊 2016年1期