软件质量工程SQA-7质量管理方法

质量管理体系(QMS quality management system)侧重于必要的战略和策略,以使组织成功实现其质量目标和目的,并提供高质量的产品和服务。作为QMS的一部分,需要有相应的方法和技术。

  • 监测这些战略和战术的有效性(质量成本和投资回报)。
  • 持续改进这些战略和战术(过程改进模式)。
  • 处理在这些战略和策略的实施和执行过程中发现的问题(纠正措施程序)。
  • 防止在这些战略和战术的实施和执行过程中出现问题(缺陷预防)。

质量成本(COQ)和投资回报(ROI)

分析与产品和过程有关的COQ类别(预防、评估、内部故障、外部故障)和投资回报率(ROI)指标。

质量成本

质量成本(Cost of Quality COQ),也称为质量差的成本,是一种组织用来给生产和/或不生产高质量产品和服务的成本附加一个美元数字的技术。换句话说,质量成本是预防、发现和纠正缺陷(不符合要求或预期用途)的成本。质量成本代表的是,如果产品能够被开发出来,或者服务能够在第一时间内被完美地提供,那么就不需要花钱了。根据Krasner (1998),"软件质量成本是一种会计技术,它有助于我们理解交付优质软件所涉及的经济权衡"。因此,进行软件开发、完善性和适应性维护活动的成本不计入质量成本,包括。

  • 需求征询和规范
  • 架构和详细设计
  • 编码
  • 创建初始构建和后续构建以实现额外的要求
  • 将产品的初始版本和后续的功能版本运送和安装到运营中。

质量成本有四大类:预防、评估、内部故障成本和外部故障成本。质量总成本是花在这四类成本的总和。

  • 质量的预防成本是用于防止质量差和缺陷进入产品或服务的所有活动的总成本。质量预防成本的例子包括以下成本。

    • 质量培训和教育
    • 质量规划
    • 供应商资格和供应商质量规划
    • 过程能力评估,包括质量体系审计
    • 质量改进活动,包括质量改进小组会议和活动
    • 流程定义和流程改进
  • 质量评估成本是指分析产品和服务以识别任何确实进入这些产品和服务的缺陷的总成本。质量评估成本的例子包括以下成本。

    • 同行评审和其他侧重于新的或改进的软件的缺陷检测的技术评审
    • 对新的或增强的软件进行测试
    • 分析、审查和测试工具、数据库和测试平台
    • 供应商产品的鉴定,包括软件工具的鉴定
    • 过程、产品和服务审计
    • 其他核查和验证(V&V)活动
    • 衡量产品质量
  • 内部质量故障成本是指在产品或服务交付给客户和/或用户之前,处理和纠正内部发现的故障的总成本。内部失败的质量成本的例子包括以下成本。

    • 废料--已经创建但从未使用的软件的成本
    • 记录故障报告并跟踪它们的解决
    • 调试故障以确定缺陷
    • 纠正缺陷
    • 重建软件以包括修正内容
    • 在修正后重新审查产品或服务
    • 测试修正和回归测试产品或服务的其他部分
  • 外部失败的质量成本是指在产品或服务对外提供给客户和/或用户后,处理和纠正所发现的失败的总成本。外部质量故障成本的例子包括许多在内部质量故障成本中所包含的相同修正成本。

    • 记录故障报告并跟踪它们的解决
    • 调试故障以确定缺陷
    • 纠正缺陷
    • 重建软件以包括修正内容
    • 纠正后重新审查产品或服务
    • 测试修正和回归测试产品或服务的其他部分

此外,质量的外部失败成本包括失败在运营中发生的成本。这些成本的例子包括。

  • 保修、服务水平协议、绩效罚款和诉讼。
  • 客户、用户和/或其他利益相关者因产品或服务停工而损失的生产力或收入而造成的损失
  • 产品召回
  • 纠正性发布和这些纠正性发布的安装
  • 技术支持服务,包括服务台和现场服务
  • 名誉或商誉的损失
  • 客户的不满意和销售损失

为了减少内部和外部故障的成本,一个组织通常必须在预防和评估上花更多的钱。质量成本的经典观点指出,理论上存在一个最佳的平衡点,即质量的总成本处于最低点。然而,这个点可能很难确定,因为许多外部失败成本,如利益相关者的不满或销售损失的成本,可能极难衡量或预测。

上图是更现代的质量最佳成本模型。这种观点反映了越来越多的经验证据,即流程改进活动和预防技术受制于成本效益的提高。这些证据似乎表明,可以用有限的成本达到接近完美的效果(Campanella 1990)。例如,Krasner(1998年)引用了一项对雷神电子系统公司(RES)三年来实施能力成熟度模型(CMM)时的15个项目的研究。在成熟度等级1,软件质量的总成本占总开发成本的55%到67%。当达到成熟度等级3时,软件质量的总成本下降到总开发成本的平均40%。三年后,软件质量的总成本已经下降到总开发成本的15%左右,其中很大一部分是质量的预防成本。

