论文部分内容阅读
随着软件规模越来越大,故障和漏洞在所难免,再加之软件开发和运行环境从封闭、静态环境到开放、动态环境转变所导致的很多不确定因素的存在,软件很多时候不以人们期望的方式工作,经常发生失效,直接或者间接给用户带来损失,致使人们越来越重视软件的可信性。所谓的软件可信性是指软件的行为和结果符合用户预期,并在受到干扰时仍能提供连续服务的能力。软件的行为及其产生的结果通常可以通过定义一组适当的软件属性来刻画,而软件在受干扰时仍能提供连续服务的能力也可以通过定义一组软件属性来描述,从而软件可信性可通过一组软件属性以及用户在这组软件属性上的预期共同来表示。软件可信性度量是软件可信性的量化表示,是软件可信基础研究的核心问题之一,这样软件可信性度量的问题就转化为描述软件可信性的属性选取和度量、用户预期的表达和依据对被选择属性的度量值和用户预期对两者符合性的量化问题。在本论文中主要围绕这三个问题利用静态分析技术和形式化方法中的函数方法从源代码的角度对软件可信性进行度量。主要贡献如下:(1)建立了影响软件可信性的属性模型,该模型由关键属性和非关键属性两部分组成。关键属性包括功能性、可维护性、可靠性、可生存性和可控性,它们是从与可信相关的定义中所涉及的属性中抽取得到,非关键属性是由用户根据需要选取。将程序表示为程序元素和程序单元的集合,并为每一种程序元素和程序单元构造了一个清单,该清单不但包含在程序是可信的情况下程序元素以及程序单元应该具有的性质和功能,而且还包含这些性质和功能与它们所影响到的属性之问的对应关系。我们依据这些清单,综合运用程序切片分析等多种静态分析技术从源代码角度构造了软件功能性、可维护性、可靠性、可生存性和可控性的度量模型,与此同时,同样依据这些清单从集合论角度建立了影响软件可信性的关键属性间的定量关系模型。(2)给出了一种用户预期的表示方式,由属性集、属性权重集、阈值和属性间的补偿机制四部分组成。属性集与影响软件可信性的属性模型相对应;属性权重集表示对用户而言各属性的重要性;阈值是用户根据需要自己所确定,如果属性集中任一属性的属性值低于该阈值,就认为该软件不可信;属性间的补偿机制通过属性间的替代性来刻画,由三个级别构成,第一级别只要求属性间可以发生替代即可,第二级别不但要求属性间可以发生替代,而且还要求关键属性与非关键间的替代性要难于关键属性内部以及非关键属性内部的替代性,同时还要求可以调整关键属性与非关键属性之间的替代性;第三级别不但要求属性间可以发生替代,而且还要求可以调整属性间的替代性。(3)给出了基于分层与权重的软件可信性度量模型的四个构造准则:单调性、凝聚性、灵敏性以及替代性,并根据这四个准则提出了五个软件可信性度量模型。第一个度量模型针对用户预期中补偿机制的第一级别建立;第二模型是对第一个模型从替代性角度进行的改进,但其并不完全满足上述的四个准则;第三个度量模型针对用户预期中补偿机制的第二级别建立;第四个和第五个度量模型针对用户预期中补偿机制的第三级别建立。对于一个给定的用户预期,如果用户在补偿机制中选择的是第一级别,则可以选择第一个模型来对软件可信性进行度量;如果选择了第二级别,则可以选择第三个模型来对软件可信性进行度量;如果选择了第三级别,则可以选择第四个或者五个模型来对软件可信性进行度量。(4)给出了一种基于层次分析排序方法用来求各属性权重的组合方法,并给出了该组合方法和我们提出的可信度量模型的编程实现。