摘 要:软件质量管理应该贯穿于软件开发的全过程,在软件开发实践中,可以依靠流程管理来进行软件质量控制,严格按软件工程执行,从而使得软件质量得以保证。本文主要讨论如何利用能力成熟度模型CMMI来提高软件的质量管理,并分别对软件能力成熟度模型集成、软件开发过程中的质量管理、CMMI的具体实施进行了分析。
关键词:软件开发;质量管理;CMMI
1. 前言
质量管理是指对组织的活动在质量方面进行指挥和控制,其管理职能主要包括质量方针的制定、质量目标的确定、质量控制、质量改进以及质量保证。软件质量管理就是指在软件开发过程中在质量方面进行指挥和控制。软件质量管理应该贯穿于软件开发的全过程,在软件开发实践中,可以依靠流程管理来进行软件质量控制,严格按软件工程执行,从而使得软件质量得以保证。在电信某重点运营支撑项目中,使用CMMI标准对开发流程进行了严格的控制和审核,在一定程度上使得项目软件质量得到了保证。过程管理是质量管理的一个重要环节,本文主要通过阐述电信某重点运营支撑项目软件中的几个重要过程的改进,来探讨过程管理是如何提高该项目软件质量的。
2. 软件能力成熟度模型集成
CMMI(Capability Maturity Model Integration,即能力成熟度模型集成)是SEI组织(美国卡耐基-梅隆大学软件工程研究所)推出的衡量软件开发管理水平的重要参考模型,代表着国际上最先进的软件工程方法,是衡量软件企业能力成熟度和项目管理水平的权威标准,被公认为软件企业走向国际市场的通行证。CMMI包含了产品的开发、维护及服务方面最好的实践做法,覆盖了从项目立项到交付和维护整个产品生命周期。其认证范围从1级到5级,如图1所示,其中3级认证为已定义级(Defined),表明开发过程包括技术工作和管理工作,均已实现标准化和文档化。
图1 成熟度模型等级定义
成熟度等级1:初始级。在这个组织中,初始级处于最低级别,健全的软件工程管理制度基本上没有。过程的实践通常是待定的,也有的时候是混乱的。在这个级别中,由于当前的人员配备决定软件过程,因此,其具有不可预测性,而人员的变化是最快的也是最常见的,因此导致过程随时具有变化的风险。因此导致不可能精确地预测产品的开发时间和费用。
成熟度等级2:可重复级。在这个级别中,有些基本的软件项目的管理行为、设计和管理技术是基于相似产品中的经验。在这个级别中,需求、过程、工作产品和服务都处于被动地位。
成熟度等级3:已定义级。在这个级别中,完整的文档已经编制好,并明确地定义了软件过程的管理方面和技术方面,并且过程按照需要做了不断地改进,同时为了进一步保证软件的质量采用了评审的办法。在这一级别中,组织标准过程集按照裁剪指南来进行剪裁,并且对建立自己的已定义过程项目是可以实现的。
成熟度等级4:已管理级。处于这个等级中的所有公司对每个项目都设定质量和生产目标。将不断地测量这两个量,当偏离目标较远时,对其应该进行修正并采用相应的行动。
成熟度等级5:优化级。此级的主要目标就是连续地改进软件过程。这样的组织通过统计质量和过程控制技术的使用获得了不同方面的知识,这些知识将会被用在今后的项目中,从而软件过程也进入到正反馈循环,进一步改进了质量。
3. 软件开发过程中的质量管理
3.1量化管理
3.1.1量化管理的实施要求
量化是建立在量化元素之上的一种数学表征,在项目管理过程中,通过对这些量化元素的控制来实现对项目的量化管理,这些量化元素主要是项目开发中的最小功能模块,或者是基本功能模块,这些模块包括(业务模块、人员培养模块、系统开发平台搭建、以及项目开发以外的不可控因素等)。在项目开发计划中,一般计划的是业务功能模块以及人员的分配,计量单位一般是人日。因为量化的过程涉及到以上诸多因素,项目涉及的相关人员在各自的职位上必须经过必要的学习和培养,比如项目管理、项目跟踪监控以及测试规范等。
CMMI量化管理涉及以下几个方面:(1)能够通过客观的说明进展到客观的数字定量分析和控制;(2)一切可控因素都能够用相应的数字表征其质量;(3)质量控制必须深入到每一个模块,而且坚持执行(控制开始、控制进行、控制结束)。
3.1.2开发进度的量化管理
项目开发进度是项目管理的关键要素之一。对项目开发进度进行控制主要包括以下几个方面:(1)实际中的活动的起始时间与结束时间与计划产生偏差;(2)在进度监控时,项目经理按照相应的计划进度定期进行进度会议,并报告进度;(3)掌握进度状况,管理问题和风险。根据实际进度报告,项目经理通过小组实际进度数据,把此作为调整项目的依据。
3.2缺陷预防
软件中存在一些常见的问题是避免不了的,存在问题不是重点,重点是对已发现的质量问题进行消除,在此基础上必须采取切实可行的纠正和预防措施。当然,质量问题的原因不同采取的具体措施也就不同,对一种问题的消除一定要保证不会再发生此类问题。在纠正措施控制程序中,对标准的相关要求突出进行强调,在一定程度上为软件公司采取切实的纠正措施提供了有利的保证。纠正措施实施步骤如下:(1)对发生的问题进行识别和评审。识别和评审质量管理体系各过程输出的成果;(2)分析原因、制定相应措施并进行实施和验证;(3)跟踪验证是监督部门在每项纠正措施完成后必须要做的工作,该部门主要负责评审实施效果的有效性,对其能否防止类似问题的再度发生进行评审。对于预防措施而言,基本上与纠正措施相同。由此可知,预防措施的实施步骤:(1)对潜在的缺陷和原因进行确定,对记录进行及时重点的分析;(2)如果有潜在不合格的事情发生时,对轻重缓急进行确定,且此主要根据潜在问题的影响程度来进行,并且召集相关部门对原因进行分析,从而制定出有效的预防措施;(3)产品部跟踪验证实施效果。
3.3评审
3.3.1评审的目的
评审主要是检查项目的约束、成本、进度和技术等问题。
3.3.2评审的流程
(1)评审策划
PSM(平台相关模型 Platform-specific models)根据项目的进展确定评审的时间、评审的主要内容和通过评审希望达到的目的,确定评审的负责人。将策划的结果一一记录在软件开发计划中。
(2) 评审前沟通
在评审正式进行之前,负责
人应该与参加评审的人员进行沟通并通知SQAL(Software Quality Assurance Leader软件质量保证负责人),确定评审的时间、地点、内容、目标和议程,沟通的方式既可以举行一个会议,也可以通过电子邮件或电话等方式来进行,同时将评审相关的材料提前分发给参加评审的人员,建议参加评审人员在评审前要通过这些材料了解评审的内容,必要时可以向负责人索要进一步的材料。
(3)评审
评审开始后,必要时负责人介绍背景和目标,然后根据议程使用适当的检查表进行评审。当所有的议程都得到了评审,有了明确的结论后,评审负责人向参加评审的全体人员重申对每项议程做出的结论,确保没有歧义后可以结束本次评审。必要时可以安排再次的评审。
(4)评审记录
记录员记录评审的问题和做出的决定,评审结束后,将评审记录和评审问题管理表整理送评审负责人确认后分发给参加评审的所有人员,同时将评审记录归档。
4. CMMI的具体实施
为了适应CMMI的开发规范要求,电信某重点运营支撑项目在开始时组成了电信某重点运营支撑项目开发小组,其中包括CMMI指导小组人员、质量保证人员、配置管理员、测试人员、开发人员。根据实际项目的需要,在CMMI指导小组人员的指导下,参考统一软件开发过程对软件开发流程的内容,针对电信某重点运营支撑项目相关流程管理要求、文档管理要求等过程管理内容进行裁剪,以获取最适合电信某重点运营支撑项目开发管理的过程管理要求。同时根据实际情况,对项目组成员进行过程管理方面的培训,以便于相关规范和流程的准确执行。
科学的体制管理规范,标准的开发流程是项目能够顺利完成的基石。电信某重点运营支撑项目在管理和开发的工作中根据项目本身的实际情况,在项目管理过程中主要计划并落实了以下事务:
(1)体制建设是项目开始的前提,在项目开设初期,我们根据项目特点,结合CMMI进行了开发以及项目管理的体制建设,组织中包括开发工程师组、培训组、质量控制组、项目管理组、业务组等组织结构,各个组织结构由专人负责,成员按其工作特点进行分配。
(2) 公司的培训组在整个开发前期到中期,主要落实组员的CMMI培训,其核心就是项目的标准化培训,使其在项目进行的过程中统一思想,其中包括开发流程标准化,组织分配标准化、文档标准化培训,以及开发代码标准化、QA(Quality Assurance质量保证)标准化等培训工作。
(3)项目在开始阶段进行系统分析,并做出系统开发计划,根据项目特点制定项目里程碑,通过开会讨论,制定出科学的项目开发计划书,其中包括项目进度管理计划,质量管理计划,成本管理计划等。
(4)在项目前期做好文档标准化管理,其中包括工作文档模板以及开发代码文档,开发规约等,尽量在提高工作效率的前提下,保证项目风格的统一。
(5)建立知识库以及硬件管理平台,为开发过程中遇到的技术难题提供技术资源,也为今后的项目开发建立技术共享资源。
在公司领导的领导下,电信某重点运营支撑项目能按照计划有条不紊的进行,并且项目的风险在日渐降低,而且开发过程已经达到CMMI三级水平以上。项目中的其他环节,比如说质量控制管理、风险控制管理、需求分析管理等都已经走向标准化,达到了CMMI标准水平。
在电信某重点运营支撑项目的开发落实过程中,软件的开发过程已经走向了标准化,并且在开发过程中建立了可二次利用的资源库,包括技术库、代码库以及标准文档。
整个过程中虽然遇见些难题,但是都迎刃而解,并且形成了一个可复制的开发流程与管理过程。
5. 结语
软件开发过程中质量与技术和管理有着密切关系。本文主要讨论利用能力成熟度模型CMMI提高软件质量管理的过程和实践。无论是利用哪种技术,在进行软件质量管理时必须从“量化管理”、“缺陷预防”、“评审”这三个方面进行加强。
参考文献:
[1] 李军. 软件项目的质量管理[J]. 项目管理技术, 2009, (S1) .
[2] 金兰. 基于CMMI的软件配置管理研究[J]. 软件导刊, 2009, (11) .
[3] 毕莹, 赵雨濛. 软件项目质量控制过程中工具及方法的研究[J]. 甘肃科技纵横, 2006, (03).
[4] 沈玉宏. 基于CMM软件项目质量管理的研究[D]. 中国优秀博硕士学位论文全文数据库 (硕士), 2006,(08) .
[5] 谈燕萍. 基于CMM的软件质量保证管理[D]. 中国优秀硕士学位论文全文数据库, 2008,(07) .