质量成本信息可以针对项目和/或过程的当前实施情况进行收集,然后与历史值、基线值或基准值进行比较,或随时间变化而变化,并与其他质量数据一起考虑,以通过识别低效、无效和浪费的领域,确定过程改进的机会。

评估过程改进活动的影响。为未来基于风险的成本和产品完整性要求之间的权衡决策提供信息。

投资回报率

投资回报率(ROI Return on investment)是一种财务业绩衡量标准,用于评估一项投资的效益,或比较不同投资的效益。"在过去的几十年里,投资回报率已经成为流行的通用指标,用于评估资本收购、项目、计划和倡议,以及股票的传统金融投资或风险资本的使用'' (business-case-analysis.com )。

有两个主要的方程式用于计算投资回报率。

  • 投资回报率=(累计收入/累计成本)×100%(Westcott 2006)--这个投资回报率方程式显示了迄今为止投资回报的百分比。当这个投资回报率的计算结果等于或大于100%时,说明投资有了正的回报,投资已经得到了 "回报"。

  • 投资回报率=((累计收入-累计成本)/累计成本)×100%(基于Juran 1999)--这个投资回报率方程式显示了迄今为止投资回报的利润百分比。当这个投资回报率的计算结果等于或大于零时,就说明投资有了正的回报,投资已经得到 "回报"。

应该指出的是,投资回报率是评估一项投资或比较多项投资的一个非常简单的方法。两个投资回报率方程式都没有考虑到未来收到的金额的净现值(NPR)。换句话说,投资回报率忽略了资金的时间价值。事实上,在投资回报率中根本就没有考虑到时间。例如,以下哪一项是更好的投资?投资A的累计净现金流为75,000.00美元。投资B的累计净现金流为60,000.00美元。两者都需要50,000.00美元的总成本。如果投资回报率计算为((收入-成本)/成本)×100%),投资A的投资回报率为50%,投资B的投资回报率为20%。仅从这些信息来看,投资A看起来是更好的投资。然而,考虑到时间因素。投资A花了五年时间才看到50%的投资回报率,所以它每年平均回报率为10%。投资B只用了一年时间就看到了20%的投资回报率。现在哪个是更好的投资?

另一个问题是,对于组织如何衡量收入和成本作为投资回报率方程式的输入,并没有既定的标准。例如,像管理费、基础设施、培训和持续的技术支持等项目可能被算作成本,也可能不被算作成本。一些组织可能只考虑收入,而另一些组织可能会给一些因素赋予货币价值,如在市场上提高的声誉或利益相关者的善意,并将其列为收入。"那么,这种灵活性揭示了使用投资回报率的另一个限制,因为投资回报率的计算很容易被操纵,以适应用户的目的,而且结果可以用许多不同的方式来表达"(Investopedia.com 2016)。

在使用投资回报率作为财务业绩衡量标准时,必须注意确保使用相同的方程式,对收入和成本进行一致的衡量,并使用类似的时间间隔。在进行投资之间的比较时,这一点尤其重要。

过程改进

定义和描述基准、精益流程、六西格玛方法的要素,并使用定义、测量、行动、改进、控制(DMAIC)模型和计划-执行-检查-行动(PDCA)模型进行流程改进。

标杆管理

标杆管理是一个组织用来识别、理解、调整和采用世界上任何地方的其他组织的优秀实践和流程的过程,以帮助该组织提高其流程、项目、产品和/或服务的绩效。标杆管理可以为管理层提供保证,使质量和改进的目标和目的与其他团队或组织的良好实践相一致。同时,标杆管理有助于确定这些目标和目的是可以实现的,因为其他人已经实现了这些目标。基准的使用可以帮助组织 "跳出框框",并能带来突破性的、进化性的改进。

第1步:第一步是确定基准的内容,即组织要分析和改进的过程、项目、产品或服务。这一步包括评估组织当前做法的有效性和效率、优势和劣势,确定需要改进的领域,对这些领域进行优先排序,并选择首先要进行基准测试的领域。质量认证经理/组织卓越手册》(Westcott 2006)说,"如何选择基准的例子包括系统、流程或做法,这些系统、流程或做法。

  • 引起最高的成本
  • 对利益相关者的满意度、质量或周期时间有重大影响的。
  • 对业务有战略影响的
  • 对市场上的竞争地位有潜在的高度影响
  • 提出最重要的改进领域
  • 如果被选中进行改进,有最高的可能性获得支持和资源。

第二步:标杆管理过程的第二步是建立进行标杆管理研究的基础设施。这包括确定一个提供必要资源的赞助者,并在组织内倡导标杆管理的活动。这还包括确定将实际执行基准测试活动的基准测试小组成员。这个团队的成员应该包括对被设定基准的领域有了解和参与的人,以及熟悉基准设定做法的人。

