尽管软件质量被很多人经常性的挂在口头,但是如果被问到“衡量软件质量的指标有哪些?”相信很多人会说不出话来,为了帮助更多的软件质量人了解衡量软件质量的指标,下面简要的介绍一下软件质量指标。

  软件质量指标是衡量那些可识别的软件质量特性的项目,有助于软件质量进行度量,选择软件工程方法来达到特定的质量目标。在一个理想的范围内,一个系统总是大限度的展示所有这些属性的可能价值,系统将随时可用、绝不崩溃、可以立即提供结果、易于使用。

  在ANSI/IEEE中提到的软件的6个品质要素如下:

  正确性:实现的功能达到设计规范并满足用户需求的程度

  可靠性:在规定的时间和条件下,维持其性能水准的程度

  易用性:用户掌握软件操作所要付出的时间及努力程度

  效率:软件执行某项功能所需的计算机资源和时间的有效程度

  可维护性:当环境改变或者软件发生错误时,执行修改或者修复所作的努力地程度

  可移植性:从一个系统/环境移到另一个系统/环境的容易程度

  根据这些软件品质要素,我们可以确定一系列的软件质量指标:

  1、功能性的质量指标

  功能的正确性:系统功能和用户的实际需求、已定义的产品规范一致

  功能的准确性:系统产生的结果在精度允许的误差范围内

  功能的完整性:所有功能及其定义清楚、可用

  2、可用性的质量指标

  可操作性:容易使用和操作,包括理解用户界面、适应一些特殊用户的可选项等

  通用性:数据显示、网络通信接口和用户界面等都遵守已有的软件标准

  一致性:在软件开发整个生命周期内建立和使用相同的标准,保证全局变量、数据类型、出错处理的命名和使用一致

  3、可靠性的质量指标

  自我恢复能力:当系统的某个功能失效发生时,系统在当前环境下能实现故障自动转移,重新自动配置、继续执行的能力,软件系统具有自我检测、容错、备份等机制,尽量做到独立于硬件的编码、硬件设备之间的通信协议一致等

  健壮性:各种恶劣环境(大数据量、大用户量)下系统能正常工作

  分布性:软件系统的某些子功能或子系统被定位于不同的处理主机、存储设备

  4、性能的质量指标

  有效性:系统在通信、处理、存储等方面占有很少资源或者对所使用的资源进行了优化

  完整性:系统具有良好的安全管理,能防止不安全存取系统、防止数据丢失病毒入侵等

  易存取性:对系统的存取权限设置清楚,存取操作方便,存取操作有记录

  5、可维护性的质量指标

  模块化:指讲一个复杂的软件系统分解为分别命名并具备小耦合性、很强凝聚性、结构化的组件

  灵活性:容易为系统增加一个新功能或者新的数据而不需要进行大量的代码修改或者设计修改

  可测试性:测试软件组件或者集成产品时查找缺陷的简易程度

  可追溯性:对一个特殊需求容易找出相应的代码,反之,也可以根据代码找出特定的需求

  兼容性:软件、硬件、通信系统之间协调及兼容其他系统的能力

  可解释性:相关文档齐全、符合标准、逻辑清晰、描述准确、用词恰当,容易理解和定位

  6、可移植性质量指标

  适应性:系统不依赖于环境,即系统不做修改或作很少的修改即可运行在其他环境下

  易安装性:与在指定的环境下安装软件所需努力有关的软件属性。如在线更新、安装包自动生成等。

  可重用性:一个软件组件除了在初开发的系统之外应用于其他系统的能力

  互操作性:软件系统与其他系统交换数据和服务的难易程度

  可替换性:与软件在该环境中用来替代指定的其他软件的机会和努力有关的软件属性

  看过读者其他文章的朋友会觉得上面的内容似曾相识,不错,笔者之前的文章《非功能需求的6种类型》中的内容和此文中的内容遥相呼应,一定程度上也反馈出“质量是客户满意的程度”的观点。实际上,软件的质量并非静态的而是动态的,假如客户对于某项质量指标没有要求,没必要花费时间和工作去满足该项质量指标,因此,在具体软件系统的质量指标定义上,一定要结合用户的非功能需求,不但能恰到好处的满足客户需求,也能尽可能的节省开发成本。