软件质量模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
McCall提出了表明软件质量的11个质量特性,表1 给出了McCall提出的11个质量特性及其含意。
表1 McCall提出的质量特性
质量特性
含
意
可回答的问题
正确性 程序能够满足规格说明和 它做了该做的事吗? Correctness 完成用户业务目标的程度 可靠性 Reliability 程序能够按要求的精度实 它总能准确地工作 现其预期功能的程度 吗?
29
1 对用户重要的属性
1)有效性 有效性指的是在预定的启动时间中,系统真正可用并 且完全运行时间所占的百分比。有些任务比起其它任务 具有更严格的时间要求,此时,当用户要执行一个任务 但系统在那一时刻不可用时,用户会感到很沮丧。询问 用户需要多高的有效性,并且是否在任何时间,对满足 业务或安全目标有效性都是必须的。一个有效性需求可 能这样说明:“工作日期间,在当地时间早上6点到午夜, 系统的有效性至少达到99.5%,在下午4点到6点,系统 的有效性至少可达到99.95%。
2
效率 Efficiency 完整性 Integrity 可用性 Usability
程序实现其功能所需要的 它能在硬件上尽 计算机资源量 力工作吗? 软件或数据不受未授权人 它是安全吗? 控制的程度 学习、操作程序、为其准 它可用吗? 备输入数据、解释其输出 的工作量
可维护性 对运行的程序找到错误并 它可调整吗? Maintainability 排除错误的工作量 测试性 Testability 为保证程序执行其规定的 它可测试吗? 功能所需的测试工作量
互操作性 一系统与另一系统协同运行所 它能够与另 外系统联接 Interoperability 需的工作量 吗?
4
用户对于已投人使用的软件,会关心软件运行以后表现出来的运行 特性,修正特性和转移特性。也即从这3个方面理解上述11个质量 特性,于是我们把11个质量特性分为3组,使其分别录属于上述3 个方面,请参见图1。 维护性 灵活性 测试性 可移植性 可重复用 互操作性
15
主要用途
质量因素
评价准则
移植性
模块性 产 品 转 移 通用性 通信共用性 数据共用性
复用性
共运行性 图12 McCall等人提出的软件质量模型
16
• 可跟踪性:沿一个设计说明或一个实际程序 构件返回到需求的能力。 • 完整性: 所需功能实现的程度。 • 一致性: 在整个软件开发项目中使用统一 的设计和文档编制技术的程度。 • 容错性:当程序出错时,造成破坏的程度。 • 准确性: 计算和控制的精确程度。 • 执行效率:程序的运行时间。 • 复杂性 : 程序结构化、模块化、简明、简 洁、清晰和可理解的程度。
26
产品的不同部分与所期望的质量特性有着不同的 组合。高效性可能对某些部分是很重要的,而可 用性对其它部分则很重要。把应用于整个产品的 质量特性与特定某些部分、某些用户类或特殊使 用环境的质量属性要区分开。把任何全局属性需 求记录到软件需求规格说明相应的部分中,并把 特定的目标和列在软件需求规格说明的特性、使 用实例或功能需求相联系起来。
27
定义质量属性
你必须根据用户对系统的期望来确定质量属性。 定量地确定重要属性提供了对用户期望的清晰理解, 这将有助于设计者提出最合理的解决方案。然而, 大多数用户并不知道如何回答诸如“互操作性对你 的重要性如何?”或者“软件应该具有怎样的可靠 性?”等问题。在一个项目中,分析员想出了对于 不同的用户类可能很重要的属性,并根据每一个属 性设计出许多问题。他们利用这些问题询问每一个 用户类的代表,可以把每个属性分成一级(不必多加 考虑的属性)到五级(极其重要的属性)。这些问题的 回答有助于分析员决定哪些质量特性用作设计标准 是最重要的。
17
安全性:控制或保护程序和数据机制的有效性。 工具性:程序监视自身运行和识别出现错误的程序。 简明性: 程序代码的紧密程度。 可训练性:程序使新用户使用该系统的辅助程度。 可操作性: 程序操作的难易程度。 可审计性: 检查与标准是否符合的难易程度。 可扩充性:系结构、数据或过程设计可扩充的程度。 模块性 : 程序各构件的功能独立性。
主要用途
质量因素
评价准则
移植性
模块性 自描述性
产 品 转 移
通用性 复用性 硬件独立性 软件独立性
共运行性
图10 McCall等人提出的软件质量模型
14
主要用途
质量因素
评价准则
移植性
模块性
自描述性 产 品 转 移
复用性
通用性 硬件独立性 软件独立性
共运行性
图11 McCall等人提出的软件质量模型
28
然后,分析员与用户一起为每一属性确定特定的、可 测量的和可验证的需求。如果质量目标不可验证,那 么就说不清是否达到这些目标。在合适的地方为每一 个属性或目标指定级别或测量单位,以及最大和最小 值。如果不能定量地确定某些对项目很重要的属性, 那么至少应该确定其优先级。 另一个定义属性的方法是确定任何与质量期望相冲突 的系统行为。通过定义不悦人意行为——一种反向需 求——你可以设计出强制系统表现出那些行为的测试 用例。如果你不能强制系统,那么你可能达到了你的 属性目标。这种方法最适用于要求安全性能很高的应 用程序,在这些应用程序中,系统的差错可能会导致 生命危险。
工具性
可审计性
完整 性
使用 性
图5 McCall等人提出的软件质量模型
9
主要用途
质量因素
正确 性
评价准则
产 品 运 行
可靠 性 效 率 可训练性 完整 性 可操作性
使用 性
图6 McCall等人提出的软件质量模型
10
主要用途
质量因素
评价准则
维护性
一致性 工具性
产 品 修 改
简明性 测试性 模块性 自描述性 简洁性 灵活性 图7 McCall等人提出的软件质量模型
11
主要用途
质量因素
评价准则
维护性
复杂性 工具性
产 品 修 改
可审计性 测试性 模块性 自描述性 简洁性
灵活性 图8 McCall等人提出的软件质量模型
12
主要用途
质量因素
评价准则
维护性
一致性 复杂性
产 品 修 改
简明性 测试性 可扩充性 模块性 简洁性 通用性
13
灵活性 图9 McCall等人提出的软件质量模型
可维护性 与进行指定的修改所需的努力有关的一组属性。 Maintainability
可移植性 Portability
与软件可从某一环境移植到另一环境的能力有关的一 组属性。
24
表3 软件质量属性 对用户最重要的属性 高效性(efficiency) 灵活性(flexibility) 完整性(integrity) 对开发者最重要的属性 可维护性(maintainability) 可移植性(portability) 可重用性(reusability)
修 正 运行
转 移
正确性 可靠性
效率
完整性 使用性
图1 在运行阶段用户的质量特性观点
5
主要用途
质量因素
评价准则
正确 性
可跟踪性
可靠 性 产 品 运 行 效 率
完整性
一致性
完整 性
使用 性
图2 McCall等人提出的软件质量模型
6
主要用途
质量因素
评价准则
正确 性
一致性 容错性 准确性 执行效率 模块性
18
自描述性: 源代码提供自身描述的程度。 简洁性: 程序易于理解的程度。 通用性: 程序各构件潜在的应用范围。 硬件独立性:软件与运行它的硬件之间的相关程度。 软件独立性:程序与非标准编程语言性质、 操作系统特性、以及其他环境 限制的无关程度。 通信共用性: 使用标准接口、协议和带宽的 程度。 数据共用性: 在整个程序中使用标准数据结 构和类型的程度。
互操作性 (interOperability)
可靠性(reliability) 可用性(usability) 健壮性(robustness) 有效性(availability)
可测试性(testability)
25
在表3中,分两类来描述每个项目都要考虑的质 量属性;还有其它许多属性 。一些属性对于嵌入 式系统是很重要的(高效性和可靠性),而其它的 属性则用于主机应用程序(有效性和可维护性)或 桌面系统(互操作性和可用性)。在一个理想的范 围中,每一个系统总是最大限度地展示所有这些 属性的可能价值。系统将随时可用,决不会崩溃, 可立即提供结果,并且易于使用。因为理想环境 是不可得到的,因此,你必须知道表2.5.3中那些 属性的子集对项目的成功至关重要。然后,根据 这些基本属性来定义用户和开发者的目标,从而 产品的设计者可以作出合适的选择。
19
国际标准和国家标准规定的质量特性标准中规定 了6个质量特性及其相关的21个质量子特性(如图 13所示)。6个质量特性的含义在表2中给出。
20
特 性
子特性
适合性 准确性
功能性 Functionality 互操作性 依从性 安全性 成熟性 可靠性 Reliability 容错性 易恢复性
Suitability
3
灵活性Байду номын сангаасFlexibility
修改运行的程序所需的工作量 它可修改吗?
可移植性 Portability
可重用性 Reusability
将程序从一种硬件配置和/或环 可以在另一 境转移到另一硬件配置和/或环 台机器上用 境所需的工作量 它吗?
程序可被用于与其实现功能相 可以重复使 关的其他应用问题的程度 用它的某些 部分吗?
质量属性
虽然有许多产品特性可以称为质量属性(Quality Attribute),但是在许多系统中需要认真考虑的仅是 其中的一小部分。如果开发者知道哪些特性对项目 的成功至关重要,那么他们就能选择软件工程方法 来达到特定的质量目标。根据不同的设计可以把质 量属性分类。一种属性分类的方法是把在运行时可 识别的特性与那些不可识别的特性区分开。 另一种方法是把对用户很重要的可见特性与对开发 者和维护者很重要的不可见特性区分开。 那些对开发者具有重要意义的属性使产品易于更改、 验证,并易于移植到新的平台上,从而可以间接地 满足客户的需要。
可维护性 Maintainability
易更改性 稳定性 易测试性 适应性
可移植性 Portability
易安排性
一致性 易替换性 图15
质量特性与质量子特性
23
表2 国际标准规定的质量特性 质量特性 功能性 Functionality 可靠性 Reliability 易用性 Usability 效率 Efficiency 含意 与一组功能及其制定的性质有关的一组属性。这里功 能包括满足明确或隐含的要求。 与在规定的一段时间和条件下,软件能维持其性能水 平的能力有关的一组属性。 与一组规定或潜在的用户为使用软件所需作的努力和 对这样的使用所作的评价有关的一组属性。 与在规定的条件下,软件的性能水平与所使用资源量 之间关系有关的一组属性。
30
2)效率 效率是用来衡量系统如何优化处理器、磁盘空间 或通信带宽的。如果系统用完了所有可用的资源, 那么用户遇到的将是性能的下降,这是效率降低 的一个表现。拙劣的系统性能可激怒等待数据库 查询结果的用户,或者可能对系统安全性造成威 胁,就像一个实时处理系统超负荷一样。为了在 不可预料的条件下允许安全缓冲,你可以这样定 义:“在预计的高峰负载条件下,10%处理器能 力和15%系统可用内存必须留出备用。”在定义 性能、能力和效率目标时,考虑硬件的最小配置 是很重要的。
可靠 性 产 品 运 行 效 率
完整 性
使用 性
简洁性 图3 McCall等人提出的软件质量模型
7
主要用途
质量因素
评价准则
正确 性
执行效率
可靠 性 产 品 运 行 效 率
简明性
可操作性
完整 性 使用 性 图4 McCall等人提出的软件质量模型
8
主要用途
质量因素
评价准则
正确 性
安全性
可靠 性 产 品 运 行 效 率
Accuracy
Interoperability Compliance Security Maturity Fault tolerance Recoverability
图13
质量特性与质量子特性
21
特 性
子特性 易理解性 Understandability Learnability Operability Time behaviour Resource behaviour
易使用性 Usability
易学习性 易操作性 时间特性
效
率 资源特性
Efficiency
图14
质量特性与质量子特性
22
特 性
子特性 易分析性 Analysability Changeability Stability Testability Adaptability Installability Conformance Replaceability
McCall提出了表明软件质量的11个质量特性,表1 给出了McCall提出的11个质量特性及其含意。
表1 McCall提出的质量特性
质量特性
含
意
可回答的问题
正确性 程序能够满足规格说明和 它做了该做的事吗? Correctness 完成用户业务目标的程度 可靠性 Reliability 程序能够按要求的精度实 它总能准确地工作 现其预期功能的程度 吗?
29
1 对用户重要的属性
1)有效性 有效性指的是在预定的启动时间中,系统真正可用并 且完全运行时间所占的百分比。有些任务比起其它任务 具有更严格的时间要求,此时,当用户要执行一个任务 但系统在那一时刻不可用时,用户会感到很沮丧。询问 用户需要多高的有效性,并且是否在任何时间,对满足 业务或安全目标有效性都是必须的。一个有效性需求可 能这样说明:“工作日期间,在当地时间早上6点到午夜, 系统的有效性至少达到99.5%,在下午4点到6点,系统 的有效性至少可达到99.95%。
2
效率 Efficiency 完整性 Integrity 可用性 Usability
程序实现其功能所需要的 它能在硬件上尽 计算机资源量 力工作吗? 软件或数据不受未授权人 它是安全吗? 控制的程度 学习、操作程序、为其准 它可用吗? 备输入数据、解释其输出 的工作量
可维护性 对运行的程序找到错误并 它可调整吗? Maintainability 排除错误的工作量 测试性 Testability 为保证程序执行其规定的 它可测试吗? 功能所需的测试工作量
互操作性 一系统与另一系统协同运行所 它能够与另 外系统联接 Interoperability 需的工作量 吗?
4
用户对于已投人使用的软件,会关心软件运行以后表现出来的运行 特性,修正特性和转移特性。也即从这3个方面理解上述11个质量 特性,于是我们把11个质量特性分为3组,使其分别录属于上述3 个方面,请参见图1。 维护性 灵活性 测试性 可移植性 可重复用 互操作性
15
主要用途
质量因素
评价准则
移植性
模块性 产 品 转 移 通用性 通信共用性 数据共用性
复用性
共运行性 图12 McCall等人提出的软件质量模型
16
• 可跟踪性:沿一个设计说明或一个实际程序 构件返回到需求的能力。 • 完整性: 所需功能实现的程度。 • 一致性: 在整个软件开发项目中使用统一 的设计和文档编制技术的程度。 • 容错性:当程序出错时,造成破坏的程度。 • 准确性: 计算和控制的精确程度。 • 执行效率:程序的运行时间。 • 复杂性 : 程序结构化、模块化、简明、简 洁、清晰和可理解的程度。
26
产品的不同部分与所期望的质量特性有着不同的 组合。高效性可能对某些部分是很重要的,而可 用性对其它部分则很重要。把应用于整个产品的 质量特性与特定某些部分、某些用户类或特殊使 用环境的质量属性要区分开。把任何全局属性需 求记录到软件需求规格说明相应的部分中,并把 特定的目标和列在软件需求规格说明的特性、使 用实例或功能需求相联系起来。
27
定义质量属性
你必须根据用户对系统的期望来确定质量属性。 定量地确定重要属性提供了对用户期望的清晰理解, 这将有助于设计者提出最合理的解决方案。然而, 大多数用户并不知道如何回答诸如“互操作性对你 的重要性如何?”或者“软件应该具有怎样的可靠 性?”等问题。在一个项目中,分析员想出了对于 不同的用户类可能很重要的属性,并根据每一个属 性设计出许多问题。他们利用这些问题询问每一个 用户类的代表,可以把每个属性分成一级(不必多加 考虑的属性)到五级(极其重要的属性)。这些问题的 回答有助于分析员决定哪些质量特性用作设计标准 是最重要的。
17
安全性:控制或保护程序和数据机制的有效性。 工具性:程序监视自身运行和识别出现错误的程序。 简明性: 程序代码的紧密程度。 可训练性:程序使新用户使用该系统的辅助程度。 可操作性: 程序操作的难易程度。 可审计性: 检查与标准是否符合的难易程度。 可扩充性:系结构、数据或过程设计可扩充的程度。 模块性 : 程序各构件的功能独立性。
主要用途
质量因素
评价准则
移植性
模块性 自描述性
产 品 转 移
通用性 复用性 硬件独立性 软件独立性
共运行性
图10 McCall等人提出的软件质量模型
14
主要用途
质量因素
评价准则
移植性
模块性
自描述性 产 品 转 移
复用性
通用性 硬件独立性 软件独立性
共运行性
图11 McCall等人提出的软件质量模型
28
然后,分析员与用户一起为每一属性确定特定的、可 测量的和可验证的需求。如果质量目标不可验证,那 么就说不清是否达到这些目标。在合适的地方为每一 个属性或目标指定级别或测量单位,以及最大和最小 值。如果不能定量地确定某些对项目很重要的属性, 那么至少应该确定其优先级。 另一个定义属性的方法是确定任何与质量期望相冲突 的系统行为。通过定义不悦人意行为——一种反向需 求——你可以设计出强制系统表现出那些行为的测试 用例。如果你不能强制系统,那么你可能达到了你的 属性目标。这种方法最适用于要求安全性能很高的应 用程序,在这些应用程序中,系统的差错可能会导致 生命危险。
工具性
可审计性
完整 性
使用 性
图5 McCall等人提出的软件质量模型
9
主要用途
质量因素
正确 性
评价准则
产 品 运 行
可靠 性 效 率 可训练性 完整 性 可操作性
使用 性
图6 McCall等人提出的软件质量模型
10
主要用途
质量因素
评价准则
维护性
一致性 工具性
产 品 修 改
简明性 测试性 模块性 自描述性 简洁性 灵活性 图7 McCall等人提出的软件质量模型
11
主要用途
质量因素
评价准则
维护性
复杂性 工具性
产 品 修 改
可审计性 测试性 模块性 自描述性 简洁性
灵活性 图8 McCall等人提出的软件质量模型
12
主要用途
质量因素
评价准则
维护性
一致性 复杂性
产 品 修 改
简明性 测试性 可扩充性 模块性 简洁性 通用性
13
灵活性 图9 McCall等人提出的软件质量模型
可维护性 与进行指定的修改所需的努力有关的一组属性。 Maintainability
可移植性 Portability
与软件可从某一环境移植到另一环境的能力有关的一 组属性。
24
表3 软件质量属性 对用户最重要的属性 高效性(efficiency) 灵活性(flexibility) 完整性(integrity) 对开发者最重要的属性 可维护性(maintainability) 可移植性(portability) 可重用性(reusability)
修 正 运行
转 移
正确性 可靠性
效率
完整性 使用性
图1 在运行阶段用户的质量特性观点
5
主要用途
质量因素
评价准则
正确 性
可跟踪性
可靠 性 产 品 运 行 效 率
完整性
一致性
完整 性
使用 性
图2 McCall等人提出的软件质量模型
6
主要用途
质量因素
评价准则
正确 性
一致性 容错性 准确性 执行效率 模块性
18
自描述性: 源代码提供自身描述的程度。 简洁性: 程序易于理解的程度。 通用性: 程序各构件潜在的应用范围。 硬件独立性:软件与运行它的硬件之间的相关程度。 软件独立性:程序与非标准编程语言性质、 操作系统特性、以及其他环境 限制的无关程度。 通信共用性: 使用标准接口、协议和带宽的 程度。 数据共用性: 在整个程序中使用标准数据结 构和类型的程度。
互操作性 (interOperability)
可靠性(reliability) 可用性(usability) 健壮性(robustness) 有效性(availability)
可测试性(testability)
25
在表3中,分两类来描述每个项目都要考虑的质 量属性;还有其它许多属性 。一些属性对于嵌入 式系统是很重要的(高效性和可靠性),而其它的 属性则用于主机应用程序(有效性和可维护性)或 桌面系统(互操作性和可用性)。在一个理想的范 围中,每一个系统总是最大限度地展示所有这些 属性的可能价值。系统将随时可用,决不会崩溃, 可立即提供结果,并且易于使用。因为理想环境 是不可得到的,因此,你必须知道表2.5.3中那些 属性的子集对项目的成功至关重要。然后,根据 这些基本属性来定义用户和开发者的目标,从而 产品的设计者可以作出合适的选择。
19
国际标准和国家标准规定的质量特性标准中规定 了6个质量特性及其相关的21个质量子特性(如图 13所示)。6个质量特性的含义在表2中给出。
20
特 性
子特性
适合性 准确性
功能性 Functionality 互操作性 依从性 安全性 成熟性 可靠性 Reliability 容错性 易恢复性
Suitability
3
灵活性Байду номын сангаасFlexibility
修改运行的程序所需的工作量 它可修改吗?
可移植性 Portability
可重用性 Reusability
将程序从一种硬件配置和/或环 可以在另一 境转移到另一硬件配置和/或环 台机器上用 境所需的工作量 它吗?
程序可被用于与其实现功能相 可以重复使 关的其他应用问题的程度 用它的某些 部分吗?
质量属性
虽然有许多产品特性可以称为质量属性(Quality Attribute),但是在许多系统中需要认真考虑的仅是 其中的一小部分。如果开发者知道哪些特性对项目 的成功至关重要,那么他们就能选择软件工程方法 来达到特定的质量目标。根据不同的设计可以把质 量属性分类。一种属性分类的方法是把在运行时可 识别的特性与那些不可识别的特性区分开。 另一种方法是把对用户很重要的可见特性与对开发 者和维护者很重要的不可见特性区分开。 那些对开发者具有重要意义的属性使产品易于更改、 验证,并易于移植到新的平台上,从而可以间接地 满足客户的需要。
可维护性 Maintainability
易更改性 稳定性 易测试性 适应性
可移植性 Portability
易安排性
一致性 易替换性 图15
质量特性与质量子特性
23
表2 国际标准规定的质量特性 质量特性 功能性 Functionality 可靠性 Reliability 易用性 Usability 效率 Efficiency 含意 与一组功能及其制定的性质有关的一组属性。这里功 能包括满足明确或隐含的要求。 与在规定的一段时间和条件下,软件能维持其性能水 平的能力有关的一组属性。 与一组规定或潜在的用户为使用软件所需作的努力和 对这样的使用所作的评价有关的一组属性。 与在规定的条件下,软件的性能水平与所使用资源量 之间关系有关的一组属性。
30
2)效率 效率是用来衡量系统如何优化处理器、磁盘空间 或通信带宽的。如果系统用完了所有可用的资源, 那么用户遇到的将是性能的下降,这是效率降低 的一个表现。拙劣的系统性能可激怒等待数据库 查询结果的用户,或者可能对系统安全性造成威 胁,就像一个实时处理系统超负荷一样。为了在 不可预料的条件下允许安全缓冲,你可以这样定 义:“在预计的高峰负载条件下,10%处理器能 力和15%系统可用内存必须留出备用。”在定义 性能、能力和效率目标时,考虑硬件的最小配置 是很重要的。
可靠 性 产 品 运 行 效 率
完整 性
使用 性
简洁性 图3 McCall等人提出的软件质量模型
7
主要用途
质量因素
评价准则
正确 性
执行效率
可靠 性 产 品 运 行 效 率
简明性
可操作性
完整 性 使用 性 图4 McCall等人提出的软件质量模型
8
主要用途
质量因素
评价准则
正确 性
安全性
可靠 性 产 品 运 行 效 率
Accuracy
Interoperability Compliance Security Maturity Fault tolerance Recoverability
图13
质量特性与质量子特性
21
特 性
子特性 易理解性 Understandability Learnability Operability Time behaviour Resource behaviour
易使用性 Usability
易学习性 易操作性 时间特性
效
率 资源特性
Efficiency
图14
质量特性与质量子特性
22
特 性
子特性 易分析性 Analysability Changeability Stability Testability Adaptability Installability Conformance Replaceability