金融咨询网近期会进行系统维护,短暂的等待是为了更稳定的服务,感谢您的支持。
  • 快捷搜索
  • 全站搜索

从缺陷管理说安全生产

2015-08-31 16:37:24作者:中国银行软件中心 徐加星编辑:金融咨询网 赵洋
对于软件产品而言,软件缺陷是导致系统出错、失效甚至崩溃的潜在根源。如果我们建立健全产品缺陷发现、分析和纠正机制,优化生产过程,提高员工质量素养,提高组织产品的质量水平,我们就能显著减少生产事故。

对于软件产品而言,生产事故往往与产品缺陷密不可分。每个生产事故背后都关联着一个或者多个产品缺陷;每个产品缺陷都可能引发一起生产事故。软件缺陷是导致系统出错、失效甚至崩溃的潜在根源。如果我们建立健全产品缺陷发现、分析和纠正机制,从缺陷入手,分析、挖掘和预测潜在缺陷,我们就能显著减少生产事故;同时,基于缺陷分析和缺陷知识库,我们能够优化生产过程,提高员工质量素养,提高组织产品的质量水平。本文基于企业的软件生产过程实践,阐述了缺陷管理的主要作用和相关方法。

一、缺陷是安全生产的指示器

        缺陷数据是优化生产过程的重要依据。缺陷是如何注入的? 缺陷是如何发现的? 注入过程分析结果可以帮助我们总结出预防措施,优化生产过程。缺陷发现分析结果可以帮助我们制订更加有效的质量保证措施,优化质量保证及控制过程。缺陷分析结果还是组织过程优化的重要输入,利用缺陷分析结果,我们可以优化缺陷估算模型、修正缺陷分布基线,提高企业的缺陷预测和去除能力。具体来说,缺陷注入一发现分析的作用有以下两个方面。

        1.降低组织缺陷注入水平。缺陷注入及来源分析告诉我们该缺陷引入的主体、阶段、模块及缺陷的类型等。通过缺陷注入分析,根据“二八原则”,我们可以分析出缺陷引入的主体特征、主要阶段、主要原因、涉及的工具和方法以及管理流程,拟定相应的工作指导文件,优化生产过程。同时,根据问题出现的原因,可以深入挖掘缺陷因素的影响范围,有针对性地采取代码走查、分析和测试手段,更高效地发现其他隐藏缺陷。

        缺陷注入分析的结果可以应用于各个层面,例如:主体特征分析的结果将会告诉我们在一个技术条线中,不同级别开发人员经常会出现的错误和问题.初级人员经常在编程规范、变量赋值、编程习惯等方面犯一些错误;中级人员经常会有一些由于代码拷贝复用而引起编程疏忽;高级人员有时候由于对业务需求的理解存在差异会造成一些程序问题等等。根据这些分析结果,我们可以把缺陷编制为情景培训手册(初级)、情景培训手册(中级)、情景培训手册(高级),在组织中分别针对不同的培训对象进行交流培训,提高编程的质量意识和素养,降低组织缺陷注入水平。针对某阶段中经常出现的典型缺陷及其注入原因,我们可以编写阶段工作指南文件,在阶段开始及执行过程中,进行相关人员培训,降低阶段缺陷的注入水平。

        2.提高组织缺陷发现及移除能力。缺陷发现分析可以告诉我们哪些人、环节、手段发现了最多的缺陷;哪些手段、环节、方法没有发现足够多的缺陷。通过缺陷发现分析,根据“二八原则”,我们可以分析出缺陷发现的主要机制和方法,形成组织级通用的指导手册,强化、推广缺陷发现的有效方法、手段。同时,对于那些缺陷发现有效性低的环节,可以分析其原因,进行调整和改进,提高组织过程的缺陷去除率。

        我们可以根据缺陷发现分析结果编写质量保证过程指导手册;建立针对特定复查对象的复查指导说明书及复查项列表,指导相关质量保证人员更充分有效地发现产品缺陷;在质量保证各个过程阶段,推广使用有效的工具和方法,进行相应的培训和指导,提高各阶段的缺陷去除能力,提高组织的质量保证及控制水平。

        具体在某产品的开发过程中,我们根据缺陷分析结果也能进行过程改进,效果良好。例如:在A产品系统测试中,根据缺陷模块分布分析结果,发现一些模块由于业务逻辑复杂性较大或者初级人员经验缺乏,程序缺陷比较多。针对这些特点,我们加大了相关模块的代码走查力度。在B项目测试中,发现某交易的一个问题是由于在页面端和服务端交易类型定义不一致引起的,根据该缺陷引入原因分析结果,我们复查类似交易,使一类缺陷问题能够集中暴露和修改。

        业界缺陷引入和移除分析的一个典型模型是DRE模型(Defect Remove matrix),该模型统计软件生命周期各阶段引入和移除的缺陷,计算系统的缺陷移除率DRE(Defect Removal Efficiency),分析这些缺陷移除手段(走查、评审、测试)的有效性,进而分析原因,进行工作修正。同时根据引入缺陷的阶段,分析缺陷主要来源,优化工作流程,减少这些环节的缺陷引入数量。

