写点什么

详解软件质量模型

作者:陈磊@Criss
  • 2023-03-13
    北京
  • 本文字数:3933 字

    阅读完需:约 13 分钟

简介

软件测试的目的就是为了“验证产品质量是否满足用户的需求”。但是搞清楚,用户的需求并不是一件容易的事,因此在软件测试行业发展的漫长历史中,需要一种方式能够积累广大测试工程师的经验。这里的经验就是如何验证用户的需求。这也促使软件质量模型的诞生。软件质量模型是一个衡量软件整体质量效果的度量标准,反映软件满足明确或隐含需要能力的特性总和。如果你的测试活动脱离了软件质量模型,那么很有可能会有一些很重要的内容被忽略。软件质量模型发展到现在也经历了很多演进,但是每一种演进都是是为了交付好系统而发展的。

质量模型的分类


质量模型分为基于经验的模型和机遇构建的模型两大分类,基于经验的模型(Experience-based models),主要是依据质量工作人员的一些实践经验的总结,使用典型的质量因素构建一个多层的质量模型,基于经验的模型主要包含了层次模型、关系模型。基于构建的模型(Construction-base models)是通过提供一些方法从而构建一个质量模型,这其中重点在于质量属性之间关系的构建以及对质量属性进行分析,在构建模型中典型的就是 Dromey 质量模型。


当前被质量工程领域大部分专家所认可的就是基于经验的质量层次模型了,质量层次模型从 McCall 模型、Boehm 模型,最后发展到了 ISO 系列模型,充分说明了层次模型和质量特性的合理性。但是这也并不是否定了基于经验的关系模型、基于构建的质量模型就是不对的,每一个质量模型都有其在质量管理方面的优越性的。

基于经验的质量模型

基于经验的质量模型主要是通过质量管理以及质量保障经验的不断的总结和抽象,基于经验的质量模型中也可以分为层次模型、关系模式两种。

基于经验的软件质量层次模型

软件质量层次模型的产生要追溯到 1977 年。Jim A.McCall 试图通过一系列的软件质量属性指标来弥补开发人员与最终用户之间的沟壑,最终提出了 McCall 模型,也被称为 GE 模型(General Electrics Model)。McCall 质量模型是一个三层模型,自顶向下分别是质量因素、质量准则和质量度量。但是我们都知道,一个软件系统的质量因素除去其自身的软件相关属性之外还有硬件的一些属性的支持,所有软件的质量准则和质量度量都是在硬件属性之上展现的,没有硬件资源,软件系统就没有了运行的土壤,因此 Barry W.Boehm 在 1978 年提出了 Boehm 模型,通过一系列的属性的指标来量化软件质量,Boehm 模型类似 McCall 质量模型,采用了层级的质量模型结构,包含了高层属性、中层属性和原始属性。Boehm 模型在某种程度上可以看做 McCall 的下一代质量模型。


但是,就算软件质量层次模型从 McCall 模型发展到了 Beohm 模型,却还是没有讲最原始的质量属性和一些质量要素区分清楚,这两类约束混杂在质量准则、质量度量上,因此 ISO/IEC 9126 质量模型综合了 Boehm 模型和 McCal 模型的优越性和问题,站在用户、开发者、管理者的角度,从外部质量、内部质量、使用中质量三个方面完成了质量模型的建设,从外部和内部对质量进行度量。这也是第一次彻底从将质量层次模型讲分清楚。ISO/IEC 9126 质量模型包含了 6 个质量特性和 27 个质量子特性,特性和子特性一一映射,不存在交叉问题,但是还不完善,因此发展到后来的 GB/T 25010 全套的质量模型,包含了系统质量、使用质量等。下面我们就详细讲讲各种模型。

McCall 模型

McCall 的软件质量模型最初起源于美国空军,主要面向的是系统开发人员和系统开发过程。McCall 模型认为,特性是软件质量的反映,因此软件属性可用于(软件质量的)评价准则,通过对软件属性定量的度量就可以反映出软件的质量。McCall 质量模型是一个三层模型,自顶向下分别是质量因素、质量准则和质量度量。其中的质量因素是面向管理观点的产品质量,软件的最终用户不了解软件的内部实现细节但是他很了解自己的需求,用户从外部视角定义和描述软件,形成从外部可观察到的特性,这就是 McCall 模型中顶层的质量因素的来源。次顶层是质量准则,是开发人员从内部视角构建软件属性,是从内部可以观察到的特性,是决定产品质量的软件属性;最底层是定量化度量软件属性的质量度量。



McCall 模型将质量因素分为产品修正、产品转移,产品运行,每一个质量因素下面都有自己的质量准则,产品修正包含了可维护性、可测试性、灵活;产品转移包括 可移植性、可复用性、互连性;产品运行包括 正确性、可靠性、效率、可使用性和完整性。这是十一个质量标准是通过二十三个衡量指标来度量的,这二十三个衡量指标包含了完备性、一致性、准确性、容错性、简单性、模块性、通用性、可扩充性、工具性、自描述性、执行效率、存储效率、存取控制、存取审查、可操作性、培训性、通信性、软件系统独立性、机独立性、通信通用性、数据通用性和简明性。



参考:J McCall, P Richards, G Walters. Factors in Software Quality. Vol1[R]. Technical Report CDRL A003, US Rome Air Development Centre, 1977.

Boehm 模型

