软件质量模型_第1页
软件质量模型_第2页
软件质量模型_第3页
软件质量模型_第4页
软件质量模型_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 虽然有许多产品特性可以称为质量属性虽然有许多产品特性可以称为质量属性(Quality Attribute),但是在许多系统中需要认真考虑的仅是,但是在许多系统中需要认真考虑的仅是其中的一小部分。如果开发者知道哪些特性对项目其中的一小部分。如果开发者知道哪些特性对项目的成功至关重要,那么他们就能选择软件工程方法的成功至关重要,那么他们就能选择软件工程方法来达到特定的质量目标。根据不同的设计可以把质来达到特定的质量目标。根据不同的设计可以把质量属性分类。一种属性分类的方法是把在运行时可量属性分类。一种属性分类的方法是把在运行时可识别的特性与那些不可识别的特性区分开。识别的特性与那些不可识别的特

2、性区分开。另一种方法是把对用户很重要的可见特性与对开发另一种方法是把对用户很重要的可见特性与对开发者和维护者很重要的不可见特性区分开。者和维护者很重要的不可见特性区分开。那些对开发者具有重要意义的属性使产品易于更改、那些对开发者具有重要意义的属性使产品易于更改、验证,并易于移植到新的平台上,从而可以间接地验证,并易于移植到新的平台上,从而可以间接地满足客户的需要。满足客户的需要。 质量属性质量属性2 McCall提出了表明软件质量的提出了表明软件质量的11个质量特性,表个质量特性,表1给出了给出了McCall提出的提出的11个质量特性及其含意。个质量特性及其含意。表表1 McCall提出的质量

3、特性提出的质量特性 质量特性质量特性 含含 意意 可回答的问题可回答的问题 正确性正确性Correctness程序能够满足规格说明和程序能够满足规格说明和完成用户业务目标的程度完成用户业务目标的程度它做了该做的事吗?它做了该做的事吗? 可靠性可靠性 Reliability程序能够按要求的精度实程序能够按要求的精度实现其预期功能的程度现其预期功能的程度它总能准确地工作它总能准确地工作吗?吗?3 效率效率 Efficiency程序实现其功能所需要的程序实现其功能所需要的计算机资源量计算机资源量它能在硬件上尽它能在硬件上尽力工作吗?力工作吗? 完整性完整性 Integrity软件或数据不受未授权人软

4、件或数据不受未授权人控制的程度控制的程度它是安全吗?它是安全吗? 可用性可用性 Usability学习、操作程序、为其准学习、操作程序、为其准备输入数据、解释其输出备输入数据、解释其输出的工作量的工作量它可用吗?它可用吗?可维护性可维护性Maintainability对运行的程序找到错误并对运行的程序找到错误并排除错误的工作量排除错误的工作量它可调整吗?它可调整吗? 测试性测试性 Testability为保证程序执行其规定的为保证程序执行其规定的功能所需的测试工作量功能所需的测试工作量它可测试吗?它可测试吗?4 灵活性灵活性 Flexibility修改运行的程序所需的工作量修改运行的程序所需的

5、工作量它可修改吗?它可修改吗? 可移植性可移植性 Portability将程序从一种硬件配置和将程序从一种硬件配置和/或环或环境转移到另一硬件配置和境转移到另一硬件配置和/或环或环境所需的工作量境所需的工作量可以在另一可以在另一台机器上用台机器上用它吗?它吗? 可重用性可重用性 Reusability程序可被用于与其实现功能相程序可被用于与其实现功能相关的其他应用问题的程度关的其他应用问题的程度可以重复使可以重复使用它的某些用它的某些部分吗?部分吗? 互操作性互操作性Interoperability一系统与另一系统协同运行所一系统与另一系统协同运行所需的工作量需的工作量它能够与另它能够与另外系

6、统联接外系统联接吗?吗?5运行运行修修正正转移转移维护性维护性灵活性灵活性测试性测试性可移植性可移植性可重复用可重复用互操作性互操作性正确性正确性可靠性可靠性完整性完整性使用性使用性效率效率图图1 在运行阶段用户的质量特性观点在运行阶段用户的质量特性观点用户对于已投人使用的软件,会关心软件运行以后表现出来的运行用户对于已投人使用的软件,会关心软件运行以后表现出来的运行特性,修正特性和转移特性。也即从这特性,修正特性和转移特性。也即从这3个方面理解上述个方面理解上述11个质量个质量特性,于是我们把特性,于是我们把11个质量特性分为个质量特性分为3组,使其分别录属于上述组,使其分别录属于上述3个方

