分享到
过程改进漫漫谈之SQA在软件开发成熟度中的作用
 

发布于2011-12-2

 

软件质量保证是CMM(I)的可重复级的定义的数个关键过程域之一。根据CMM(I)中的描述,软件质量保证的目的是向管理者提供对软件项目正在使用的过程和正在开发的产品的适当可视性。

软件质量保证包括评审和审计软件产品和活动,以验证他们是否符合使用的规程和标准,还包括向软件项目和其他的有关的管理者提供评审和审计的结果。

CMM(I)列出了为了满足这个关键过程与的要求所需达到的4个目标:

  • 目标1:软件质量保证活动是有计划的。
  • 目标2:软件产品和活动与适用的标准、规程和需求的符合性要得到客观的验证。
  • 目标3:相关的小组和个人要被告知软件质量保证的活动和结果。
  • 目标4:高级管理者处理在软件项目内部不能解决的不符合问题。

任何组织必须首先认识到软件质量保证对项目的成功起着至关重要的作用,因此,必须建立这方面的基础设施,使它能就项目如何实施软件质量保证提供有效地指南。大多数组织发布全范围的政策以建立这个基础设施。这些政策通常包括以下内容:

  • 对于全部软件项目,SQA职能到位。这项职能通常由兼职或者全职的个人或者小组负责。
  • SQA小组或者个人有一个向高级管理者报告的渠道,它独立于项目经理、项目工程组及其他软件相关小组。
  • 提供足够的资源保证SQA职能被有效贯彻。
  • 向SQA人员提供培训。
  • 向相关的软件工程组提供培训,以使他们了解SQA组的角色和职责,该培训应该包括SQA对组织的价值。
  • 进行测量并将结果用于SQA活动的成本、效益、状态。
  • 高级管理者和项目经理对SQA活动进行定期评审。
  • 独立于SQA组的专家定期评审SQA活动和工作产品。

为理解这一基础设施,高级管理者有责任去建立一个机构,以允许SQA只能在一定程度上独立。在很多不成熟的组织中,缺乏对SQA人员的信任,认为他们扮演的是“过程警察”的角色并向管理层揭发个人的缺点。高级管理者必须灌输这样一个信念,即SQA人员存在的目的是验证与软件项目的符合性。如果一个组织打算在过程的定义、文档和人员培训上投入力量,那么拥有这样一个机制以贯彻所要遵循的过车工是有意义的。第二个信念是履行SQA职责的个人营房收到保护,不由他们所评审的软件项目的管理者对其工作成绩做出评价,对个人来说,有一点非常困难,就是对其顶头上司负责的过程进行客观的评审/审计。SQA审计所产生的负面影响永远不应当将从事SQA工作的人置于尴尬的境地。

SQA基础设施为高层管理者提供这样的信心:有关软件项目过程和产品的客观信息会得以报告。这通常拥有一个独立的SQA小组或者职能来实现,通过对过程和产品的独立评审,管理者将获得以验证过称和产品质量是否符合标准的客观机制。

对于SQA人员来说,获得获得高效率需要特殊的培训。培训应当包括对以下内容的透彻理解:

  • 软件工程技能和实践
  • 软件工程小组以及其他软件相关小组的角色和职责
  • 软件项目的标准、规程和方法
  • 软件项目的应用领域
  • SQA的目标、规程和方法
  • SQA小组在软件活动中的参与
  • SQA方法和工具的有效使用
  • 人际交流

有了对这个基础设施的理解之后,SQA组织必须为他们将在项目中运用的过程制定战略、计划并形成文档。为了使SQA能有效发挥作用,他们必须在项目的早期计划阶段参与进来。重要的一点是,他们需要参与对其他项目计划文档和需求的评审。对于符合CMM(I)2级的SQA关键过程域来说,遵循这些步骤是基本的。

位于CMM(I)2级的典型项目要求SQA评审或者审计生命周期的几个过程。当SQA组织扩展其评审能力时,它也将开始为其许多活动配备工具。检查清单的建立可以简化SQA将要进行的评审,当检查清单变得制度化并被所有项目人员理解后,过程评审工作可能开始向项目人员转移。通过检查清单的实施,组织已经在质量对组织的意义方面进行了教育。

