本节将介绍软件质量保证。
概括地说,软件质量就是软件与明确地和隐含地定义的需求相一致的程度。具体地说,软件质量是软件与明确叙述的功能和性能需求、文档中明确描述的开发标准,以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。
软件质量具有以下3个要点:
● 用户需求是衡量软件质量的基础,与需求不一致就无质量可言。
● 指定的开发标准定义了一组指导软件开发的准则。如果没有遵守这些准则,肯定会导致软件质量不高。
● 通常还有一些没有明确写进用户需求说明书但开发人员都应当了解的隐含需求(例如易理解性、易修改性等)。如果软件仅满足明确描述的需求,但不满足这些隐含的需求,那么软件的质量仍然是值得怀疑的。
计算机软件是一种复杂、抽象的逻辑实体,它所固有的一些特点包括:抽象性、复杂性、多样性、易变性、软件开发需求难于把握等。所有这些软件独具的特点都增加了软件开发的困难。
影响软件质量的因素主要包括:
● 人的因素;
● 软件需求;
● 质量问题可能出现在开发过程的各个环节上;
● 测试的局限性;
● 质量管理的困难;
● 质量管理未能给予足够的重视;
● 软件人员的传统习惯;
● 开发规范;
● 开发工具的支持不够。
软件质量特性可用多种软件质量模型来描述。本书只介绍ISO/IEC 9126软件质量模型和Mc Call软件质量模型。
国际标准化组织和国际电工委员会发布了关于软件质量的标准ISO/IEC 9126-1991。中国于1996年将其等同采用,成为国家标准《GB/T16260-1996软件产品评价、质量特性及其使用指南》。ISO/IEC 9126软件质量模型由3个层次组成:第一层是6个质量特性,第二层是21个质量子特性,第三层是度量指标。该模型的质量特性和质量子特性如表4-46所示。
表4-14 质量特性和质量子特性
(续表)
与功能及其指定的性质有关的一组软件属性。
● 适宜性:规定任务提供一组功能的能力及这组功能的适宜程度。
● 准确性:系统满足需求规格说明和用户目标的程度,即在预定环境下能正确地完成预期功能的程度。
● 互用性:同其他指定系统的协同工作能力。
● 依从性:软件服从有关标准、约定、法规及类似规定的程度。
● 安全性:避免对程序及数据的非授权故意或意外访问的能力。
与软件在规定的一段时间内和规定的条件下维持其性能水平有关的一组软件属性。
● 成熟性:由软件故障引起失效的频度。
● 容错性:在软件错误或违反指定接口情况下维持指定性能水平的能力。
● 可恢复性:在故障发生后重新建立其性能水平、恢复直接受影响数据的能力,以及为达此目的所需的时间与工作量。
与使用的难易程度及规定或隐含用户对使用方式所做的评价有关的软件属性。
● 可理解性:用户理解该软件系统的难易程度。
● 易学性:用户学习使用该软件系统的难易程度。
● 可操作性:用户操作该软件系统的难易程度。
与在规定条件下软件的性能水平与所用资源量之间的关系有关的一组软件属性。
● 时间特性:响应和处理时间及软件执行其功能时的吞吐量。
● 资源特性:软件执行其功能时,所使用的资源量及使用资源的持续时间。
与软件维护的难易程度有关的一组软件属性。
● 可分析性:诊断缺陷或失效原因、判定待修改程序的难易程度。
● 可修改性:修改、排错或适应环境变化的难易程度。
● 稳定性:修改造成难以预料的后果的风险程度。
● 可测试性:测试已修改软件的难易程度。
注意 :ISO/IEC 9126中“可维护性”特性所包含的“子特性”与“软件的可维护性”一节中介绍的Boehm质量模型中影响可维护性的因素在表达上略有不同,主要增加了“稳定性”一项。
与软件可从某一环境转移到另一环境的能力有关的一组软件属性。
● 适应性:软件无须采用特殊处理就能适应不同的规定环境的程度。
● 易安装性:在指定环境下安装软件的难易程度。
● 一致性:软件服从与可移植性有关的标准或约定的程度。
● 可替换性:软件在特定软件环境中用来替代指定的其他软件的可能性和难易程度。
Mc Call软件质量模型从软件产品的运行、修正、转移等三个方面确定了11项软件质量特性。本书介绍的是增加了“健壮性”、“风险性”和“可理解性”的扩充Mc Call模型,如表4-15所示。
表4-15 Mc Call模型
Mc Call模型中质量特性的准确定义与ISO/IEC 9126模型中对应项的定义大同小异,在此不再重复定义。应当注意:Mc Call模型中的“完整性”相当于ISO/IEC 9126模型中的“安全性”,而Mc Call模型中的“健壮性”虽与ISO/IEC 9126模型中的“容错性”有点相似但并不完全相同。健壮性的定义是:在硬件发生故障、输入的数据无效或操作错误等意外环境下,系统能做出适当响应的程度。
软件质量保证是为保证软件系统充分满足用户要求的质量而进行的有计划、有组织的活动,其目的是生产高质量的软件。
软件质量保证的主要困难表现在以下几方面。
● 软件开发的管理人员往往更关心项目开发的成本与进度。因为成本和进度是显而易见的,而软件质量则难以度量。
● 如果软件开发的管理人员对于交付的软件含有多少隐患不必负什么责任,他们必定没有太高的热情去控制开发的质量,更不必说保证质量。
● 开发人员的习惯一旦形成便难以改变,他们的行为也难于控制。而高质量的软件产品,又主要取决于参与开发的人员。
● 复杂的软件项目需要许多技术人员和管理人员参与,对问题的不同认识和误解如不能及时消除,必然影响软件质量。
● 软件开发人员的频繁流动,特别是骨干开发人员的流失,也会使软件质量受到一定影响。
软件质量保证的主要手段如下。
● 开发初期制定质量保证计划,并在开发中坚持实行。
● 开发前选定或制定开发标准或开发规范,并遵照实施。
● 从选择分析设计方法和工具,形成高质量的分析模型和设计模型。
● 严格执行阶段评审,以便及时发现问题。
● 各个开发阶段的测试。
● 对软件的每次“变动”都要经过申请、评估、批准、实施、验证等步骤。
● 软件质量特性的度量化。
● 软件生存期的各阶段都要有完整的文档。
标准化是一门综合性学科,其工作内容极为广泛,可渗透到各个领域。标准化工作的特征包括横向综合性、政策性和统一性。本书只介绍软件工程标准。
按制定软件工程标准的不同层次和适用范围,软件工程标准可分为五级:
● 国际标准:由国际联合机构制定和公布,提供各国参考的标准。例如以ISO起头的标准是国际标准化组织发布的标准,以IEC起头的标准是国际电工委员会标准。
● 国家标准:由政府或国家级的机构制定或批准,适用于全国范围的标准。例如以GB起头的标准是中华人民共和国标准,以FIPS起头的标准是美国国家标准局发布的标准。
● 行业标准:由行业机构、学术团体或国防机构制定,并适用于某个业务领域的标准。例如以GJB起头的标准是指中华人民共和国军用标准,以IEEE起头的标准是国际电气和电子工程师学会标准。
● 企业规范:一些大型企业或公司,由于软件工程工作的需要制定的适用于本部门的规范。
● 项目规范:由某一科研生产项目组织制定,且为该项任务专用的软件工程规范。
国家标准局1988年1月批准并发布的《GB8567-1988计算机软件产品开发文件编制指南》规定在一项软件开发过程中应该产生14种文件:
A 可行性研究报告
B项目开发计划
C软件需求说明书
D 数据要求说明书
E 概要设计说明书
F 详细设计说明书
G 数据库设计说明书
H 用户手册
I 操作手册
J 模块开发卷宗
K 测试计划
L 测试分析报告
M 开发进度月报
N 项目开发总结报告
其中管理人员主要使用的有项目开发计划、可行性研究报告、模块开发卷宗、开发进度月报和项目开发总结报告;开发人员主要使用的有项目开发计划、可行性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、测试计划和测试分析报告;维护人员主要使用的有设计说明书、测试分析报告和模块开发卷宗。