摘要:近年来,随着数字经济建设过程中对算力、想象力、通信力、管理力的融合,推动了软件工程高质量发展,设计者应在这种背景下持续推进对数据挖掘技术的应用。该文以此为出发点概述了数据挖掘技术的定义、运行流程及应用范围,并在剖析软件工程应用数据挖掘技术必要性的基础上,分别从代码检索、程序规约、软件版本控制信息、系统漏洞检测四个方面,对其实施路径进行了具体探讨。
关键词:软件工程;数据挖掘技术;必要性;实施路径
doi:10.3969/J.ISSN.1672-7274.2024.07.036
中图分类号:TP 311.13 文献标志码:A 文章编码:1672-7274(2024)07-0-04
The Necessity and Implementation Path of Data Mining Technology in Software Engineering Application
ZHANG Yixin
(Heilongjiang University of Commerce, Harbin 150399, China)
Abstract: In recent years, with the integration of computing power, imagination, communication power, and management power in the construction of the digital economy, high-quality development of software engineering has been promoted. Designers should continue to promote the application of data mining technology in thi46250f981f702ff90e4e2369acf01b0e66b694cf9b2b90f5bcf04980e1170a1bs context. This article takes this as a starting point to outline the definition, operation process, and application scope of data mining technology. Based on the analysis of the necessity of applying data mining technology in software engineering, it specifically explores its implementation path from four aspects: code retrieval, program specifications, software version control information, and system vulnerability detection.
Keywords: software engineering; data mining techniques; necessity; implementation path
信息技术与通信技术深度融合虽然为软件工程实践提供了新机遇,但是此类工程具有未来性、智能性、整体性特点,容易受到数据结构变化、数据存储数量增长、数据价值挖掘需求等因素影响,增加其中的数据管理难度。在这种前提下,设计者需要进一步在技术赋能路径下,通过扩大技术要素配置比例的方式提质增效、节本降耗。
1 数据挖掘技术概述
数据挖掘(Data mining)属于计算机科学,是一种利用算法搜索隐藏信息的技术,应用对象涉及结构数据、半结构数据、非结构数据,操作步骤如下:①定义问题;②建立数据挖掘库;③分析数据;④准备数据;⑤建立模型;⑥评价模型;⑦实施。从目前来看,数据挖掘分析方法一般包括分类估值、预测、相关分组或关联规则、聚类等,适用于各大领域。数据挖掘流程如图1所示。
2 软件工程应用数据挖掘技术的必要性
目前,软件工程中对数据挖掘技术的需求相对增多。笔者通过查阅文献资料,与同行开展技术交流,以及总结日常开发中的工作经验,认为在当前阶段应在需求导向下持续推进对它的应用。下面分别从软件工程中的数据管理、软件性能优化、用户行为预测三个角度,对其应用必要性做出具体分析。
2.1 从数据管理角度分析
在当前软件工程高质量发展过程中,受软件工程开发人员知识结构更新、开发技术创新、职业素养提升等综合因素影响,普遍认为数据管理在软件工程开发中发挥着重要推动作用。具体而言,设计者开发软件、运维管理软件时,需要进行数据采集、存储、提取、分析、应用等。然而,随着软件工程中的数据类型从结构数据向半结构数据、非结构数据拓展,一方面出现了多元异构数据采集与分类存储需求,另一方面要求设计者结合软件工程开发需求提取高质量数据并对其进行深度分析,进一步挖掘数据价值[1]。数据挖掘技术可以满足软件工程“业务数据采集→清洗转换装载→数据仓库存储→多维数据集建设→应用服务器→用户端等”方面的数据管理需求,实现对软件工程开发业务数据的采集、抽取、存储、加载、透明访问、在线分析、数据挖掘及在线事务处理查询等,增强不同开发环节的数据共享、数据交互。因而,在当前阶段的数据管理中,需要围绕数据这个核心,针对软件工程开发、设计、使用、维护等环节的数据管理需求应用数字挖掘技术,辅助设计者提高数据管理的精准性。
2.2 从软件性能优化角度分析
软件工程作为一种人工设计产品,在量子计算机未全面推广应用之前,并不能达到“零风险”设计目标。在这种前提下,软件产品性能的优良与否,会直接影响其应用安全。以往的软件工程应用经验表明,软件工程开发与运营期间的性能优化始终处于变动状态,需要根据其运营过程遇到的问题与发现的漏洞及遇到的故障等,实施针对性处理,保障性能优化目标有效落实。在这种目标导向下应用数据挖掘技术,一方面可以对大量的性能数据、资源利用情况及在系统运行状态中的特征表现等,做出有效分析并辅助设计者更为精准地识别软件性能开发、设计中存在的性能问题。另一方面能够借助对相关资源的优化配置提升软件产品运行效率与响应速度。尤其在数据驱动性能优化途径下,对软件本身的性能与用户使用体验相关数据进行关联分析,有利于设计者在促进软件工程开发中,实现提质增效与节本降耗等综合目标。
2.3 从用户行为预测角度分析
软件工程的主要功能是向用户提供信息服务,同时用户行为也会对软件工程开发产生一定的影响。按照“逆向设计”思路,软件工程设计者对用户需求与行为预测不精准时,较难设计出满足其实际需求和潜在需求的软件产品[2]。尽管当前已经出现了“面向对象设计”的软件开发方法,设计者凭借对Booch、UML、OMT技术的独立应用与联合应用,设计出适配性较高的软件产品,但用户具有“主观能动性”,其行为与动机不一致的情况时常发生。在这种前提下应用数据挖掘技术,能够对用户需求与用户行为进行相对精准的预测分析,为其“逆向设计”“面向对象设计”提供科学依据,提升设计过程中建立设计模型、部署构件、设计优化、设计评价等精度。
3 软件工程应用数据挖掘技术的实践
路径
3.1 以代码检索为例
现代软件工程设计以编码方式为主,设计者对代码的复用有利于提高开发效率。通常情况下,设计者获取当前代码时,会选择搜索Web代码库与本地代码库方法、基于代码形式的描述检索方法或基于输入与输出映射的代码检索方法。从实践经验看,上述方法的适用范围不同,软件工程设计者只有根据实际需求选择适配的方法,才能保障其设计速度与质量。
就目前而言,数字经济建设已为计算机网络技术可持续发展提供了新的技术支撑,不仅增强了Web功能,还大幅度提升了存储代码的能力,尤其在先进代码检索引擎应用与人工智能技术融合方面,为不同代码检索提供安全可靠性和应用便利性。例如,①Google Code采用了Web Portal形式,它的技术优势是可以按照代码的抽象语法树进行相似性度量。②Agora则在SDK工具箱基础上,通过框架模型实现了代码分类等[3]。在这种情况下,软件工程设计者应用数据挖掘技术,能够高效地利用不同代码检查引擎代码检索。值得注意的是,随着此类代码检索方法智能化水平越来越高,除了提供检索服务外,此类工具还能够辅助设计者完成代码克隆检测。例如,软件系统设计期间,总代码中约有7%到23%的代码属于克隆代码。但是,此类代码实际应用时的安全性、稳定性较差,为规避故障在COPY条件下发生恶性传播,需要对其实施全方位检测,进而根据大量数据挖掘分析形成的报表,更为安全地使用此类克隆代码。以软件编写程序代码中的语句分析判断为例,应用基于文本对比的方法或者基于标识符对比的方法时,通常借助Hash函数、Duple工具、CCFinder工具等,保障字符串匹配效率与对比合理性,完成对克隆代码检测。
3.2 以程序规约为例
程序规约是软件工程开发的重要组成部分,设计者应用数据挖掘技术时可通过全面跟踪软件程序执行情况的方式,对其代码中展示的协议进行监测、预警。应用时,设计者需要先通过执行跟踪信息进行“逆向建模”,再通过模型分析精准地了理解程序、验证协议,然后为其提供所需维护方案。操作主要分为三个步骤:一是操作者针对其系统进行“初步插装”;二是记录系统对API、运行状态变量的具体数值;三是通过过滤、聚类、约简完成处理数据挖掘的跟踪数据,形成规约模型。从程序规约数据挖掘流程方面看,设计者可以选择序列图形式,在时态逻辑表达方式下,提前发现风险事件并预测结果事件等。需要指出的是,在API中应用上述模型挖掘结果,能为系统安全操作提供精准指导[4]。
3.3 以软件版本控制信息为例
一般而言,在软件工程技能层面,设计者对软件版本控制信息的技能价值分析与挖掘比较缺乏,但是设计过程中不能绕开它为软件开发提供版本更新信息。从现阶段国内的软件工程开发经验看,设计者通常使用本地控制系统对软件版本进行管理与保护。其中,设计者应用数据挖掘技术时,主要通过统筹管理编辑人员共同编辑档案,使软件版本始终保持统一性与一致性,满足软件版本控制信息专项化管理要求,进而为整体软件工程后续的更新创建条件。具体而言,围绕数据在软件工程版本控制信息中应用数据挖掘技术时,设计者需要根据“业务问题理解→数据理解→数据准备→建模→评估→模型部署”等不同阶段,控制其应用质量,才能保障软件版本控制信息的挖掘效果。具体如下:
(1)以数据理解阶段与数据准备阶段为例,侧重于全面而系统地收集各项数据,并完成对解决问题中所需数据收集情况的检查。该阶段是数据准备的前提条件,工作人员为保障数据挖掘效率,往往需要进行多次准备,提高其数据质量、控制目标分析精准性。例如,在噪声数据方面,涉及重复记录、错误属性值,工作人员只有经过多次准备后才能获取相对平滑的数据,即所谓的高质量数据。再如,数据准备期间的数据转化十分关键,需要使用均值或者相似实例“对应值”取代“含缺失值”的记录,该方面受到内容多、正则化要求高等因素影响,对数据理解与数据准备形成了较大阻碍。因而,在上述阶段通过数据挖掘才能规避其中的错误。
(2)以建模阶段与评估阶段为例,建立时主要通过仿真软件对软件工程实际情况进行模拟分析,当前仿真软件种类较多,参数校准相对容易。但是,此类工程中牵涉相同数据的挖掘与不同数据的挖掘问题,因而,为提高数据挖掘精度,要求配套设置多种建模方式创建多个模型。为保障建模成功,设计者一般会对其中的建模数据、建模精度等开展指标化的细致评估,并在保障建立模型有效的前提下开展建模部署工作。
(3)以建模部署阶段为例,虽然该阶段仅为数据挖掘的一个重要构成环节或应用手段,但是始终与数据挖掘目标相一致[5]。实践经验表明,建模部署的关键是让潜在的数据价值通过明确的信息与知识显现出来,因而在建模部署时应根据数据类型、数据量、数据挖掘目标等,选择合适的组织方式,确保呈现出来的信息与知识能够用于软件工程改善运营与提升效率。
3.4 以软件系统漏洞检测为例
软件系统漏洞检测是现代软件工程中应用数据挖掘技术的方向之一,重点放在对其系统潜在漏洞与安全风险的监测、预警、识别、分析等方面,旨在提升软件产品的安全性。具体应用如下:
(1)挖掘代码并应用程序数据分析,识别潜在的代码漏洞。例如,源代码与二进制代码是软件系统常用代码,在编写与使用期间不排除其中存在不安全的函数调用、代码注入、缓冲区溢出等安全问题,此时可以利用静态分析技术加以解决。再如,程序运行期间始终处于变动状态,可以利用动态分析技术针对其中的执行路径、输入输出数据的变化情况进行监控,实时预测其中可能出现的漏洞与异常行为等。
(2)挖掘漏洞采用不同的方法,降低了解漏洞和修复成本。建议设计者选择安全通告挖掘、安全补丁查巡、漏洞数据库技术等,或者借当前人工智能技术快速发展及融合应用之机,针对已知漏洞及其分布状态设置的漏洞检测策略,进而使整个漏洞检查过程变得更加精确。例如,对AI机器学习算法的应用,有利于针对具体漏洞类型创建适配性较高的漏洞预测模型,从而借助对历史漏洞数据与软件特性的预测,提高漏洞检测效率,缩短修复时间。除此之外,软件工程应用对象、应用场景不同时,往往会划分出高、中、低不同程度的风险代码区域,在这种情况下,工作人员可以尝试加强相关漏洞模块与代码的测试与审核力度,从侧面加强漏洞检测,为及时发现其中潜在隐患提供助力[6]。
4 结束语
综上所述,数据挖掘技术内涵丰富、运行流程标准,在软件工程开发设计及实施等各个层面发挥着重要作用。无论从数据管理、软件性能优化,还是用户需求分析及行为预测方面看,在新时期的软件工程高质量开发与高水准运营期间,增强对该技术的应用具有十分重要的现实意义。建议设计者实践时尽可能遵循思路决定出路的大原则,一方面做好针对此类工程中所需的数据采集、存储、传输、提取、分析、生成报表等数字化建设工作。另一方面按软件工程设计需求引入相关的数据挖掘技术,进而在提高设计全要素生产率的前提下,辅助其产出综合效益。
参考文献
[1] 刘利民,张勇.多标签隐性知识显性化下的数据挖掘算法[J].计算机仿真,2023,40(4):504-508.
[2] 邢颖.基于可解释性人工智能的软件工程技术方法综述[J].计算机科学,2023,50(5):3-11.
[3] 张昱.需求一致性的软件工程方法[J].计算机应用与软件,2023,40(7):13-17.
[4] 陈立.试论数据挖掘技术在软件工程中的应用[J].信息系统工程,2023,14(9):39-42.
[5] 陈震鹏,姚惠涵,曹雁彬,等.面向软件工程的情感分析技术研究[J].软件学报,2023,34(5):2218-2230.
[6] 贾润亮.大数据下软件工程技术的运用研究[J].软件,2023,44(8):130-132.