7、面,请参见图个方面,请参见图1。6主要用途主要用途质量因素质量因素评价准则评价准则 效效 率率 产品运行产品运行 正正 确确 性性 可可 靠靠 性性 完完 整整 性性 使使 用用 性性可跟踪性可跟踪性 完整性完整性 一致性一致性图图2 McCall等人提出的软件质量模型等人提出的软件质量模型7 效效 率率 一致性一致性 准确性准确性执行效率执行效率 容错性容错性 模块性模块性 简洁性简洁性图图3 McCall等人提出的软件质量模型等人提出的软件质量模型评价准则评价准则质量因素质量因素主要用途主要用途产品运行产品运行 正正 确确 性性 可可 靠靠 性性 完完 整整 性性 使使 用用 性性8产品运

8、行产品运行 正正 确确 性性 可可 靠靠 性性 完完 整整 性性 使使 用用 性性 效效 率率 主要用途主要用途质量因素质量因素评价准则评价准则图图4 McCall等人提出的软件质量模型等人提出的软件质量模型执行效率执行效率 简明性简明性可操作性可操作性9 安全性安全性产品运行产品运行 正正 确确 性性 可可 靠靠 性性 完完 整整 性性 使使 用用 性性 效效 率率 主要用途主要用途质量因素质量因素评价准则评价准则图图5 McCall等人提出的软件质量模型等人提出的软件质量模型 工具性工具性可审计性可审计性10 可可 靠靠 性性 完完 整整 性性产品运行产品运行 正正 确确 性性 使使 用用

9、 性性 效效 率率 主要用途主要用途质量因素质量因素评价准则评价准则图图6 McCall等人提出的软件质量模型等人提出的软件质量模型可训练性可训练性可操作性可操作性11图图7 McCall等人提出的软件质量模型等人提出的软件质量模型主要用途主要用途质量因素质量因素评价准则评价准则 一致性一致性 工具性工具性 简明性简明性 模块性模块性自描述性自描述性 简洁性简洁性产品修改产品修改 维护性维护性 灵活性灵活性 测试性测试性 12图图8 McCall等人提出的软件质量模型等人提出的软件质量模型主要用途主要用途质量因素质量因素评价准则评价准则 复杂性复杂性 工具性工具性可审计性可审计性 模块性模块性

10、自描述性自描述性 简洁性简洁性产品修改产品修改 维护性维护性 灵活性灵活性 测试性测试性 13图图9 McCall等人提出的软件质量模型等人提出的软件质量模型主要用途主要用途质量因素质量因素评价准则评价准则 一致性一致性 复杂性复杂性 简明性简明性可扩充性可扩充性 模块性模块性 简洁性简洁性 通用性通用性产品修改产品修改 维护性维护性 灵活性灵活性 测试性测试性 14图图10 McCall等人提出的软件质量模型等人提出的软件质量模型主要用途主要用途质量因素质量因素评价准则评价准则 模块性模块性自描述性自描述性软件独立性软件独立性硬件独立性硬件独立性 通用性通用性产品转移产品转移 移植性移植性共

11、运行性共运行性 复用性复用性 15图图11 McCall等人提出的软件质量模型等人提出的软件质量模型主要用途主要用途质量因素质量因素评价准则评价准则模块性模块性自描述性自描述性 通用性通用性硬件独立性硬件独立性软件独立性软件独立性产品转移产品转移 移植性移植性共运行性共运行性 复用性复用性 16图图12 McCall等人提出的软件质量模型等人提出的软件质量模型主要用途主要用途质量因素质量因素评价准则评价准则 模块性模块性 通用性通用性通信共用性通信共用性数据共用性数据共用性产品转移产品转移 移植性移植性共运行性共运行性 复用性复用性 17 可跟踪性:沿一个设计说明或一个实际程序可跟踪性:沿一个

12、设计说明或一个实际程序 构件返回到需求的能力。构件返回到需求的能力。 完整性:完整性: 所需功能实现的程度。所需功能实现的程度。 一致性:一致性: 在整个软件开发项目中使用统一在整个软件开发项目中使用统一 的设计和文档编制技术的程度。的设计和文档编制技术的程度。 容错性:当程序出错时,造成破坏的程度。容错性:当程序出错时,造成破坏的程度。 准确性:准确性: 计算和控制的精确程度。计算和控制的精确程度。 执行效率:程序的运行时间。执行效率:程序的运行时间。 复杂性复杂性 : 程序结构化、模块化、简明、简程序结构化、模块化、简明、简 洁、清晰和可理解的程度。洁、清晰和可理解的程度。18l 安全性:

