软件工程系列文章六
软件质量是指反映软件系统或软件产品满足规定或隐含需求的能力的特征和特性全体
软件质量管理是指对软件开发过程进行独立的检查活动,由质量保证、质量规划和质量控制 3 个主要活动构成
软件质量保证是指为了保证软件系统或软件产品充分满足用户要求的质量而进行的有计划、有组织的活动,其目的是生产高质量的软件
软件质量特性
讨论软件质量首先要了解软件的质量特性,目前已经有多种软件质量模型来描述软件质量特性,例如 ISO/IEC 9126 软件质量模型和 Mc Call 软件质量模型
ISO/IEC 9126 软件质量模型
ISO/IEC 9126 软件质量模型由 3 个层次组成:第一层是质量特性,第二层是质量子特性,第三层是度量指标
功能性 (Functionality)
与一组功能及其指定的性质的存在有关的一组属性,功能是指满足规定或隐含需求的那些功能
- 适应性 (Suitability) 。与对规定任务能否提供一组功能以及这组功能是否适合有关的软件属性
- 准确性 (Accurateness) 。与能够得到正确或相符的结果或效果有关的软件属性
- 互用性 (Interoperability) 。与其他指定系统进行交互操作的能力相关的软件属性
- 依从性 (Compliance) 。使软件服从有关的标准、约定、法规及类似规定的软件属性
- 安全性 (Security) 。与避免对程序及数据的非授权故意或意外访问的能力有关的软件属性
可靠性 (Reliability)
与在规定的一段时间内和规定的条件下软件维持在其性能水平有关的能力
- 成熟性 (Maturity) 。与由软件故障引起失效的频度有关的软件属性
- 容错性 (Fault tolerance) 。与在软件错误或违反指定接口的情况下维持指定的性能水平的能力有关的软件属性
- 易恢复性 (Recoverability) 。与在故障发生后,重新建立其性能水平并恢复直接受影响数据的能力,以及为达到此目的所需的时间和努力有关的软件属性
易使用性 (Usability)
与为使用所需的努力和由一组规定或隐含的用户对这样使用所做的个别评价有关的一组属性
- 易理解性 (Understandability) 。与用户为理解逻辑概念及其应用所付出的劳动有关的软件属性
- 易学性 (Learnability) 。与用户为学习其应用 (例如操作控制、输入、输出) 所付出的努力相关的软件属性
- 易操作性 (Operability) 。与用户为进行操作和操作控制所付出的努力有关的软件属性
效率 (Efficiency)
在规定条件下,与软件的性能水平与所用资源量之间的关系有关的软件属性
- 时间特性 (Time behavior) 。与响应和处理时间以及软件执行其功能时的吞吐量有关的软件属性
- 资源特性 (Resource behavior) 。与软件执行其功能时,所使用的资源量以及使用资源的持续时间有关的软件属性
可维护性 (Maintainability)
与进行规定的修改所需要的努力有关的一组属性
- 易分析性 (Analyzability) 。与为诊断缺陷或失效原因,或为判定待修改的部分所需努力有关的软件属性
- 易改变性 (Changeability) 。与进行修改、排错或适应环境变换所需努力有关的软件属性
- 稳定性 (Stability) 。与修改造成未预料效果的风险有关的软件属性
- 易测试性 (Testability) 。为确认经修改软件所需努力有关的软件属性
可移植性 (Portability)
与软件可从某一环境转移到另一环境的能力有关的一组属性
- 适应性 (Adaptability) 。与软件转移到不同环境时的处理或手段有关的软件属性
- 易安装性 (Installability) 。与在指定环境下安装软件所需努力有关的软件属性
- 一致性 (Conformance) 。使软件服从与可移植性有关的标准或约定的软件属性
- 易替换性 (Replaceability) 。与一软件在该软件环境中用来替代指定的其他软件的可能和努力有关的软件属性
Mc Call 软件质量模型
Mc Call 软件质量模型从软件产品的运行、修正和转移 3 个方面确定了 11 个质量特性
Mc Call 也给出了一个三层模型框架。第一层是质量特性,第二层是评价准则,第三层是度量指标
软件评审
通常,把 “质量” 理解为 “用户满意程度” 。为了使得用户满意,有以下两个必要条件
- 设计的规格说明书符合用户的要求,这称为设计质量
- 程序按照设计规格说明所规定的情况正确执行,这称为程序质量
设计质量的评审内容
设计质量评审的对象是在需求分析阶段产生的软件需求规格说明、数据需求规格说明,以及在软件概要设计阶段产生的软件概要设计说明书等。通常从以下几个方面进行评审
- 评价软件的规格说明是否合乎用户的要求,即总体设计思想和设计方针是否明确;需求规格说明是否得到了用户或单位上级机关的批准;需求规格说明与软件的概要设计规格说明是否一致等
- 评审可靠性,即是否能避免输入异常 (错误或超载等) 、硬件失效及软件失效所产生的失效,一旦发生应能及时采取代替手段或恢复手段
- 评审保密措施实现情况,即是否对系统使用资格进行检查
- 评审操作特性实施情况,即操作命令和操作信息的恰当性;输入数据与输入控制语句的恰当性;输出数据的恰当性;应答时间的恰当性等
- 评审性能实现情况,即是否达到所规定性能的目标值
- 评审软件是否具有可修改性、可扩充性、可互换性和可移植性
- 评审软件是否具有可测试性
- 评审软件是否具有复用性
程序质量的评审内容
程序质量评审通常是从开发者的角度进行评审,与开发技术直接相关。它是着眼于软件本身的结构、与运行环境的接口以及变更带来的影响而进行的评审活动
软件的结构如下
- 功能结构。需要检查的项目:
- 数据结构
- 功能结构
- 数据结构和功能结构之间的对应关系
- 功能的通用性
- 模块的层次
- 模块结构。模块层次结构是模块的静态结构,现在要检查模块的动态结构。模块分为处理模块和数据模块两类,模块间的动态结构也与这些模块分类有关。对这样的模块结构进行检查的项目如下
- 控制流结构
- 数据流结构
- 模块结构与功能结构之间的对应关系
- 处理过程的结构
与运行环境的接口
运行环境包括硬件、其他软件和用户,主要的检查项目如下
- 与硬件的接口。包括与硬件的接口约定,即根据硬件的使用说明等所做出的规定;硬件故障时的处理和超载时的处理
- 与用户的接口。包括与用户的接口约定,即输入数据的结构;输出数据的结构;异常输入时的处理,超载输入时的处理;用户存取资格的检查等
软件容错技术
提高软件质量和可靠性的技术大致可分为两类,一类是避开错误,即在开发的过程中不让差错潜入软件的技术;另一类是容错技术,即对某些无法避开的差错,使其影响减至最小的技术
容错软件的定义
- 规定功能的软件,在一定程度上对自身错误的作用 (软件错误) 具有屏蔽能力,则该软件为容错软件
- 规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则该软件为容错软件
- 规定功能的软件,在因错误发生错误时仍然能在一定程度上完成预期的功能,则该软件为容错软件
- 规定功能的软件,在一定程度上具有容错能力,则该软件为容错软件
容错的一般方法
实现容错的主要手段是冗余。冗余是指对于实现系统规定功能是多余的那部分资源,包括硬件、软件、信息和时间。由于加入了这些资源,有可能使系统的可靠性得到较大的提高。通常,冗余技术分为 4 类
- 结构冗余。结构冗余是通常采用的冗余技术,按其工作方法可以分为静态、动态和混合冗余 3 种
- 静态冗余
- 动态冗余
- 混合冗余
- 信息冗余。为检测或纠正信息在运算或传输中的错误需外加一部分信息
- 时间冗余。指以重复执行指令或程序来消除瞬时错误带来的影响
- 冗余附加技术。指为实现上述冗余技术所需的资源和技术,包括程序、指令、数据、存放和调动它们的空间和通道等
在屏蔽硬件错误的容错技术中,冗余附加技术包括:
- 关键程序和数据的冗余存储及调用
- 检测、表决、切换、重构、纠错和复算的实现
在屏蔽软件错误的容错系统中,冗余附加技术的构成包括:
- 冗余备份程序的存储及调用
- 实现错误检测和错误恢复的程序
- 实现容错软件所需的固化程序
软件工具
用来辅助软件开发、运行、维护、管理和支持等过程中的活动的软件称为软件工具
软件开发工具
对应于软件开发过程的各种活动,软件开发工具通常有需求分析工具、设计工具、编码与排错工具、测试工具等
软件维护工具
辅助软件维护过程中活动的软件称为软件维护工具,它辅助维护人员对软件代码及其文档进行各种维护活动。软件维护工具主要有版本控制工具、文档分析工具、开发信息库工具、逆向工程工具和再工程工具