当前位置:文档之家› 软件质量管理体系建设方案

软件质量管理体系建设方案

软件质量管理体系建设方案
软件质量管理体系建设方案

关于软件质量管理体系建设的

方案

参考资料:

《cmmi3级软件过程改进方法与规X》

《 ISO9001:2000标准》

修改记录:

作者简介:

软件企业质量经理、高级项目经理,联系方式__qq:317974257

方案说明:

参考了《cmmi3级软件过程改进方法与规X》、《 ISO9001:2000标准》。同时参考了业界同行写的相关方案或文章,吸收了他们的优秀见解。

1.引言 (3)

1.1软件质量概述 (3)

1.2公司软件质量现状分析 (3)

1.3软件质量管理的特点 (4)

1.4软件质量责任分配 (6)

2.软件质量管理体系建设总体方案 (6)

2.1进一步推动软件质量管理体系建设的原则 (6)

2.2软件质量管理体系完善需要解决的主要问题 (8)

2.3配置管理—实施软件质量管理的重要步骤 (8)

2.4进一步完善我们的测试管理体系 (10)

2.4.1.软件测试的组织与管理规划 (10)

2.4.2.测试管理体系过程控制 (12)

2.4.2.1测试流程模型 (13)

2.4.2.2测试流程控制 (13)

2.4.2.3测试小结 (15)

2.5软件质量保证(SQA)的实施 (16)

2.5.1.SQA概述 (16)

2.5.1.SQA实施 (16)

2.5.2.SQA与SQC区别与协作 (17)

2.6全面软件质量管理 (18)

2.6.1.全面软件质量管理 (18)

2.6.2.全面软件质量管理的方法---制定质量管理计划 (19)

2.6.3.全面软件质量管理的方法---技术评审 (19)

3.结束语 (19)

1.引言

1.1软件质量概述

随着信息技术的飞速发展,使软件产品应用到社会的各个领域,也造就了软件行业激烈竞争的生存环境,随着软件规模及复杂性急剧加大,软件质量已经成为人们共同关注的焦点。技术是软件企业的生命,而质量则是它的灵魂,软件企业要在竞争中占有一席之地,软件质量保证是第一要素。由此,软件质量的重要性是不言而喻的。

软件质量是指与软件产品满足规定的和隐含的需求的能力有关的特征和特性的总和。通常来说,软件质量应该包含六方面的特性: 功能性、可靠性、易使用性、效率、可维护性、可移植性。

软件质量管理包括:软件质量计划编制、软件质量保证和软件质量控制三个过程域。质量计划就是为了实现质量目标的计划,它主要结合各个公司的质量方针,产品描述以及质量标准和规则通过收益、成本分析和流程设计等工具制定出来实施方略,其内容全面反应用户的要求,为质量小组成员有效工作提供了指南,为项目小组成员以及项目相关人员了解在项目进行中如何实施质量保证和控制提供依据,为确保项目质量得到保障提供坚实的基础。质量保证(Quality Assurance ,QA)的目的是提供一种有效的人员组织形式和管理方法,通过客观地检查和监控“过程质量”与“产品质量”,从而实现持续地改进质量。质量保证是一种有计划的、贯穿于整个产品生命周期的质量管理方法。质量控制是对阶段性的成果进行检测、验证,为质量保证提供参考依据,它是一个PDCA循环过程。

1.2公司软件质量现状分析

公司的软件开发历经多个生产个环节,产生大量的中间产品,每个环节都有可能带来产品质量问题;同时由于软件产品是逻辑体,不具备实体的可见性,因而难以度量,质量也难以把控,因此如何有效地管理软件产品的质量一直是我们面临的挑战。