13、控制或保护程序和数据机制的有效性。安全性:控制或保护程序和数据机制的有效性。l 工具性:程序监视自身运行和识别出现错误的程序。工具性:程序监视自身运行和识别出现错误的程序。l 简明性:简明性: 程序代码的紧密程度。程序代码的紧密程度。l 可训练性:程序使新用户使用该系统的辅助程度。可训练性:程序使新用户使用该系统的辅助程度。l 可操作性:可操作性: 程序操作的难易程度。程序操作的难易程度。l 可审计性:可审计性: 检查与标准是否符合的难易程度。检查与标准是否符合的难易程度。l 可扩充性:系结构、数据或过程设计可扩充的程度。可扩充性:系结构、数据或过程设计可扩充的程度。l 模块性模块性 : 程序

14、各构件的功能独立性。程序各构件的功能独立性。19l 自描述性:自描述性: 源代码提供自身描述的程度。源代码提供自身描述的程度。l 简洁性:简洁性: 程序易于理解的程度。程序易于理解的程度。l 通用性:通用性: 程序各构件潜在的应用范围。程序各构件潜在的应用范围。l 硬件独立性:软件与运行它的硬件之间的相关程度。硬件独立性:软件与运行它的硬件之间的相关程度。 l 软件独立性:程序与非标准编程语言性质、软件独立性:程序与非标准编程语言性质、 操作系统特性、以及其他环境操作系统特性、以及其他环境 限制的无关程度。限制的无关程度。l 通信共用性:通信共用性: 使用标准接口、协议和带宽的使用标准接口、协

15、议和带宽的 程度。程度。l 数据共用性:数据共用性: 在整个程序中使用标准数据结在整个程序中使用标准数据结 构和类型的程度。构和类型的程度。20 国际标准和国家标准规定的质量特性标准中规定国际标准和国家标准规定的质量特性标准中规定了了6 6个质量特性及其相关的个质量特性及其相关的2121个质量子特性(如图个质量子特性(如图1313所示)。所示)。6 6个质量特性的含义在表个质量特性的含义在表2 2中给出。中给出。21功功 能能 性性适合性适合性特特 性性子特性子特性准确性准确性互操作性互操作性依从性依从性安全性安全性图图13 质量特性与质量子特性质量特性与质量子特性FunctionalityR

16、eliabilitySuitabilityAccuracyInteroperabilityComplianceSecurity成熟性成熟性容错性容错性易恢复性易恢复性可可 靠靠 性性MaturityFault toleranceRecoverability22易理解性易理解性易学习性易学习性易操作性易操作性易使用性易使用性UnderstandabilityLearnabilityOperability特特 性性子特性子特性图图14 质量特性与质量子特性质量特性与质量子特性效效 率率时间特性时间特性资源特性资源特性Time behaviourResource behaviourEfficienc

17、yUsability23特特 性性子特性子特性图图15 质量特性与质量子特性质量特性与质量子特性AnalysabilityChangeabilityStabilityTestability易分析性易分析性易更改性易更改性易测试性易测试性可维护性可维护性稳定性稳定性Maintainability适应性适应性易安排性易安排性易替换性易替换性可移植性可移植性一致性一致性PortabilityAdaptabilityInstallabilityConformanceReplaceability24 质量特性质量特性含意含意功能性功能性Functionality与一组功能及其制定的性质有关的一组属性。这

18、里功与一组功能及其制定的性质有关的一组属性。这里功能包括满足明确或隐含的要求。能包括满足明确或隐含的要求。可靠性可靠性Reliability与在规定的一段时间和条件下,软件能维持其性能水与在规定的一段时间和条件下,软件能维持其性能水平的能力有关的一组属性。平的能力有关的一组属性。易用性易用性Usability与一组规定或潜在的用户为使用软件所需作的努力和与一组规定或潜在的用户为使用软件所需作的努力和对这样的使用所作的评价有关的一组属性。对这样的使用所作的评价有关的一组属性。效率效率Efficiency与在规定的条件下,软件的性能水平与所使用资源量与在规定的条件下,软件的性能水平与所使用资源量之

19、间关系有关的一组属性。之间关系有关的一组属性。可维护性可维护性Maintainability与进行指定的修改所需的努力有关的一组属性。与进行指定的修改所需的努力有关的一组属性。可移植性可移植性Portability与软件可从某一环境移植到另一环境的能力有关的一与软件可从某一环境移植到另一环境的能力有关的一组属性。组属性。表表2 国际标准规定的质量特性国际标准规定的质量特性25表表3 软件质量属性软件质量属性对用户最重要的属性对用户最重要的属性对开发者最重要的属性对开发者最重要的属性高效性高效性(efficiency)可维护性可维护性(maintainability)灵活性灵活性(flexibi

20、lity)可移植性可移植性(portability)完整性完整性(integrity)可重用性可重用性(reusability)互操作性互操作性(interOperability)可测试性可测试性(testability)可靠性可靠性(reliability)可用性可用性(usability)健壮性健壮性(robustness)有效性有效性(availability)26 在表在表3中,分两类来描述每个项目都要考虑的质中,分两类来描述每个项目都要考虑的质量属性;还有其它许多属性量属性;还有其它许多属性 。一些属性对于嵌入。一些属性对于嵌入式系统是很重要的式系统是很重要的(高效性和可靠性高效性和

21、可靠性),而其它的,而其它的属性则用于主机应用程序属性则用于主机应用程序(有效性和可维护性有效性和可维护性)或或桌面系统桌面系统(互操作性和可用性互操作性和可用性)。在一个理想的范。在一个理想的范围中,每一个系统总是最大限度地展示所有这些围中,每一个系统总是最大限度地展示所有这些属性的可能价值。系统将随时可用,决不会崩溃,属性的可能价值。系统将随时可用,决不会崩溃,可立即提供结果,并且易于使用。因为理想环境可立即提供结果,并且易于使用。因为理想环境是不可得到的,因此,你必须知道表是不可得到的,因此,你必须知道表2.5.3中那些中那些属性的子集对项目的成功至关重要。然后,根据属性的子集对项目的成