当组织向第3级发展时,过程检查清单在所有项目中都相当常见并随着时间的推移逐步的得到改进。对于一个组织来说,除了同样严格的对工程过程进行独立评审和审计以保证质量外,在进一步建立第3级的SQA标准方面没有真正的“额外的”标准。当管理的基本原则建立后,项目和组织会欣然接纳软件质量保证实践为标准工程过程的一部分,在第3级,还要降软件质量保证活动的结果放入过程资产库,以作为与组织软件质量保证相关的所有历史数据源。有了历史数据,组织就可以考虑对质量的测量。在收集和使用的额外测量数据方面,软件质量保证职能将开始对缺陷数据进行收集和使用。与第2级收集的测量数据联系起来,组织能够理解收集的历史数据并开始使用它。对很多组织来说,对过程展开测量的唯一手段就是进度,因此对于一个希望继续成熟并提高其能力的组织来说,关注量化的质量测量是很重要的。在第3级的组织中,很多测量仍然关注于活动的状态,当组织逐继续其走向成熟的旅程时,测量的焦点将转化为性能。

软件质量管理的目的是发展对项目软件产品和过程质量的量化理解。对于第4级的组织来说,目的是建立质量目标,建立对过程进行量化控制的机制,并最终是现在项目生命周期开始时所预计的目标。重要的是,所建立的目标符合为组织制定的商业目标,而且组织必须制定战略和计划以实现这些目标。组织必须考虑以下几个方面:

  • 组织质量目标的建立
  • 质量测量的定义,阐述组织如何测量向满足质量目标前进的进展
  • 质量计划的开发
  • 收集与分析测量数据机制的建立
  • 量化度量方法的建立
  • 对过程宽容度的理解
  • 对已建立的基于宽容度的过程的管理

确定了这些原则之后,组织可以去实现所建立的质量目标。高层管理者必须参与的主要原因是通过行动激励组织,为了做到这一点,高层管理者通常能理解基于顾客需要的“质量”,因此他们可能能够提出关于什么测量是最合理的真知灼见。如果数字表示的测量没有建立的话,这项工作酒应该在另一次质量改进的开始阶段再次进行。如果情况如此,则质量计划可能不具有持久的影响,但对于那些已经建立数字化测量的组织来说,由于特闷非常关注过程及改进,因此者通常不是主要问题,下面是一个组织可能建立的质量目标:

  • 降低每个阶段的缺陷数
  • 降低影响任务成功的缺陷数
  • 满足客户的进度要求
  • 满足客户的预算要求
  • 降低项目成本
  • 在代码行数/复杂度上提高生产率

在建立组织质量目标后,需要建立测量计划的机制。当定义度量的时候,不必从一个很大数目的度量中收集数据以从收集的数据中获得业务价值,很多组织常常陷入的误区是:他们试图在第4级进行过多的度量。重要的是从可被有效分析的各个独立数据中采集信息以改进组织的过程和产品。选择适当的度量可采用一两个步骤的过程,首先组织需要确定对收集度量来说存在什么业务价值,然后重点在于确定此度量是否会得到项目和管理上的支持。收集的度量应成为过程性能和过程能力的指标。

在选择测量的时候应当考虑以下准则:

  • 在测量软件过程性能时是否使用该指标?
  • 该指标是否是已经存在的度量?
  • 该指标是否有助于项目或者组织理解整个过程能力?
  • 是否很难获得测量结果?
  • 是否组织必须基于复杂的算法来获得该指标?
  • 对测量数据进行自动采集和分析是否简单易行?
  • 收集的数据能否被不同的人重复使用?

一旦一个度量集合建立以后,组织必须将目标和度量联系在一起。这最好通过质量计划的开发来实现,此计划应当关注以下几个方面:

  • 为组织定义“质量”
  • 用测量表现质量
  • 定义客户及其要求
  • 识别并开发满足客户要求的产品特性
  • 定义能够建立产品的过程
  • 制定将此计划付诸实施的策略

