第十章软件质量保证 复习要求 1.了解软件质量保证、质量保证活动与质量检验的概念 2.了解软件质量保证体系与质量保证的实施的概要。 3.了解正式技术评审概要。包括评审会议、设计质量和程序质量的评审。 4.了解软件配置管理的概念。包括配置项和基线概念、配置管理的主要工作 5.了解软件工程标准化的概念。包括软件工程标准化意义、软件工程标准的制定与推行、 软件工程标准的层次、软件工程的国家标准。 6.了解软件文档的概念。包括文档编制的要求、文档的作用、分类、文档的工作。 7.了解软件过程与过程改进的概念。包括过程分类与过程模型、剪裁过程、过程模型建 造技术、软件过程改进。 8.了解软件过程能力评估的CMM模型,包括过程成熟度的概念、软件机构的能力成熟 度模型、关键过程域、关键实践的概念。 9.了解ISO9000国际标准。包括质量管理、质量认证和质量审核的概念,ISO9000系 列标准的特点、科学依据、主要内容,以及ISO9000-3标准。 内容提要 1.软件质量保证 (1)质量保证的概念 什么是质量保证?它是为保证产品和服务充分满足消费者要求的质量而进行的有计划 有组织的活动。质量保证是面向消费者的活动,是为了使产品实现用户要求的功能,站在用 户立场上来掌握产品质量的。这种观点也适用于软件的质量保证。 软件的质量保证就是向用户及社会提供满意的高质量的产品。进一步地,软件的质量保 证活动也和一般的质量保证活动一样,是确保软件产品在软件生存期所有阶段的质量的活动 即为了确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。它包括 的主要功能如 制定和展开质量方针 制定质量保证方针和质量保证标准 建立和管理质量保证体系; 明确各阶段的质量保证业务 坚持各阶段的质量评审; 确保设计质量 提出与分析重要的质量问题 总结实现阶段的质量保证活动 整理面向用户的文档、说明书等 鉴定产品质量,鉴定质量保证体系 收集、分析和整理质量信息
1 第十章 软件质量保证 一、复习要求 1. 了解软件质量保证、质量保证活动与质量检验的概念。 2. 了解软件质量保证体系与质量保证的实施的概要。 3. 了解正式技术评审概要。包括评审会议、设计质量和程序质量的评审。 4. 了解软件配置管理的概念。包括配置项和基线概念、配置管理的主要工作。 5. 了解软件工程标准化的概念。包括软件工程标准化意义、软件工程标准的制定与推行、 软件工程标准的层次、软件工程的国家标准。 6. 了解软件文档的概念。包括文档编制的要求、文档的作用、分类、文档的工作。 7. 了解软件过程与过程改进的概念。包括过程分类与过程模型、剪裁过程、过程模型建 造技术、软件过程改进。 8. 了解软件过程能力评估的 CMM 模型,包括过程成熟度的概念、软件机构的能力成熟 度模型、关键过程域、关键实践的概念。 9. 了解 ISO 9000 国际标准。包括质量管理、质量认证和质量审核的概念,ISO 9000 系 列标准的特点、科学依据、主要内容,以及 ISO 9000-3 标准。 二、内容提要 1. 软件质量保证 (1) 质量保证的概念 什么是质量保证?它是为保证产品和服务充分满足消费者要求的质量而进行的有计划、 有组织的活动。质量保证是面向消费者的活动,是为了使产品实现用户要求的功能,站在用 户立场上来掌握产品质量的。这种观点也适用于软件的质量保证。 软件的质量保证就是向用户及社会提供满意的高质量的产品。进一步地,软件的质量保 证活动也和一般的质量保证活动一样,是确保软件产品在软件生存期所有阶段的质量的活动。 即为了确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。它包括 的主要功能如: ▪ 制定和展开质量方针; ▪ 制定质量保证方针和质量保证标准; ▪ 建立和管理质量保证体系; ▪ 明确各阶段的质量保证业务; ▪ 坚持各阶段的质量评审; ▪ 确保设计质量; ▪ 提出与分析重要的质量问题; ▪ 总结实现阶段的质量保证活动; ▪ 整理面向用户的文档、说明书等; ▪ 鉴定产品质量,鉴定质量保证体系; ▪ 收集、分析和整理质量信息
(2)软件质量保证(SQA)活动 软件质量保证由各项任务构成,这些任务的参与者有两种人:软件开发人员和质量保证 人员。前者负责技术工作,后者负责质量保证的计划、监督、记录、分析及报告工作。 软件开发人员通过采用可靠的技术方法和措施,进行正式的技术评审,执行计划周密的 软件测试来保证软件产品的质量。软件质量保证人员则辅助软件开发组得到高质量的最终产 品。1993年美国SEI推荐了一组有关质量保证的计划、监督、记录、分析及报告的SQA活 动。这些活动将由一个独立的SQA小组执行(或协助) ①为项目制定SQA计划。该计划在制定项目计划时制定,由相关部门审定。它规定了 软件开发小组和质量保证小组需要执行的质量保证活动,其要点包括:需要进行哪些评价? 需要进行哪些审计和评审?项目采用的标准;错误报告的要求和跟踪过程:SQA小组应产生 哪些文档?为软件项目组提供的反馈数量等 ②参与开发该软件项目的软件过程描述。软件开发小组为将要开展的工作选择软件过 程,SQA小组则要评审过程说明,以保证该过程与组织政策、内部的软件标准、外界所制定 的标准(如ISO9001)以及软件项目计划的其它部分相符。 ③评审各项软件工程活动,核实其是否符合已定义的软件过程。SQA小组识别、记录 和跟踪所有偏离过程的偏差,核实其是否已经改正。 ④审计指定的软件工作产品,核实其是否符合已定义的软件过程中的相应部分。SQA 小组对选出的产品进行评审,识别、记录和跟踪出现的偏差,核实其是否己经改正,定期向 项目负责人报告工作结果。 ⑤确保软件工作及工作产品中的偏差已被记录在案,并根据预定规程进行处理。偏差 可能出现在项目计划、过程描述、采用的标准或技术工作产品中 ⑥记录所有不符合部分,并向上级管理部门报告。跟踪不符合的部分直到问题得到解 除了进行上述活动外,SQA小组还需要协调变更的控制与管理,并帮助收集和分析软件 度量的信息。 (3)质量保证与检验 ①检验在质量保证中的作用 软件质量必须在设计和实现过程中加以保证。如果过程管理不力,软件开发环境或软件 工具不够好,或者由于各种失误导致产生软件差错,其结果就会产生软件失效。为了确保每 个开发过程的质量,防止把软件差错传递到下一个过程,必须进行质量检验 质量保证是面向消费者的,从质量保证的角度来讨论检查,下面几点应当明确 用户要求的是产品所具有的功能,这是“真质量”。靠质量检验,一般检查的是“真 质量”的质量特性。 能靠质量检验的质量特性,即使全数检验,也只是代表产品的部分质量特性 必须在各开发阶段对影响产品质量的因素进行切实的管理,认真检查实施落实情况 只有这样才能使产品达到用户要求,这比单靠检验来保证质量要有效、经济 ■当开发阶段出现异常时,要从质量特性方面进行检验,看是否会给后续阶段带来影响 并对判断其好坏程度。从质量保证角度来看,此项工作极其重要 虽然各开发阶段进展稳定,但由于工具支持不足等,软件产品不能满足用户要求的质 。这时可通过检验对该产品做出评价,判断是否能向用户提供该产品 尽管各开发阶段进展稳定,但也要以一定的标准检验产品,使其交付使用后保持稳定 的质量水平。同时还要根据产品的质量特性,检查各个过程的管理状态 因此,检验的目的有二个。其一是切实搞好开发阶段的管理,检査各开发阶段的质量保 证活动开展得如何;其二是预先防止软件差错给用户造成损失
2 (2) 软件质量保证(SQA)活动 软件质量保证由各项任务构成,这些任务的参与者有两种人:软件开发人员和质量保证 人员。前者负责技术工作,后者负责质量保证的计划、监督、记录、分析及报告工作。 软件开发人员通过采用可靠的技术方法和措施,进行正式的技术评审,执行计划周密的 软件测试来保证软件产品的质量。软件质量保证人员则辅助软件开发组得到高质量的最终产 品。1993 年美国 SEI 推荐了一组有关质量保证的计划、监督、记录、分析及报告的 SQA 活 动。这些活动将由一个独立的 SQA 小组执行(或协助): ① 为项目制定 SQA 计划。该计划在制定项目计划时制定,由相关部门审定。它规定了 软件开发小组和质量保证小组需要执行的质量保证活动,其要点包括:需要进行哪些评价? 需要进行哪些审计和评审?项目采用的标准;错误报告的要求和跟踪过程;SQA 小组应产生 哪些文档?为软件项目组提供的反馈数量等。 ② 参与开发该软件项目的软件过程描述。软件开发小组为将要开展的工作选择软件过 程,SQA 小组则要评审过程说明,以保证该过程与组织政策、内部的软件标准、外界所制定 的标准(如 ISO 9001)以及软件项目计划的其它部分相符。 ③ 评审各项软件工程活动,核实其是否符合已定义的软件过程。SQA 小组识别、记录 和跟踪所有偏离过程的偏差,核实其是否已经改正。 ④ 审计指定的软件工作产品,核实其是否符合已定义的软件过程中的相应部分。SQA 小组对选出的产品进行评审,识别、记录和跟踪出现的偏差,核实其是否已经改正,定期向 项目负责人报告工作结果。 ⑤ 确保软件工作及工作产品中的偏差已被记录在案,并根据预定规程进行处理。偏差 可能出现在项目计划、过程描述、采用的标准或技术工作产品中。 ⑥ 记录所有不符合部分,并向上级管理部门报告。跟踪不符合的部分直到问题得到解 决。 除了进行上述活动外,SQA 小组还需要协调变更的控制与管理,并帮助收集和分析软件 度量的信息。 (3) 质量保证与检验 ① 检验在质量保证中的作用 软件质量必须在设计和实现过程中加以保证。如果过程管理不力,软件开发环境或软件 工具不够好,或者由于各种失误导致产生软件差错,其结果就会产生软件失效。为了确保每 个开发过程的质量,防止把软件差错传递到下一个过程,必须进行质量检验。 质量保证是面向消费者的,从质量保证的角度来讨论检查,下面几点应当明确: ▪ 用户要求的是产品所具有的功能,这是“真质量”。靠质量检验,一般检查的是“真 质量”的质量特性。 ▪ 能靠质量检验的质量特性,即使全数检验,也只是代表产品的部分质量特性。 ▪ 必须在各开发阶段对影响产品质量的因素进行切实的管理,认真检查实施落实情况。 只有这样才能使产品达到用户要求,这比单靠检验来保证质量要有效、经济。 ▪ 当开发阶段出现异常时,要从质量特性方面进行检验,看是否会给后续阶段带来影响, 并对判断其好坏程度。从质量保证角度来看,此项工作极其重要。 ▪ 虽然各开发阶段进展稳定,但由于工具支持不足等,软件产品不能满足用户要求的质 量。这时可通过检验对该产品做出评价,判断是否能向用户提供该产品。 ▪ 尽管各开发阶段进展稳定,但也要以一定的标准检验产品,使其交付使用后保持稳定 的质量水平。同时还要根据产品的质量特性,检查各个过程的管理状态。 因此,检验的目的有二个。其一是切实搞好开发阶段的管理,检查各开发阶段的质量保 证活动开展得如何;其二是预先防止软件差错给用户造成损失
②各个开发阶段中的检验 为了切实做好质量保证,要在软件开发工程的各个阶段实施检验。检验的类型有: 供货检验:这是指对委托外单位承担开发作业,而后买进或转让的构成软件产品的部 件、规格说明、半成品或产品的检查。由于委托单位、委托时间等情况差别很大,往往与质 量相关的信息不完全,要想只靠供货时检査,质量很难保证。因此要调査接受委托单位的开 发能力,并且要充分交流情况。 中间检验/阶段评审:在各阶段的中途或向下一阶段移交时进行的检查叫做中间检验 或阶段评审。阶段评审的目的是为了判断是否可进入下一阶段进行后续开发工作,避免将差 错传播到后续工作中,给后续工作带来不良影响,造成损失 验收检验:确认产品是否已达到可以进行“产品检验”的质量要求。 产品检验:这是软件产品交付使用前进行的检查。其目的是判定向用户提供的软件, 作为产品,是否达到了令人满意的程度。 检验的实施有两种形式:实际运行检验(即白盒测试和黑盒测试)和鉴定。可在各开发阶 段中结合起来使用。各开发阶段及阶段中的检验如图10.1所示 开发阶段 需需求分析①开发目的 ⑤各阶段的产品 ②目标值 作业内容 功能设计③开发量(程序、⑥开发体制 的合理性 文档). 析实施计划④所需资源 结构设计①产品的量(计划量 ⑤评审方法、覆盖性 际量) ⑥出错原因、处理情况及对 数据设计②评审量 该阶段的影响 计 ⑦评审结束、阶段结束的判 过程设计④检出差错的内容和倾向 所标准 程序编制①产品的量(计划量、实际⑥检出的差错内容及倾向 实 量),目标值完成情况.⑦评审方法、覆盖性 单元测试|②评审量 ⑧测试环境 ③检出的差错数 ⑨测试项目设定种类、测 组装测试④计算机使用时间 试用例设计方法 ⑤出错原因、处理情况及⑩评审结束、阶段结束的 现验收 确认测试 对该阶段的影响 判断标准 ①说明书检查—检查与被检查程序有关的用户文档等, 检查,评价②程序检查为了评价和保证程序质量,通过各种测试 测试成品进行检查 运行运行,维护①掌握用户使用产品的质量情况,并反馈到开发部门 维护 图10.1开发阶段与相应的检验项目 2.软件质量保证体系与质量保证的实施 (1)软件质量保证体系 软件的质量保证活动,是涉及各个部门的部门间的活动。例如,如果在用户处发现了软 件故障,产品服务部门就应听取用户的意见,再由检查部门调查该产品的检验结果,进而还 要调查软件实现过程的状况,并根据情况检查设计是否有误,不当之处加以改进,防止再次 发生问题。为了顺利开展以上活动,事先明确部门间的质量保证业务,确立部门间的联合与
3 ② 各个开发阶段中的检验 为了切实做好质量保证,要在软件开发工程的各个阶段实施检验。检验的类型有: ▪ 供货检验:这是指对委托外单位承担开发作业,而后买进或转让的构成软件产品的部 件、规格说明、半成品或产品的检查。由于委托单位、委托时间等情况差别很大,往往与质 量相关的信息不完全,要想只靠供货时检查,质量很难保证。因此要调查接受委托单位的开 发能力,并且要充分交流情况。 ▪ 中间检验/阶段评审:在各阶段的中途或向下一阶段移交时进行的检查叫做中间检验 或阶段评审。阶段评审的目的是为了判断是否可进入下一阶段进行后续开发工作,避免将差 错传播到后续工作中,给后续工作带来不良影响,造成损失。 ▪ 验收检验:确认产品是否已达到可以进行“产品检验”的质量要求。 ▪ 产品检验:这是软件产品交付使用前进行的检查。其目的是判定向用户提供的软件, 作为产品,是否达到了令人满意的程度。 检验的实施有两种形式:实际运行检验(即白盒测试和黑盒测试)和鉴定。可在各开发阶 段中结合起来使用。各开发阶段及阶段中的检验如图 10.1 所示。 图 10.1 开发阶段与相应的检验项目 2. 软件质量保证体系与质量保证的实施 (1) 软件质量保证体系 软件的质量保证活动,是涉及各个部门的部门间的活动。例如,如果在用户处发现了软 件故障,产品服务部门就应听取用户的意见,再由检查部门调查该产品的检验结果,进而还 要调查软件实现过程的状况,并根据情况检查设计是否有误,不当之处加以改进,防止再次 发生问题。为了顺利开展以上活动,事先明确部门间的质量保证业务,确立部门间的联合与
协作的机构十分重要,这个机构就是质量保证体系。图102和103是软件质量保证体系的图 在质量保证体系图上,用户、领导、各部门横向安排,而纵向则顺序列出软件质量保证 活动的各项工作。制定质量体系保证图应注意以下一些问题: 必须明确反馈途径 必须在体系图的纵向(纵坐标方向)顺序写明开发阶段,在横向(横坐标方向)写明组织 机构,明确各部门的职责 必须确定保证系统运行的方法、工具、有关文档资料,以及系统管理的规程和标准 必须明确决定是否可向下一阶段进展的评价项目和评价准则。 ■必须不断地总结系统管理的经验教训,能够修改系统。 仅靠质量保证体系图很难明确具体工作,因此必须制定质量保证计划,在这个计划中确 定质量目标,确定在每个阶段为达到总目标所应达到的要求,对进度做出安排,确定所需的 人力、资源和成本等等。 步骤用户领导计划组 开发组质量审查组售后服务组质量保证 市场需求 质量信息 计求 社会环境 用户意见信息 其他厂商产品动向 软件故障信息 产品计划 计划ⅸ 制定开发方案 技术审查 概要设计〈技术审查 质量保证体制的维持与完善 详细设计(技术审查 实 单元测试 技术审查〉 现 组装测试」 测试前质量检查 产品检查 交付 交 意见处理 质量改进窗议》 技术改进 质量改进促进问题的解决 防止再发生 图102质量保证体系图例(程序检查)
4 协作的机构十分重要,这个机构就是质量保证体系。图 10.2 和 10.3 是软件质量保证体系的图 例。 在质量保证体系图上,用户、领导、各部门横向安排,而纵向则顺序列出软件质量保证 活动的各项工作。制定质量体系保证图应注意以下一些问题: ▪ 必须明确反馈途径。 ▪ 必须在体系图的纵向(纵坐标方向)顺序写明开发阶段,在横向(横坐标方向)写明组织 机构,明确各部门的职责。 ▪ 必须确定保证系统运行的方法、工具、有关文档资料,以及系统管理的规程和标准。 ▪ 必须明确决定是否可向下一阶段进展的评价项目和评价准则。 ▪ 必须不断地总结系统管理的经验教训,能够修改系统。 仅靠质量保证体系图很难明确具体工作,因此必须制定质量保证计划,在这个计划中确 定质量目标,确定在每个阶段为达到总目标所应达到的要求,对进度做出安排,确定所需的 人力、资源和成本等等。 图 10.2 质量保证体系图例(程序检查)
在这个质量保证计划中包括的软件质量保证规程和技术准则应当 指示在何时、何处进行文档检查和程序检查 指示应当采集哪些数据,以及如何进行分析处理,例如,在每次评审和测试中发现的 错误如何修正 描述希望得到的质量度量: 规定在项目的哪个阶段进行评审及如何评审 规定在项目的哪个阶段应当产生哪些报告和计划: 规定产品各方面测试应达到的水平 在计划中,在说明各种软件人员的职责时,要规定为了达到质量目标他们必须进行哪些 活动。其次,要根据这个质量保证体系图,建立在各阶段中执行质量评价的质量评价和质量 检查系统及有效运用质量信息的质量信息系统,并使其运行 步骤用户开发组质量审查组售后服务组出版部门质量保证 分析,设计,评审 计划·设计执 规格说明设计 规格说明编写 设计书检查〉〈设计书检查)(计划书检查)质 说明书执笔 原稿审查」 说明书检查)〈说明书检查〉)〈说明书检查 量保证体制的维持与完善 查 K产品检查 原稿修改/审查 意见处理 付 维 文档质量改进会议D 技术改进 质量改进「促进问题的解决 防止再发生 图10.3质量保证体系图(文档检查) (2)质量保证的实施 软件质量保证的实施需要从纵向和横向两个方面展开。一方面要求所有与软件生存期有 关的人员都要参加,另一方面要求对产品形成的全过程进行质量管理,这要求整个软件部门 齐心协力,不断完善软件的开发环境。此外还需要与用户共同合作。 ①质量目标与度量
5 在这个质量保证计划中包括的软件质量保证规程和技术准则应当 ▪ 指示在何时、何处进行文档检查和程序检查; ▪ 指示应当采集哪些数据,以及如何进行分析处理,例如,在每次评审和测试中发现的 错误如何修正; ▪ 描述希望得到的质量度量; ▪ 规定在项目的哪个阶段进行评审及如何评审; ▪ 规定在项目的哪个阶段应当产生哪些报告和计划; ▪ 规定产品各方面测试应达到的水平。 在计划中,在说明各种软件人员的职责时,要规定为了达到质量目标他们必须进行哪些 活动。其次,要根据这个质量保证体系图,建立在各阶段中执行质量评价的质量评价和质量 检查系统及有效运用质量信息的质量信息系统,并使其运行。 图 10.3 质量保证体系图(文档检查) (2) 质量保证的实施 软件质量保证的实施需要从纵向和横向两个方面展开。一方面要求所有与软件生存期有 关的人员都要参加,另一方面要求对产品形成的全过程进行质量管理,这要求整个软件部门 齐心协力,不断完善软件的开发环境。此外还需要与用户共同合作。 ① 质量目标与度量