石 莉,黄 克,李 敏
(淮北师范大学 计算机科学与技术学院,安徽 淮北 235000)
现代信息社会对计算机系统的依赖,很大程度上体现为对软件的依赖[1].软件几乎无所不在.但是,软件质量不能令人满意,不能做到总是让人信任.因此,如何评估软件的可信性是软件研究领域密切关注和积极从事的重要课题.最近几年中,研究人员对软件可信性重要性的认识已经超越其传统的应用领域(电信、运输、航天航空等),逐渐在其它领域也开始关注软件可信性,例如经济领域(商业、金融、能源等),使得软件可信性的评估成为世界范围之内信息产业最急需解决的问题之一.
国外有很多科学学术团体致力于对软件可信性的研究,其中包括:
(1)美国国家科学基金会[2](National Science Foundation,简称为NSF).NSF有一个专门的可信计算计划(Trusted Computing Project,NSF01-160),他们认为一个可信的信息系统应包括:可靠安全性、私密性、保密安全性、可靠性.
(2)德国达姆施塔特大学.德国达姆施塔特大学的计算机科学和工程系的数据库和分布式系统组中有一项“可信计划”(Trusted project)[3].他们认为,可信性是比任何其它特征都具有综合性的一个性质,因为可信系统必须具有下述属性:端到端的安全、可用性、可靠性、实效性、一致性、可预测性、可扩展性.
(3)其他还有1979 年9 月成立于伦敦的WG 10.4;IEEE CS TC-FTC;IEEE Pacific Symposium on De⁃pendable Computing;the European Dependable Computing Conference;the IEEE Latin American Depend⁃able Computing Symposium等.
国内对软件可信性的研究,比较有成效的是陈火旺等[4]对软件可信的研究.他们认为,软件系统的可信性质是指该系统需要满足的关键性质;软件一旦违背这些关键性质,会造成不可容忍的损失时,称这些关键性质为高可信性质.软件可信性质常常有以下几种:可靠性、保密安全性、可靠安全性、生存性、容错性、实时性.高可信软件系统中会涉及上述性质的一个或多个.
软件可信性方面的学术探讨涉及软硬件系统结构、设计、开发、维护、运行、工程管理、可信性建模、可信性测量的各个方面.也就是说软件可信性从其被科学学术团体认识和接受以来就成为软件质量研究方面最有生命力的一个科研分科.在软件可信性建模的过程中,能否构建一个具有普遍适用性的软件可信性评估系统,对后续研究工作具有重要意义.
本文从软件质量模型出发,对软件可信性评估从以下几方面进行阐述:首先,基于ISO/IEO 9126标准建立软件可信性的指标体系和量化体系.其次,从如何开展软件可信性评估工作的角度,描述软件可信性的评估过程.最后,在此基础上构造包括指标模型层、评估过程和信息层3部分的软件可信性评估系统.这些工作是进一步研究软件可信性度量方法和构建可信性测评体系的关键.
Rawashdeh 等将众多软件质量模型分为两大类[5]:一类是等级模型.目前比较有知名度的包括:(1)McCall在1976年提出的软件质量划分模型;(2)BarryBoehm在1978年提出的软件品质模型;(3)FURPS模型;(4)1991年国际标准组织提出的ISO9126软件质量模型;(5)1996年Dromey提出的质量属性模型.另外一类是非等级模型.主要包括Jeffrey提出的三角形模型[6]和Nagib等提出的立方体模型[7].由于非等级软件质量模型的一级属性下面没有子属性,这样就无法对软件的可信性进行进一步评估,因此他们选择软件质量等级模型作为出发点进行研究.在对5个软件质量等级模型进行分析比较后,Rawashdeh 等给出了表1[5]:
表1 5种模型中的软件质量属性
根据表1可以看出[5]:有的模型包含的一级属性多,有的包含的一级属性少.更重要的是,通过比较各个软件质量模型的一级质量属性,可以得出共有6个属性,即:有效性、可靠性、可维护性、可移植性、易用性和功能性.通过比较可以得出6个共有软件质量的一级属性恰恰与ISO9126模型中的6个属性一致,因此,选择ISO9126模型[8]作为建立新模型的理论基础.ISO9126模型的6个重要属性及其子属性如表2所示[9].
表2 ISO 9126模型中的软件质量属性
考虑到软件的安全性在某些特殊领域,如:国防、航空、医疗、金融等领域有着举足轻重的作用,因此,将功能性中的子属性——安全性放到新组成的软件质量模型中的一级属性之列.软件安全性是软件在受到恶意攻击时仍提供所需功能的能力[10],ISO/IEO 9126 质量模型中的安全性是指保密安全性,定义为与防止对程序和数据进行非法存取的预防能力有关的质量属性[11],即软件系统对数据和信息提供保密性、完整性、可用性、真实性保障的能力[4].传统上国内学者较多关注的是软件可靠安全性,即软件运行不引起危险、灾难的能力[4].结合国内外对安全性的研究,本文将保密安全性和可靠安全性作为安全性的2个子属性.调整后的新软件质量模型属性由6个增加到7个.
软件可信性是由软件质量一级属性体现出来的综合特性,是一种能够比较客观地反映软件质量的软件特性.基于调整后的新软件质量模型可得到软件可信性指标体系,如图1所示.
图1 软件可信性指标体系
其中,软件可信指标体系中的一级指标和子指标分别来自软件质量模型中的一级属性和其子属性.指标体系描述软件可信性指标的自下而上的从属关系,要获得软件可信性的评价结果必须确定指标体系自下而上的量化关系.
图1中将指标分为两个层次:第一层由软件可信性的7个一级指标组成,包括可靠性、功能性、可用性、有效性、可维护性、安全性、可移植性;第二层由软件可信性的子指标构成.由于这两层指标比较抽象,无法对其进行直接测量,因此,必须根据软件用户的需求制定一定数量的量化指标,即选择一组度量元代表软件可信子指标的主要方面,这些可测量的度量元构成了软件可信性的度量层;度量元包含一定的数据采集点,即要得到量化的数据,必须在相应的采集点进行数据采集.图2所示为软件可信性的指标量化结构层次图.
图2 软件可信性的指标量化体系结构
分析软件可信性指标体系各层之间的关系后发现,可以用集合来描述软件可信性的各层之间的关系,达到量化软件可信性指标的目的.在这个结构中,7个一级指标中的某一指标Bj下属的某一子指标Cjs的n个度量元构成的度量元集合为:
其中,D为度量元集合,Di为第i个度量元.假设一级指标集合B={Bj|j=1,…,7},和Bj对应的子指标集合Cj={Cjs|s=1,…,m} ;数据采集点集合定义为E={Et|t=1,…,k},数据采集项集合定义为X={xt|t=1,…,k},计算度量元Di值的函数为f({xt|t=1,…,k});Xt表示采集点{Et|t=1,…,k}对应的数据项;度量元Di所处级别Li对应的测试技术Ti和测试的输入Pi,它们之间的对应关系为R={(Li,Ti,Pi)};Q为包含指标裁减准则的约束条件.
假设将软件可信性指标集合定义为A={Bj×Cjs},则度量元Di可定义为:
根据(2)式对度量元的定义知,度量元的参数包括:数据采集点及数据项、度量元的计算公式、度量元所属一级指标和子指标、测试技术、测试输入和指标裁减准则.其中,数据项{xt|t=1,…,k}和数据采集点{Et|t=1,…,k}表示要得到数据项xt的值,必须要在相应的采集点Et采集相应的数据项;度量元的计算公式f(x)表示度量元和数据项之间的函数关系式;度量元的测试技术Ti和测试输入Pi表示要得到该度量元的数据项所需要的测试技术和测试输入,而测试技术和测试输入决定了度量元的评价级别,即R={Li,Ti,Pi)},Li是度量元所处评价等级,Li∈{A,B,C,D},不同的评价等级对应不同的测试技术和方法;约束条件Q表示在对某一一级指标/子指标进行评估时,该度量元能否被裁减的约束.
指标量化体系将软件可信性的一级指标、子指标分解为度量元集合和数据项进行描述,在已经采集数据项的前提下,通过度量元函数得到度量值.这样,对于软件可信性实现从定性到定量的描述.
软件可信性的指标量化体系具有开放性,即允许用户按照软件指标的具体要求,对度量元进行修改和自定义.各数据采集点对度量元的影响、各度量元对可信子指标的影响、各可信子指标对可信一级指标的影响、各一级指标对软件可信性的影响是不同的,可采用权值来表示影响度,相对重要的,权值高,反之,权值低.权值由专家根据用户要求打分来定.
若想进一步研究软件可信性的评估工作,需要先思考如何开展软件可信性的评估工作.由此,笔者初步建立一个评估过程[11-12],用以解决评估的工作流程问题.其步骤如下:
步骤1:确定用户指标集.软件可信性评估从确定可信目标开始.用户首先要提出他评价软件的目的和评价所要覆盖的指标范围;评估者在分析用户需求和系统性质的基础上,对指标进行减裁,即从指标模型中选取符合被评软件产品要求的有价值的可信指标组成用户指标集.例如,金融系统对安全性、可靠性要求最高,而实时系统对有效性中的效率特性要求最高.根据用户要求和系统性质确定用户指标集,用以指导软件可信性的评估工作,将有助于降低软件可信性评估工作的成本、缩短评估周期.
步骤2:规定可信评价准则.评价者根据用户指标集选择度量元,并且为每个度量元、子指标、一级指标以及整个软件建立评分等级,确定评价准则.表3为某个指标的4个等级取值范围及所属可信等级.假设X1,X2,X3,X4分别为4个计算所得数据:
表3 某指标的可信评价准则
步骤3:确定权重系数.采用专家经验法等确定度量元、子指标及一级指标的权重系数.
步骤4:确定并执行数据采集计划.数据采集点和度量元中间存在某种函数关系,要想得到度量值,必须先采集软件测试过程中的数据.采集计划主要是确定在软件生存周期中的各个阶段进行何种测试,采集哪些数据;评估者根据采集的数据,计算出某一度量元的度量值,并与可信评价准则进行比对,得出该度量元的评估结果.采用此种方法可逐一得到所有度量元的度量值.
步骤5:综合评估.得到度量元的度量值后,采取以下步骤进行综合:
首先,根据专家确定的权重系数,对度量指标集中某个子指标所含的度量元进行加权计算,算出这一子指标的指标值.采用同样的方法可以计算出被评软件的各个子指标的指标值.
其次,对某个一级指标所含的子指标进行加权计算,得到该一级指标的指标值.如果是对软件的一级指标进行评估,这时可将各一级指标的指标值与步骤2确定的可信评价准则进行比对,得出被评软件各一级指标可信度的评估结果;如果是对软件的整体可信性进行评估,则将各一级指标进行加权计算,得到软件的可信值.
最后,将该数值与可信评价标准进行比对,给出被评软件可信性的评估结果.
在软件可信性指标体系、指标量化体系以及评估过程的基础上,可以得到软件可信性评估系统的构架,如图3所示.
图3 软件可信性评估系统
其中指标体系和指标量化体系构成指标模型层,是整个系统的基础,为软件可信性的评估提供详细指标和计算方法;评估过程主要完成数据采集任务和计算评估结果的任务;评估过程产生的结果保存在信息层,这些信息构成一条软件评估的“可信信息链”.这条信息链不仅提供被评软件的一系列有关可信性的评价结果,而且对提高软件的可信度具有重要参考价值.例如:若一个软件产品的一级指标“可维护性” 的评价结果为“不可信”[13],按照用户指标集找到“可维护性”的子指标“可测性”的评价结果为“不可信”,其他子指标的评价结果为“中等可信”或“高可信”,这样就要分析子指标“可测性”的度量元.按照用户指标集找到“可测性”的度量元有测试程度和工作量,检查它们的评价结果知,“测试程度”的度量值为“不可信”,而“工作量”的度量值为高可信,再进一步分析度量元“测试程度”的数据层.从用户指标集中找到“测试程度”的数据采集点,包括语句覆盖率、分支覆盖率和测试计划完整性,检查每个数据的评价结果,其中“测试计划完整性”的评价结果为“不可信”,其他的评价结果为可信,这样就找到了问题所在.找到解决“测试问题计划完整性”问题的方法,就可以提高“可维护性”的可信性,从而提高整个软件产品的可信性.
文章基于软件质量等级模型的研究成果,得出包含7个质量属性的新的软件质量模型,所研究的软件可信性就是这7个质量属性表现出来的综合特性.对于软件的可信性,分别从认知软件可信性的角度、量化可信性指标的角度以及如何评估软件可信性的角度对软件可信性进行了阐述.在此基础上,构造了包括指标模型层、评估过程和信息层3部分的软件可信性评估系统.这些工作为进一步研究软件可信性综合度量方法和构建软件可信性测评体系具有重要意义.
但是,为实现对软件可信性的量化评估、得到软件可信性的最终评价结果,必须针对指标量化体系做进一步的细化研究工作,如:推导度量模型各层的自下而上的具体函数关系,确定度量模型每一层元素的权重系数,为每一个度量元、子指标和一级指标制定详细的评价准则,对软件可信性的指标量化体系分别进行单个指标的定量讨论和指标综合过程的定量和定性讨论,最终构建软件可信性的度量系统.在今后的工作中,有必要从上述几方面作进一步探索和研究.
[1]国家自然科学基金委员会.国家自然科学基金重大研究计划实施规划书[Z].2008.
[2]NSF program announcement/Solicitation:Trusted computing[EB/OL].www.nsf.gov/pubs/2001/nsf01160/nsf01160.ht⁃ml#TOC,Dec,2001.
[3]Department of computer science of the technical university darmstadt.Trusted systems[EB/OL].www.dvsl.informatik.tudarmstadt.de/DVSI/research/index.html.
[4]陈火旺,王戟,董威.高可信软件工程技术[J].电子学报,2003,31(12):1934-1938.
[5]RAWASHDEH A,MATALKAH B.A new software quality model for evaluating COTS components[J].Journal of Comput⁃er Science,2006,2(4):373-381.
[6]JEFFREY V.Certification:Reducing the hidden costs of poor quality.reliable software technologies[J].IEEE Software,1999,16(4):22-25.
[7]NAGIB C B,CALLAOS D.Designing with a systemic total quality[J].Educational Technology,1994,34:29-36.
[8]中华人民共和国国家标准.Software engineering-software product quality(Part 1):quality model:ISO/IEC 9126-1[S].Beijing,2001.
[9]万江平.软件工程[M].北京:清华大学出版社,2006.
[10]施寅生,邓世伟,谷天阳.软件安全性测试方法研究[J].微计算机信息,2008,24:1-3.
[11]中华人民共和国国家标准.Information technology-software product evaluation(Part-1):general overview:ISO/IEC 14598-1[S].Beijing,1999.
[12]中华人民共和国国家标准.Information technology-software product evaluation(Part-5):process for evaluation:ISO/IEC 14598-5[S].Beijing,1999.
[13]MORMAN E F,SHARI L P.Software metrics:a rigorous and practical approach[M].杨海燕,赵巍,张力,等译,北京:机械工业出版社,2004.