虽然我公司在研发电力行业信息化相关软件方面取得很大成绩,但是其软件能力成熟度与国内同行业知名企业相比,还有一定的差距。我公司研发的软件产品,除了产业规模偏小、自主创新能力不足之外,在易用性、可靠性、可移植性、可维护性、可扩展性及系统集成等方面也存在着一定的质量问题,导致“用户抱怨较多、产品投产后缺陷纠正过多、公司售后服务投入过大”的不利局面,制约了我公司在电力软件行业的持续快速健康发展。究其原因,可能是以下几种原因造成的:(1)对软件工程标准化重视不够。(2)软件质量管理体系不健全,实施效果不佳。(3)企业对测试工作投入不足,测试管理和测试环境有待完善,测试技术有待提升。

1.3软件质量管理的特点

要解决软件的质量问题,同时保证开发的成本和项目的进度控制、解决研发中的诸多不规X问题,关键是要建立起完善的软件质量管理体系,把软件开发过程合理地监控起来,管理起来,进而达到提高产品的质量,控制产品开发的进度和成本的目的。分析软件质量管理的特点,主要有以下几点:

1、软件质量管理是贯穿软件研发的全过程,而不能仅局限于软件本身

软件质量不仅仅是一些测试数据、统计数据、客户满意度调查反馈表等等,衡量一个软件质量的好坏,应该首先考虑完成该软件生产的整个过程是否达到了一定的质量要求。在软件开发实践中,软件质量控制可以依靠流程管理(如需求管理、缺陷管理、配置管理、软件发布等),严格按照软件工程执行,确保软件的功能性、可靠性、易使用性、效率、可维护性、可移植性。

2、对技术文档的评审是控制软件质量的有效方式

研发过程中的很多技术文档作为产品的组成部分,也需要像对产品一样进行检验,而对技术文档的评审就构成了产品检验的重要方式。技术评审主要有以下好处:通过消除工作成果的缺陷而提高产品的质量;技术评审可以在任何开发阶段执行,不必等到软件可以运行之际,越早消除缺陷就越能降低开发成本;开发人员能够及时地得到同行专家的帮助和指导,无疑会加深对工作成果的理解,更好地预防缺陷,一定程度上提高了开发效率。

3、运用技术手段保证质量

利用多种工具软件进行质量保证的各种工作,如用Svn软件进行配置管理、文档管理和软件变更控制。采用先进的系统分析方法和软件设计方法(OOA、OOD、软件复用等)来促进软件质量的提高。

4、应用质量管理思想满足顾客需求

●缺陷预防

分析已经产生的缺陷并采用相应的措施以避免这类缺陷重复出现, 找出并确定引起缺陷的通常原因。不公如此,还要规划缺陷预防活动, 对引起缺陷的通常原因划分优先级并系统地予以消除。

紧紧抓住用户需求

充分地满足客户的需求,不管是付钱的顾客,还是软件的使用者,都要尽可能地满足。采用快速原型法,尽快演示(Demo)给用户并及时获取用户的反馈,根据用户的反馈不断修改软件,而不是全部完工后再最后交给用户。否则,要改的地方可能很多。甚至推翻重来。充分设计之后再编码,防止因考虑不周而造成返工。

●牢牢控制对缺陷的修改

通过诸如TD之类的强大的软件缺陷管理平台,记录、跟踪和控制软件缺陷的修复。

●对软件进行充分的系统测试

在软件通过集成测试后,还需要进行充分的、完整的系统测试和回归测试,直至所有的缺陷关闭为止。

●把握软件放行的尺度

商业目标决定质量目标。提高软件质量的最终目的是为了赢利,而不是创造完美无缺的产品。因此对于普通商业软件而言,并不是“质量越高越好”,而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之内。软件零缺陷几乎是不可能的,对遗留的缺陷要进行充分分析,只要能满足用户需求,软件遗留的缺陷可以在今后升级版本中解决。

1.4软件质量责任分配

我们公司已经建立了初步的研发管理体系,项目开发具备一定的规X化,在研发流程上采用ISO9001:2000的标准进行。我们公司目前每个项目除配备了项目开发所需角色外,还专门配备了配置管理组、测试组和质量保证组(目前此角色由项目管理部的监理来履行此项职责,但尚未真正开展活动)确保软件质量管理的实施,下面针对这三种角色进行说明:

