1 前言
1.1 目的
作为项目开发过程中的 SQA ,我们只有通过开发项目的整个过程,来认识 SQA 的作用,来真正了解 SQA 的工作,知道 SQA 的目的是协助软件工程(开发)小组获取高质量的软件产品 , SQA 是通过过程控制来协助提高质量 。
了解 SQA ,这同时也是作为一个项目经理所必然要掌握的知识要点之一。
1.2 基本知识
软件质量保证( Software Quality Assurance ,通常缩写为 SQA )
SQA 的 措施主要有,基于非执行的测试(也称为复审)、基于执行的测试和程序正确性证明。复审主要用于保证在编码之前各阶段产生的文档的质量;基于执行的测试需要 在程序编写出来之后进行,它是保证软件质量的最后一道防线;程序正确性证明使用数学方法来严格验证程序是否与对它的说明完全一致。
参加软件质量保证工作的人员,可以分为下述两类。
Ø 软件工程师通过采用可靠的技术方法和度量、进行正式的技术复审以及完成计划周密的测试来保证软件质量。
Ø SQA 小组的职责是,辅助软件工程小组以获取高质量的软件产品。其从事的软件质量保证活动主要是计划、监督、记录、分析和报告。简而言之, SQA 小组的作用是,通过确保软件过程的质量保证软件产品的质量。
摘自《软件工程》
从以上这些方面可以说明: SQA 小组并不负责生产高质量的软件产品和制定质量计划,这些都是软件开发人员的工作。 SQA 组织的责任是审计软件经理和软件工程组的质量活动并鉴别活动中出现的偏差。
2 SQA 的工作
2.1 文档把关
文 档的编写,是软件开发过程中最关键的问题,可以说,文档编写是开发人员很头疼但又不得不执行的一件事,实际情况中,开发人员不仅仅要明白文档的编写更要了 解文档所要执行的目的,要自己看得明白,不止是说当前看得明白,要保证以后相当长的一段时间内也可以;更要让开发小组的开发协作人员和将来的维护人员还有 可能是用户的验收人员能了然,让他们也能尽快明白。
所以,文档务必编订完整,清楚,细致,一个好脑瓜,不如一个烂笔头,说的就是这件事。
编写中文档一定要进行把关。对于文档的把关,从文字和技术两方面同时进行。每方面都应严格执行,一般程序人员认为是文字方面不重要,实际上文字和技术就如同人的脸面和人的身体一样,不可分隔,文如面技如体,应认真的同等对待。
对于文章内容的实质的重要性,在这里就不再一一进行说明。
对于设计文档的技术的重要性,就如同精神的精髓,一家大户的门窗,正所谓点睛之笔,差之一厘,失之千里。设计时当把握好文档的度。
对于关键文档的把关,一般通过专门评审会来正式执行。
2.2 过程控制
2.2.1 阶段评审
SQA 在重要的阶段(立项、需求、设计、编码等阶段)以评审会集体评审的方式进行阶段评审,进行阶段把关。为保阶段质量,有权完全不通过,完全返工;有条件通过,修改完毕后进入下一阶段;完全通过等三种权力。
评审会由文档专家、技术专家、业务专家、管理专家及其他方面人员组成,主要任务是保证软件工程项目组的活动与预定义的软件开发设计过程一致 , 确保软件过程在软件产品的生产中得到遵循。
要保证每一个阶段中的产品是高质量的,防止产品出现问题,过程扩大、功能遗漏、过程失控等。
2.2.2 过程审计
SQA 人员在软件开发的过程中必须全程参加,跟踪执行过程中各细节的审计,对整体过程,按计划好的项目规范逐一进行跟踪监控:记录工作的过程和结果 , 写入报告,发送给相关的人员。
SQA 将对项目经理、系统分析员、程序员、测试经理、测试员的工作过程进行审计, SQA 有权与高级管理者进行直接沟通, SQA 报告(品质建议书),可以不通过管理者,直接发送给相关的开发设计人员。
2.2.3 过程问题处理
对于 SQA 在过程中发现的问题,要即时分析问题的出现对产品的影响,即时提出修改和改进建议。将问题解决在出现问题的萌芽阶段。
3 SQA 同开发小组的交互
在实际开发过程中开发人员总是感觉到 SQA 不亲自进行开发,编写代码,却对自己做的东西指手划脚,心中有很强的抵触情绪。
这种想法有明显的误会, SQA 人员本身并不进行具体的开发工作,但 SQA 却了解高质量的产品如何产生的过程, SQA 要对设计开发过程的质量进行控制或监督,检查工作是否在合理的控制和预定的过程中进行的, SQA 必须保证开发的过程是高质的,从而加强开发设计的整体质量。这是由 SQA 本身所担负的职责的决定的。在处理这些关系的过程中要注意的是:
一个产品最终的质量,是由多方面来最终决定的,过程控制是其中重要的一环。
3.1 日常进行的工作
3.1.1 阶段输出检查
协助开发团检查工作中的遗漏,比如在某一阶段是否对文档进行了更新,是否进行某种必要的更改,防止出现捡了芝麻,丢了西瓜的事情。
3.1.2 质量体系培训
开发人员在学校中可以说全部学习了《软件工程》这本书,但现在又有多少人真正了解“软件工程”, SQA 的一个职能就是对新的团体人员进行必要的软件的过程培训,理论和实际相结合,而不只是用于纸上谈兵。
3.1.3 过程审计
在阶段设计过程中, SQA 有责任进行审计,便于提前发现问题,并于阶段中就将问题直接提交,减少返工。
在同时,这个过程是开发人员和 SQA 人员冲突尤为严重的地方:项目经理在催进度; SQA 却说质量不行必须重来或要求大片量的细节修改,这时越是接近扫尾就越是急于进度,有些开发人员就开始以牺牲质量为代价追赶进度,无异于饮鸠止渴。这是明显的拔苗助长式的错误。项目经理所要求的进度,是以保证稳定的质量为前提来提高进度的,不然到阶段审核时,将要面对的是 SQA 人员或其他人员审计发现的质量问题,而开发人员面对的就是返工的问题,一味为进度而放忽视质量付出的代价才是巨大的。
3.2 阶段和过程分析
在这个阶段所要做的就是定期(每周 / 每阶段)分析当前情况,提供项目进展监控报告给项目经理及需要了解质量情况的人员。
4 SQA 工作的问题
要良好的开展 SQA 工作,必须进行以下前提进行保障
1. 存档已经明确的文档,规范化和制度化,做到有据可查,有据可依
2. SQA 必须是经过认真筛选的, SQA 必须要掌握质量体系和一定的统计学的知识并要有多年的实际的运作经验, SQA 人员必须能抓住问题的重点和本质,概念清楚,目的明确,不能在工作当中同被审计人员进入无休止的讨论,而阻碍正常工作的开展。
3. 全员质量管理体系思想明确,明确质量管理的重要性,严格把关,不能变为上有政策下有对策的局面,质量管理流于形式。要有全员品质管理的意识,保证每一阶段的质量,不能把不合格的中间问题产品带到下一阶段去。
4. 明确 SQA 同开发人员的共同目的是为了提高产品质量,早日完成项目的开发,人员的关系相当于录入和复核的协作关系,而不是对抗关系 ( 没事找事者、挑刺者 ) 。保证质量不光是 SQA 的负责,也是开发人员本身的责任,不能由于 SQA 的出现,放松自身的质量意识。
5. SQA 人员的工作与软件开发工作是紧密结合的,需要与项目人员沟通。因此 SQA 人员与项目人员的合作态度是完成软件质量保证目标的关键,如果合作态度是敌意的或者是挑剔的,则软件质量保证的目标就难以顺利实现。
5 小结
本人作为 PM ,通过项目同 SQA 打交道可以说有一段时间了,从最开始的不理解不合作,到现在的共同理解并寻求主动合作的过程中,加深了对 SQA 的认识。
我从个人的角度来讲一讲我所认知 SQA ,使更多的人了解 SQA 的工作,从而加强开发人员同 SQA 的无间的合作,共同提高产品的质量和项目的完成。
6 参考
《软件工程》
何晓源 王慧文:如何实施 SQA