软件质量模型课件
洁、清晰和可理解的程度。
安全性:控制或保护程序和数据机制的有效性。 工具性:程序监视自身运行和识别出现错误的程序。 简明性: 程序代码的紧密程度。 可训练性:程序使新用户使用该系统的辅助程度。 可操作性: 程序操作的难易程度。 可审计性: 检查与标准是否符合的难易程度。 可扩充性:系结构、数据或过程设计可扩充的程度。 模块性 : 程序各构件的功能独立性。
安全性
可靠 性
产
品
运
效率
行
完整 性
使用 性 图5 McCall等人提出的软件质量模型
工具性 可审计性
主要用途
质量因素 正确 性
评价准则
产
可靠 性
品
运 行
效率
完整 性
使用 性 图6 McCall等人提出的软件质量模型
可训练性 可操作性
主要用途
质量因素
评价准则
维护性
产
品
修 改
测试性
灵活性 图7 McCall等人提出的软件质量模型
构和类型的程度。
国际标准和国家标准规定的质量特性标准中规定 了6个质量特性及其相关的21个质量子特性(如图 13所示)。6个质量特性的含义在表2中给出。
特性
功能性 Functionality
可靠性 Reliability
子特性
适合性 准确性 互操作性 依从性 安全性 成熟性 容错性 易恢复性
Suitability Accuracy Interoperability Compliance Security Maturity Fault tolerance Recoverability
正确 性
可靠 性
产
品
运
效率
行
完整 性
使用 性 图3 McCall等人提出的软件质量模型
一致性 容错性 准确性 执行效率 模块性 简洁性
主要用途
质量因素
评价准则
正确 性
执行效率
可靠 性
产
品
运 行
效率
完整 性
使用 性 图4 McCall等人提出的软件质量模型
简明性 可操作性
主要用途
质量因素
评价准则
正确 性
特性
可维护性 Mai特性
易分析性 易更改性 稳定性 易测试性
适应性 易安排性 一致性 易替换性
Analysability Changeability Stability Testability
Adaptability Installability Conformance Replaceability
自描述性: 源代码提供自身描述的程度。 简洁性: 程序易于理解的程度。 通用性: 程序各构件潜在的应用范围。 硬件独立性:软件与运行它的硬件之间的相关程度。 软件独立性:程序与非标准编程语言性质、
操作系统特性、以及其他环境 限制的无关程度。 通信共用性: 使用标准接口、协议和带宽的
程度。 数据共用性: 在整个程序中使用标准数据结
质量因素 移植性
复用性
共运行性 图12 McCall等人提出的软件质量模型
评价准则
模块性 通用性 通信共用性 数据共用性
• 可跟踪性:沿一个设计说明或一个实际程序 构件返回到需求的能力。
• 完整性: 所需功能实现的程度。 • 一致性: 在整个软件开发项目中使用统一
的设计和文档编制技术的程度。 • 容错性:当程序出错时,造成破坏的程度。 • 准确性: 计算和控制的精确程度。 • 执行效率:程序的运行时间。 • 复杂性 : 程序结构化、模块化、简明、简
图13 质量特性与质量子特性
特性
易使用性 Usability
效率 Efficiency
子特性
易理解性 易学习性 易操作性 时间特性
资源特性
Understandability Learnability Operability Time behaviour
Resource behaviour
图14 质量特性与质量子特性
维护性 灵活性 测试性
修转 正移
可移植性 可重复用 互操作性
运行
正确性 可靠性
效率
完整性 使用性
图1 在运行阶段用户的质量特性观点
主要用途 产 品 运 行
质量因素
评价准则
正确 性
可跟踪性
可靠 性 效率
完整 性
完整性 一致性
使用 性 图2 McCall等人提出的软件质量模型
主要用途
质量因素
评价准则
主要用途
质量因素
评价准则
移植性
模块性
自描述性
产
品 转 移
复用性
通用性
硬件独立性
共运行性 图10 McCall等人提出的软件质量模型
软件独立性
主要用途
质量因素
评价准则
移植性
模块性
自描述性
产
品
转 移
复用性
通用性
硬件独立性
共运行性 图11 McCall等人提出的软件质量模型
软件独立性
主要用途 产 品 转 移
McCall提出了表明软件质量的11个质量特性,表1给 出了McCall提出的11个质量特性及其含意。
表1 McCall提出的质量特性
用户对于已投人使用的软件,会关心软件运行以后表现出来的运行 特性,修正特性和转移特性。也即从这3个方面理解上述11个质量 特性,于是我们把11个质量特性分为3组,使其分别录属于上述3个 方面,请参见图1。
图15 质量特性与质量子特性
表2 国际标准规定的质量特性
表3 软件质量属性
在表3中,分两类来描述每个项目都要考虑的质 量属性;还有其它许多属性 。一些属性对于嵌入 式系统是很重要的(高效性和可靠性),而其它的属 性则用于主机应用程序(有效性和可维护性)或桌面 系统(互操作性和可用性)。在一个理想的范围中, 每一个系统总是最大限度地展示所有这些属性的 可能价值。系统将随时可用,决不会崩溃,可立 即提供结果,并且易于使用。因为理想环境是不 可得到的,因此,你必须知道表2.5.3中那些属性 的子集对项目的成功至关重要。然后,根据这些 基本属性来定义用户和开发者的目标,从而产品 的设计者可以作出合适的选择。
一致性 工具性 简明性 模块性 自描述性 简洁性
主要用途
质量因素
评价准则
维护性
产
品
修 改
测试性
灵活性 图8 McCall等人提出的软件质量模型
复杂性 工具性 可审计性 模块性 自描述性 简洁性
主要用途
质量因素
评价准则
维护性
产
品
修 改
测试性
灵活性 图9 McCall等人提出的软件质量模型
一致性 复杂性 简明性 可扩充性 模块性 简洁性 通用性
质量属性
虽然有许多产品特性可以称为质量属性(Quality Attribute),但是在许多系统中需要认真考虑的仅是 其中的一小部分。如果开发者知道哪些特性对项目 的成功至关重要,那么他们就能选择软件工程方法 来达到特定的质量目标。根据不同的设计可以把质 量属性分类。一种属性分类的方法是把在运行时可 识别的特性与那些不可识别的特性区分开。 另一种方法是把对用户很重要的可见特性与对开发 者和维护者很重要的不可见特性区分开。 那些对开发者具有重要意义的属性使产品易于更改、 验证,并易于移植到新的平台上,从而可以间接地 满足客户的需要。