第3步:为了进行准确的比较,标杆管理小组必须对所选领域的现行做法有一个全面、深入的了解。确定被设定基准的领域的关键绩效因素,并对这些关键因素的当前值进行测量。对选定领域的现行做法进行研究,必要时绘制地图,并进行分析。

第4步:确定标杆良好做法的信息来源。请注意,标杆管理的信息收集步骤主要集中在良好实践上。在软件行业有许多良好的实践。当良好的实践被采用和调整以满足进行标杆管理的组织的确切要求、文化、基础设施、系统和产品时,它们就成为最佳实践。在这第四步中,要进行搜索和分析,以确定所选研究领域中的良好实践领导者。有几种选择可以考虑,包括。

  • 内部标杆。观察组织内的其他团队、项目、功能区或部门,以获得良好的实践信息。
  • 竞争标杆。观察直接的竞争对手,无论是本地的还是国际的,以获得良好做法的信息。这种信息可能比内部信息更难获得,但行业标准、贸易期刊、竞争对手的营销材料和其他来源都可以提供有用的数据。
  • 职能标杆。观察其他执行相同功能或做法的组织,但不在本行业内。例如,一个信息技术(IT)团队可以在其他行业的其他IT组织中寻找好的做法。IEEE、ISO、IEC和其他标准,以及能力成熟度模型集成(CMMI)模型都是可能的信息来源,此外,还可以直接与个别组织交谈。
  • 通用的基准测试。跳出框框看问题。例如,一个想改善的组织。
    • 准时交货的做法,可以参考联邦快递
    • 及时、精简的库存做法,可以参考沃尔玛或丰田的做法。
    • 其产品的图形用户界面(GUI)可能会参考谷歌或亚马逊的网页。
      如果该组织不在这些领域中,也不要紧。

第5步:收集和分析标杆性的良好实践信息。执行这一步骤的机制有很多,包括对目标标杆组织的实地考察,标杆组织提供辅导和指导的伙伴关系,对行业标准或文献的研究,对良好实践数据库的评估,互联网搜索,参加贸易展览,聘请顾问,利益相关者调查,以及其他活动。这一步骤的目标是。

  • 收集关于已确定的标杆领导者的业绩和/或良好做法的信息和数据
  • 评估和比较组织的现行做法与基准信息和数据
  • 识别组织目前的做法与基准信息和数据之间的绩效差距,以确定可能改进的领域和吸取的教训。
    通过这种比较,确定基准在哪些方面做得更好,以及好多少。然后,分析确定为什么基准会更好。什么具体的做法、行动或方法导致了卓越的表现?

第6步:为了使标杆管理发挥作用,从良好实践分析中获得的经验必须被用来实际改善组织的现行实践。要完成标杆管理过程的最后一步。

  • 获得管理层对标杆研究结果的认同和接受
  • 将标杆研究的结果纳入业务分析和决策中
  • 制定一个具体的行动和任务计划,以调整(定制)和采用已确定的良好做法,并通过填补业绩差距将其转化为组织的最佳做法。
  • 试行这些改进行动,并根据已确定的关键因素的初始值(在步骤3中确定)来衡量结果,以监测改进活动的有效性。
  • 如果试点成功,就在整个组织内推广这些改进措施。对于不成功的试点或传播,必须采取适当的纠正措施
    从标杆活动中获得的经验可以被利用到未来标杆活动的改进中。在标杆管理过程的第一步中创建的优先列表可以用来考虑其他领域的改进,当然,随着时间的推移获得更多的信息,这个列表应该被更新。标杆管理必须是一个持续的过程,不仅要看当前的表现,而且要随着行业实践的变化和改进,继续监测未来的关键性能指标。

计划-执行-检查-行动(PDCA)模式

有许多不同的模型来描述流程改进的步骤。最简单的模型之一是经典的计划--执行--检查--行动(PDCA plan-do-check-act)模型,也叫戴明环,或谢沃特循环。

  • 计划步骤包括研究实践的现状,并确定存在哪些机会和/或需求来改进流程。确定优先次序,并选择一项或多项流程改进进行实施。对于每个选定的改进措施,制定一个计划,以确定实施该改进措施所需的具体目标、任务/活动、分配、资源、预算和时间表。

  • 执行步骤是实施该计划。这包括。

    • 识别并让相关的利益相关者参与进来
    • 识别问题或不合格品的根本原因,调查替代解决方案并选择解决方案
    • 根据需要,通过创建和/或更新系统、政策、标准、流程、工作指南、产品/服务和/或指标,实施和测试选定的解决方案
    • 根据需要,开发和/或提供培训
    • 与利益相关者交流变革及其状况。
  • 检查步骤,也称为研究步骤(计划-执行-研究-行动模式),监测和/或测量改进过程的结果,并分析计划实施后的过程,以确定是否达到了目标,是否真的发生了预期的改进,以及是否产生了任何新问题。换句话说,该计划及其实施是否有效?

  • 在行动步骤中,在检查步骤中获得的知识被付诸行动。如果计划和实施起了作用,就会采取行动,并将控制措施落实到位,使整个组织的过程改进制度化,然后为下一次改进重复计划步骤,重新开始这个循环。如果计划和实施没有达到预期的改进效果,或者产生了其他问题,那么行动步骤将确定产生问题的根本原因,并确定所需的纠正措施。在这种情况下,循环就会重新开始,重复计划步骤,计划实施这些纠正措施。行动步骤也可以包括放弃变革。

