软件质量模型研究现状?
发布网友
发布时间:2022-04-24 16:22
我来回答
共1个回答
热心网友
时间:2023-10-22 08:03
你好!
参考吧:
软件质量模型研究
摘 要:如何提供高质量的软件已成为计算机软件领域中的重要研究课题。为了理解、度量以及预测软件和信息系统的质量,人们围绕软件质量模型展开了很多研究。一个合适的软件质量模型对软件系统的开发与评价将起到关键作用。本文介绍了软件质量与软件质量度量的基本概念,重点分析了软件质量模型方面的研究成果。
1 引言
随着计算机技术及其应用的日益普及,各行各业对软件的依赖性越来越大;同时,由于软件质量问题导致的不良后果也越来越多。因此,软件质量的重要性日益突出。如何保证软件质量已经成为软件开发过程中必须贯穿始终加以考虑的重要问题。然而,质量是一个复杂且难以琢磨的概念。对于不同的人或不同的应用系统,质量的含义和要求不尽相同[1]。并且,软件质量属性是多方面的。一个软件的质量往往涉及到许多不同的质量属性,不同类型的软件所关注的质量属性也不尽相同。因此,为了更好地理解、预测和评价软件和信息系统的质量,人们建立了各种质量模型,在软件生命周期的不同阶段对软件质量进行评测。常用的通用软件质量模型主要包括层次模型和关系模型,它们在当前的软件开发中起到了一定的积极作用。然而,通用软件质量模型在描述复杂的软件质量间关系及具体软件的质量特征等方面有局限性,人们又提出不使用通用的质量模型,而是通过提供软件质量模型的构造方法来针对具体软件进行建模的。思路来研究软件的质量[2~4]。本文主要介绍了软件质量与软件质量度量的基本概念,重点讲述了软件质量模型方面的研究成果,分析了其优缺点与适用范围。
2 软件质量与软件质量度量
2.1 软件质量
在计算机科学发展的早期并没有软件质量的概念。直到20世纪70年代以后,随着软件工程的引入,软件开发的工程化、标准化得到重视,软件质量的概念才被提了出来。关于软件质量的定义,迄今国际上并没有统一的认识:
(1)根据国际标准组织(ISO)的定义,质量是依靠特定的或暗指的能力满足特定需要的产品或服务的全部功能和特征[5]。这个定义说明了质量是产品的内在特征,即软件质量是软件自身的特性。
(2)另一些学者认为,如果要达到软件的质量目标,上述概念必须要加强[1,6,7]。他们认为,质量不是单独以软件产品为中心的,它与客户和产品都有联系。其中,客户是出资者或受影响的用户,而产品包括利益和服务。进一步讲,质量的好坏会随着时间响应、用户满意度和环境的改变而改变。因此,软件的质量作为产品或服务需要的功能特征,也必须定义与客户和环境相关的内容。我们认为,质量是一个复杂且多面的概念,从不同的角度来看会得到不同的结论。因此,对于质量的定义还应该是多方面的,上述定义均不能很好地满足要求。本文给出如下定义:软件质量是指软件产品的特性可以满足用户的功能、性能需求的能力。软件质量的特性包括以下几个方面:
(1)与功能和性能需求的一致性:即软件需求是质量度量的基础,缺少与需求一致性的软件就毫无质量可言;
(2)与开发标准的一致性:不遵循专门的开发标准,将导致软件质量低劣;
(3)与同行业的所有软件应满足的隐含特性的一致性:忽视软件隐含的需求,软件质量将得不到保证。
2.2 软件质量度量
对于软件质量,我们不仅要清楚它的特征,还要有能力去度量它。正确有效地度量和评价出软件质量的高低对于软件的使用者及开发人员都具有非常重要的意义。软件工程的方*主要是在提高软件过程的可见度方面下工夫,但仅仅是方*的提高并不能使其成为工程学科,还需要使用度量。软件度量的根本目的是为了管理的需要,利用度量来改进软件过程。没有适当准则去判断、评估软件的过程和阶段性的质量,就无法做出适当的决策,更谈不上进
行有效的管理。度量的结果是一种可用于决策、可比较的对象,度量已知的事物是为了进行跟踪和评估:对于未知的事物,度量则用于预测。这样,一方面我们可以去度量一个最终软件产品的质量;另一方面,我们也可以在开发过程中预测出软件可能的质量,从而对其提出有效的改进。软件质量度量是贯穿于软件工程的全过程以及软件交付之后的,在软件交
付之前的度量主要包括程序复杂性、模块的有效性和总的程序规模,而在软件交付之后的度量则主要包括残存的缺陷数和系统的可维护性。目前,软件质量度量方法比较多,例如:(1)Halstead复杂性度量法。其基本思路是根据程序中可执行代码行的操作符和操作数的数量来计算程序的复杂性。操作符和操作数的量越大,程序结构就越复杂。(2)McCabe复杂性度量法。其基本思想是程序的复杂性在很大程度上取决于程序控制流的复杂性,单一的顺序程序结构最简单,循环和选择所构成的环路越多,程序就越复杂。研究人员为了更好地理解和度量软件质量,还建立了各种模型来描述软件的质量和多个质量属性之间的关系。下文将对此作详细的描述。
3 软件质量模型
目前,围绕软件质量模型的研究主要分为两个方向:一是根据经验提出软件质量模型,二是给出一种构建软件质量模型的方法。前者主要是建立各种通用的质量模型来描述软件或信息系统,从而对软件的质量进行预测、度量以及评估,其中有人把质量分解成各种因素,有人把质量分成多个层次。但是,过去的这些质量模型总是想要以单个的模型广泛地应用于所有软件和信息系统的开发。很明显,这与质量本身的特征多样性是相背驰的。因此,如何针对具体的软件或信息系统建立合适的软件模型依然是一个开放的课题。后者主要是提供了如何建立质量模型的方法,包括如何建立质量属性之间的联系以及如何分析质量属性等。
3.1 通用软件质量模型
迄今为止,研究人员已建立了多个质量模型来帮助理解、度量和预测软件的质量,这些模型是研究人员根据多年的软件工程实践经验提出来的,是有效地组织质量保证活动的基础。目前,主流的软件质量模型分为两类:层次模型和关系模型。比较著名的层次模型包括McCall模型[6]、Boehm模型[7]和ISO9126质量模型[5];比较著名的关系模型包括Perry模型[8]和Gillies模型[9]。McCall模型是最早的质量模型之一,属于层次模型的类型。J. A. McCall等人将其模型分为三层:因素、准则、计量,并对软件质量因素进行了研究,认为软件质量是正确性、可靠性、效率等构成的函数,而正确性、可靠性、效率等被称为软件质量因素,或软件质量特征,它表现了系统可见的行为化特征。每一因素又由一些准则来衡量,而准则是跟软件产品和设计相关的质量特征的属性。例如,正确性由可跟踪性、完全性、相容性来判断;每一准则又有一些定量化指标来计量,指标是捕获质量准则属性的度量。Mc-Call认为软件质量可从两个层次去分析,其上层是外部观察的特性,下层是软件内在的特性。McCall定义了11个软件外部质量特性,称为软件的质量要素,它们是正确性、可靠性、效率、完整性、可使用性、可维护性、可测试性、灵活性、可移植性、重复使用性和连接性。同时,还定义了23个
软件的内部质量特征,称之为软件的质量属性,它们是完备性、一致性、准确性、容错性、简单性、模块性、通用性、可扩充性、工具性、自描述性、执行效率、存储效率、存取控制、存取审查、可操作性、培训性、通信性、软件系*立性、机独立性、通信通用性、数据通用性和简明性,软件的内部质量属性通过外部的质量要素反映出来。然而,实践证明以这种方式获得的结果会有一些问题。例如,本质上并不相同的一些问题有可能会被当成同样的问题来对待,导致通过模型获得的反馈也基本相同。这就使得指标的制定及其定量的结果变得难以评价。Boehm模型是由Boehm等在1978年提出来的质量模型,在表达质量特征的层次性上它与McCall模型是非常类似的。不过,它是基于更为广泛的一系列质量特征,它将这些特征最终合并成19个标准。Boehm提出的概念的成功之处在于它包含了硬件性能的特征,这在McCall模型中是没有的。但是,其中与McCall模型类似的问题依然存在。
ISO9126质量模型是另一个著名的质量模型,它描述了一个由两部分组成的软件产品质量模型。一部分指定了内在质量和外在质量的六个特征,它们还可以再继续分成更多的子特征。这些子特征在软件作为计算机系统的一部分时会明显地表现出来,并且会成为内在的软件属性的结果。而另一部分则指定了使用中的质量属性,它们是与针对六个软件产品质量属性的用户效果联合在一起的。下面是它给出的软件的六个质量特征:
(1)功能性(Functionality):软件是否满足了客户功能要求;
(2)可靠性(Reliability):软件是否能够一直在一个稳定的状态上满足可用性;
(3)使用性(Usability):衡量用户能够使用软件需要多大的努力;
(4)效率(Efficiency):衡量软件正常运行需要耗费多少物理资源;
(5)可维护性(Maintainability):衡量对已经完成的软件进行调整需要多大的努力;
(6)可移植性(Portability):衡量软件是否能够方便地部署到不同的运行环境中。
SATC软件质量模型是由NASA的软件保证技术中心提出的,它遵循ISO9126的结构,也定义了一系列的质量目标。这些目标跟软件产品和过程的属性相关,这些属性揭示了能够达到上述目标的可能性。它选择的这些质量目标既封装了面向过程的质量指标,也封装了那些面向产品的传统指标。SATC还选择和开发了一系列标准来度量这些属性,这些标准是与质量属性相关联的且可以应用在模型定义的目标之上。他们应用于整个生命周期之中,包括那些早期阶段。与层次模型不同,关系模型反映质量属性之间关系的表达力较强,它们能够描述质量属性之间正面、反面或中立的关系。Perry模型就是一个典型的关系模型。它使用一张二维的表格来表达各个质量属性以及它们之间的关系。但是,对于软件质量属性之间一些更为复杂的、用二维表格无法直接表达的关系,比如质量属性之间的动态可变的相
互制约关系或者两个以上的质量属性之间的制约关系,这些模型也不能很好地表达。总之,以上这些通用的软件质量模型定义的标准被应用于各种软件,包括计算机程序和包含在固件中的数据。那些特征和子特征为软件产品质量提供了一致的术语,并且为制定软件的质量需求和确定软件性能的平衡点指定了一个框架。然而,层次模型由一些质量属性、标准及准则等
构成,它们只表达了质量属性之间一些正面的影响关系,对于那些更复杂的关系它们却*为力。关系模型能够表达质量属性之间正面、反面及中立的影响,但对于一些更为复杂的关系则同样无法表达。并且,它们还有一个相同的弱点,就是现有的这些质量模型总是意图能够适用于所有类型的软件开发,成为一个通用的模型。然而,正像我们上文提到的那样,软件质量是非常复杂的,很难定义出一个能够适用于所有软件质量度量的模型。每个软件系统都有它自己的特征,我们在使用质量模型时必须考虑各类应用的特殊需求。并且,由于计算机应用的飞速发展,人们需要寻找不仅能够在软件质量管理方面提供有效帮助,而且还能够对软件开发中的其他活动提供相应支持的质量模型。
3.2 质量模型构造方法
通用软件质量模型的构造需要多年的软件开发与维护经验作基础,再由于上述的一些弱点,人们提出了研究软件质量模型的新思路。这就是提供一种系统的构造方法,用来为不同的软件或不同类型的软件构造可测试、可评估和可重定义的质量模型,以评估和度量软件系统的开发质量,并对软件系统的开发过程提供一定的支持和帮助。在文献[3,4]中,Dromey提出了一种通用的质量模型及系统开发质量模型的过程,该模型由三个主要的元素组成:影响质量的产品属性、一系列高级的质量属性和连接它们的一种方法。构建该种质量模型包括以下五个步骤:
(1)确定产品的一系列高级质量属性;
(2)确定产品组件;
(3)对每个组件的最重要的、切实的、质量相关的属性进行确认和分类;
(4)为连接产品属性和质量属性提供系列的规则;
(5)对模型进行评价,指出它的弱点,进行重定义或者废弃重新建模型。
人们可以通过由以上五个步骤组成的过程来针对具体软件产品的质量模型进行初始化和重定义。并且,Dromey针对软件的需求定义、设计和实现这些软件开发中关键的产品论证了该方法的应用。随后,在文献[10]中,Bansiya和Davis应用该方法建立了一个面向对象设计的层次质量模型。在这个模型中使用了一套面向对象的设计规则评价类与对象结构化、行为化的设计属性以及它们之间的关系。该模型使用经验性的信息将一些设计属性如封装性、模块性和一些高级的质量属性如重用性、复杂性联系起来,并且将这些关系根据它们的影响力和重要性划分了等级。最后,还根据经验和专家意见验证了针对几个面向对象的大型商业应用系统建立的模型。虽然Dromey认识到软件质量模型需要通过质量相关属性和软件产品组件来构造,但应用这种方法仅仅能够建立统一的质量模型。应用领域的特殊性、软件设计和实现的特殊性依然没有被考虑进来,并且这种方法只能应用于软件开发完成之后。因此,对软件开发本身并不能提供太多的帮助。在文献[2]中,朱鸿博士提出了一种基于软件的体系结构设计来系统地获得质量模型的方法。该方法以软件体系结构设计为研究对象,构造软件系统的质量模型,据此分析软件产品及软件开发过程中后续阶段(如开发与运行过程)可能存在的质量隐患,并提供相应的指导意见。该方法可以使得软件开发者尽早地发现质量问题,从而更好地指导软件的设计与维护,提高软件和信息系统的质量,加速软件开发进程。并且,由于同一领域的诸多应用往往采用相似的体系结构,这样就使得质量模型可以获得充分的重用。另外,该方法生成的质量模型采取有向图的形式来表达,图中包括系统的组件信息、组件之间的连接以及组件之间存在连接的原因。这比现有的一些质量模型和质量建模方法能够提供一些更为内在和具体的信息。因此,它能够对我们的软件开发活动提供更大的帮助。不过,在该方法中如何有效地确定系统的组件,更好地分析出组件发生错误的原因以及错误现象之间的联系还需要进一步的研究。
4 结束语
本文首先介绍了软件质量及软件度量的概念及其研究现状,阐述了软件质量在软件开发中的重要性,讨论了软件质量的基本特点。然后,针对软件质量模型的两大研究方向分别举例介绍了一些软件质量模型和软件质量建模方法,指出了各自的一些优势和弱点,并对其发展提出了一些展望。我们认为,一方面软件质量自身的特殊性使得人们对软件质量的研究变得相对复杂,因此需要一些正确的方*来对研究工作加以引导;另一方面,丰富的经验对于软件开发的各项活动又是必不可少的。如果能将针对软件质量研究的各种方*与各种经验性的成果合理并有效地结合起来,将对软件质量模型的研究带来很大的帮助。
参考文献:
[1] B Kitchenham, S L Pfleeger. Software Quality: The Elusive Target[J]. IEEE Software, 1996, 13(1):12-21.
[2] Hong Zhu, Yanlong Zhang, Qingning Huo, et al. Applica- tion of Hazard Analysis to Software Quality Modelling[A]. Proc of IEEE COMPSAC’02[C].2002.139-144.
[3] R G Dromey. A Model for Software Proct Quality[J]. IEEE Trans on Software Engineering, 1995,21(2):146-162.
[4] R G Dromey. Cornering the Chimera[J]. IEEE Software, 1996, 13(1):33-43.
[5] ISO 9126, Information Technology--Software Proct Eval-uation--Quality Characteristics and Guidelines for Their Use[S]. International Organisation for Standardization, 1992.
[6] J McCall, P Richards, G Walters. Factors in Software Quali- ty.Vol 1[R]. Technical Report CDRL A003, US Rome Air Development Centre, 1977.
[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.
[8] W E Perry. Quality Assurance for Information Systems : Methods, Tools and Techniques[M]. New York: John Wi-ley & Sons, 1991.
[9] A Gillies. Modelling Software Quality in The Commercial Envi-ronment[J]. Software Quality Journal, 1992,1: 175-191.
[10] J Bansiya, C G Davis. A Hierarchical Model for Object-Ori-ented Design Quality Assessment[J]. IEEE Trans on Soft-ware Engineering, 2002, 28(1):4-17.
[11] A Gillies. Software Quality: Theory and Management. 2nd Edition [ M]. International Thomson Computer Press,1997.
[12] T Kletz. Computer control and Human Error, Rugby: In-stitute of Chemical Engineers[M].
[13] N G Leveson. Safeware: System Safety and Comuters[M].Reading, MAL: Addison-Wesley,1995.
[14] P G Neumann. Computer-Related Risks[M]. New York: ACM Press,1995.
[15] Len Bass,Paul Clements,Rick Kazman. Software architec-ture in Practice[M]. Pearson Ecation.