2.软件质量管理体系建设总体方案

软件的质量的重要性日益凸现,国内大型软件企业不断在CMMI上投入大量资源提高软件能力成熟度,而中小软件企业也纷纷积极行动起来,不断改进软件质量。目前我公司实施软件质量管理在过去一段时间效果不是太好,分析其原因,可能有以下几点:

1、公司过去面对的是项目多,项目杂的复杂情况。因此无暇在软件质量的方面投入过多的资源。

2、公司是项目型软件企业,主要以承接客户的委托开发项目为主,它主要的关注焦点是在项目的合同期内,在项目成本许可的条件下,交付出客户满意的开发项目。而软件质量并没有成为大家关注的焦点,暂时也不会影响公司的生存。

3、在实施的过程中,易发生质量控制人员和研发人员的矛盾,降低实施的有效性;

因此针对我公司质量管理实践的现状,我们不能操之过急,急于求成,应该对质量管理体系的建设进行有计划有步骤的稳步规划和推进,特别需要根据客观情况,制定一定的实施原则,才可能有效地推动公司软件质量管理工作。

2.1进一步推动软件质量管理体系建设的原则

1、首先作检验型质量管理,再延伸至过程型质量管理

所谓的检验型质控,是指在产品在某个阶段结束的时候,通过有效的评审和测试验证其是否达到了预期的质量需求,主要的步骤有需求评审、概要设计评审、详细设计评审、代码走查或评审、测试、测试评审等过程。而过程型质控是

针对软件研发过程的不断改进,来提高软件的质量。在中小软件企业中提倡首先作检验型质控,再作过程型质控是基于下面的几点考虑:

首先,检验型质控(评审、测试)是解决显性问题的最有效方法。通过检验型质控,使软件质量得到较快提高,增强质量人员和公司领导对公司质量管理工作的信心,为过渡到过程型质量控制奠定坚实的基础。

其次,目前普遍存在的软件研发人员质量意识薄弱,须通过有效的检验型质控为研发人员进行初级的质量意识教育。当我们的检验型质控发展到一定的阶段,真正起到了作用后,再开始进行过程型质控的工作,使质量的深层次问题不断得到解决。

2、过程型质量管理要循续渐进,尊重客观规律,避免拔苗助长

过程型质控是对研发工作流程的改动,这种改动对项目组成员来说改动了他过去多年形成的一些习惯,并且改动会增加项目组的工作量,这种改动或多或少地会遭受到项目组成员有意无意的抵制。因此,在制定过程型质控方案的时候要判断好优先级,从最需要改动的过程着手,一步一步地做。避免急于求成,使工作得不到研发人员的理解和支持。

3、软件质量管理是一种服务,需要经验丰富的质量管理人才才能够胜任

质量管理实际上是对项目的一种质量服务,目的是对项目人员在质量上的一种帮助,帮助其发现问题、提供解决方法。因此作为质量控制人员的能力需求上是比较高的。同时,质量控制人员通过提供这种服务,能够拉近和研发人员的距离,研发人员能够更加接受过程型质控的改动,使质控工作的矛盾更小。因此,建议从事质量管理的人员应该是从事较长时间项目研发、项目管理的人员,只有一个资历深的质量管理人员才能够真正地对项目研发提供一种高质量的服务。

4、加强相关人员的培训是工作中的重中之重

培训工作应该包括两个方面的内容:一方面,在实施过程型质控过程中制定的过程、标准需要通过培训的方式来让所有的人员都理解并接受。另一方面,需要通过培训的方式提高研发人员的质量意识。只有质量意识提高了,才能大大减少质量管理人员的工作量。

2.2软件质量管理体系完善需要解决的主要问题

1、识别和建立软件研发的过程

通用的软件的研发过程一般归结为:项目立项-需求分析-概要设计-详细设计-编码-测试-运行维护。我们公司在研发流程上采用ISO9000的标准进行,已经具备一定的规X性。我们可以应用ISO12207信息技术-软件生存周期过程,对照CMMI软件能力成熟度模型框架,结合软件企业的具体情况,进行过程建模优化,这是建立一个适宜的软件质量管理体系的前提。