22、功至关重要。然后,根据这些基本属性来定义用户和开发者的目标,从而这些基本属性来定义用户和开发者的目标,从而产品的设计者可以作出合适的选择。产品的设计者可以作出合适的选择。27 产品的不同部分与所期望的质量特性有着不同的产品的不同部分与所期望的质量特性有着不同的组合。高效性可能对某些部分是很重要的,而可组合。高效性可能对某些部分是很重要的,而可用性对其它部分则很重要。把应用于整个产品的用性对其它部分则很重要。把应用于整个产品的质量特性与特定某些部分、某些用户类或特殊使质量特性与特定某些部分、某些用户类或特殊使用环境的质量属性要区分开。把任何全局属性需用环境的质量属性要区分开。把任何全局属性需求记

23、录到软件需求规格说明相应的部分中,并把求记录到软件需求规格说明相应的部分中,并把特定的目标和列在软件需求规格说明的特性、使特定的目标和列在软件需求规格说明的特性、使用实例或功能需求相联系起来。用实例或功能需求相联系起来。28 你必须根据用户对系统的期望来确定质量属性。你必须根据用户对系统的期望来确定质量属性。定量地确定重要属性提供了对用户期望的清晰理解,定量地确定重要属性提供了对用户期望的清晰理解,这将有助于设计者提出最合理的解决方案。然而,这将有助于设计者提出最合理的解决方案。然而,大多数用户并不知道如何回答诸如大多数用户并不知道如何回答诸如“互操作性对你互操作性对你的重要性如何的重要性如何

24、?”或者或者“软件应该具有怎样的可靠软件应该具有怎样的可靠性性?”等问题。在一个项目中,分析员想出了对于不等问题。在一个项目中,分析员想出了对于不同的用户类可能很重要的属性,并根据每一个属性同的用户类可能很重要的属性,并根据每一个属性设计出许多问题。他们利用这些问题询问每一个用设计出许多问题。他们利用这些问题询问每一个用户类的代表,可以把每个属性分成一级户类的代表,可以把每个属性分成一级(不必多加考不必多加考虑的属性虑的属性)到五级到五级(极其重要的属性极其重要的属性)。这些问题的回。这些问题的回答有助于分析员决定哪些质量特性用作设计标准是答有助于分析员决定哪些质量特性用作设计标准是最重要的。

25、最重要的。 定义质量属性定义质量属性29 然后,分析员与用户一起为每一属性确定特定的、可然后,分析员与用户一起为每一属性确定特定的、可测量的和可验证的需求。如果质量目标不可验证,那测量的和可验证的需求。如果质量目标不可验证,那么就说不清是否达到这些目标。在合适的地方为每一么就说不清是否达到这些目标。在合适的地方为每一个属性或目标指定级别或测量单位,以及最大和最小个属性或目标指定级别或测量单位,以及最大和最小值。如果不能定量地确定某些对项目很重要的属性,值。如果不能定量地确定某些对项目很重要的属性,那么至少应该确定其优先级。那么至少应该确定其优先级。 另一个定义属性的方法是确定任何与质量期望相冲

26、突另一个定义属性的方法是确定任何与质量期望相冲突的系统行为。通过定义不悦人意行为的系统行为。通过定义不悦人意行为一种反向需一种反向需求求你可以设计出强制系统表现出那些行为的测试你可以设计出强制系统表现出那些行为的测试用例。如果你不能强制系统,那么你可能达到了你的用例。如果你不能强制系统,那么你可能达到了你的属性目标。这种方法最适用于要求安全性能很高的应属性目标。这种方法最适用于要求安全性能很高的应用程序,在这些应用程序中,系统的差错可能会导致用程序,在这些应用程序中,系统的差错可能会导致生命危险。生命危险。301 对用户重要的属性对用户重要的属性 1)有效性有效性 有效性指的是在预定的启动时间

