技术开发 频道

软件企业质量保证的基石

    3.QA、QC的良性协作

  通过以上分析发现,SQA和SQC虽然主要的工作都是为了保证软件的质量,但是着眼点不尽相同。

  SQA通过控制过程来保证软件产品的质量,而SQC是通过控制每个阶段的“结果”来保证软件产品的质量。
 
  如果在软件开发过程中我们只要SQA或者SQC是否可以保证软件产品的质量那?答案一定是不可以的,通过下面的分析我们看看原因到底是什么。
 
  软件企业中只有SQA的角色

  如果企业中只有SQA的角色而没有SQC,我们假设企业对SQA的投入力度很大,于是企业得到了一个很好的流程(生产线),但是这个时候软件的产品是否就没有问题了那?如果我们的生产源头没有得到有效的控制,进入生产线的材料是残次品,那不管我们的流程控制的多好,那最终的产品的质量都不会高。

  可能有朋友会说,如果我进行了很好的流程控制,对原材料的控制方法当然也纳入到了我们的流程之中,原材料没有了问题,那这件事情是不会发生的。

  如果是制造业,这件事情可能会存在,但是在软件产业中,这件事情几乎不会发生。因为在软件产品的开发过程当中,几乎所有的原材料都是自己生产的,如需求规格说明书、概要设计、详细设计等,单靠过程的控制无法得到无缺陷的“原材料”。由于软件开发的固有特性,我们在每一步的生产加工过程中,都会引入新的缺陷,不管我们的流程规划的多么完美。所以,在每一阶段完成后,都需要对上一阶段的工作产品进行检验,评估这个阶段的工作产品是否符合预定的质量要求,只有这样才能保证最终软件产品的质量。
 
  软件企业中只有SQC的角色

  如果企业当中只有SQC而没有SQA的角色,我们也假设企业对SQC的投入力度很大,在每一个阶段SQC都找出了相应的缺陷,这时候企业的质量保证是否就没有问题了那?
   
  如果纯从质量保证的观点来看,在理想情况下,上述的软件企业的质量的确是没有问题,因为在每一个阶段,通过大量专业SQC(测试)的努力工作,找出了软件产品中的“全部”缺陷,这样的产品的质量当然没有问题了。
   
  但是我们从另外一个角度看一下这个问题:首先软件中的缺陷在理论上是不可能被全部找出来的,由于软件测试的不可遍历性。其次,如果我们维护一个上述的软件测试团队,成本是相当高的,目前国际上还没有那个商业性的公司能够维护的起(微软的产品还会有大量的缺陷),也就是说在实际操作过程中几乎没有公司会同意上述的做法。另外,如果我们在软件生产的过程中,只单一的强调对结果的检验环节,而忽视过程控制,会造成持续的返工、极大的推迟交付产品的日期,最终造成软件开发的失败。这样的做法就像我们想减肥,不是去节食、多做运动,而是去不断的称体重想达到减肥的目的一样可笑。所以,我们想提高软件的质量,不是持续不断的进行测试,而是要改变软件开发的方式,改变我们的流程,在过程中保证软件产品的质量。
   
  通过以上分析发现,如果想有效的保证软件产品的质量,SQA和SQC缺一不可,两种角色必须相互配合,在“过程”和“结果”都正确的基础上,才能有效改善软件产品的质量。

    4.质量的持续改进

  软件质量的提高,过程的改进是一个循序渐进的过程,不可能一蹴而就。针对软件企业而言,如何调配有限的资源,针对质量保证的短板,来有针对性的做出质量改进的规划才是企业迫切需要解决的问题。
   
  首先,企业必须对软件质量的保证提出切实的目标,质量保证的目标绝对不是为了过级,拿到认证,这些只是附带的结果。企业质量保证的目标应该是提高产品的竞争力,重塑企业的文化。
   
  其次,在质量保证的技术层面,SQA人员和SQC人员的互动,会为企业选择质量保证的短板提出建设性的意见。
   
  SQC(测试)人员在工作过程中会产生出大量的过程数据,SQA人员通过对这些数据的统计分析,发现企业的问题所在,进而反馈到流程的改进活动中,再通过SQC人员搜集的大量数据来验证流程改进的有效性,最终达到质量的持续改进。
   
  质量是企业的根本,不管我们现在的产品销售情况如何,企业之间的竞争早晚会过渡到质量的竞争上来,所以只有我们自己练好内功,才有希望打造出我们自己的百年老店。

0
相关文章