六西格玛

希腊字母sigma(σ)是标准偏差的统计符号。如图所示,假设是正态分布,与平均值(平均数)相加或减去六个标准差,将包括样本中所有项目的99.99999966%。这就引出了六西格玛质量衡量标准这一概念的起源,即每百万次机会中不超过3.4个缺陷的近乎完美的目标。

  • 比这更广泛的是,六西格玛是一种。哲学,"将所有工作视为可以定义、测量、分析、改进和控制的过程"(Kubial 2009)。

  • 以事实为依据,以数据为驱动,通过重点了解利益相关者的需求、预防、持续改进流程,以及通过实施严格的分步法(DMAIC和DMADV)减少这些流程中的变异量,来消除流程中的缺陷。

  • 企业管理战略,已经发展成为 "实现、维持和最大化企业成功的全面而灵活的系统"(Pande 2000)

  • 收集定性和定量的技术和工具,可供组织和个人从业者用于推动流程改进

DMAIC模型

六西格玛DMAIC模型(定义、测量、分析、改进、控制)是用来改进那些没有达到要求水平的现有流程,这些流程是根据对x的关键要求(x是关键的客户/利益相关者要求,包括质量、成本、流程、安全、交付等)来衡量的,通过渐进式改进。

  • DMAIC模型中的定义步骤确定了利益相关者,定义了问题,确定了要求,并设定了符合利益相关者需求("顾客的声音")和组织战略的流程改进目标。一个改进项目被安排和规划。组建一个致力于改进项目的团队,并为其提供管理支持(负责人)和所需资源。

在DMAIC模型的测量步骤中,当前的过程被绘制出来(如果过程图还不存在的话)。被改进的过程的CTx特征被确定。选择、设计并同意测量这些CTx特性的指标。确定数据收集计划,并从当前过程中收集数据,以确定每个选定指标的基线和变化水平。这些信息被用来确定当前的工艺能力和定义当前工艺的基准性能水平。

在DMAIC模型的分析步骤中,统计工具被用来分析测量步骤中的数据,以充分了解每个输入变量对过程及其结果输出的影响。进行差距分析以确定过程的当前性能和所需性能之间的差异。基于这些评估,问题和/或过程中的变异的根本原因被确定和验证。分析步骤的目的是充分了解过程,以便有可能在改进步骤中确定替代的改进行动。
在DMAIC模型的改进步骤中,要考虑解决问题和/或减少过程变化的替代方法(改进行动)。然后,团队评估每个备选方案的成本和效益、影响和风险,并进行权衡研究。团队就最佳方法达成共识,并制定出实施改进的计划。该计划包括满足利益相关者要求所需的适当行动。对实施计划进行适当的批准。进行试点以测试解决方案,并收集和分析试点中针对CTx要求的措施。如果试点成功,该解决方案将被推广到整个组织,并再次收集和分析针对CTx要求的措施。如果试点不成功,必要时要重复适当的DMAIC步骤。

在DMAIC模型的控制步骤中,新改进的流程被标准化和制度化了。控制措施要到位,以确保改进的成果能够持续到未来。这包括选择、定义和实施关键指标,以监测过程和/或产品,以确定任何未来的 "失控 "情况。团队制定一个项目移交给过程所有者的策略。这个策略包括传播所学到的经验,建立文件化的程序、培训材料和任何其他必要的机制,以保证改进方案的持续维护。目前的六西格玛项目已经结束,团队为未来的流程改进机会确定了下一步。

DMADV模型

六西格玛DMADV模型(定义、测量、分析、设计、验证),也被称为六西格玛设计(DFSS),用于定义六西格玛质量水平的新流程和产品。当现有的过程或产品已经被优化,但仍未达到要求的质量水平时,也可以使用DMADV模型。换句话说,DMADV模型是在需要进化变化(彻底重新设计),而不是增量变化时使用的。

在DMADV模型的定义步骤中,设计活动的目标是根据利益相关者的需求来确定的,并与组织的战略相一致。这个步骤反映了DMAIC模型的定义步骤。

