首页 理论教育 软件工程:软件质量指标

软件工程:软件质量指标

时间:2023-11-06 理论教育 版权反馈
【摘要】:软件质量可以通过一组软件质量指标来进行说明,图7-2列举了常见的一些软件质量指标。·可测试性可测试性指标代表了软件产品发现故障,定位、隔离故障的能力,即软件产品能够被测试的容易程度。可测试性主要包含可见性、可控制性、可操作性、可分解性、简单性和稳定性等。

软件工程:软件质量指标

软件质量可以通过一组软件质量指标(也可以称为质量要素、质量特性)来进行说明,图7-2列举了常见的一些软件质量指标。

图7-2 软件质量评价指标

·正确性

对于任何一个软件产品而言,它总是具备有一定功能的,但这个功能是否满足客户的需求则不一定,因此软件质量指标的第一项也是最重要的指标就是:正确性。正确性指标反映了最后所得到的软件产品所提供的各种功能、用途与用户实际需求之间的契合度。一个与用户需求完全背道而驰的软件产品,即使它的功能再强,其他质量指标再高,也不可能满足用户需求,获得用户认同。

·可靠性

可靠性指标代表软件产品在规定的条件下和规定的时间区间完成规定功能的能力。满足功能需求不代表软件产品在使用时不会出现错误,可靠性指标可以用平均故障率和平均缺陷(BUG)率来进行衡量。一般情况下软件产品随着使用时间的延长,其故障率和缺陷率是逐步下降的,其原因在于随着软件产品使用时间的增加,用户对产品的熟悉程度提高,误操作的概率降低;同时在发生故障和发现缺陷的时候,开展了及时修复工作(打补丁)。

·易用性

易用性指标是指软件产品在指定条件下使用时,被理解、学习、使用和吸引用户的能力。可以分解为易理解性、易学习性、易操作性、吸引性、依从性等子指标。功能强大但操作复杂的软件产品很难被用户接受,尤其是对新产品,当用户面临具有相同功能的多个产品的时候,会直观地去选择那个操作并不复杂的产品,从Apple的产品广受欢迎就可以看出这一点,软件产品易用性提高带来的其他好处是:降低了培训的成本、减少了误操作发生的可能。

·效率

效率性指标反映了软件产品在完成某项功能时的耗费程度,包括CPU、内存、存储设备、网络带宽和时间等,一般可以用响应时间(包括服务器响应时间、网络响应时间、客户端响应时间)、吞吐率、资源利用率、并发用户数等指标来进行度量。软件工程中衡量算法效率的两个指标:空间复杂度和时间复杂度,它们在一定程度上反映了产品的性能指标。性能有时会影响可靠性,比如网络带宽对文件传送的可靠性影响,用100 M的局域网和用56 K的Modem来传送同样文件,后者失败的概率要高于前者;性能同样也会影响软件产品的容量,同样的服务器,高性能的软件产品就会比一般性能的产品处理更多的服务请求。

·容量

容量指标代表了在相同软硬件配置情况下,系统在其极限状态下没有出现任何软件故障或还能保持主要功能正常运行的能力。现代软件产品一般都是多用户产品,即产品同时向多人提供服务,比如12306订票系统,可能瞬间的访问量达到几百万甚至上千万。不同规模的访问量级,软件产品架构设计和算法实现的差异是非常巨大的。

·安全性

安全性指标代表了软件产品在受到攻击时的防范能力。在互联网时代不存在绝对隔离的软件产品运行环境,只要有可能与外界环境发生关系,就存在被攻击的可能。攻击的目标可能是软件产品本身,也可能是利用软件产品作为跳板攻击系统。(www.xing528.com)

·可测试性

可测试性指标代表了软件产品发现故障,定位、隔离故障的能力,即软件产品能够被测试的容易程度。可测试性主要包含可见性、可控制性、可操作性、可分解性、简单性和稳定性等。其中,可见性是指被测软件的状态、数据输出、资源利用和其他运行数据能被准确地测试到,以决定测试是否通过,有些时候网络传输的数据以及后台计算的中间数据并不能被直观的观察到,这时候就需要通过诸如事务日志之类的工具进行记载,方便事后分析;可控制性指能向被测软件输入预期的数据,或修改它的状态,如一个应用程序有事件触发的阈值,能够设置和重新设置那些阈值可简化测试,比如对于网站的压力测试,实际测试不可能要求几万人同时操作。

·可维护性

可维护性指标代表了维护人员对软件产品进行维护的难易程度,具体包括理解、改正、改动和改进软件产品的难易程度。可维护性不仅适用于最终发布的产品,同样也适合于中间产品,比如构件、类。很多时候软件产品的开发并不是从0开始,在有可能的情况下都会尽量利用已有的代码,并在已有代码的基础上根据新的需求进行修改。可维护性指标可以分解成可读性、可理解性、可追溯性、可改变性、可测试性等指标,其中可追溯性是指代码各部分之间的相互依赖程度,依赖越少,隔离性越强,则越容易追溯;可改变性是指对软件作出修改的容易程度,包括找到修改点的难度和修改是否会对软件的其他部分造成影响。

·兼容性

兼容性指标是指软件产品从一个环境转移到另外一个环境下的适应能力,这些环境包括操作系统、数据库、软件环境、硬件环境等,比如企业账务系统最早可能是使用MS Access数据库,但随着业务量的增大需要迁移到MS SQL Server环境下面,此时是可以无缝的进行迁移还是需要重新设计账务系统,需要考虑。再举一个关于软件环境兼容性的例子,比如需要将数据输出到Excel,此时是否对MS Office的版本有特殊要求。软件产品的兼容性越高,意味着进行迁移的时候所需要付出的代价越低,但过度考虑兼容性会牺牲产品的性能。

·可扩展性

可扩展性指标反映了软件产品在增加新功能时的难易程度。在进行产品扩展时对原有系统的影响越小,代表软件产品的可扩展性越高,同时代表软件产品适应变化的能力越强。提出可扩展性指标的原因有几个:用户提出了新的需求,产品开发采用迭代模型或增量模型。需要注意的是软件产品的可扩展性实现是在系统分析与设计层面,而不是代码层面。

·可重用性

可重用性指标反映了软件的整体或一部分能成为一个独立的软件包在其他软件项目中复用的能力。采用面向对象的分析和设计技术其中一个原因就是希望能够提高软件的复用能力,软件复用最小的单位是类,一般情况下单个类直接复用的情形并不多见,更多的是以构件的形式出现,一个构件是由多个类构成,能够独立完成某一功能。构件是软件体系结构设计成果。

除了上述软件质量指标以外,还有其他的一些指标可以用来说明软件质量,如可追溯性、自我描述性、文档质量等。图7-2也反映了另一个问题,对同一个软件产品不同角色的关注点存在一定的差异。

用户:关注软件产品的正确性、可靠性、易用性、效率、容量、安全性等指标;

开发人员:除了关注用户所关注的指标外,还会关注可测试性、可维护性、兼容性、可扩展性、可重用性等指标;

管理人员:除上述指标外,更加关注的是进度和成本。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