关键词:
软件质量
软件安全性
形式化方法
模型检测
摘要:
现代社会以软件作为基础,软件的好坏由软件质量来衡量,软件质量的高低决定了软件的抗风险能力,高质量的软件能够避免国家、企业、用户产生巨大的损失。软件质量评估是对软件质量进行客观评价和量化的过程,用于确定软件是否满足预期的质量标准和用户需求,它通过一系列技术和方法对软件进行度量,以便于开发人员和管理者在软件开发的不同阶段进行控制。目前针对软件质量评估主要有两种方法:一种是基于用户、社区角度的质量评估,还有一种是针对软件源码的质量评估。
基于用户与社区的评估主要以用户视角进行评估,将软件是否满足用户需求、提升用户的体验作为主要的评估内容,此视角缺乏对软件设计、编写层面的考虑。而软件是开发人员设计、编写的代码,若其中存在设计和逻辑问题,将直接被不法分子利用,造成严重的损失,所以代码的好坏将直接影响软件的质量。同时,现有基于软件源码的质量评估方法对安全性的考虑较少,而随着软件的深入使用,软件的安全性逐渐成为判定软件好坏的重要因素之一,直接影响软件的可靠性和企业、国家的利益。
本文针对软件质量评估中的这种缺陷,重点聚焦基于软件源代码的质量评估方法,通过梳理现有的软件质量评估指标体系的基础上,加入必要的安全性评估指标,形成一种相对全面的软件质量评估指标体系和具体的评估方法,以此支撑现代软件对安全性的需求。论文主要工作如下:
(1)分析了软件质量与安全性评估背景和研究意义,并且详细阐述了国内外对软件质量与安全性评估的研究现状。
(2)本文对软件质量评估与形式化方法的发展历程进行了简要说明,并对软件质量模型、软件质量评估方法、常用形式化方法详细说明,介绍了目前常用的模型检测技术,将其作为安全性评估的一个方面,同时将软件漏洞检测技术、静态分析技术加入安全性评估中。
(3)本文总结了目前所有面向对象的指标,加入安全性评估指标,以此构建涵盖安全性的软件质量评价指标体系。采用层次分析法对指标进行权重分配,采用数据标准化的方法解决数据不一致性问题,最后建立软件质量评估标度,以此直观地评估软件质量的好坏。
(4)本文设计了一个基于软件源码的形式化模型转化算法。运用Understand工具分析出的函数之间调用关系,获取函数调用关系图,并在此基础上对整个函数调用关系图剪枝,构建软件的形式化模型,并利用TLA+形式化工具对此形式化模型进行建模,同时分析整个软件所需满足的两个安全属性,通过工具进行自动分析,最后得到安全性的两个指标——数据不变性、活性。最后通过实验分析CVS、Perl、FreeBSD三个软件,并与SQO-OSS方案进行比对分析,验证方案的可行性。