在DMADV模型的测量步骤中,新产品或流程的CTx特性被确定。然后,选择、设计并同意测量这些CTx特性的指标。为每个选定的指标定义一个数据收集计划。

在DMADV模型的分析步骤中,要考虑设计新产品或过程的替代方法。然后,团队评估每个备选方案的成本和收益、影响和风险,并进行权衡研究。团队就最佳方法达成共识。

在DMADV模型的设计步骤中,高层和详细设计被开发出来,这些设计被实施和优化。还制定了计划来验证设计。

在DMADV模型的验证步骤中,新的流程/产品被验证,以确保它满足利益相关者的要求。这可能包括模拟、试验或测试。然后,新的流程或产品设计被实施到运营中。团队制定一个项目移交给流程所有者的策略。当前的六西格玛项目已经结束,团队为未来的项目确定了下一步的行动。

精益技术

虽然精益原则起源于制造过程的持续改进,但这些精益技术现在已被应用于软件开发。Poppendiecks将七项精益原则改编为软件,具体如下(Poppendieck 2007)。

  • 消除浪费
  • 建立质量
  • 创造知识
  • 推迟承诺
  • 快速交付
  • 尊重人
  • 优化整体

浪费是指在利益相关者看来不增加价值,或妨碍增加价值的任何东西。组织必须评估软件开发和维护的时间表,并通过消除不增值的浪费来缩短这些时间表。软件开发中浪费的例子包括。

  • 不完整的工作。如果工作处于部分完成(但没有完全完成)的不同阶段,就会造成浪费。如果一项任务值得开始,就应该在进入其他工作之前完成。
  • 额外的过程。应优化流程步骤,以消除任何不必要的工作、官僚主义或额外的非增值活动。
  • 额外的功能或代码。一个基本的软件质量工程原则是,应该避免 "镀金",也就是说,避免增加额外的功能或 "不错的功能",这些功能不在当前的开发计划/周期内。一切额外的东西都会增加成本,包括直接的和隐性的,因为增加了测试、复杂性、修改的难度、潜在的故障点,甚至是过时的。
  • 任务转换:由于任务转换和其他形式的中断,隶属于多个团队会导致生产力的损失(DeMarco 2001)。
  • 等待。一个过程中的任何步骤如果导致延误,或者导致下一个步骤的人员等待,都应该被重新评估。任何干扰进展的行为都是浪费,因为它延迟了利益相关者对价值的早期实现。
  • 不必要的动作(寻找答案、信息)。额外的不增值的步骤或不必要的审批周期会打断注意力,造成额外的努力和浪费。重要的是要确定到底需要多少努力才能了解到足够的有用信息来推动项目的发展。
  • 缺陷。另一个基本的软件质量工程原则是,为纠正缺陷而进行的返工是浪费。我们的目标是尽可能多地防止缺陷。如果缺陷确实进入了产品,目标是尽可能早地发现这些缺陷,因为此时纠正缺陷的成本最低。

为了消除浪费,可以使用的一种技术是价值流图,它可以追踪一个产品从原材料到使用的过程。通过识别开发和提供产品或服务所需的所有输入、步骤和信息流,绘制出产品或服务的当前价值流。对当前的价值流进行分析,以确定可以消除废物的领域。然后为优化后的流程绘制价值流图,并实施新的流程。
构建质量要求必须在软件中构建质量,而不是试图在以后测试它(这永远不会成功)。这意味着,开发人员要关注。

  • 感知的完整性。涉及到产品的整个体验对利益相关者的影响,包括现在和以后的时间。
  • 概念的完整性。来自于系统概念作为一个平滑的、有凝聚力的整体一起工作。
  • 重构。包括采取这样的态度:随着系统的发展,内部结构需要不断地改进。
  • 测试。在产品进入运营阶段后变得更加关键,因为50%或更多的产品变化发生在产品运营阶段。拥有一个健康的测试套件有助于保持产品的完整性,并有助于记录系统。

通过提供反馈机制,知识被创造,学习被放大。例如,使用短的迭代开发一个大的产品,允许多个反馈周期,因为迭代是与客户、用户和其他利益相关者一起审查的。在整个项目和流程实施过程中,持续使用指标和反思/回顾,可以创造更多的反馈机会。应该教会团队使用科学方法来建立假设,进行快速实验,并实施最佳的替代方案。

推迟承诺意味着尽可能晚地做出不可撤销的决定。这有助于解决在存在不确定性的情况下做出这些决定可能带来的困难。当然,"首先,我们应该尽量使大多数的决定是可逆的,所以它们可以被做出,然后很容易被改变(Poppendieck 2007)。在 "最后负责任的时刻 "做出决定,意味着将决定推迟到不做决定会消除一个重要的替代方案,并导致决定被默认的时候。随着进程的推进,收集尽可能多的信息,可以做出更好、更明智的决定。