27、中,系统真正可用并有效性指的是在预定的启动时间中,系统真正可用并且完全运行时间所占的百分比。有些任务比起其它任务且完全运行时间所占的百分比。有些任务比起其它任务具有更严格的时间要求,此时,当用户要执行一个任务具有更严格的时间要求,此时,当用户要执行一个任务但系统在那一时刻不可用时,用户会感到很沮丧。询问但系统在那一时刻不可用时,用户会感到很沮丧。询问用户需要多高的有效性,并且是否在任何时间,对满足用户需要多高的有效性,并且是否在任何时间,对满足业务或安全目标有效性都是必须的。一个有效性需求可业务或安全目标有效性都是必须的。一个有效性需求可能这样说明:能这样说明:“工作日期间,在当地时间早上工作

28、日期间,在当地时间早上6点到午夜,点到午夜,系统的有效性至少达到系统的有效性至少达到995,在下午,在下午4点到点到6点,系统点,系统的有效性至少可达到的有效性至少可达到9995。31 2)效率效率 效率是用来衡量系统如何优化处理器、磁盘空间效率是用来衡量系统如何优化处理器、磁盘空间或通信带宽的。如果系统用完了所有可用的资源,或通信带宽的。如果系统用完了所有可用的资源,那么用户遇到的将是性能的下降,这是效率降低那么用户遇到的将是性能的下降,这是效率降低的一个表现。拙劣的系统性能可激怒等待数据库的一个表现。拙劣的系统性能可激怒等待数据库查询结果的用户,或者可能对系统安全性造成威查询结果的用户,或

29、者可能对系统安全性造成威胁,就像一个实时处理系统超负荷一样。为了在胁,就像一个实时处理系统超负荷一样。为了在不可预料的条件下允许安全缓冲,你可以这样定不可预料的条件下允许安全缓冲,你可以这样定义:义:“在预计的高峰负载条件下,在预计的高峰负载条件下,10处理器能处理器能力和力和15系统可用内存必须留出备用。系统可用内存必须留出备用。”在定义在定义性能、能力和效率目标时,考虑硬件的最小配置性能、能力和效率目标时,考虑硬件的最小配置是很重要的。是很重要的。32 3)灵活性灵活性 就像我们所知道的可扩充性、增加性、可延伸性就像我们所知道的可扩充性、增加性、可延伸性和可扩展性一样,灵活性表明了在产品中

30、增加新和可扩展性一样,灵活性表明了在产品中增加新功能时所需工作量的大小。如果开发者预料到系功能时所需工作量的大小。如果开发者预料到系统的扩展性,那么他们可以选择合适的方法来最统的扩展性,那么他们可以选择合适的方法来最大限度地增大系统的灵活性。灵活性对于通过一大限度地增大系统的灵活性。灵活性对于通过一系列连续的发行版本,并采用渐增型和重复型方系列连续的发行版本,并采用渐增型和重复型方式开发的产品是很重要的。在我曾经参与的一个式开发的产品是很重要的。在我曾经参与的一个图形工程中,灵活性目标是如下设定的:图形工程中,灵活性目标是如下设定的:“一个一个至少具有至少具有6个月产品支持经验的软件维护程序员

31、个月产品支持经验的软件维护程序员可以在一个小时之内为系统添加一个新的可支持可以在一个小时之内为系统添加一个新的可支持硬拷贝的输出设备。硬拷贝的输出设备。”33 4)完整性完整性 完整性完整性(或安全性或安全性)主要涉及:防止非法访问系统主要涉及:防止非法访问系统功能、防止数据丢失、防止病毒入侵并防止私人功能、防止数据丢失、防止病毒入侵并防止私人数据进入系统。完整性对于通过数据进入系统。完整性对于通过WWW执行的软执行的软件已成为一个重要的议题。电子商务系统的用户件已成为一个重要的议题。电子商务系统的用户关心的是保护信用卡信息,关心的是保护信用卡信息,Web的浏览者不愿意的浏览者不愿意那些私人信

32、息或他们所访问过的站点记录被非法那些私人信息或他们所访问过的站点记录被非法使用。完整性的需求不能犯任何错误,即数据和使用。完整性的需求不能犯任何错误,即数据和访问必须通过特定的方法完全保护起来。用明确访问必须通过特定的方法完全保护起来。用明确的术语陈述完整性的需求,如身份验证、用户特的术语陈述完整性的需求,如身份验证、用户特权级别、访问约束或者需要保护的精确数据。一权级别、访问约束或者需要保护的精确数据。一个完整性的需求样本可以这样描述:个完整性的需求样本可以这样描述:“只有拥有只有拥有查账员访问特权的用户才可以查看客户交易历查账员访问特权的用户才可以查看客户交易历史。史。”34 5)互操作性