正如前文所说,一个软件系统的质量因素除去其自身的软件相关属性之外还有硬件的一些属性的支持,所有软件的质量准则和质量度量都是在硬件属性之上展现的,没有硬件资源,软件系统就没有了运行的土壤,McCall 模型就完全忽略了软件系统运行的土壤,Barry W.Boehm 在 1978 年提出了 Boehm 模型,通过一系列的属性的指标来量化软件质量,Boehm 模型类似 McCall 质量模型,采用了层级的质量模型结构,包含了高层属性、中层属性和原始属性。



Boehm 模型高层属性主要关注 3 个问题,可移植性、可用性和可维护性,中层属性包含了 7 个质量要素主要包括可移植性、可靠性、效率、人机界面、可测试性、可理解性和可修改性,原始属性包含了设备独立性、自包含性、准确性、完备性、完整性、一致性、可说明性、设备效率、可访问性、通信性、自描述性、结构化性、简明性、易读性以及可扩展性。


参考:B W Boehm, J Brown, H Kaspar, et al . Characteristics of Software Quality[A]. TRW Serious of Software Technology Vol 1[M]. New York: North Holland, 1978.

ISO 9126

Boehm 模型,已经囊括了软件和硬件的属性,但是最终的原始属性却和前面的质量要素交叉映射,这为 Boehm 模型的广泛推广造就了一些障碍,因此 ISO/IEC 9126 质量模型综合了 Boehm 模型和 McCal 模型的优越性和问题,站在用户、开发者、管理者的角度,从外部质量、内部质量、使用中质量三个方面完成了质量模型的建设,从外部和内部对质量进行度量。其中外部度量实在测试和使用软件产品过车功能汇总进行,通过观察软件产品的系统行为,执行对其系统行为的测量得到度量的结果;内部度量是在软件设计和编码过中进行,通过对于中间产品的静态分析来测量,其目的是确保获得所需的外部质量和使用质量。



参考:ISO 9126, Information Technology - Software Product Evalvation - Quality Characteristics and Guidelines for Their Use. International Organisation for Standardization, 1992.

ISO 25010

ISO/IEC 9126 质量模型包含了 6 个质量特性和 27 个质量子特性,特性和子特性一一映射,不存在交叉问题,但是还不完善,因此发展到后来的 GB/T 25000 全套的质量模型,。


基于经验的软件质量关系模型

软件质量关系模型,重点是反映了质量属性之间的关系,通过描述质量属性之间的正面、反面或者中立的关系,来阐述软件质量。Perry 模型就是一个典型的关系模型,它使用一张二位的表格来阐述各个质量属性以及它们之间的关系。可想而知,对于软件质量属性想要通过一个二位表格描述清楚其实还是有其局限性的。比如质量属性之间的动态可变的相互制约关系或者两个以上的质量属性之间的制约关系,这些在 Perry 模型也不能很好地表达。除去 Perry 模型,在关系型质量模型还有 Gilles 模型,感兴趣的可以参考一下对应论文。


参考:WE Perry. Quality Assurance for Information Systems Methods, Tools and Techniques[M]. New York: John Wiley & Sons, 1991.参考:A Gillies Modelling Software Quality in The Commercial Environment. Software Quality Journal, 1992,1, 175-191.

基于构建的质量模型

基于构建的质量模型中最为典型的就是 Dromey 提出的一种质量模型,也称为 Dromey 模型。这种模型是由三个主要的元素组成,包含了质量属性、组件以及组建特性,通过提供建立模型的方法来构建质量模型。构建该种质量模型包括以下五个步骤:


  • (1)确定产品的一系列高级质量属性;

  • (2)确定产品组件; 

  • (3)对每个组件的最重要的、切实的、质量相关的属性 进行确认和分类; 

  • (4)为连接产品属性和质量属性提供系列的规则; 

  • (5)对模型进行评价,指出它的弱点,进行重定义或者废弃重新建模型。


人们可以通过由以上五个步骤组成的过程来针对具体软件产品的质量模型进行初始化和重定义。并且,针对软件的需求定义、设计和实现这些软件开发中关键的产品论证了该方法的应用。


参考:R G Dromey. A Model for Software Product Quality.IEEE Trans on Software Engineering, 1995.参考:R G Dromey. Cornering the Chimera. IEEE Software,1996.

总结

以上的各种软件质量模型各有各的优越性,也有各式各样的缺陷:


  • 基于经验的层次模型由一些质量因素、质量准则和质量度量等组成,这也导致了只能表达质量属性之间的正面的关系,但是对于一些反面的、更复杂的关系却没有能力表达出来

  • 基于经验的关系模型能够表达质量属性之间关系,这些关系有可能覆盖正面、反面、中立的关系,但对于一些更为复杂的关系则同样无法表达。

  • 基于构建的质量模型认识到了软件质量模型需要通过质量相关属性和软件产品组件构建,但是应该 Dromey 模型却仅仅构建了一个统一的质量模型,应用领域的特殊性、软件设计和实现的特殊性依然没有被考虑进来,最终致命的问题是这种方法只能应用于软件开发完成之后。


质量模型的选择也要和团队、被测试的产品以及团队质量文化相结合,并没有“万能公式”。


发布于: 2023-03-13阅读数: 23
用户头像

陈磊@Criss

关注

测者观天下bugs 2018-03-11 加入

华为云MVP,阿里云MVP

评论

发布
暂无评论
详解软件质量模型_陈磊@Criss_InfoQ写作社区