快速交付意味着尽可能快地将产品送到客户/用户手中。产品越早交付,就能越早得到客户和/或用户的反馈。快速交付也意味着利益相关者在交付前有更少的时间来改变他们的想法,这可以帮助消除因需求不稳定而造成的返工浪费。

组织和领导者必须尊重人,以改善系统。这意味着创建由参与、思考、技术能力强的人组成的团队,这些人有动力去设计自己的工作,而不是仅仅等待别人命令他们去做事情。这需要强大的、具有企业家精神的领导者,为人们提供一个明确的、令人信服的、可实现的目标;让这些人接触到利益相关者;并允许他们做出自己的承诺。领导者为团队提供愿景和资源,并在需要时帮助他们,而不是接管。

优化整体是关于系统思维。胜利不是在每个阶段都领先(优化/测量每项任务)。有可能优化一个单独的过程,但实际上是对整个系统的次优化。所有的决定和改变都要考虑到它们对整个系统的影响,以及它们与组织目标和关键客户/利益相关者要求的一致性。

纠正行动程序

评估与软件缺陷、过程不合格和其他质量体系缺陷有关的纠正行动程序。

纠正措施是指为消除问题(不合格、不符合要求、缺陷或其他问题)的根本原因,以防止其今后再次发生而采取的行动。能力成熟度模型集成(CMMI)模型的通用目标之一是监测和控制每个过程,这包括 "测量过程或过程产生的工作产品的适当属性......",并采取适的"......纠正措施,当要求和目标没有得到满足,当发现问题,或当进展与执行过程的计划有很大差异"(SEI 2010, SEI 2010a, SEI 2010b)。本章之前讨论的计划-执行-检查-行动、六西格玛和精益改进模型都是可以用于纠正行动以及流程改进的模型实例。
一旦问题被报告,纠正行动就开始了。然而,纠正行动不仅仅是采取必要的补救措施来解决这个问题。纠正行动还包括。

  • 研究和分析一个或多个问题,以确定其根本原因
  • 探讨替代方案,并制定一个计划来消除这些根源
  • 实施该计划,以改善软件产品和/或流程,防止问题再次发生
  • 验证实施情况
  • 验证改进的有效性
  • 分析问题发生时对所生产的产品的影响,并确定这些产品是否可以 "按原样 "使用,是否需要返工/修正,如果已经投入使用,甚至可能被召回。
  • 结案,包括保留质量记录,以备将来分析和管理审查。

如图,纠正措施过程始于对问题的识别。当前产品、过程或系统中的问题可以通过各种来源来识别。例如,它们可以被发现。

  • 作为不合格品或审核期间的其他负面意见
  • 通过建议系统
  • 通过质量行动小组
  • 通过项目、过程或系统实施过程中吸取的教训
  • 通过对一个或多个产品问题进行根本原因分析
  • 通过使用指标识别不稳定的趋势或失控的状态
  • 通过产品验证和确认活动(例如,同行/技术审查或测试)。

纠正措施过程的第二步是为纠正措施指定一个倡导者和/或赞助者,并组建一个纠正措施规划小组。这个小组决定是否有必要采取补救措施,以阻止问题影响组织的产品和服务质量,直到可以实施长期的解决方案。如果是这样,就指派一个补救行动小组来进行必要的纠正。例如,如果正在生产的源代码模块不符合编码标准,补救措施可能是由团队领导根据编码标准审查所有新编写或修改的代码,然后再进行基线化。虽然这不是一个永久的解决方案,事实上可能会导致流程中的瓶颈,但它有助于防止任何更多的发生,直到可以达成长期的解决方案。如果需要采取补救措施,则要适当地实施。对于一个软件产品问题,补救措施通常是纠正直接导致问题的潜在缺陷。补救措施通过消除缺陷对软件过程或产品的质量有直接的影响。典型的补救行动包括

  • 修正产品缺陷,测试修正结果,并对产品进行回归测试
  • 如果产品问题是由运营部门报告的。
    • 在产品的纠正性发布中包括该修复措施
    • 在产品的下一个计划功能版本中包括该修正。
  • 重写/改正流程或产品文档
  • 重写/纠正流程或产品的培训材料
  • 培训或重新培训员工或其他利益相关者

所有纠正措施应与问题的风险和影响相称。因此,可以确定修复问题比不修复问题风险更大,在这种情况下,问题得到解决,不采取任何行动,纠正行动过程就结束了。

