按照ISO9126 的定义,软件的质量通常可以从以下六个方面去衡量(定义)。

  1)功用性(Functionality),即软件是否满足了客户功能要求。

  2)可靠性(Reliability),即软件是否能够一直在一个稳定的状态上满足可用性。

  3)可用性(Usability),即衡量用户能够使用软件需要多大的努力。

  4)效率(Efficiency),即衡量软件正常运行需要耗费多少物理资源。

  5)可维护性(Maintainability),即衡量对已经完成的软件进行调整需要多大的努力。

  6)可移植性(Portability),即衡量软件是否能够方便地部署到不同的运行环境中。可见,同其它产品相比,软件产品的质量有其明显的特殊性。

  1)很难制定具体的、数量化的产品质量标准,所以没有相应的国际标准、标准或行业标准。对软件产品而言,无法制定诸如“合格率”、“一次通过率”、“PPM”、“寿命”之类的质量目标。每千行的缺陷数量是通用的度量方法,但缺陷的等级、种类、性质、影响不同,不能说每千行缺陷数量小的软件,一定比该数量大的软件质量更好。至于软件的可扩充性、可维护性、可靠性等,也很难量化,不好衡量。软件质量指标的量化手段需要在实践中不断总结。

  2)软件产品质量没有的合格与不合格界限,软件不可能做到“零缺陷”,对软件的测试不可能穷尽所有情况,有缺陷的软件仍然可以使用。软件产品的不断完善通过维护和升级问题来解决。

  3)软件产品之间很难进行横向的质量对比,很难说哪个产品比哪个产品好多少。不同软件之间的质量也无法直接比较,所以没有什么“国际”、“国内”的提法。

  4)满足了用户需求的软件质量,是好的软件质量。如果软件在技术上很先进,界面很漂亮,功能也很多,但不是用户所需要的,仍不能算软件质量好。客户的要求需双方确认,而且这种需求一开始可能是不完整、不明确的,随着开发的进行不断调整。

  5)软件的类型不同,软件质量的衡量标准的侧重点也不同。例如,对于实时系统而言,效率(Efficiency)会是衡量软件质量的首要要素,公司的集中告警监控软件NetGuard 往往对效率有相当的要求;对于一些需要软件使用者(用户)与软件本身进行大量交互的系统,如公司的资源管理软件NetMaster,对可用性(Usability)提出了较高的要求。