APP下载

基于源代码语义分析结果的软件建模分析和质量评估

2019-09-10张亚旭

科学导报·科学工程与电力 2019年31期
关键词:软件工程

张亚旭

【摘 要】软件建模是现代化的产物,是伴随电脑的发明、软件的应用而生发的一种设计术语。随着软件工程理论研究的深入和软件技术的不断发展,软件分析建模也日益完善。尽管不同的软件分析建模平台的建模工作存在差异,但大体可以把软件分析建模分成三类,即业务建模、数据建模和应用程序建模。本文软件建模分析是基于源代码语义分析结果。源代码是相对目标代码和可执行代码而言的,是用汇编语言和高级语言写出来的地代码;目标代码是指源代码经过编译程序产生的能被CPU直接识别二进制代码;可执行代码就是将目标代码连接后形成的可执行文件,当然也是二进制的。

【关键词】软件工程;目标代码;执行代码;CPU

1 研究背景与意义

软件产业作为拉动信息时代发展的动力引擎,是经济社会发展的基础性、战略性和先导性产业,在推动信息化和产业化融合、促进产业结构调整和维护国家安全等方面发挥着重要作用。

语义分析是编译过程的一个逻辑阶段,语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,即进行类型审查。语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息。软件质量评估技术是软件工程中非常重要的研究领域,由于软件本身的复杂性和软件技术发展迅速等原因,软件质量评估技术在理论上和技术上都很不成熟。若能对软件进行质量更科学、更客观的评估,便可促使得到更加可靠、高效的软件。

伴随着软件产业的高速发展,软件仓库中源代码的数量和复杂性也随之迅速增长,致使源代码质量面临着重大挑战,其中所隐藏的问题也日益凸显。在开发过程中,虽然可以通过代码检测技术诊断出许多代码问题,但是随着技术的进步及对软件质量要求的提高,软件质量管理不仅要求要检测出代码问题,而且要求综合评估出软件的综合质量。

近几年,随着主题模型在软件工程领域的应用的快速发展,以及软件源代码具有自然语言的部分特征的关键性质,诸多学者开始使用主题模型在代码语义特征方面进行大量开创性工作,如源代码中的语义定位和捕捉源代码中潜在主题和类之间的关系等。通过主题模型技术计算得到度量元在质量特征中的条件概率分布以及质量特征在代码源文件中的条件概率分布,并基于计算得到的条件概率分布建立代码质量评估模型,以克服现有质量模型存在映射关系由专家知识得到的局限性,也即通过主题模型客观地刻画代码质量与度量元之间复杂的映射关系。

2 国内外研究现状

软件的行为是指软件运行表现形态和状态演变的过程,因此很多学者在软件正常运行时收集运行过程信息建立行为模型,然后根据待测行为与模型的偏离程度检测异常。

随着可信计算的发展,软件行为可信性模型被很多学者深入研究,软件行为建模又迎来了新的发展。新的建模方法向着多元分析的方向发展,所采集的行为信息不再局限于系统调用、参数及上下文。诸如引入行为轨迹、检查点场景、时间戳和主观逻辑拓展等概念,综合分析软件行为。同时,基于行为语义的建模分析也成为当前研究的热点。付成功的从系统调用参数中解析出系统对象,赋予了状态语义的含义。由于语义本身有其内在的逻辑,且更贴近用户的实际操作,可以发现较为隐蔽的应用层攻击,所以语义分析逐渐成为当前软件行为和网络行为研究者关注的热点。

3 主题建模在软件源代码中的应用

建模方法根据建模时获取行为信息方式的不同可以分为:

(1)动态建模:利用动态训练的方法来建立软件行为模型。大量运行软件并记录执行情况下的行为信息,构建软件行为模型

(2)静态建模:静态模型直接对程序的源代码或二进制代码进行分析,提取出相关行为信息,建立相应的行为模型,不需要运行软件。