2、明确管理职责、调整组织结构

第一步就是要进行软件质量管理情况诊断,根据企业的实际情况和依据ISO9001标准的要求,进行软件质理管理组织架构重构。

第二步就是有明确岗位分工与职责,特别要明确与软件质量管理有关的岗位和职责,为建立软件质量管理体系打下基础,以适应建立软件质量管理体系的需要。

由于公司在近几年一直再做软件质量管理的基础工作,因此这项工作具备一定的基础,例如:构建了较稳定的配置管理体系、测试管理体系也在不断的改进之中。我们目前的最主要问题是在于缺乏一个有效的质量保证组织。

3、建立文件化工作程序。

再好的管理方法如果没有写成文件化的程序,也是空谈。建立文件化程序就是为了将软件质量管理体系固化下来,相关的过程和操作都要做到有章可循。建立文件化程序的过程实际上是对流程的一次全面整理的过程。

4、解决好软件配置管理和软件变更控制。

由于软件需求的不确定性,软件设计的变更是不可避免的。建立基线是加强变更控制的前提。在设计发生变更时软件的配置也必须随之改变,所以将软件配置管理作为一个关键过程纳入软件质量管理体系是一项重要的任务。

2.3配置管理—实施软件质量管理的重要步骤

软件配置管理简称SCM(Software Configuration Management的缩写),是在项目开发中,标识、控制和管理软件变更的一种管理。配置管理的目标

是记录软件产品的演化过程,确保项目组成员在软件生命周期中各个阶段都能得到精确的产品配置。其最终目标是实现软件产品在其生命周期全过程中的一致性、完整性和可追溯性,使产品极大程度地与用户需求吻合。其主要工作和研究内容和包括:标识配置项、定义基线、建立配置库和基线库、控制配置项和基线的变更、做好配置项和基线的定期备份和异地备份、定期进行配置审计、及时报告配置状态。

在软件质量体系的诸多支持活动中,配置管理处在支持活动的中心位置,它有机地把其它支持活动结合起来,形成一个有机整体,相互促进,相互影响,有力地保证了软件质量体系的实施。从现在软件企业的发展战略来说,如何在技术日新月异、人员流动频繁的情况下建立本公司的知识库及经验库,把个人的知识及经验转变成公司的知识和经验,这对于提高工作效率,缩短产品周期,加强公司的竞争力具有至关重要的作用。同时良好的配置管理有利于规X管理,量化工作量考核,规X测试,加强协调和沟通。采用科学的配置管理思想,辅之以先进的配置管理工具,已经成为必不可少的手段。

配置管理工作是一个默默无闻,不受人关注,但是极为重要的工作。这二年来,我们尽心尽责地配合所有项目组,为各个项目制定配置管理计划,建立配置管理系统,并且制定了配置管理制度和配置管理流程,构建了功能强大,安全有效,可操作性强的SVN(subversion)配置管理平台。通过不断的实践摸索,积累了较为丰富的配置管理经验,随时可以为各项目组提供精确的良好的配置管理。通过建立完整的代码对象库、业务经验库,将会给项目组以及软件测试的工作带来很大的便利,同时将会最大程度上降低了由于人员流失所造成的损失。由于有了配置管理平台,目前研发部软件代码和文档都得到了良好的管理,也使软件开发人员以及软件测试人员能够很好的协同合作开发产品,从整个公司层面来说也是一个不断地为公司积累业务经验和技术财富的过程。通过努力,目前项目管理部已经建立了较为完整的软件配置管理体系,并且初步制定了配置管理制度和配置管理流程,构建配置管理信息化支撑平台,项目管理部将进一步加强配置管理工作,进一步完善软件配置管理体系。

2.4进一步完善我们的测试管理体系