纠正行动过程中的第三步是启动长期纠正。如果问题被确定为一个影响最小的孤立事件,那么补救行动可能就是所需的全部。然而,这可能只是消除了问题的症状,并允许问题在未来再次发生。对于一个问题的多次发生,一组问题或影响较大的问题,需要进行更广泛的分析,以实施长期的纠正行动,以减少未来问题再次发生的可能性。如果纠正行动规划小组确定需要长期纠正行动,该小组通过使用统计技术、数据收集指标、分析工具和/或其他手段研究问题并确定其根本原因。对于编码标准的例子,根本原因可能是:。

  • 编码标准已经过期,因为现在使用的是较新的编码语言
  • 新员工没有接受编码标准的培训
  • 管理层没有强制执行编码标准,因此工程师们认为它是可有可无的。

一旦确定了根本原因,团队就会根据他们的研究,开发出解决所确定的根本原因的替代方法。团队分析了每个替代解决方案的成本和效益、风险和影响,并进行了权衡研究,以就最佳方法达成共识。纠正行动计划涉及对控制系统的改进,以避免问题的潜在复发。如果团队确定根本原因是缺乏培训,不仅必须对现有员工进行培训,而且必须建立控制措施,以确保所有未来的员工(新员工、调职人员、外包人员)也能接受适当的编码标准培训。

纠正行动小组还必须分析问题对过去产品的影响。是否有类似的软件产品可能出现类似的产品问题?组织是否需要采取任何行动来纠正在过程问题存在时创建的产品/服务?例如,假设培训是不遵循编码标准的根本原因,所有由未经培训的编码员编写的模块都需要对照编码标准进行审查,以了解问题的程度。然后需要决定是否纠正这些模块或简单地接受它们,并给予豁免。
这一步的产出是一个或多个纠正行动计划,由纠正行动规划小组制定,这些计划。

  • 确定要采取的具体行动
  • 指定负责执行每项行动的人员
  • 指定一个人负责核实每项行动的执行情况
  • 估计每项行动的工作量和成本
  • 确定完成每项行动的截止日期
  • 选择机制或措施来确定是否达到了预期的结果

在评估纠正措施过程本身的效率时,需要考虑的因素包括:。

  • 整个过程或过程中个别步骤的周期时间是多少?问题是否得到了及时的纠正?
  • 流程中是否存在任何瓶颈或过长的等待时间?
  • 过程中是否存在任何浪费?问题是否正在以具有成本效益的方式得到纠正?


那么,纠正措施与其他软件过程的关系如何?每个组织都有正式和/或非正式的软件过程,这些过程被实施来生产软件产品。这些软件产品既包括客户/用户使用的最终产品(例如,可执行软件、用户文档),也包括组织内部使用的临时产品(例如,需求、设计、源代码/目标代码、计划、测试案例)。产品和过程的纠正行动配合如下。
产品修复/纠正。在软件开发过程中,各种V&V过程被用来为这些产品的质量提供信心,并确定这些产品的任何缺陷。一旦产品被发布到运营中,可能会有更多的问题被报告,包括软件运行故障、可用性问题、利益相关者的投诉和其他问题。对这些现场报告的问题进行分析可能会发现更多的软件缺陷。补救性的纠正行动活动采取返工的形式,以修复/纠正软件产品中这些被发现的缺陷。

产品纠正行动。可以对一个或多个已确定的产品缺陷进行根本原因分析。根据从这个分析中得到的教训,一个或多个产品或过程被改进。一个产品改进的例子是重新设计软件结构,以提供更多的解耦,如果问题是由软件的一个部分的变化导致的,对软件的其他部分有不利影响。过程改进的一个例子是改进单元测试过程,因为太多的逻辑和数据初始化类型的缺陷逃到了后面的测试周期或操作中。

过程修复/纠正。在软件开发过程中,各种过程问题也可能被发现,因为这些过程被实施来生产产品。例如,可能会发现额外的、不增值的过程步骤,可能会发现过程无效或低效的地方,或者发现过程文件中的缺陷。系统和过程审计和评估也可能发现过程中的不符合要求。补救措施活动修复/纠正软件过程中的这些个别的、已确定的问题。
过程纠正行动。可以对一个或多个过程缺陷进行根本原因分析。基于从该分析中获得的经验,可以对一个或多个产品或过程实施长期的纠正行动。

缺陷预防

设计和使用缺陷预防流程,如技术评审、软件工具和技术、特殊培训。

与纠正措施不同,纠正措施是为了消除已经发生的问题在未来的重复,而预防措施是为了防止尚未发生的问题。例如,一个组织的供应商Acme遇到了一个问题,因为他们没有被告知组织不断变化的要求。因此,该组织设立了一个供应商联络员,其职责是及时向Acme传达所有未来的需求变化。这是纠正措施,因为问题已经发生。然而,该组织还为其所有其他关键供应商建立了供应商联络员。这是预防措施,因为这些供应商还没有遇到任何问题。促进发展的CMMI在其因果分析和解决过程领域中专门讨论了纠正和预防行动(SEI 2010)。

