摘要:大数据的应用为各行各业的数据分析工作带来了巨大的便利。大型软件工程无论是在技术还是管理方面都涉及到大量的数据,但如何有效管理并充分利用这些数据是当前的难点之一。本文着重从软件漏洞扫描、执行记录分析、开源软件挖掘、版本信息管理等方面介绍了据挖掘技术在软件工程中的应用,可以为软件行业提供参考。
关键词:数据挖掘;软件工程;大数据技术
数据挖掘是大数据分析领域中的一个新的数据处理理念,它的核心思想是通过对数量巨大、但价值密度低的数据进行分析处理,从而提取出一些对所研究的问题有价值的信息。随着软件工程的发展,在软件开发和项目管理过程中也逐渐出现了海量数据分析的难题,例如源代码管理、版本管理、漏洞分析、系统操作记录。软件长期运行所积累下来的数据,由于数据量过大,传统的数据处理技术显然是不可能完成的。为此,研究数据挖掘技术在软件工程中的应用具有重要意义。
一、软件工程数据挖掘技术的发展
数据挖掘技术最早诞生于20世纪80年代,当时是为了挖掘数据库中的知识价值而提出的,并且主要集中在理论研究。随着大数据问题的日益突出,数据挖掘技术开始受到人们的广泛关注,研究的焦点也开始由理论转向实践,在各领域中得到了广泛的应用。而软件工程的概念则是大约产生于20世纪60年代末,当时则是为了解决“软件危机”而提出的。可见,数据挖掘技术与软件工程在发展上大致保持同步,这为数据挖掘技术在软件工程中的应用奠定了良好的基础。进入21世纪以来,软件工程的发展更加迅速,在短短十几年内就实现了许多国家和地区的信息化改造,使软件工程进入一个全新的发展阶段。软件工程的大发展使得系统中的数据越来越多,处理难度日益增加,而此时的大数据技术已有一定的理论基础,采用数据挖掘技术解决软件工程中遇到的难题,成为一种必然的选择。
二、数据挖掘在软件工程中的应用
(一)软件漏洞扫描漏洞检测是软件工程的重要内容,是发现安全隐患、提高软件质量、保障系统安全的有效措施。在传统的漏洞检测技术中,由于需要扫描的数据量过大,如果逐条依次分析,将导致长时间的等待,可操作性不强。在漏洞扫描中引入数据挖掘技术,可以有效提高扫描效率。典型的基于数据挖掘的软件漏洞扫描应用步骤如下:第一,创建测试项目。根据用户的具体需求制定软件测试方案,明确需要扫描哪些类型的漏洞,采用什么方案进行扫描。第二,收集漏洞信息。扫描漏洞的前提是要认识漏洞,也就是对漏洞进行定义。需要收集有关软件缺陷的大量信息,并对一些属性进行定量化处理。第三,选择理论模型。根据扫描要求,选取适当的数据挖掘模型,根据前期收集的数据资料,对模型进行充分的训练,得到有效的训练集与测试集,取得最佳扫描策略。第四,开展漏洞扫描。采用前一步得到的模型,将其应用于软件扫描测试过程,经过数据的分类和特征分析,提取漏洞信息。第五,根据扫描结果,修复漏洞,并重新扫描以确认漏洞的成功修复。
(二)执行记录分析分析程序的执行路径对于代码关联性分析具有重要意义,对软件的执行记录进行数据挖掘,有助于深入理解代码功能以及软件的维护。执行记录的数据挖掘在本质上看就是对其执行路径进行跟踪,然后逆向建立模型。其数据挖掘的过程一般包含插装、跟踪、记录、分析等步骤。首先在待测试的软件代码中插装相应的信息,并执行软件,将其执行过程记录下来,经预处理后,采用分类、类聚、关联等大数据分析手段提取出关键记录信息,从而绘出系统功能模型或架构。
(三)开源软件挖掘复制代码是开源软件数据挖掘分析技术中最常见的应用领域,在软件工程中,代码复用是十分常见的,根据笔者经验,至少有一半的通用源代码都会在多个项目中反复使用。这意味着采用代码克隆检测技术可以有效完成对软件内部代码之间,以及不同软件之间的代码进行检测,快速提取出具有利用价值的代码段。通过对代码特征的分析,可以避免代码克隆过程中引入漏洞,还可以更好地为软件的后期维护或升级提升参考。
(四)版本信息管理代码管理是软件工程中涉及的重要问题,几乎所有软件企业都会采用版本控制系统对软件或代码版本进行维护,以确保团队成员之间可以获取全局一致的代码。但在大型软件开发团队中,代码管理是一件十分复杂的事,任何一次更新都会引入代码管理混乱的风险。数据挖掘技术可以对软件的变更历史信息进行挖掘,通过大量代码的对比分析确立各模块和版本之间内部联系,在保证代码高效融合的过程中,也有效地避免了漏洞的引入。
三、小结
随着软件产业的不断壮大,软件工程只有不断引入新的管理和技术工具才能适应快速发展的需求,作为一种可实现快速精确测量的数据分析技术,数据挖掘成为了软件工程不断向前发展的重要支撑。与此同时,数据挖掘技术也在不断地发展进步,各种新的数据挖掘理论不断涌现,使大数据的处理变得日益方便快捷。不难发现,在未来的软件工程中,各类大数据分析技术将与软件开发和管理过程更加紧密地融合在一起,为软件项目的评估、开发过程管理、系统测试及维护等工作提供重要的决策依据。
参考文献
[1]唐海燕,兰兵.数据挖掘技术在软件工程中的应用[J].电子技术与软件工程,2019
(2
3):141-142.
[2]乔磊.软件工程数据挖掘的发展趋势[J].电子技术与软件工程,2019
(7):172.
[3]赵亮,梁胜彬,冯天伟.面向数据的软件工程方法研究[J].信息系统工程,2018
(10):28.