近期,由于公司需要,我从IST中出来进入了SQA团队,当然是part-time的;以前公司也有推行过一段时间的SQA,是由测试部门的同学兼任的,但是实施效果很差,基本上形同虚设;这次我们研发中心打算自己来推行,SQA成员也由研发中心的同学兼任;
仓促的准备之后,我们进行了第一个项目的试点,但是由于该项目远比普通的小项目要复杂得多,大项目下有很多小的子项目,各子项目进度完全不一样,项目计划模板也不一样,有些是基于实施过程的,有些则是基于具体任务的,所以搞得是相当的混乱;幸好后来项目成员在一定程度上达成了一致,实施到现在应该说还是有一定效果的,当然,我们也趁此机会进行了很多的经验总结,以便于后续更好的推广;
下面就结合现实情况,谈谈现阶段我对SQA的理解:
1、SQA【Software Quality Assurance】来源于CMM中的一个KPA,其主要的职责是:确保过程被正确的执行;与之相关联的还有另外一个工作组SEPG,他主要是负责对软件开发生命周期内的各个过程进行裁剪,以适应不同公司、不同项目组的实际情况,制定相应的过程标准,并不断实施过程改进;那我们阿里软件的SQA到底是怎样一种职责呢?我们是兼任了二者的工作,我们既负责指定相应的过程规范、模板,也跟踪过程是否被正确执行,并且在跟踪过程中发现问题,解决问题,从而进一步改进过程;当然,我们不需要像CMM认证那样专业,最主要是切合我们自己的实际情况,以结果为导向;
2、SQA在跟进项目过程中,到底要做什么事情?归纳起来的话就是:审计过程;主要有几点:
其一是配合PM/TM完成对项目计划的评估,提前发现风险;
其二是在过程执行中发现并报告实际与计划之间的偏差部分,可能体现在过程delay、变更、产出物不合规范等;
其三是跟踪发现的问题,并配合PM对发现的问题进行解决,若解决不了,则报告给上级;
其四是在项目跟进过程中也要不断改进自身的相关过程规范、模板等;
其五是要对项目的执行情况进行量化,并对相关数据进行分析,以便于对过程优化提供数据支持;
3、SQA在跟踪项目过程中,有何Power?其实第2点已经提到了,SQA只负责审计和报告,他对过程负责,最终的项目执行情况由PM负责;这也就类似于交警和协警的关系,协警是没有权利开罚单的,但是可以帮交警分忧,看到一些交警没看到的事件;也就是说,SQA是来support PM的,而不是来给项目成员找茬!
以下还整理了一些典型的对SQA的误解:
Q:软件质量保证人员对软件产品质量负责?
A:软件质量保证人员一般只对软件过程质量负责,如果一个项目按照既定的过程完成了开发工作,没有发生偏离,软件质量保证人员就算尽到了职责,他的价值主要体现在过程质量上而不是最终的软件产品质量上。
Q:软件质量保证人员对软件工作产品的审计包括发现其中的技术问题?
A:软件质量保证人员对软件工作产品的审计主要是针对过程,例如是否采用过程所规定的模板,所有必要的内容是否都具备等,而不是关注技术问题。
Q:软件质量保证人员要负责解决所发现的质量问题?
A:软件质量保证的最大作用是发现问题,提供可视性,而不是解决问题。软件质量保证人员发现问题后,必须提交到相关责任人那里,由相关责任人给出解决方法并予以解决。软件质量保证人员只是跟踪问题直至得到解决。如果在相关责任人处无法得到解决,则将问题提交给项目经理。如果仍然无法解决,则提交给高层经理。这样一层层提交,直到问题有了结论。至于最终的结论是解决问题还是暂时搁置问题,由做出决策的人员对此负责。如果要求软件质量保证人员负责解决质量问题,他就可能陷入其中,失去了软件质量保证人员最为宝贵的独立性与客观性。
Q:软件质量保证人员是专门监督项目组成员的?
A:软件质量保证人员不是监督项目组成员的,他只是从第三方、客观的角度将项目组的情况反映给管理者,让管理者了解项目与规定过程之间存在的偏差。如果软件质量保证人员将自己放到项目组的对立面,专门去找项目组的毛病,那么项目组成员就可能将真实问题隐藏起来,使问题无法得到解决。软件质量保证人员对项目组是有帮助作用的,他要帮助项目组提高开发和管理活动的规范化、标准化,发现问题时,要首先在项目组内解决。