我们公司采用的传统的软件测试流程一般是先在软件开发过程中进行少量的单元测试,然后在整个软件开发结束阶段,集中进行大量的测试,包括功能和性能的集成测试和系统测试。在实际工作当中,随着开发的软件项目越来越复杂,传统的软件测试流程已经不能适应工作的需求。针对传统软件测试模式的弊端,根据我们和研发部门相关人员的讨论,认为软件测试不能只发生在软件代码已经编写完毕之后,而应该在软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正。这就是软件软件工程界的一种新的观点:“尽早测试”,所谓尽早测试是指在整个软件开发生命周期中通过各种软件工程技术尽量早的完成各种软件测试任务的一种思想。软件的整个测试生命周期是与软件的开发生命周期基本平齐的过程,即当需求分析基本明确后我们就应该基于需求分析的结果和整个项目计划来进行软件的测试计划;伴随着分析设计过程同时应该完成测试用例的设计;当软件的第一个发布出来后,测试人员要马上基于它进行测试脚本的实现。

2.4.1.软件测试的组织与管理规划

1、测试的过程及组织

当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。

在开发组将所开发的程序经验证后,提交测试组,由测试负责人组织测试,测试一般可按下列方式组织:

(1)首先,测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。

(2)为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试。

(3)代码会审

代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规X等文件基础上,召开代码会审会,程序员逐句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。

(4)单元测试

单元测试集中在检查软件设计的最小单位—模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。

(5)集成测试

集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。

(6)系统测试

软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试。包括恢复测试、安全测试、强度测试和性能测试等。

经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束,经验收后,将软件提交用户。

2、测试的人员组织

为了保证软件的开发质量,软件测试应贯穿于软件定义与开发的整个过程。因此,对分析、设计和实现等各阶段所得到的结果,包括需求规格说明、设计规格说明及源程序都应进行软件测试。基于此,测试人员的组织也应是分阶段的。

(1)软件的设计和实现都是基于需求分析规格说明进行的。

需求分析规格说明是否完整、正确、清晰是软件开发成败的关键。为了保证需求定义的质量,应对其进行严格的审查。

(2)设计评审

软件设计是将软件需求转换成软件表示的过程。主要描绘出系统结构、详细的处理过程和数据库模式。按照需求的规格说明对系统结构的合理性、处理过程

的正确性进行评价,同时利用关系数据库的规X化理论对数据库模式进行审查。

(3)程序的测试

是指软件测试。是整个软件开发过程中交付用户使用前的最后阶段,是软件质量保证的关键。软件测试在软件生存周期中横跨两个阶段:通常在编写出每一个模块之后,就对它进行必要的测试(称为单元测试)。编码与单元测试属于软件生存周期中的同一阶段。该阶段的测试工作,由编程组内部人员进行交叉测试(避免编程人员测试自己的程序)。这一阶段结束后,进入软件生存周期的测试阶段,对软件系统进行各种综合的测试。测试工作由专门的测试组完成,负责整个测试的计划、组织工作。测试组的其他成员由具有一定的分析、设计和编程经验的专业人员组成,人数根据具体情况可多可少。

3、软件测试文件

软件测试文件描述要执行的软件测试及测试的结果。由于软件测试是一个很复杂的过程,同时也是设计软件开发其他一些阶段的工作,对于保证软件的质量和它的运行有着重要意义,必须把对它们的要求、过程及测试结果以正式的文件形式定义清楚。测试文件的编写是测试工作规X化的一个组成部分。

测试文件不只在测试阶段才考虑,它在软件开发的需求分析阶段就开始着手,因为测试文件与用户有着密切的关系。在设计阶段的一些设计方案也应在测试文件中得到反映,以利于设计的检验。测试文件对于测试阶段工作的指导与评价作用更是非常明显的。需要特别指出的是,在已开发的软件投入运行的维护阶段,常常还要进行再测试或回归测试,这时仍须用到测试文件。

2.4.2.测试管理体系过程控制

为了保证测试管理体系能够正确并且无误的实施与执行,我们设计了一套测试管理体系流程,用来控制测试管理体系执行。