(3)混合建模:混合模型是以静态为主,动态为辅的建模方式,首先通过静态分析的方法建立行为模型,然后利用动态分析方法对已建立的模型进行辅助修正。

主题模型是一种可以从文本预料库中自动发现主题结构的算法。主题模型最早是由自然语言处理和信息检索领域提出,作为自动检索、查询、聚类和结构化大型非結构化语料库和非标记文档的一种手段。主题模型使得人们可以以相对于原来更低维的方式表示文档,这样做可以发现潜在语义关系,更快速的分析文本。在主题模型中有三个重要的概念,即文档、主题和单词,其中主题表现为一系列相关单词的组合。在主题模型发展过程中,有三个最为经典的模型,分别为潜在语义分析(Latent Semantic Analysis,LSA)模型、概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA)模型和潜在狄利克雷分布(Latent Dirichlet Allocation,LDA)模型,它们在提出之后被广泛应用。

潜在语义分析模型作为最早被提出的主题模型,其是在向量空间模型的基础上发展而来,在一定程度上克服了向量空间模型未考虑文档的深层次语义特征的缺点,较空间向量模型而言,潜在语义分析模型较好的处理了同义词的情况。潜在语义分析模型的核心是利用了线性代数中的奇异值分解方法(Singular ValueDecomposition,SVD)将高维的文档单词矩阵(Ducument-Term矩阵)映射到低维向量空间中,即潜在语义空间。在映射过程中,语义相关的单词就会被聚集在同个主题中,即表示同一个主题中的单词与单词之间存在潜在语义关系,之后便可以使用这些语义结构来表示文档。

4 软件质量评估

纵观以往的软件质量模型,大部分模型的建模过程分为两步:首先将软件质量进行分解,分解可直接进行度量的软件度量元;其次利用根据专家知识得到的映射权重向上聚集计算得到软件质量。仔细分析建模步骤可发现,大多模型的映射关系刻画存在较大主观性,从而可能导致映射权重的不确定性和映射关系刻画不完全等问题。软件质量是指软件产品满足客户或用户的需求或预期的程度,更进一步说是软件产品满足人们需求所规定和隐含的各种特征或特性的总和。早在上个世纪70年代中后期,Boehm和 Mccabe分别提出的 Boehm模型和 McCall模型成为软件质量研究领域最早的质量模型,同时也为之后的软件质量模型研究奠定了基础。国内关于软件质量的研究开始相对较晚,且主要集中于软件可信方面。软件可信性是软件质量的一种特殊表现形式,它更关注的是使用层面的综合化的质量属性及其保障。虽然国内目前提出可信软件评估模型也是使用“层次”法建立评估体系,并且能有效的应用于实际项目,但对于克服评估体系中的映射关系的复杂性与不确定性却鲜有人涉及。

参考文献:

[1]申梦圆.基于语义模式的源代码跨过程分析研究与实现[D].西安电子科技大学,2018.

[2]顾逸圣,曾国荪.基于语法和语义结合的源代码精确搜索方法[J].计算机应用,2017,37(10):2958-2963.

[3]傅颖.基于主题建模的软件可维护性评估模型研究[D].重庆大学,2016.

[4]方文渊.面向对象类源代码的编程逻辑建模与应用[D].战略支援部队信息工程大学,2018.

[5]罗杨洋.源代码结构质量评估子系统的研究与实现[D].重庆大学,2014.

[6]余海,李斌,王培霞,贾荻,王永吉.基于组合分类算法的源代码注释质量评估方法[J].计算机应用,2016,36(12):3448-3453+3467.

(作者单位:博智安全科技股份有限公司)

猜你喜欢

软件工程
基于课程群的软件工程专业三位一体教学模式探索
依托工作室的软件工程实践教学研究
高职软件工程课程改革研究
软件工程应用型课程建设与实践
应用瀑布模型的MOOC制作方法
融合APTECH体系的软件产业人才培养探究
基于工程教育认证的《软件工程》课程教学质量建设研究 
关于如何创新和完善计算机软件工程管理的探讨