本文来源装备质量
记得点赞收藏
刘红
上海市微波设备研究所,中国·上海 200000
摘 要
随着软件产品的广泛应用,软件质量问题层出不穷,软件问题具有不可控和严重性,使软件质量从台后走到台前,逐渐被人们所重视。通常人们所熟知的软件质量控制手段——软件测试,其并不能很好地解决软件质量问题,软件质量保证正是在此基础上产生并逐步被人们所认识。软件质量保证(SQA)涉及软件开发流程的各个环节,它是为了弥补软件质量控制的不足而产生,它的工作对软件质量问题的提前预防和客观评价软件开发情况有重大作用。论文针对软件质量保证、软件质量保证工作及其从业人员要求、职责等相关内容进行简单介绍。
关键词
软件质量保证;软件过程控制;软件过程和产品审核
1
1 引言
通常一提到如何提高软件质量,软件从业人员想到的就是加强软件测试力度。然而加强软件测试力度就意味着延长软件测试时间,或增派软件测试人手,且在实际操作上这两种做法的效果均不理想。主要原因是软件测试只是事后的一种弥补软件质量缺陷的手段,软件质量问题(软件缺陷)是早在软件测试之前的软件开发过程中已经生成。而在项目的约束条件(项目结束时间和项目经费限定的情况)下,对软件产品进行无休止的测试是不具备条件的,更何况这也是不科学不现实的。
依据CMMI(或GJB5000),软件质量涵盖了验证管理(VER)、确认管理(VAL)、技术解决方案(TS)、需求开发(RD)、项目集成管理(IPM)、决策分析(DAR)、配置管理(CM)、测量管理(MA)、产品集成(PI)、项目监控(PMC)、项目计划(PP)、质量保证(PPQA)、需求管理ReqM、管理(RskM)、供应商管理(SAM)以及讲述软件持续改进的组织过程的焦点(OPF)、组织过程的定义(OPD)和组织培训(OT)[1]。由此可见,软件质量的提高绝非只是通过增加软件测试就可以达到。为了提高软件产品的质量,彻底解决软件项目的难点唯一的办法就是通过提高软件开发过程的质量来带动软件产品质量的提高。
软件开发过程的质量是指对软件项目已定义的生命周期模型、各个过程的流程、模板、准则、项目计划及其从属计划等的遵循程度,遵循程度越高,软件开发过程的质量就越高,软件产品的质量才会越高。软件质量的提高不是依靠软件测试实现的,而是在于软件开发整体过程的提高。
软件质量保证至关重要,它对整个软件开发过程的每一步和软件产品进行审核,是对软件质量的一种保护性活动,因此,要想软件开发顺利有序的进行,产生高质量的软件产品,都离不开软件质量保证活动。
1
2 软件质量保证概述
软件质量一般是通过软件测试来进行控制。但由于需求变更、项目成本等多种原因,软件测试时间严重不足,漏测率偏高,给软件产品的质量带来严重的隐患。软件质量保证(Software Quality Assurance)简称SQA,其更确切的叫法应该为PPQA(Process and Product Quality Assurance),即过程和产品质量保证。它的出现,弥补了软件质量控制(一般为软件测试)工作的不足,它对软件开发流程的各个环节及产品进行审核,客观评价软件已执行的软件过程与软件工作产品,及时发现问题,以确保其质量符合要求[2]。
软件质量保证是软件质量体系中非常重要而又特殊的组成部分。软件质量保证的工作涉及软件开发过程的各个环节,以及每个参与软件开发的人员,但又不涉及具体的软件开发细节,软件质量保证人员独立于项目开发组织以外,以保证它的客观性。软件质量保证的工作成果则会使软件开发人员和管理者对过程和相关的工作产品能有客观深入的了解,给整个软件开发组织包括管理层提供信心。
软件质量保证人员的具体工作就是要确保软件开发团队的工作内容符合组织所要求的开发流程和开发要求,以确保软件工作产品符合软件质量要求。
要验证在软件开发和使用过程中是否遵循了合理的过程和标准,主要包括以下几个方面:
(1)对软件开发过程实施审核,以确保交付给顾客的软件产品具有较高的质量。
(2)对软件开发过程以及开发出来的软件产品进行审核,使其要符合管理层和顾客的要求,在达到目标要求的同时,要安全,高效,尽量将人力和物力成本降到最低,并符合相应标准与规程。
(3)若审核中发现的问题,应及时与当事人进行沟通,并着令处理,如果项目内部无法解决或必要时,需将问题反馈给高层领导并争取高层的支持。
(4)确保项目组制定的计划、标准和规程是恰当的、合理的、是项目组所需要的,既符合组织要求,同时也满足顾客及相关利益方的要求。
(5)为持续的软件过程改进提供必要意见和建议。
软件质量保证是的软件研发过程更加透明化,它使软件项目组成员、各级管理层,甚至顾客都能清楚地了解项目名的情况。
1
3 软件质量保证的工作内容
我们可以通过开发项目的整个过程来认识软件质量保证的作用和工作内容。软件质量保证是通过过程控制来协助提高软件质量,以保证获取高质量的软件产品,提高工作效率,最终获得高收益。软件质量保证的主要工作内容如下。
在项目早期,SQA 工作人员应在早期例会上,按照上级领导的要求和生产中要求项目最终想要完成的任务和目标,制定出切实可行的软件质量保证计划,在计划中提前考虑到各个阶段的重点,并将相应的难点和目的标记出来,方便后期工作;计划中应详细说明在软件开发整个生命周期内,软件质量保证应遵循的方法、准则及需审核的各个过程和软件产品;对于每一个审核对象,应标明审核时机及审核条件,同时计划中还应明确标明可能出现的问题的详细处理方法;计划应尽量详细,这样更有利于今后的指导工作。
将制定完成的计划交与评审人员进行审核。重点是审查计划是否清晰、正确、可行。然后将通过评审的SQA 计划发送给领导层和相关技术人员。SQA 工作人员也应对项目工程组成员进行有关质量保证职责和权力等方面的培训,以便使他们明白质量保证工作的内容和要求。
这一环节是软件质量保证的日常工作内容。如果只在阶段点进行检查和审核,那么出现的弊端是难以及时反映项目组的工作过程,当问题己经暴露出来并出现了不太好的结果才能进行补救,此时为时已晚。所以软件质量保证人员应按项目时间长短设定时间间隔,定期对软件开发过程进行审核,以监督软件项目的进展及软件研发情况,是否符合要求。为此,软件质量人员最好是根据项目的规划,将项目划分为几个阶段,再在每个阶段点之间设置若干个便于监督的跟踪点,将跟踪到的问题及时填写到检查单上,注意标明日期。工作完成后,根据检查单来填写相关偏离问题报告,如有必要,将问题报告上呈各层领导和相关技术人员加以指正。这样才可以防患于未然,从根本上发现问题并及时解决。
这一环节要求要对检查过程中发现的问题及时纠正和解决。项目组可以自行解决的问题就由项目组内部自行解决,如果内部无法解决,就将问题报告上交给高层领导者。软件质量保证人员应跟踪问题解决情况,直至问题关闭。
为了使软件开发过程按要求实施,软件产品符合管理层及顾客要求,针对软件开发过程要求、实施准则,产品的规范要求等,软件质量保证人员在必要时可以对项目组人员进行相关培训,以使项目组人员能更好地按照要求执行,同时,质量保证人员根据以往的经验总结和过往的问题情况,在技术层面亦可对项目成员提出培训要求或给出建议。例如,根据SQA 以往的经验总结,建议以功能点估算法代替代码行估算法进行估算。那么就应向项目组提出介绍功能点估算法的概念及如何应用的培训。
例如,PDCA 环和在此基础上提出的IDEAL 模型,都是软件过程改进的基本方法。软件质量保证人员应当对发现的问题进行收集、归类、统计和原因分析,对软件过程改进提出意见和建议。
1
4 软件质量保证审核基本流程
软件质量保证就是要对软件开发的各个环节进行审核,其定位于PPQA,其中两个P 分别代表着过程和产品。
当今软件质量体系里,质量的含义已经不再局限于产品,对质量的有要求和期望的也不再局限于用户。因此,对于质量的要求,已从传统的质量控制延伸至现在的质量保证。只有好的过程才能提供高的质量,让项目的利益相关方都能获得高质量带来的利益。
这里所讲述的过程就是指组织中制定的各种流程、规范、规程等,这个流程、规范、规程就是组织要求每个软件开发人员或项目开发过程所要遵循的要求。软件质量保证的审核是基于这样一个前提:软件项目开发所要求遵循的流程是符合项目实际需要的,是恰当并充分的;该流程是经过组织审批的。(制定一个合理的流程是EPG 的工作,不是质量保证人员的工作。)质量保证人员将按照组织或项目所要求遵循的标准、规范对过程或产品进行审核。其中,软件质量保证人员对过程的审核按照过程的特点可以分为触发性过程的审核和周期性过程的审核两种。
4.1.1 触发性过程的审核
触发性的过程就如对文档的评审过程,该评审过程何时进行、是需要等待触发的,因此该审核活动是被评审通知所触发。以文档评审为例,触发性的审核流程大致如下。
(1)质量保证人员按照计划和组织标准准备检查单。
(2)质量保证人员对触发性评审过程的准备工作进行检查:如评审的文档是否完备,评审材料是否准备齐全等。
(3)质量保证人员参与评审,对评审过程及评审产出物进行审查。
(4)记录不符合问题,尽可能地与适当的人员就不符合问题进行沟通,确定不符合项。
(5)跟踪不符合项的解决直至关闭。当不符合项在项目中无法解决时,及时向高层汇报以寻求支持。
(6)分析不符合项,了解它的发展呢趋势。
4.1.2 周期性过程的审核
主要是针对各种软件工程中流程的审核,如配置管理过程、测量与分析过程等,周期性审核与触发性审核最大的不同是它审核的对象是一个持续反复进行的过程,所以为保证该过程符合要求,QA 也将按照预定的时间间隔反复对该过程进行审核。
(1)质量保证人员按照计划和组织标准准备检查单。
(2)质量保证人员在计划的时间内,通知项目组并对过程进行审核。
(3)记录不符合问题,尽可能与适当的人员就不符合问题进行沟通,确定不符合项。
(4)跟踪不符合项的解决直至关闭。当不符合项在项目中无法解决时,及时向高层汇报以寻求支持。
(5)分析不符合项,了解它的发展趋势。
软件开发过程中所产生的任何工作成果都称为工作产品,它可能是代码,也可能是文档,甚至是会议记录等,就这些产品并非所有都是要交给用户的,因此,我们这里的产品特指要交付给用户的部分工作产品。
如果想要保证交付给用户的是一个高质量的产品,我们首先要确保每个工作产品是高质量的。软件质量保证不能像软件测试人员那样对产品进行测试,它只能在软件开发的过程中通过对每个工作产品的审核来确保工作产品的质量。
对软件产品进行的审核,是通过审核相关评审或检查记录来间接进行的。软件质量保证人员通常通过以下两种方式来对工作产品的质量进行审核。
4.2.1 文档类
例如,《需求规格说明》《详细设计文档》等可以通过审查这些文档是否符合编写要求,这些文档的评审过程、评审报告是否符合规定来确保其质量符合要求,如果评审报告中有缺陷记录,则必须对缺陷进行跟踪,确保缺陷得以解决。
4.2.2 代码、组件等工作产品
对代码、组件等工作产品的审查,则是通过其相应的测试报告,审查这些报告及相应过程看是否符合要求,如这些报告中记录了缺陷,那么就应该确保这些缺陷最终得到解决。其基本流程如下。
(1)质量保证人员按照计划和组织标准准备相关检查单。
(2)提取项目组提交的需审核的产品及其材料包。
(3)对交付物对照检查单进行审核。
(4)记录不符合问题,尽可能与适当的人员就不符合问题进行沟通,确定不符合项。
(5)跟踪不符合项的解决直至关闭。当不符合项在项目中无法解决时,及时向高层汇报以寻求支持。
(6)分析不符合项,了解它的发展趋势。
1
5 SQA 工作人员的能力与责任
软件质量保证人员的工作很多,内容很复杂。项目前期,软件质量保证方面应制定质量保证计划,有文字方面的工作。其中,SQA 工作人员的沟通协调能力也要很强。软件质量一旦出现问题,可能会涉及到很多部门和相关工作人员,此时想要解决问题,良好的沟通必不可少。同时,软件质量保证人员应有控制软件质量的能力,要作人员要熟悉软件开发过程,熟练掌握单位内部已有的各种流程、标准和规范,做好独立审核工作并发现问题。质量保证人员会参与到评审分配需求中,与项目软件负责人一起确定适合项目使用的一系列计划和章程。项目级质量保证人员还要在固定时间(一般以周为单位),对所有正使用的软件,其工作中的运行过程及相关活动进行审核,提前提示项目工程组成员依据之前制定好的行动计划和开发标准展开一系列的活动并进行监督,减少和避免问题的发生[3]。
SQA 工作人员还要参与到软件的测试过程,包括单元测试、集成测试、系统测试和验收测试等。如果在测试过程中SQA 工作人员发现不符合规范的项目,应告知责任人,对不能在项目内解决的问题逐级上报,这个过程中工作人员要一直跟踪直到问题完全解决,并编辑成报告进行记录,关闭问题。
软件开发过程和软件产品中很多时候出现的问题会有类似的地方,软件质量保证人员应具有对问题根源识别和归纳能力,要透过现象看本质。同时,也应具有举一反三的能力,很多问题和风险的起因都是相同或相近的,因此举一反三可以对未发生的风险和问题起到预防的作用,尽早识别尽早解决,从而降低问题所带来的负面影响。
除上述工作内容之外,对项目中出现的意外和紧急情况处理的应急反应、协助单位进行软件体系的认证等,也都是SQA 人员的工作范畴[4]。作为一名SQA 人员,应及时介入项目,积极与项目组合作,不但要熟练掌握业务知识,而且要具有一定的业务技巧,灵活运用软件体系的标准,才能保证软件产品的质量和可靠性,逐步提高软件过程的成熟度。
1
6 结语
目前,从国际市场上看,软件加工行业的人才处于紧缺形式,软件开发的发展潜力和发展空间非常大,而中国目前软件技术在世界上来说虽没有达到引领行业发展的水平,但也处于相对先进的地位。再加上中国软件技术人员普遍具有良好的专业技术和职业素养,劳动成本相对于发达国家比较低廉,因此国际上很多国家都很有意愿跟我们国家进行合作,开展人才共同培养。只要组织得法,技术先进,迅速发展软件加工出口,就会有良好的发展前景。毫无疑问,软件企业的SQA 工作是重要而且必要的,所以软件企业应该倡导、推行和建立规范的质量保证体系,以提高软件企业的综合实力和竞争力。
参考文献
[1] 贺晶晶.浅谈计算机软件开发中影响软件质量的因素[J].信息化建设,2016(05):89.
[2] 石峰.试析计算机软件开发中影响软件质量的因素[J].计算机产品与流通,2017(07):41.
[3] 罗勇.计算机软件开发中软件质量的影响因素与应对[J].电子技术与软件工程,2018(20):115-116.
[4] 何清.基于计算机软件开发中影响软件质量的因素探讨[J]通讯世界,2014(09):5-6.
窗体顶端
窗体底端
Discussion on Software Quality Assurance
Hong Liu
Shanghai Institute of Microwave Equipment, Shanghai, 200000, China
Abstract
With the widespread application of software products, software quality problems emerge in endlessly, and software problems are uncontrollable and serious, which makes software quality go from behind the stage to the front stage, and people gradually pay attention to it.Usually, the well-known software quality control method—software testing cannot solve the software quality problem well, it is on this basis that software quality assurance is produced and gradually recognized by people. Software quality assurance (SQA) involves all aspects of the software development process. It is produced to make up for the lack of software quality control, its work plays a major role in preventing software quality problems in advance and objectively evaluating software development. The paper briefly introduces software quality assurance, software quality assurance work and the requirements and responsibilities of its practitioners.
Keywords
software quality assurance; software process control; software process and product audit
长按二维码识别关注我们