有了这些概念以后,必须建立一个机制,它将使组织能够对度量进行收集和分析。显而易见的途径是收集数据的自动化和自动处理过程,但是这又是可能是做不到的,对于组织来说,这方面的工作进行深入思考是重要的,否则这可能成为第4级过程的瓶颈之一。当建立度量的收集机制时,组织需要了解所选的度量是否有助于:

  • 确定对投入的资金来说,节省了多少资金
  • 提高生产率
  • 减少缺陷
  • 降低错误率
  • 减少集成中的问题
  • 降低返工的成本
  • 将客户的要求转化为质量的测量
  • 加快产品进入市场的速度
  • 提高产品质量
  • 提高过程质量

这几点可能是组织在制定测量计划时所考虑的与度量有关的一些目标,关键的一点是建立一种可靠的方法一收集测量数据并能解释测量数据对组织的意义。如果对测量数据的分析没有得到有意义的度量结果,那么应当考虑是否放弃它,测量应当与组织质量目标相关的性能的关键指标。

在几个产品生命周期结束后,历史数据应该可以用来理解过程适应性,通过评价过程适应性,组织应该能够认识到性能测试是否正在开始冲击已定义适应性的界限,然后采用适当的管理行动奖过程纳入到控制中。实际上,组织将通过这些适应性界限对过程质量进行测量,并根据组织的能力采取纠正措施,将过程重新纳入控制之中。对于组织来说,这是非常有价值的信息,因为有足够的数据允许组织给予采集和分析的测量数据对质量进行预测。

走向成熟的质量计划的最后一个方面是要求组织对于给予其采集和分析测量数据的计划进行管理。组织将能够开始回答一些困难的问题,例如,在一个已定义参数的项目中,其特定过程是否趋于历史数据,如果不是的话,偏离的原因是什么?基于管理方式的另一个有待考虑的问题是如果一个趋势的发展时基于被分析的信息,那么是否需要调整过程以改进过程的有效性?在更多数据被收集和分析之后,组织将开始对缺陷的根本原因进行分析,并采用适当的测量以防止其发生。

当组织继续向4级以上发展时,过程的有效性将能够被测量。SQA组织将有能力确定其每一项活动的成本、生产力和质量,在此基础上,SQA组织能够帮助确定那些过程能够被更加高效的过程所取代。基于收集和解释的数据,组织将有能力预防缺陷,并将最终进入有先见性的过程和产品质量计划,而非反应式的计划,这在第一级的组织中相当常见,这些概念确实已经帮助很多组织将质量植入它们的开发和维护过程,与那些在项目中依赖于质量工作帮助发现产品和过程中的错误的组织形成了鲜明的对比。

总之,SQA组织在过程中学习。最初,SQA组织依赖于软件工程组织来帮助理解过程,随着这些过程被定义、文档化和实践,SQA组织拥有了一套机制以验证符合性,以及评价作为项目的一个关键部分得到支持的基础设施。随着时间的推移,质量成了整个组织的一种生活方式,项目生命周期开始以一种比几个生命周期以前更加和谐的方式运转,那时组织才刚刚开始学习如何保证质量。


 
相关文章

由外而内看敏捷软件开发
架敏捷开发中史诗故事与用户
看板任务管理
面向全球化的有效敏捷交付
 
相关文档

统一过程及应用
敏捷过程实践
基于XP/RUP的迭代开发
软件开发过程指南
 
相关课程

IT安全原理、框架与实践
ITIL认证
ITIL Foundation认证培训(ITIL V3 Foundation )
IT规划体系与实践
 
分享到
 
 
     

相关文章
由外而内看敏捷软件开发
架敏捷开发中史诗故事与用户
看板任务管理
面向全球化的有效敏捷交付
小型团队快速开发方法
DevOps,不是一个传说!
更多...   

相关培训课程
统一过程及应用
敏捷过程实践
基于XP/RUP的迭代开发
软件开发过程指南
SCRUM过程实践
敏捷测试-简单而可行

成功案例
某博彩企业 产品经理与产品管理
北京 研发团队与工作管理
广东金赋信息 敏捷开发过程与项目管理
某支付平台 软件配置管理与发布管理
富士 软件外包项目管理与进度管理
塞孚耐 基于Scrum的敏捷开发
更多...   
 
 
 
 
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号