33、互操作性 互操作性表明了产品与其它系统交换数据和互操作性表明了产品与其它系统交换数据和服务的难易程度。为了评估互操作性是否服务的难易程度。为了评估互操作性是否达到要求的程度,你必须知道用户使用其达到要求的程度,你必须知道用户使用其它哪一种应用程序与你的产品相连接,还它哪一种应用程序与你的产品相连接,还要知道他们要交换什么数据。要知道他们要交换什么数据。“化学制品化学制品跟踪系统跟踪系统”的用户习惯于使用一些商业工的用户习惯于使用一些商业工具绘制化学制品的结构图,所以他们提出具绘制化学制品的结构图,所以他们提出如下的互操作性需求:如下的互操作性需求: “化学制品跟踪系化学制品跟踪系统应该能够从统

34、应该能够从ChemiDraw和和Chem-Struct工具中导入任何有效化学制品结构图。工具中导入任何有效化学制品结构图。”35 6)可靠性可靠性 可靠性是软件无故障执行一段时间的概率。健壮性和有效可靠性是软件无故障执行一段时间的概率。健壮性和有效性有时可看成是可靠性的一部分。衡量软件可靠性的方法性有时可看成是可靠性的一部分。衡量软件可靠性的方法包括正确执行操作所占的比例,在发现新缺陷之前系统运包括正确执行操作所占的比例,在发现新缺陷之前系统运行的时间长度和缺陷出现的密度。根据如果发生故障对系行的时间长度和缺陷出现的密度。根据如果发生故障对系统有多大影响和对于最大的可靠性的费用是否合理,来定统

35、有多大影响和对于最大的可靠性的费用是否合理,来定量地确定可靠性需求。如果软件满足了它的可靠性需求,量地确定可靠性需求。如果软件满足了它的可靠性需求,那么即使该软件还存在缺陷,也可认为达到其可靠性目标。那么即使该软件还存在缺陷,也可认为达到其可靠性目标。要求高要求高 可靠性的系统也是为高可测试性系统设计的。可靠性的系统也是为高可测试性系统设计的。 我的开发组曾经开发过一个用于控制实验室设备的软件,我的开发组曾经开发过一个用于控制实验室设备的软件,这些设备全天工作并且使用稀有的、昂贵的化学制品。用这些设备全天工作并且使用稀有的、昂贵的化学制品。用户要求真正与实验相关的那部分软件要高可靠性,而其它户

36、要求真正与实验相关的那部分软件要高可靠性,而其它系统功能,例如周期性地记录温度数据,则对可靠性要求系统功能,例如周期性地记录温度数据,则对可靠性要求不高。对于该系统的一个可靠性需求说明如下:不高。对于该系统的一个可靠性需求说明如下:“由于软由于软件失效引起实验失败的概率应不超过件失效引起实验失败的概率应不超过5”。367)健壮性健壮性 健壮性指的是当系统或其组成部分遇到非法输入数据、相健壮性指的是当系统或其组成部分遇到非法输入数据、相关软件或硬件组成部分的缺陷或异常的操作情况时,能继关软件或硬件组成部分的缺陷或异常的操作情况时,能继续正确运行功能的程度。健壮的软件可以从发生问题的环续正确运行功

37、能的程度。健壮的软件可以从发生问题的环境中完好地恢复并且可容忍用户的错误。当从用户那里获境中完好地恢复并且可容忍用户的错误。当从用户那里获取健壮性的目标时,询问系统可能遇到的错误条件并且要取健壮性的目标时,询问系统可能遇到的错误条件并且要了解用户想让系统如何响应。了解用户想让系统如何响应。 我曾经主持过一个叫作图形引擎的可重用软件组件的开发,我曾经主持过一个叫作图形引擎的可重用软件组件的开发,该图形引擎具有描述图形规划的数据文件,并且把这一规该图形引擎具有描述图形规划的数据文件,并且把这一规划传送到指定的输出设备上。许多需要产生规划的应用程划传送到指定的输出设备上。许多需要产生规划的应用程序就

38、要请求调用图形引擎。由于在图形引擎中,我们将无序就要请求调用图形引擎。由于在图形引擎中,我们将无法控制这些应用程序的数据,所以此时健壮性就成为必不法控制这些应用程序的数据,所以此时健壮性就成为必不可少的质量属性。我们的一个健壮性需求是这样说明的:可少的质量属性。我们的一个健壮性需求是这样说明的:“所有的规划参数都要指定一个缺省值,当输入数据丢失所有的规划参数都要指定一个缺省值,当输入数据丢失或无效时,就使用缺省值数据。或无效时,就使用缺省值数据。”这个例子反映了对一个这个例子反映了对一个“用户用户”是另一个软件应用程序的产品,其健壮性设计的是另一个软件应用程序的产品,其健壮性设计的方法。方法。