2.4.2.1测试流程模型

单元测试过程

图1-1 V模型

2.4.2.2测试流程控制

1、需求分析

需求分析(Requirment Analyzing)应该说是软件测试的一个重要环节,测试开发人员对这一环节的理解程度如何将直接影响到接下来有关测试工作的开展。一般而言,需求分析包括软件功能需求分析、测试环境需求分析、测试资源需求分析等。其中最基本的是软件功能需求分析,测一款软件首先要知道软件能实现哪些功能以及是怎样实现的。测试需求分析的依据有软件需求文档、软件规格书以及开发人员的设计文档等。

2、测试计划

测试计划(Test Plan)一般由测试负责人来编写。测试计划的依据主要是项目开发计划和测试需求分析结果而制定。

3、测试设计

测试设计主要包括测试用例编写和测试场景设计两方面。一份好的测试用例对测试有很好的指导作用,能够发现很多软件问题。测试场景设计主要也就是测试环境问题了。

4、测试环境搭建

不同软件产品对测试环境有着不同的要求。如C/S及B/S架构相关的软件产品,那么对不同操作系统,如Windows系列、unix、linux等,这些测试环境都是必须的。而对于一些嵌入式软件,如手机软件,如果我们想测试一下有关功能模块的耗电情况,手机待机时间等,那么我们可能就需要搭建相应的电流测试环境了。当然测试中对于如手机网络等环境都有所要求。测试环境很重要,符合要求的测试环境能够帮助我们准确的测出软件问题,并且做出正确的判断。

5、测试执行

测试执行过程又可以分为以下阶段:

单元测试→集成测试→系统测试→验收测试,其中每个阶段还有回归测试等。

6、测试记录

缺陷记录总的说来包括两方面:提交缺陷和缺陷描述。一般而言,缺陷都是谁测试谁提交,当然有些公司可能为了保证所提交缺陷的质量,还会在提交前进行缺陷评估,以确保所提交的缺陷的准确性。

7、缺陷管理

缺陷管理方面,很多公司都采取缺陷管理工具来进行管理,常见缺陷管理工具有Test Director、Bugfree等。

8、软件评估

这里评估指软件经过一轮又一轮测试后,确认软件无重大问题或者问题很少的情况下,对准备发给客户的软件进行评估,以确定是否能够发行给客户或投放市场。

软件评估小组一般由项目管理人员、项目负责人、营销人员、部门经理等组成,也可能是由客户指定的第三方人员组成。

9、测试总结

每个版本有每个版本的测试总结,每个阶段有每个阶段的测试总结,当项目完成RTM后,一般要对整个项目做个回顾总结,看有哪些做的不足的地方,有哪些经验可以对今后的测试工作做借鉴使用,等等。测试总结无严格格式、字数限制。应该说,测试总结还是很总要的。

10.测试维护

由于测试的不完全性,当软件正式发布后,客户在使用过程中,难免遇到一些问题,有的甚至是严重性的问题,这就需要修改有关问题,修改后需要再次对软件进行测试、评估、发行。

2.4.2.3 测试小结

软件测试本身是一个复杂的过程。因此,早在需求分析和设计阶段,测试小组的测试人员就应该对各种说明书进行仔细分析,提取有关的测试信息,编写了测试计划和测试规程。适时采用各种软件测试方法对软件进行测试,在测试过程中,把发现的错误及时反馈给开发人员,确保测试人员与开发人员的及时沟通。对开发人员修正过的软件,还要分析修改部分对整个系统的影响,有针对性地对受影响的部分进行重新测试。测试人员在测试的同时还完成了各种测试文件的编写工作。

作为保证系统软件质量的一种重要手段,软件测试是必不可少的,但是仅仅依靠测试来保证软件质量是不够的,还需要有良好的软件质量管理体系。软件质量管理的一条主要途径就是建立质量保证小组,这个小组要参与软件开发和确认的各个阶段,并承担以下任务:

