软件工程
电子教案
王树林
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
The software engineering approach described in
this book works toward a single goal,to produce
high –quality software,What is software quality?
8.1 Quality Concept
就象没有两片雪花是相同的一样,所有
的工程和制造产品都会表现出差异。这是自
然界的规律。软件也一样。
差异控制是质量控制的核心。
质量控制是为了保证每一件工作产品都满足对
它的需求而应用于整个开发周期中的一系列
审查、复审和测试。度量和反馈相结合。
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
质量控制视为整个开发过程的一部分。
所有的工作产品都具有定义好的和可度量
的规约。
8.1.3 质量保证
质量保证由管理层的审计和报告功能构成。
质量保证的目标是为管理层提供产品质量信
息。发现质量不符合预定目标,则由管理层
负责解决这一问题。
8.1.4 质量的成本
质量成本包括所有由质量或者进行与质量
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
有关的活动所导致的成本。预先设定成本基线,
标识降低成本的机会。
质量成本可以被划分为与预防、鉴定及失败相
关的成本。
预防成本:质量计划、正式技术复审、测试设
备、培训等。
鉴定成本:过程内和过程间审查、设备校准和
维护、测试等。
失败成本:包括内部失败成本和外部失败成本。
内部失败成本:产品交付用户以前发现错误而
引发的成本。 包括返工、修复、失败模式分
析。
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
外部失败成本:产品交付用户以后发现错
误而引发的成本。包括解决用户的抱怨、
退换产品、求助电话支持和保修工作。
改正一个错误的
相对成本
需求分析 设计 编码 开发测试
1倍
3--6倍
10倍 15--40倍
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
8.2 质量运动
全面质量管理。
8.3 软件质量保证
生产高质量的软件是一个十分重要的目标。
1)软件需求是进行质量度量的基础,与需求不
符就是质量不高。
2)指定的标准定义了一组指导软件开发的准则,
就极有可能导致质量不高。
3)通常有一组隐含需求是不被提及的(如易维
护性需求)。如果软件符合了明确的需求却
没有满足隐含需求,软件质量仍然值得怀疑。
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
8.3.1 背景
软件质量保证的定义是为了保证软件质量
而必需的有计划的和系统化的行动模式。
在计算机发展的早期,质量保证曾经只由
程序员承担。而今天,则由软件工程师、项
目管理者、客户、销售人员和 SQA小组的成
员。 SQA小组充当客户在公司内部的代表。
SQA小组的成员必须以客户的观点看待软件。
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
8.3.2 SQA活动
软件质量保证:
软件工程师:做技术工作。正式技
术复审、执行计划周密的软件测试
SQA小组:计划、监督、记录、分析及
报告工作。辅助软件工程小组得到高质
量的最终产品。
参与开发该项目的软件过程描述。
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
复审各项软件工程活动,对其是否符合定义好
的软件过程进行核实。
审计指定的软件工作产品,对其是否符合定义
好的软件过程中的响应部分进行核实。
确保软件工作及工作产品中的偏差已被记录在
案,并根据预定规程进行处理。
记录所有不符合的部分,并报告给高级管理者。
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
8.4 软件复审
软件复审是软件工程中的过滤器。起到发
现软件过程各个点上的错误的作用。如净化
分析、设计和编码中所产生的软件工作产品。
一次复审是一种借助于一组人的差异性来达到
目的方法;
1)指出一个人或小组生产的产品所需进行的改
造。
2)确定产品中不需要或者不希望改进的部分。
3)得到与没有进行复审相比更加一致,或者至
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
少更可预测的技术工作的质量,从而使得技术
工作更易于管理。
8.4.1 软件缺陷对成本的影响
在软件过程范围中,术语缺陷和失败是同
义词。他们都表示在软件交付给用户之前由
软件工程师发现的质量问题。
正式技术复审的目的是在此过程中发现错误,
以便较早发现错误,防止错误被传播到软件
过程的后续阶段。
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
8.4.2 缺陷的放大和消除
可以用缺陷放大模型来说明在软件工程
过程中的概要设计、详细设计和编码阶
段中错误的产生及检测。错误可能因为
疏忽而产生;复审过程可能没有发现新
产生的以及来自此步骤之前的错误,导
致错误传播到下一个阶段。
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
通过的错误
放大错误 1:X
新产生错误
错误检测
有效性百分比
缺陷放大模型
传给下一
个步骤的
错误
来自以
前步骤
的错误
Defects Detection
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
为了进行复审,开发人员必须花费时间和工作
量,开发组织必须花费金钱。
现在付出,否则以后付出更多。
8.5 Formal Technical Reviews
正式技术复审( FTR)是一种由软件工程师进行
的软件质量保证活动。
FTR的目标, ( 1) 在软件的任何一种表示形式
中发现功能、逻辑或实现的错误;
( 2)证实经过复审的软件的确满足需求;
( 3)保证软件的表示符合预定义的标准;
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
( 4)得到以一种一致的方式开发的软件;
( 5)使项目更易于管理。
提高项目的连续性,培养后备人员。
每次 FTR都以会议形式进行,只有经过适当的计
划、控制和参与,FTR才能成功。
8.5.1 复审会议
复审会议应该在 3—5人之间进行
应该进行提前准备,但是每个人占用工作时间
应该少于 2小时。
复审会议时间应该不超过 2小时。
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
FTR的工作焦点是工作产品,可以是软件的一
部分,如一部分需求规约、一个模块的详细
设计、一个模块的原代码清单等。
8.5.2 复审报告和记录保存
在 FTR期间,一名复审者主动记录所有被提出
的问题。复审结束后,再对这些问题进行小
结,并生成一份复审问题列表。还要完成一
份简单的复审总结报告。
8.5.3 复审指南
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
8.6 SQA的形式化方法
一个计算机程序可以看作一个数学对象,对
于每一种程序设计语言都能够定义一套严格
的语法和语义。需求模型也可以以一种形式
化方法表达。一旦需求说明以一种严格的方
式表达出来,就可以采用程序正确性的数学
证明来说明程序是否严格符合他的说明。
8.7 统计质量保证
1)收集和分类软件缺陷信息
2)尝试对每个缺陷的形成原因
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
? 说明不完整或说明错误
? 与客户通信中所产生的误解
? 故意与说明偏离
? 违反编程标准
? 数据表示有错
? 模块接口不一致
? 设计逻辑有错误
? 不准确或不完整的文档
? 不一致的人机界面
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
8.8 软件可靠性
计算机程序的可靠性无疑是软件质量的一
个重要因素。
8.8.1 可靠性和可用性的度量
8.8.2 软件的安全和危险的分析
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
8.10 ISO 9000质量标准
ISO 9000标准以一种能够适用于任何行业的一
般标准描述了质量保证的要素。
为了登记成为 ISO 9000中包含质量保证系统中的
一种,一个公司的质量系统和操作应该由第
三方审计者仔细审查。查看其与标准的的符
合性以及操作的有效性。
成功登记之后,公司将收到颁发的证书。此后
每半年进行一次检查性审计。
8.10.1 ISO 对质量保证系统的方法
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
8.10.2 ISO 9001标准
ISO 9001是应用于软件工程的质量保证标准。
标准中包含了高效的质量保证系统必须体现
的 20条需求。
1)管理责任
2)质量系统
3)合同复审
4)设计控制
5)文档和数据控制
6)采购
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
7)对客户提供的产品的控制
8)产品标识和可跟踪性
9)过程控制
10)审查和测试
11)审查、度量和测试设备的控制
12)审查和测试状态
13)对不符合标准产品的控制
14) 改正和预防行动
CHAPTER 8
SOFTWARE QUALITY ASSURANCE
15) 处理、存储、包装、保存和交付。
16)质量记录的控制
17)内部质量审计
18)培训
19)服务
20)统计技术
SUMMARY
Software quality assurance is an umbrella activity
that is applied at each step in the software process,
SQA encompasses procedures for the effective
application of methods and tools,formal
technical reviews,testing strategies and
techniques,procedures for change control,
procedures for assuring compliance to
standards,and measurement and reporting
mechanisms.
SUMMARY
SQA is complicated by the complex nature
of software quality –--an attribute of
computer programs that is defined as
―conformance to explicitly and implicitly
defined requirements.‖ But when
considered more generally,software
quality encompasses many different
product and process factors and related
metrics.
SUMMARY
Software reviews are one of the most
important SQA activities,Reviews serve as
a filter for the software process,removing
errors while they are relatively inexpensive
to find and correct, The formal technical
review or walkthrough is a stylized review
meeting that has been shown to be
extremely effective in uncovering errors.
SUMMARY
To properly conduct software quality assurance,
data about the software engineering process
should be collected,evaluated,and disseminated,
Statistical SQA helps to improve the quality of
the product and the software process itself,
Software reliability models extend measurements,
enabling collected defect data to be extrapolated
into projected failure rates and reliability
predictions,
SUMMARY
In summary,we recall the words of Dunn
and Ullman, ―software quality assurance is
the mapping of the managerial precepts
and design disciplines of quality assurance
onto the applicable quality is the measure
of a mature engineering discipline,When
the mapping alluded to above is
successfully accomplished,mature
software engineering is the result.