二、缺陷是安全生产的调度员

        在产品开发测试过程中,可以根据缺陷数据分析结果,调整开发测试相关资源、调整代码复查等质量保证过程以及测试轮次安排。以下是根据缺陷数据调整项目开发工作安排的两个例子。

        1.测试人员调度。某产品的内部测试阶段,项目中出现了较大的人员变动;参与测试的外员入职时间不足一个月,对于人员能力不摸底、不熟悉。在测试组织过程中,我们基于缺陷暴露情况及分析结果,进行测试工作的动态调整。

        经过第一轮内部测试,我们对不同测试人员的问题测出率进行了跟踪分析(问题测出率:发现的有效问题数/执行案例数)。我们发现有些人员的问题测出率很高;而有些测试人员的问题测出率很低,甚至不到最高水平的1/10。

        针对这种情况,我们采取以下应对措施:对测出问题率较低的测试人员加强了业务知识沟通和辅导;从测试技巧、技术知识、业务知识等方面对部分人员增加培训指导;细化操作案例的操作描述,弥补测试人员水平问题导致的问题测出率偏低的情况;第二轮测试中,按照在第一轮的测试水平区分,对测试人员进行交叉调整。

        2.测试工作调整。在某项目两轮内部测试中,我们分析了各类缺陷分布及其收敛性(第二轮缺陷数/第一轮缺陷数),结果发现:编码错误类29%,操作错误类24%,迁移类0%,案例编写类52%。以上数据说明:测试案例质量还有待提高;迁移类缺陷修改很彻底;测试人员操作水平有较大提高,编码缺陷收敛也较好,但是缺陷绝对数(97)仍较多。针对以上缺陷分析,项目组采取了以下应对措施:需要增加测试轮次;改进案例质量,进行案例走查修改。

三、缺陷是安全生产的红绿灯

        缺陷预测分析是上个世纪70年开始发展起来的一个软件测试方面的重要研究方向。预测的主要目标是告诉我们系统可能隐藏着多少缺陷、还有多少潜在缺陷等问题。

        目前存在各种各样的预测模型,大致可以分为静态预测模型和动态预测模型。通过软件规模、软件复杂度等度量元进行的缺陷预测属于静态预测,很多软件生产组织基于量化管理要求建立的缺陷预测模 型多为静态预测模型。但是缺陷发生与项目开发人员、测试人员、项目复杂性、项目实施过程及其运用的工具方法等具有密切联系,具有很大的项目特殊性。单纯通过静态预测模型与项目实际缺陷数据往往有较大差异,必须有一些动态的预测手段进行补充。例如,前面提到的测试轮次收敛性分析就是一种缺陷动态预测手段。下面简单介绍捕获一再捕获模型也是一种动态预测方法。该模型是通过前序环节发现的缺陷,在后续测试环节中再次发现的比率,来判断后续测试是否充分。例如:我们已知系统中存在100个预埋缺陷,经过下一轮测试之后,发现了200个缺陷,其中65为预埋缺陷,那么我们可以判断该轮测试的缺陷发现率在65%,系统中仍然潜伏着大约200/0.65—200=108个缺陷(含35个未被发现的预埋缺陷)。

        业界缺陷预测模型还有COQUALMO模型、Bayesian分布模型、指数分布模型、S曲线模型等。软件企业必须建立适用的缺陷预测工具和方法,在产品投产之前,预测产品潜在缺陷水平,判断该产品是否满足投产要求。

四、缺陷知识库是安全生产的指导员

        缺陷是企业生产过程中的副产品,也是财富。软件生产的直接目的是生产产品,但是缺陷数据中蕴合的经验、教训却是指导后续生产过程最宝贵的财富之一。

        失败孕育成功、缺陷指导正确。作为软件生产企业,建立和管理自己的缺陷知识库,并按照技术线、产品线、缺陷类型、缺陷原因、缺陷实例等要素进行细致详细的记录和管理,作为员工后续在设计、编码、测试中的参考资料,其指导作用将特别巨大。缺陷知识库能够显著提高员工的质量意识、质量水平,降低缺陷引入水平,提高组织缺陷发现能力,从总体上降低组织的质量成本,提高产品系统的安全性。

(文章来源:《金融电子化》杂志)

扫码即可手机
阅读转发此文

本文评论

相关文章