(1)保证对系统需求说明书、设计文本、软件代码和测试步骤的严格控制,确保被测软件与设计需求、文本的高级要求说明一致;(2)代码化之前复审软件设计;(3)参与设计和开发活动的技术审查和复审;(4)进行复审以保证软件与标准和规程一致;(5)记录软件的问题和不一致之处并监控正确的操作;(6)复审并核准合格的测试计划和测试规程;(7)监控测试操作。

2.5软件质量保证(SQA)的实施

2.5.1.SQA概述

SQA(软件质量保证)是CMMI一个重要关键过程域,它是贯穿于整个软件过程的第三方独立审查活动,在CMMI的过程中充当重要角色。目前,我们公司的SQA 的职责由项目管理部监理履行。目的是向项目管理者提供对软件过程进行全面监控的手段,包括评审和审计软件产品和活动,验证它们是否符合相应的规程和标准,同时给项目管理者提供这些评审和审计的结果。SQA组织的责任是审计软件开发活动的质量并鉴别活动中出现的偏差。

2.5.1.SQA实施

软件质量保证的目标是以独立审查的方式监控软件研发的全过程,给开发人员和项目管理人员提供反映软件质量的信息和数据,辅助研发组得到高质量的软件产品,其主要职责内容包括以下三个方面:

● 通过监控软件的开发过程来保证软件的质量;

● 保证生产出的软件和软件开发过程符合相应的标准与规程;

● 保证软件产品、软件过程中存在的不符合问题得到处理,必要时将问题反映给项目管高层。

●确保项目组制定的计划、标准和规程适合项目组需要,同时满足评审需要

●向开发人员提供反馈

相应地,软件质量保证的主要活动有以下几个方面:

●SQA审计与评审

SQA审计包括对软件工作产品、软件工具和设备的审计,评价这几项内容是否符合组织规定的标准。SQA评审的主要任务是保证软件工程组的活动与预定义的软件过程一致,确保软件过程在软件产品的生产中得到遵循。客观评价过程和

工作产品:对于所实施的过程和相关工作产品以及服务对适用的过程描述、标准和规程的遵循情况进行客观评价。

● SQA报告

SQA人员应记录工作的结果,并写入到报告之中,发布给相关的人员。SQA报告的发布应遵循3条基本原则:SQA和高级管理者之间应有直接沟通的渠道、SQA 报告必须发布给软件工程组但不必发布给项目管理人员、在可能的情况下向关心软件质量的人发布SQA报告。

● 处理不符合问题

这是SQA的一个重要的任务,SQA人员要对工作过程中发现的不符合问题进行处理,及时向有关人员及高级管理者反映。在处理问题的过程中要遵循两个原则:其一,对符合标准过程的活动,SQA人员应该积极地报告活动的进展情况以及这些活动在符合标准方面的效果;其二,对不符合标准过程的活动,SQA要报告其不符合性以及它对产品的影响,同时提出改进建议。

软件质量保证任务的实现需要考虑几方面的问题。首先,要考虑SQA人员的素质。SQA人员的责任是审查软件设计、开发人员的活动,验证他们是否将选定的标准、方法和规程应用到活动中去,因此,SQA工作的有效执行需要SQA人员掌握专业的技术,例如质量控制知识、统计学知识等。其次,SQA人员的经验对任务的实现同样重要。应该选择那些经验丰富的人来做SQA,同时为SQA人员进行专门的培训,以使他们能够胜任这项工作。第三,组织应当建立文档化的开发标准和规程,使SQA人员在工作时有一个依据、判断的标准,如果没有这些标准,SQA人员就无法准确地判断开发活动中的问题,容易引发不必要的争论。第四,公司管理应该重视软件质量保证活动。应该对SQA人员发现的问题进行及时处理,不能使质理保证流于形式而难于发挥作用。

2.5.2.SQA与SQC区别与协作

