SQA真的能提高软件质量吗? SQA到底需要做什么?SQA应该怎样去提高软件质量?我们到底需要什么样的SQA? 相信这些问题是企业高层想引入QA机制一直犹豫的问题.当然,也是我们SQA整个社会团队思考和关心的。那么,QA是否真的可以提高软件质量?QA如何提高软件质量?下面以我这几年的工作经历做一些总结与大家分享,共同进步!!如果您能从这里面得到一丁点有用的东西,我想我同样会很开心。 1.SQA真的能提高软件的质量么? 在我看来,SQA对软件质量的保证有一定的促进作用,同时对于流程的控制,在一定程度上保证了软件的质量和进度,但SQA不能直接提高软件质量,特别是对某个项目的软件质量提高没有必然的直接关系。 软件质量的提升是全体项目组成员共同努力的结果,不是某一个人或者某一个部门能保证的。一直以来,行内普遍认为产品质量应该由测试部门来负责.如果产品质量有问题应该问责测试部.后来QA部门的出现,将这种责任推至到QA,既然SQA是软件质量保证,那么,产品出现问题是你SQA没有把好关,没有把产品的质量保证住.而QA同样感觉很冤枉,在进度和质量碰撞时,项目总是让位于进度;QA按照各个环节的标准执行时总是遇到很强的阻力,有时候甚至高层特裁通行;有时候只是某些部门的附属等等造成QA在公司地位不高.很难推行.所有这一切,造成软件质量止步不前,大家相互推诿.特别是一些大企业.外表看起来还不错,其实内部流程的不顺畅已经是行内不公开的秘密.当然这也和国内的软件开发大的环境有关.可以说国内大部分企业目前都还是处于个人英雄主义的作坊式开发.当一个企业规模达到100人以上时,很多企业将会面临一个管理混乱,沟通不畅,部门推诿,计划不强,项目延迟等等问题.说到底,是企业内部管理,部门沟通协调的问题.沟通和协调的成本在突破100人的时候迅速增加.但有时候并不是很有效,相反,大家都感觉很累.总有解决不完的问题.追根求源,是没有形成制度化,即沟通协调的制度化,流程化.只有这样才能达到沟通的有效性.也是说,企业大了之后,面对项目管理种出现的各类问题,肯定是沟通的问题,要想有效沟通要逐步建立起软件开发周期内的各种流程制度. 通过流程制度逐步在企业内部完善员工的责任心,激情,成感和有效协作―――终实现全员的质量管理。 当然,流程和制度是死的,我们要不断反思和改进我们的流程,使其符合我们企业发展的需要.如我们的软件质量倒退,整个开发团队应该反思――我们做出的软件质量为什么这么低?没有很好的执行流程,还是流程本身有问题;是技术达不到水平,还是整个组织级开发能力有问题。而其这个过程目前来看,很多企业做的并不是很好,可以说基本也没怎么做!所以我们的软件质量总是重复以前项目的缺陷 2.SQA要保证什么?SQA能提高什么? 在此我想提供两张实际项目的图来供大家参考: 一:某项目的BUG趋势: 二:某项目的BUG趋势: 从这两张图我们可以预测Y2项目的质量肯定要比Yalta差,成本应该比Yalta高。因为Y2的缺陷分布从系统测试才开始提升,而Yalta在前期发现很多。而缺陷发现的越早,成本越低的道理在此我不想再多说了!!!为了更清晰的说明SQA要保证什么?我想再举个图表: 这张图是CMMI级别对应缺陷的分布,级别越低,缺陷的峰值越靠后,成本越高,相反,级别越高,越能早的发现问题,成本降低。 A.保证项目的整个开发周期中,各个阶段发现缺陷的分布曲线符合公司的缺陷分布标准。是SQA第一个重要的职能。 为了更进一步的阐述上述观点我想再具一个例子: 为什么功能模块不多的小型项目质量容易保证,而模块多达50多个模块的软件质量不容易保证。如下图: 上图是我列举的美国软件的发展历程。经历了五六十年代的个人开发,七八十年代的团队开发,九十年代到目前的产业化开发历程。由初的汇编开发,嵌入到昂贵的家电行业的小范围需求,到目前软件深入到社会的各行各业的大量需求。特别是为适应大型项目的软件开发,分工越来越细,质量要求越来越高。但是不管在那个阶段,对项目的可控一直是我们的追求:在个人开发阶段,个人能力直接决定了软件质量和成本的高低,在团队开发阶段,软件质量和成本由团队的能力来决定,到产业化开发的时候由组织级的能力来决定。 B.因此:保证组织级的开发能力的持续改进是SQA的第二个重要职能。 为了达到开发能力的持续改进,SQA应该做些什么? 我个人认为SQA的工作思路有两种: 第一:以过程为导向,通过改进过程,逐步完善度量体系,终达到组织级的能力的提升。 第二:以度量为导向,建立度量体系,以度量数据推动过程改进,后达到组织级的能力的提升。 当公司还没有建立起比较完善的软件开发整个周期的体系的时候,我们需要以过程为导向,首先建立过程体系。这样可以理顺项目开发的流程,阶段标准等,但是,当这个过程体系建立起来后,我们再单纯的强调过程而不做过程改进的分析很难推动过程改进,也很难使组织级的能力有一个质的提升。因此,当过程体系建立起来之后,我们需要强化度量体系,从过程中提炼数据,找出过程瓶颈,这样才能做到持续改进的目的。不管采用哪种思路,执行力是关键。执行力不够。任何好的流程如果不能有效的执行,后也只能是束之高阁的条文,相反,即使不全面的流程,如果能很好的执行,也会弥补流程不足。 C.完善的流程,强劲的执行力,终达到提高全员的质量保证意识,达到那种每一个职务都是质量保证的一环是SQA的第三个重要职能. 当我们建立起来过程体系之后,度量显得尤为重要。6sigma的管理在美国很多公司表现出了不俗的业绩,究其原因,和6sigma的度量体系建立有很大关系。即以财务统计为基础,从项目成本管理来控制整个过程的改进。以度量为导向,建立度量体系,推动过程改进的大好处是以数据为基础,通过收集,整理,分析有效历史数据,找出开发过程中比较薄弱的环节,有针对性的提出解决方案,制定控制流程,提高各个环节的能力,终提高整个组织级的控制能力。至于需要收集那个环节,那个层面的历史数据,这是我们需要去思考的!! D.因此:以度量为导向,建立完善度量体系,推动过程改进。并根据分析出的数据有针对性的提出解决方案,控制流程,通过提高各个环节的能力,终达到整个组织级的能力是SQA的又一个重要职能. 3.回过头来,我们再来说说CMMI和公司的开发能力。 一个个公司和一个个人一样.都需要具备一种存在的社会价值.只有这样才能被社会接受和认可.而公司和人一样需要面对一个个社会考验.只有经受住考验的公司才能在社会种立足和发展,要不要被社会淘汰.显然,一个公司和一个人比起来要困难的多.但有一点是不变的,那是公司和人一样.只有自己强了,才能面对市场和社会的变化而傲然挺立.如何使自己更加强壮,练内功.强加自身的素质建设.而过程改进,理顺公司内部各个环节的配合是企业练内功很重要的一部分.CMMI模型像一套体操一样,给大家锻炼身体提供了一套标准.但对于个人而言,能否强壮,还在于是否愿意去使用和坚持.而对于行内的CMMI认证.相当于你的身体素质达标可以给你一个证明.但也可能你不达标,但通过一些渠道同样获得了证明.由于目前国内CMMI认证严重缩水,很多企业已经拿到3级,4级甚至5级认证,但并不是这些企业真的能达到CMMI规定中的3级,4级,5级的能力。那么真正衡量一个企业的软件开发能力的终要的标准是什么?我认为是:可控性,可评估性。和认证的级别没有必然的联系。如果一个软件公司对项目前期的工作量,缺陷分布,进度偏差,项目规模等几个方面评估的数据如果和实际操作过程的偏差并不是很大,那么这个公司的组织级开发能力应该是很高的,可以说没有他们不敢接的项目! 4.我们到底需要什么样的SQA。 我个人认为一个好的SQA应该具备如下素质: 具有良好的软件工程基础; 具备良好的沟通管理基础; 具有良好的学习能力(世界在变,你欲不变); 熟悉传统的质量管理知识与技能(包括统计分析,逻辑分析); 关键的点:在坚持原则的情况下,能采取有效措施帮助项目成功(你是服务者,而非监督者)。所以你的项目管理与控制能力应与项目经理齐当。 理论是工作的基石,实践来源理论,升华于理论。 热爱SQA工作,很强的团队服务意识,面对困难不妥协,勇于面对的乐观心态!