39、378)可用性可用性 可用性也称为可用性也称为“易用性易用性”和和“人类工程人类工程”,它所描述的是,它所描述的是许多组成许多组成“用户友好用户友好”的因素。可用性衡量准备输入、操的因素。可用性衡量准备输入、操作和理解产品输出所花费的努力。你必须权衡易用性和学作和理解产品输出所花费的努力。你必须权衡易用性和学习如何操纵产品的简易性。习如何操纵产品的简易性。“化学制品跟踪系统化学制品跟踪系统的分的分析员询问用户这样的问题:析员询问用户这样的问题:“你能快速、简单地请求化学你能快速、简单地请求化学制品并浏览其它信息,这对你有多重要制品并浏览其它信息,这对你有多重要?和和“你请求一种你请求一种化学制

40、品大概需花多少时间化学制品大概需花多少时间?”对于定义使软件易于使用的对于定义使软件易于使用的许多特性而言,这只是一个简单的起点。对于可用性的讨许多特性而言,这只是一个简单的起点。对于可用性的讨论可以得出可测量的目标,例如论可以得出可测量的目标,例如“一个培训一个培训I过的用户应过的用户应该可以在平均该可以在平均3分钟或最多分钟或最多5分钟时间以内,完成从供应商分钟时间以内,完成从供应商目录表中请求一种化学制品的操作。目录表中请求一种化学制品的操作。”38 同样,调查新系统是否一定要与任何用户界面标准或常规同样,调查新系统是否一定要与任何用户界面标准或常规的相符合,或者其用户界面是否一定要与其

41、它常用系统的用的相符合,或者其用户界面是否一定要与其它常用系统的用户界面相一致。这里有一个可用性需求的例子:户界面相一致。这里有一个可用性需求的例子:“在文件菜在文件菜单中的所有功能都必须定义快捷键,该快捷键是由单中的所有功能都必须定义快捷键,该快捷键是由Ctrl键和键和其它键组合实现的。出现在其它键组合实现的。出现在Microsoft Word2000中的菜单中的菜单命令必须与命令必须与Word使用相同的快捷键使用相同的快捷键”。 可用性还包括对于新用户或不常使用产品的用户在学习使可用性还包括对于新用户或不常使用产品的用户在学习使用产品时的简易程度。易学程度的目标可以经常定量地测量,用产品时

42、的简易程度。易学程度的目标可以经常定量地测量,例如,例如,“一个新用户用不到一个新用户用不到30分钟时间适应环境后,就应该分钟时间适应环境后,就应该可以对一个化学制品提出请求可以对一个化学制品提出请求”,或者,或者“新的操作员在一天新的操作员在一天的培训学习之后,就应该可以正确执行他们所要求的任务的的培训学习之后,就应该可以正确执行他们所要求的任务的95”。当你定义可用性或可学性的需求时,应考虑到在判。当你定义可用性或可学性的需求时,应考虑到在判断产品是否达到需求而对产品进行测试的费用。断产品是否达到需求而对产品进行测试的费用。392 对开发者重要的属性对开发者重要的属性1)可维护性可维护性

43、可维护性表明了在软件中纠正一个缺陷或做一次更改的可维护性表明了在软件中纠正一个缺陷或做一次更改的简易程度。可维护性取决于理解软件、更改软件和测试软简易程度。可维护性取决于理解软件、更改软件和测试软件的简易程度,可维护性与灵活性密切相关。高可维护性件的简易程度,可维护性与灵活性密切相关。高可维护性对于那些经历周期性更改的产品或快速开发的产品很重要。对于那些经历周期性更改的产品或快速开发的产品很重要。你可以根据修复你可以根据修复(fix)一个问题所花的平均时间和修复正确一个问题所花的平均时间和修复正确的百分比来衡量可维护性。的百分比来衡量可维护性。 “化学制品跟踪系统化学制品跟踪系统”包括如下的可

44、维护性需求:包括如下的可维护性需求:“在接在接到来自联邦政府修订的化学制品报告的规定后,对于现有到来自联邦政府修订的化学制品报告的规定后,对于现有报表的更改操作必须在一周内完成。报表的更改操作必须在一周内完成。”在图形引擎工程中,在图形引擎工程中,必须不断更新软件以满足用户日益发展的需要,因此,确必须不断更新软件以满足用户日益发展的需要,因此,确定以下设计标准以增强系统总的可维护性:定以下设计标准以增强系统总的可维护性:“函数调用不函数调用不能超过两层深度能超过两层深度“,并且,并且“每一个软件模块中,注释与源每一个软件模块中,注释与源代码语句的比例至少为代码语句的比例至少为1 2。”认真并精