SQA,即:软件质量保证,负责软件开发流程的质量,企业内相对应的角色为:软件质量保证人员,我们公司对应的是项目监理。SQC,即:软件质量控制,只负责软件开发过程中各个阶段产出的工件的质量,产出的工件可能是相

关的文档、代码和可执行程序等,企业内相对应的角色为:软件测试工程师。但要注意,在各个阶段SQC的对应人员不一定都为测试人员,如在需求阶段,产生的成果为《需求规格说明书》,对该文档的主要质量控制手段为评审,这时候在此阶段担任SQC职责的就是评审小组的成员。

SQA和SQC虽然主要的工作都是为了保证软件的质量,但是着重点不同。SQA通过控制过程来保证软件产品的质量,而SQC是通过控制每个阶段的“结果”来保证软件产品的质量。

在软件研发的过程中,要想提高软件质量,不仅需要持续不断的进行测试,检验产品的质量,在“结果”中保证质量;同时也要改进我们的开发方式,优化我们的开发流程,在“过程”中保证软件的质量。所以两者是相辅相成的关系,缺一不可,SQA和SQC必须相互协作,相互配合,在“过程”和“结果”都正确的基础上,有效改善软件产品的质量。同时SQC(测试)人员在工作过程中会产生出大量的过程数据,SQA人员通过对这些数据的统计分析,发现软件质量问题所在,进而反馈到流程的改进活动中,再通过SQC人员搜集的大量数据来验证流程改进的有效性,最终达到软件质量的持续改进。

2.6全面软件质量管理

2.6.1.全面软件质量管理

质量不仅仅是质量人员的事情,每个成员都有维护质量的责任。每个成员都有责任、也有权利提出改进建议,并将合理的建议付诸实施。在软件开发中出现的质量问题,可能是由以下原因造成的:

1.管理者缺乏质量观念,未将质量放在足够重要的地位。

2.缺乏全面质量管理、人人都是质量保证者和责任人的观念。

3.缺乏决不把不合格中间产品带入下一阶段的观念。

4.没有良好的激励机制。

5.没有认识到提高质量对公司的生存发展的重要性,缺乏主人翁责任感。

因此软件质量是全员负责。任何与软件开发、管理工作相关的人员都对质量产生影响,都要对质量负责。所以人们不要把质量问题全部推给质量人员或测试人员。

2.6.2.全面软件质量管理的方法---制定质量管理计划

质量管理计划就是为了实现质量目标的计划。而质量目标则是由商业目标决定的。开发软件产品的最终目的是为了赚钱,所以人们为提高软件质量所付出的代价是有有限的,项目负责人当然希望代价越低越好。质量管理计划是全面质量管理的行动纲领。

谁制定质量管理计划?由项目核心成员和质量人员共同协商制定,主要由质量人员起草,由项目经理或项目管理层审批即可。

2.6.

3.全面软件质量管理的方法---技术评审

技术评审(Technical Review, TR)的目的是尽早地发现工作成果中的缺陷,并帮助开发人员及时消除缺陷,从而有效地提高产品的质量。技术评审方法已经被软件行业广泛采用,我们公司也高度重视技术评审,并收到了较好的效果,它被普遍认为是软件开发的最佳实践之一。

3.结束语

软件质量是软件产品的生命之所在,软件测试和过程控制作为保证软件质量的手段,愈来愈受到人们的重视。而如何提高软件产品质量,严格的测试和过程监控是重要的环节。随着新的商业挑战的日益增多以及技术复杂性的提高,很显然,软件测试和过程控制在关键业务型应用程序的成功中起到了举足轻重的作用。所有团队成员都应将质量视作头等大事。在软件开发过程中,一方面要求我们通过测试活动和质理保证活动验证所开发的软件在功能上满足软件需求中描述的每一条特性,性能上满足客户要求的负载压力和相应的响应时间、吞吐量要求;另一方面,面向市场和客户,开发团队还要满足在预算X围内尽快发布软件的要求。因此建立规X、有效的软件质量管理体系成为软件研发工作中的重中之中。

相关主题
文本预览
相关文档 最新文档