预防性行动在本质上是主动的。根据ISO 9001和IEEE软件工程标准等标准或能力成熟度模型集成(CMMI)等模型的规定,建立基于行业良好实践的标准化流程,可以通过在整个组织内传播已知的最佳实践来帮助预防缺陷。标准化的过程方法致力于控制和改善组织的结果,包括产品质量,以及过程的效率和效果。创造一种关注员工参与的组织文化,创造利益相关者的价值,以及在组织的各个层面进行持续改进,可以帮助确保人们不仅做他们的工作,而且思考他们如何做他们的工作以及如何做得更好。

诸如风险管理、故障模式效果分析(FMEA)、统计过程控制、数据分析(例如,分析有问题方向的数据趋势)和审计/评估等技术可以用来识别潜在的问题,并在这些问题实际发生之前解决它们。一旦确定了一个潜在的问题,预防行动过程与上面讨论的纠正行动过程非常相似。主要的区别是,行动小组不是识别和分析现有问题的根本原因,而是研究潜在问题的潜在原因。行业标准、流程改进模型、良好实践和行业研究都强调了预防缺陷比检测和纠正缺陷的好处。
由于软件是知识性工作,最有效的预防行动形式之一就是为从业人员提供他们所需的知识和技能,使他们在工作中减少错误。如果人们没有知识和技能来发现自己的错误,这些错误就会导致工作产品的缺陷。培训和在职指导/辅导是传播必要知识和技能的非常有效的技术。这包括以下方面的培训或指导/辅导。

  • 客户/用户的业务领域。这样,需求就不容易被遗漏或定义错误,或在指定后被曲解
  • 设计技术和建模标准。这样,缺陷就不太可能被插入到架构和设计中。
  • 编码语言、编码标准和命名规则。这样,缺陷就不太可能被插入到源代码模块中。
  • 工具集。这样,滥用工具和技术就不会导致不经意间插入的缺陷
  • 质量管理系统、流程和工作指令。以便从业人员知道该做什么和怎么做,从而减少错误

技术评审,包括同行评审和检查,是用来识别缺陷的,但也可以作为一种机制,促进对被评审工作产品的共同理解。比如说。

  • 如果设计人员和测试人员参与到需求的同行评审中,他们可能会获得对需求更完整的理解,防止错误的解释传播到未来的设计、代码和测试问题以及返工中
  • 如果一个缺陷在同行评审中被发现和讨论,那么该同行评审的参与者在开发类似的工作产品时就不太可能犯类似的错误。
  • 没有经验的从业人员,参加专家从业人员工作产品的技术评审,也可以看到高质量的工作产品是什么样子的,并且在以后开发自己的工作产品时,可以把评审的工作产品作为一个例子/模板。

问题预防技术的其他例子包括。

  • 增量和迭代开发方法、敏捷方法和原型设计都会产生反馈回路,这有助于通过验证对利益相关者需求的一致和完整理解来防止错误。
  • 良好的设计技术,包括解耦、内聚和信息隐藏,这有助于防止未来软件修改和/或维护时的缺陷。
  • 良好的V&V实践,在整个生命周期中,防止缺陷向其他工作产品传播。例如,在需求审查中发现并纠正的一个缺陷,如果没有被发现,就有可能成为多个设计、代码和测试案例的缺陷。
  • 软件工具和技术也有助于预防问题。例如,现代构建工具通过自动将内存初始化为零来帮助预防问题,这样,缺少变量初始化代码就不会导致产品问题。
  • 通过使用明确定义的、可重复的流程、标准化的模板和检查表来防止错误的发生,可以防止问题的发生。当从业人员确切地了解应该做什么,什么时候做,如何做,以及谁应该做,他们就不太可能犯错误。核对表可以防止因错过步骤、活动或考虑项目而产生的问题。

预防还来自于对组织内部和其他组织的良好做法进行标杆管理和识别,并将其调整和采纳为组织内部的改进做法。这包括制定基准和举行经验教训会议,也称为项目后审查、回顾或反思。这些技术使组织及其团队能够从别人遇到的问题中吸取经验教训,而不必自己去犯错误和解决问题。

评估预防行动实施的成功,或验证其在一段时间内的持续成功,需要确定被改进的过程的CTx特征。衡量这些CTx特征的指标是作为预防行动计划的一部分来选择、设计和商定的。作为预防行动的一部分,可能被评估的CTx特征的例子包括。

  • 显示质量总成本、开发成本或总体拥有成本下降的积极趋势
  • 显示开发和/或交付周期时间减少的积极趋势
  • 有积极的趋势,显示首次通过率增加(工作产品通过开发而不需要因缺陷而进行修正)和缺陷密度减少。
  • 对团队知识、技能或能力的积极影响
  • 对利益相关者满意度的积极影响

你可能感兴趣的:(软件质量工程SQA-7质量管理方法)