45、确地描述设计目认真并精确地描述设计目标,以防止开发者做出与预定目标不相符的愚蠢行为。标,以防止开发者做出与预定目标不相符的愚蠢行为。402)可移植性可移植性 可移植性是度量把一个软件从一种运行环境转移到另一可移植性是度量把一个软件从一种运行环境转移到另一种运行环境中所花费的工作量。软件可移植的设计方法与种运行环境中所花费的工作量。软件可移植的设计方法与软件可重用的设计方法相似。可移植性对于工程的成功是软件可重用的设计方法相似。可移植性对于工程的成功是不重要的,对工程的结果也无关紧要。可以移植的目标必不重要的,对工程的结果也无关紧要。可以移植的目标必须陈述产品中可以移植到其它环境的那一部分,并确

46、定相须陈述产品中可以移植到其它环境的那一部分,并确定相应的目标环境。于是,开发者就能选择设计和编码方法以应的目标环境。于是,开发者就能选择设计和编码方法以适当提高产品的可移植性。适当提高产品的可移植性。 3)可重用性可重用性 从软件开发的长远目标上看,可重用性表明了一个软件组从软件开发的长远目标上看,可重用性表明了一个软件组件除了在最初开发的系统中使用之外,还可以在其它应用件除了在最初开发的系统中使用之外,还可以在其它应用程序中使用的程度。比起创建一个你打算只在一个应用程程序中使用的程度。比起创建一个你打算只在一个应用程序中使用的组件,开发可重用软件的费用会更大些。可重序中使用的组件,开发可重

47、用软件的费用会更大些。可重用软件必须标准化、资料齐全、不依赖于特定的应用程序用软件必须标准化、资料齐全、不依赖于特定的应用程序和运行环境,并具有一般性。确定新系统中哪些元素需要和运行环境,并具有一般性。确定新系统中哪些元素需要用方便于代码重用的方法设计,或者规定作为项目副产品用方便于代码重用的方法设计,或者规定作为项目副产品的可重用性组件库。的可重用性组件库。41 4)可测试性可测试性 可测试性指的是测试软件组件或集成产品时查找缺陷的可测试性指的是测试软件组件或集成产品时查找缺陷的简易程度。如果产品中包含复杂的算法和逻辑,或如果简易程度。如果产品中包含复杂的算法和逻辑,或如果具有复杂的功能性的

48、相互关系,那么对于可测试性的设具有复杂的功能性的相互关系,那么对于可测试性的设 计就很重要。如果经常更改产品,那么可测试性也是很计就很重要。如果经常更改产品,那么可测试性也是很重要的,因为将经常对产品进行回归测试来判断更改是重要的,因为将经常对产品进行回归测试来判断更改是否破坏了现有的功能性。否破坏了现有的功能性。 如随着图形引擎功能的不断增强,需要对它进行多次如随着图形引擎功能的不断增强,需要对它进行多次测试,所以作出了如下的设计目标:测试,所以作出了如下的设计目标:“一个模块的最大一个模块的最大循环复杂度不能超过循环复杂度不能超过20。” (循环复杂度度量一个模块源代码中逻辑分支数目。循环

49、复杂度度量一个模块源代码中逻辑分支数目。) 在一个模块中加入过多的分支和循环将使该模块难于在一个模块中加入过多的分支和循环将使该模块难于测试、理解和维护。如果一些模块的循环复杂度大于测试、理解和维护。如果一些模块的循环复杂度大于20,这并不会导致整个项目的失败,但指定这样的设计标准这并不会导致整个项目的失败,但指定这样的设计标准有助于开发者达到一个令人满意的质量目标。有助于开发者达到一个令人满意的质量目标。423 属性的取舍属性的取舍l 有时,不可避免地要对一些特定的属性对进行取有时,不可避免地要对一些特定的属性对进行取舍。用户和开发者必须确定哪些属性比其它属性更舍。用户和开发者必须确定哪些属

50、性比其它属性更为重要,并定出优先级。在他们作决策时,要始终为重要,并定出优先级。在他们作决策时,要始终遵照那些优先级。遵照那些优先级。l某质量属性的增强会对其它的属性产生积极或不某质量属性的增强会对其它的属性产生积极或不利影响。例如,增强软件可重用性的设计方法也可利影响。例如,增强软件可重用性的设计方法也可以使软件变得灵活、更易于与其它软件组件相连接、以使软件变得灵活、更易于与其它软件组件相连接、更易于维护、更易于移植并且更易于测试。更易于维护、更易于移植并且更易于测试。43l 高效性对其它许多属性具有消极影响。如果你高效性对其它许多属性具有消极影响。如果你编写最紧凑,最快的代码,并使用一种特殊的预编写最紧凑,最快的代码,并使用一种特殊的预编译器和操作系统,那么

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论