软件质量模型
简介
软件测试的目的就是为了“验证产品质量是否满足用户的需求”。但是搞清楚,用户的需求并不是一件容易的事,因此在软件测试行业发展的漫长历史中,需要一种方式能够积累广大测试工程师的经验。这里的经验就是如何验证用户的需求。这也促使软件质量模型的诞生。软件质量模型是一个衡量软件整体质量效果的度量标准,反映软件满足明确或隐含需要能力的特性总和。如果你的测试活动脱离了软件质量模型,那么很有可能会有一些很重要的内容被忽略。软件质量模型发展到现在也经历了很多演进,但是每一种演进都是是为了交付好系统而发展的。
质量模型的分类
质量模型分为基于经验的模型和机遇构建的模型两大分类,基于经验的模型(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全套的质量模型,包含了系统质量、使用质量等。
软件质量关系模型,重点是反映了质量属性之间的关系,通过描述质量属性之间的正面、反面或者中立的关系,来阐述软件质量。Perry模型就是一个典型的关系模型,它使用一张二位的表格来阐述各个质量属性以及它们之间的关系。可想而知,对于软件质量属性想要通过一个二位表格描述清楚其实还是有其局限性的。比如质量属性之间的动态可变的相互制约关系或者两个以上的质量属性之间的制约关系,这些在Perry模型也不能很好地表达。
基于构建的质量模型
基于构建的质量模型中最为典型的就是Dromey提出的一种质量模型,也称为Dromey模型。这种模型是由三个主要的元素组成,包含了质量属性、组件以及组建特性,通过提供建立模型的方法来构建质量模型。构建该种质量模型包括以下五个步骤:
- (1)确定产品的一系列高级质量属性;
- (2)确定产品组件;
- (3)对每个组件的最重要的、切实的、质量相关的属性 进行确认和分类;
- (4)为连接产品属性和质量属性提供系列的规则;
- (5)对模型进行评价,指出它的弱点,进行重定义或者废弃重新建模型。
人们可以通过由以上五个步骤组成的过程来针对具体软件产品的质量模型进行初始化和重定义。并且,针对软件的需求定义、设计和实现这些软件开发中关键的产品论证了该方法的应用
总结
以上的各种软件质量模型各有各的优越性,也有各式各样的缺陷:
- 基于经验的层次模型由一些质量因素、质量准则和质量度量等组成,这也导致了只能表达质量属性之间的正面的关系,但是对于一些反面的、更复杂的关系却没有能力表达出来
- 基于经验的关系模型能够表达质量属性之间关系,这些关系有可能覆盖正面、反面、中立的关系,但对于一些更为复杂的关系则同样无法表达。
- 基于构建的质量模型认识到了软件质量模型需要通过质量相关属性和软件产品组件构建,但是应该Dromey模型却仅仅构建了一个统一的质量模型,应用领域的特殊性、软件设计和实现的特殊性依然没有被考虑进来,最终致命的问题是这种方法只能应用于软件开发完成之后。