A Comprehensive Survey of Logging in Software: From Logging Statements Automation to Log Mining and Analysis
University of Waterloo(滑铁卢大学)
日志被广泛用于记录软件系统的运行时信息,例如事件的时间戳和重要性,日志源的唯一ID,以及任务执行的部分状态。日志的丰富信息使系统开发人员(和操作员)能够监控其系统的运行时行为,并进一步跟踪系统问题,并对生产环境中的日志数据进行分析。然而,先前关于利用日志的研究是分散的,这限制了该领域的新研究人员快速获得速度的能力,并阻碍了当前活跃的研究人员进一步推进该领域。因此,本文调查和提供了一个系统的文献综述和映射的当代日志记录的做法和日志语句的挖掘和监测技术及其应用,如在系统故障检测和诊断。我们研究了大量出现在顶级同行评审场所的会议和期刊论文。此外,我们还绘制了正在进行的研究的高层次趋势,并将出版物进行了细分。最后,根据我们在本次调查中的整体观察,我们提供了一系列挑战和机遇,这些挑战和机遇将引导学术界和工业界的研究人员推动该领域的发展。
2022-01-01 cs.LG cs.SE
ConfLogger: Enhance Systems' Configuration Diagnosability through Configuration Logging
本文提出 ConfLogger,结合配置感知静态污点分析与 LLM 日志生成,在源码层面补充配置诊断日志,显著提升静默错误配置定位、变量日志覆盖及人工排障效率。
2025-08-29 cs.SE
FastLog: An End-to-End Method to Efficiently Generate and Insert Logging Statements
FastLog 提出一种端到端方法,在 token 级别预测插入位置并快速生成完整日志语句,结合长文本切分提升准确性,在效率与质量上均优于现有方法。
2024-03-29 cs.SE
Using Deep Learning to Generate Complete Log Statements
日志记录是在软件生命周期的几个阶段中广泛采用的实践。例如,在软件开发过程中,日志语句允许工程师通过暴露运行软件的细粒度信息来验证和调试系统。虽然日志记录的好处是无可争议的,但要正确决定在哪里注入日志语句,记录什么信息,以及在哪个日志级别(例如,错误、警告)对于日志记录的有效性至关重要。在本文中,我们提出了LANCE(日志stAtement reCommEnder),第一种方法支持开发人员在所有这些决定。LANCE具有一个文本到文本传输Transformer(T5)模型,该模型已在6,894,456个Java方法上进行了训练。LANCE将Java方法作为输入,并在其中注入完整的日志语句,包括人类可理解的日志消息,并正确选择所需的日志级别和语句位置。我们的研究结果表明,LANCE能够(i)正确识别代码中的位置,在65.9%的Java方法中注入语句;(ii)在66.2%的情况下选择适当的日志级别;(iii)在15.2%的情况下生成完全正确的日志语句,包括有意义的日志消息。
2022-01-14 cs.SE
Logging Requirement for Continuous Auditing of Responsible Machine Learning-based Applications
针对机器学习应用因透明度等不足引发的伦理合规问题,研究指出传统日志监控可用于审计,但当前ML日志实践缺乏系统性且未充分捕获负责任AI指标,需加强相关实践与工具以开发可审计的负责任ML系统。
2025-08-25 cs.SE
Logging Practices with Mobile Analytics: An Empirical Study on Firebase
软件日志在工业和开源项目中都有很大的价值。移动分析日志使开发人员能够从终端用户设备上运行的应用程序远程收集日志,但需要通过互联网记录日志并将其传输到集中式基础设施。本文使用广泛采用的移动分析日志库(即Firebase Analytics)来描述日志记录实践的第一步。我们通过研究代码库的演变,对Firebase Analytics在57个开源Android应用程序中的使用进行了实证评估,以了解:a)推动从业者在移动设备上采用日志记录实践的共同需求,以及b)开发人员使用本地和远程日志记录方式的差异。我们的研究结果表明,移动分析日志比传统的日志记录代码更不普及,维护更少。根据我们的分析,我们认为与传统日志记录相比,使用移动分析的日志记录更以用户为中心,后者主要用于记录调试信息。
2021-04-06 cs.SE
LogUpdater: Automated Detection and Repair of Specific Defects in Logging Statements
LogUpdater是一个两阶段框架,利用合成缺陷日志训练分类器并结合大语言模型推荐,自动检测和修复日志语句中的四种缺陷,显著提升建议质量,并在实际项目中成功应用。
2025-04-22 cs.SE
Towards Automatically Pruning Logging Code with Coding Agents: How Far Are We?
York University(约克大学);University of Waterloo(滑铁卢大学);HKUST (Guangzhou)(香港科技大学(广州));University of Alberta(阿尔伯塔大学);DGIST(大邱庆北科学技术院)
本研究首次系统探索使用编码代理自动移除日志代码,构建LogRem数据集并评估四种代理,发现当前自动化在准确界定移除范围方面仍有较大提升空间。
2026-10-06 cs.AI cs.SE
PDLogger: Automated Logging Framework for Practical Software Development
针对实际方法中多日志生成需求,提出端到端 PDLogger 框架,通过位置预测、依赖感知日志生成与精化去重,显著提升位置、级别、变量和消息质量。
2025-07-26 cs.SE
The Sense of Logging in the Linux Kernel
日志记录在软件工程中起着至关重要的作用,因为它是执行各种任务(包括调试、性能分析和异常检测)的关键。尽管日志数据很重要,但日志做法仍然缺乏共同准则和最佳做法。最近的研究调查了C/C++和Java开源系统中的日志记录。在本文中,我们补充这些研究进行了第一次实证研究,在Linux内核中的日志记录的做法,在计算机行业中最详细的开源开发项目之一。我们分析了22个Linux版本,重点关注三个主要方面:Linux中日志记录的普遍性,日志记录语句的更改类型以及这些更改背后的原理。我们的研究结果表明,日志代码占Linux内核源代码总数的3.73%,分布在72.36%的Linux文件中。我们还发现,Linux子系统及其组件之间的日志记录语句的分布差异很大,没有明显的原因,这表明开发人员在日志记录时使用不同的标准。此外,我们观察到v4.3和v5.3之间日志减少的使用缓慢下降了9.27%。日志代码中的大多数更改都是为了修复语言问题、修改日志级别以及升级日志代码以使用新的日志库,总体目标是提高日志输出的精度和一致性。许多建议都来自我们的发现,例如使用静态分析工具来检测日志相关问题,采用常见的写作风格来提高日志消息的质量,制定公约来指导开发人员选择日志级别,建立审查会议来审查日志代码,等等。
2022-08-13 cs.SE
AutoLogger: A Multi-Agent Framework for the End-to-End Automated Logging
The Chinese University of Hong Kong(香港中文大学);Singapore Management University(新加坡管理大学);Nankai University(南开大学)
本文提出Autologger框架,通过多智能体系统实现端到端自动日志记录,提升日志生成质量与准确性。
2026-08-06 cs.SE
Log-based software monitoring: a systematic mapping study
现代软件开发和操作依赖于监控来了解系统在生产中的行为。应用程序日志和运行时环境提供的数据对于检测和诊断不期望的行为以及提高系统可靠性至关重要。然而,尽管围绕行业就绪日志解决方案的生态系统非常丰富,但监控复杂系统并从日志数据中获取见解仍然是一项挑战。研究人员和从业人员一直在积极努力解决与日志相关的若干挑战,例如,如何有效地为开发人员的日志决策提供更好的工具支持,如何有效地处理和存储日志数据,以及如何从日志数据中提取见解。对伐木做法和自动化伐木分析研究工作的整体看法是提供指导和传播技术转让最新技术的关键。在本文中,我们研究了来自不同社区(例如,机器学习、软件工程和系统),并根据日志数据的生命周期来构建研究领域。我们的分析表明,(1)日志记录不仅在开源项目中具有挑战性,而且在工业中也具有挑战性,(2)机器学习是一种有前途的方法,可以对日志推荐的源代码进行上下文分析,但需要进一步调查以评估这些工具在实践中的可用性,(3)很少有研究涉及日志数据的有效持久性,以及(4)在DevOps上下文中存在分析应用程序日志和评估最先进的日志分析技术的开放机会。
2021-03-05 cs.SE
Do AI Coding Agents Log Like Humans? An Empirical Study
Queen’s University(女王大学);ETS - Québec University(魁北克大学ETS)
研究通过分析4550个代理拉取请求,发现代理在58.4%的仓库中更改日志频率低于人类,但日志密度更高。明确的日志指令稀缺且无效,人类在72.5%的情况下修复日志问题,表明自然语言指令存在不足,需引入确定性限制以确保一致性。
2026-04-10 cs.SE
A Survey on Automated Log Analysis for Reliability Engineering
日志是由软件源代码中的日志语句生成的半结构化文本。近几十年来,软件日志在许多软件系统的可靠性保证机制中已变得必不可少,因为它们通常是记录软件运行时信息的唯一可用数据。随着现代软件向大规模发展,日志的数量迅速增加。为了使现代软件日志在可靠性工程中的有效和高效的使用,已经进行了一些研究自动日志分析。本调查详细介绍了自动日志分析研究的概况,包括如何自动化和辅助日志语句的编写,如何压缩日志,如何将日志解析为结构化事件模板,以及如何使用日志来检测异常,预测故障和促进诊断。此外,我们还调查了发布开源工具包和数据集的工作。基于对最新进展的讨论,我们提出了几个有前途的未来方向,现实世界和下一代自动日志分析。
2021-06-01 cs.SE
Software Engineering Meets Network Engineering: Conceptual Model for Events Monitoring and Logging
计算机网络中应用的抽象通过构建捕获网络系统的基本方面的模型来将网络细节隐藏在定义良好的表示之后。目前有两种表示方法,一种是基于图论,其中网络节点被简化为图中的一个点,另一种是使用非方法论的图标,如人头,墙壁,塔或计算机机架。本文采用软件工程中提出的一种抽象表示方法--思维机(Thinging Machine,TM)对计算机网络进行建模。TM定义了一个单一的连贯的网络架构和拓扑结构,它只由五个通用的动作和两种类型的箭头组成。不失一般性,本文应用TM模型的网络监测在包模式传输的区域。复杂的网络文档很难维护,并且不能保证反映实际情况。网络监控是对网络系统中的故障、失败、停止或可疑活动的持续监控和警报。目前的监测系统是建立在缺乏系统性的临时说明之上的。监测的TM模型提供了一个理论基础,集成了事件和行为描述。为了探讨TM建模的可行性,我们将其应用于科威特企业现有的计算机网络,以创建一个集成的网络系统,包括硬件,软件和通信设施。最终的规范指出TM建模在计算机网络领域的可行性。
2021-12-01 cs.NI cs.SE
AL-Bench: A Benchmark for Automatic Logging
针对自动日志记录评估公平性与静态评估的局限,提出综合基准 AL-Bench,包含大规模数据集与动态评估方法,揭示现有工具在编译率和日志语义相似度上的显著缺陷。
2025-04-02 cs.SE
ReLog: Execution-Aware Logging with Runtime Feedback for LLM-Oriented Debugging
The Hong Kong University of Science and Technology (Guangzhou)(香港科技大学(广州));Hebei University of Science and Technology(河北科技大学);York University(约克大学)
本文提出ReLog框架,通过运行时反馈迭代生成日志,提升日志在下游任务中的实用性,实验表明其在缺陷定位和修复任务中优于现有方法。
2026-08-27 cs.SE
Automated File-Level Logging Generation for Machine Learning Applications using LLMs: A Case Study using GPT-4o Mini
Concordia University(康科德大学)
本研究以GPT-4o mini为案例,评估LLM为ML项目生成文件级日志的能力,发现其在63.91%情况下位置匹配,但过度日志记录率高,并面临函数边界、大代码块及约定对齐等挑战。
2025-08-06 cs.AI cs.LG cs.SE
Multiversion Hindsight Logging for Continuous Training
FlorDB 提出多版本事后日志记录,通过日志语句传播和基于检查点的并行重放,使工程师能用最新日志查询历史版本,并以统一关系模型支持跨版本高效调试。
2024-10-23 cs.DB cs.SE
Leveraging Code Clones and Natural Language Processing for Log Statement Prediction
University of Waterloo(滑铁卢大学)
软件开发人员将日志记录语句嵌入源代码中,作为现代软件开发中的一项重要职责,因为日志文件对于跟踪运行时系统问题和故障排除系统管理任务是必要的。先前的研究强调了日志语句在软件系统的操作和调试中的重要性。然而,当前的日志记录过程大多是手动和临时的,因此,日志记录语句的适当放置和内容仍然是一个挑战。为了克服这些挑战,旨在自动化日志放置和日志内容的方法,即,“在哪里,什么,以及如何记录”,都是很感兴趣的。因此,我们建议完成这项研究的目标,即“利用源代码克隆和自然语言处理(NLP)来预测日志语句",因为这些方法为日志预测提供了额外的上下文和优势。我们追求以下四个研究目标:(RO1)调查是否可以利用源代码克隆的日志语句位置预测,(RO2)提出了一个基于克隆的方法,日志语句预测,(RO3)预测日志语句的描述与代码克隆和NLP模型,和(RO4)检查方法来自动预测日志语句的其他细节,如其详细程度和变量。为此,我们对七个开源java项目进行了实验分析,提取了它们的方法级代码克隆,研究了它们的属性,并利用它们进行日志定位和描述预测。我们的工作证明了日志感知克隆检测的有效性,自动日志定位和描述预测,并优于以前的工作。
2021-09-08 cs.LG cs.SE
An Empirical Study on Logging Evolution On Stack Overflow: Trends, Topics, and Challenges
Department of Computer Engineering and Software Engineering Polytechnique Montreal(蒙特利尔理工大学计算机工程与软件工程系)
基于 Stack Overflow 上的 216,094 篇帖子,使用大语言模型分类方法,识别出 11 个日志相关主题,并发现容器化环境中的日志记录是最具挑战性的主题。
2026-05-27 cs.PL cs.SE
Hindsight Logging for Model Training
在现代机器学习中,模型训练是一个迭代的实验过程,可能会消耗大量的计算资源和开发人员的时间。为了帮助这个过程,经验丰富的模型开发人员在训练运行期间记录和可视化程序变量。详尽记录所有变量是不可行的。乐观日志记录可以伴随程序检查点;这允许开发人员事后添加日志语句,并从检查点“重放”所需的日志语句-我们称之为事后日志记录的过程。不幸的是,后见之明日志记录在数据管理和软件工程中引起了棘手的问题。如果做得不好,事后日志可能会浪费资源,并产生包含在多种训练代码变体中的技术债务。在本文中,我们提出了高效和有效的模型训练的日志记录实践的方法,重点是后见之明的日志记录技术。我们的目标是让有经验的模型开发人员学习并采用这些实践。为了使这更容易,我们提供了一个开源的快速低开销恢复工具套件(flor),它体现了我们在三个任务中的设计:(i)Python中的高效后台日志记录,(ii)可适应的周期性检查点,以及(iii)一个仪器库,用于编码事后日志记录,以实现模型训练的高效和自动记录重放。模型开发人员可以单独使用每个flor工具,如果他们认为合适的话,或者他们可以在免提模式下使用flor,委托它端到端地检测他们的代码,以实现高效的记录重放。我们的解决方案利用了数据库系统中的生理事务日志和恢复技术。对现代ML基准测试的评估表明,flor可以以较小的用户可指定开销(例如7%)产生快速检查点,并且仍然提供比从头开始训…
2020-12-02 cs.DB cs.DC cs.SE
Borrowing from Similar Code: A Deep Learning NLP-Based Approach for Log Statement Automation
University of Waterloo(滑铁卢大学)
软件开发人员将日志记录语句嵌入源代码中,作为现代软件开发中的一项重要职责,因为日志文件对于跟踪运行时系统问题和故障排除系统管理任务是必要的。然而,当前的日志记录过程大多是手动的,因此,日志记录语句的正确放置和内容仍然是一个挑战。为了克服这些挑战,旨在自动化日志放置并预测其内容的方法,即,“在哪里和什么日志”,是高度感兴趣的。因此,我们专注于预测位置(即,其中)和描述(即,通过利用源代码克隆和自然语言处理(NLP),为日志语句提供了更多的上下文和优势。具体来说,我们用三个研究问题(RQ)来指导我们的研究:(RQ 1)如何相似的代码片段,即,代码克隆,可用于日志语句预测?(RQ2)如何将该方法扩展到日志语句描述的自动化?以及(RQ3)所提出的方法对于原木定位和描述预测的有效性如何?为了追求我们的RQ,我们对七个开源Java项目进行了实验研究。我们引入了一个更新和改进的日志感知代码克隆检测方法来预测日志语句的位置(RQ 1)。然后,我们结合自然语言处理(NLP)和深度学习方法来自动化日志语句的描述预测(RQ 2)。我们的分析表明,我们的混合NLP和代码克隆检测方法(NLP CC'd)比传统的克隆检测器平均查找日志语句位置高出15.60%,并且与先前的研究(RQ 3)相比,在预测日志语句描述的BLEU和ROUGE得分上,性能提高了40.86%。
2021-12-02 cs.LG cs.SE
Studying and Benchmarking Large Language Models For Log Level Suggestion
本文实证研究了12个开源LLMs在日志级别建议中的表现,通过Zero-shot、Few-shot和微调等策略在9个Java系统上测试,发现小模型在合适技术下有效但仍有改进空间。
2024-10-11 cs.SE
Log Statements Generation via Deep Learning: Widening the Support Provided to Developers
本文提出基于深度学习的 LEONID,可判断 Java 方法是否需要日志并支持插入多条日志语句,同时结合 IR 改进日志消息生成。
2023-11-08 cs.SE
OmniLLP: Enhancing LLM-based Log Level Prediction with Context-Aware Retrieval
Queen's University(皇后大学);ETS - Québec University(ETS-魁北克大学)
针对LLM日志级别预测器依赖随机上下文示例的问题,提出OmniLLP框架,通过结合代码语义相似性和开发者所有权凝聚力进行聚类检索上下文示例,显著提升了预测准确率(AUC达0.88-0.96)。
2025-08-12 cs.AI cs.SE
Do Privacy Policies Match with the Logs? An Empirical Study of Privacy Disclosure in Android Application Logs
Rochester Institute of Technology(罗切斯特理工学院);Ontario Tech University(安大略理工大学);University of Waterloo(滑铁卢大学)
本文通过分析1000款Android应用的日志相关声明,发现大多数应用虽提供隐私政策,但仅有28.5%明确提及日志实践,且多数日志声明过于简单或模糊,导致隐私泄露问题严重。
2026-08-20 cs.CR cs.SE
Are They All Good? Studying Practitioners' Expectations on the Readability of Log Messages
本文通过访谈与问卷提炼日志消息可读性准则,发现开源项目中38.1%的日志可读性不足,并证明深度学习和机器学习模型可自动分类,平均平衡准确率超过80%。
2023-08-17 cs.SE
Flow with FlorDB: Incremental Context Maintenance for the Machine Learning Lifecycle
本文提出了一种在不破坏敏捷开发的前提下,通过日志语句和后见日志从机器学习流水线中增量获取与查询元数据的技术,并在FlorDB系统中实现,有效解决了敏捷性与纪律之间的软件工程权衡问题。
2024-11-15 cs.DB cs.SE
Benchmarking Machine Learning Technologies for Software Defect Detection
机器学习方法在解决信息较少的问题方面很好。在大多数情况下,软件领域问题的特点是一个学习的过程,取决于各种情况和相应的变化。通过使用机器学习方法构建预测模型,并将其分类为有缺陷和无缺陷模块。机器学习技术帮助开发人员在分类后检索有用的信息,并使他们能够从不同的角度分析数据。机器学习技术在软件缺陷预测方面被证明是有用的。这项研究使用了软件模块的公共可用数据集,并提供了不同的机器学习技术用于软件错误预测的比较性能分析。结果表明,大多数机器学习方法在软件缺陷数据集上表现良好。
2015-06-24 cs.SE
Log-based Anomaly Detection of Enterprise Software: An Empirical Study
University of Calgary(卡尔加里大学);York University(约克大学)
本文在规模较小且结构松散的工业日志数据集上实证评估多种先进异常检测模型,分析数据泄漏、缺陷类型和训练集大小对模型有效性的影响。
2023-10-31 cs.LG cs.SE
Scalable and Efficient Large-Scale Log Analysis with LLMs: An IT Software Support Case Study
IBM
针对IT软件支持场景中海量日志人工排查效率低的问题,提出基于LLM的日志分析工具及CPU高效运行LLM的方法,生产部署后显著节省人力与成本。
2025-11-17 cs.AI cs.SE
Understanding What Software Engineers Are Working on -- The Work-Item Prediction Challenge
Facebook Inc.(脸书公司)
了解软件工程师(开发人员,事件响应者,生产工程师等)是一个具有挑战性的问题--特别是当考虑软件密集型组织中更复杂的软件工程工作流时:i)工程师依赖于大量(可能数百个)松散集成的工具; ii)工程师参与并发和相对长时间运行的工作流; ii)基础设施(例如日志记录)不完全知道工作项; iv)工程过程(例如,对于事件响应)没有明确建模。在本文中,我们解释了相应的“工作项预测挑战”的理由,代表性的场景,报告在Facebook的相关工作,讨论了一些经验教训,并回顾相关的工作,呼吁武装利用,推进,并结合技术,从程序理解,挖掘软件库,过程挖掘,和机器学习。
2020-04-13 cs.IR cs.LG cs.SE
Using Machine Learning To Identify Software Weaknesses From Software Requirement Specifications
本研究提出利用机器学习和潜在语义分析映射CWE与PROMISE_exp数据集,从软件需求规格中高效识别软件弱点,并验证SVM与神经网络效果可靠。
2023-08-10 cs.SE
Analysis of Software Engineering Practices in General Software and Machine Learning Startups
本研究通过系统文献综述对比了ML初创企业与通用软件初创企业在软件开发生命周期五个阶段的软件工程实践差异,发现ML模型的非确定性带来了额外挑战,需采用不同策略保障产品质量。
2023-04-04 cs.SE
EvLog: Identifying Anomalous Logs over Software Evolution
针对软件演化导致日志解析、事件变化和序列不稳定的问题,本文提出无监督方法 EvLog,通过免解析多层次表示与注意力异常判别器定位异常日志,并在版本内、跨版本设置中取得优异效果。
2023-08-15 cs.SE
Measuring the Quality of B Abstract Machines with ISO/IEC 25010
B方法通过将软件的设计指定为抽象机并形式化地验证抽象机的正确性来促进软件的开发。B抽象机的质量会显著影响最终软件产品的质量。本文基于国际上最新的软件工程软件质量评价标准之一ISO/IEC 25010,提出了一套B抽象机质量的度量准则。这些标准使用许多通用且与领域无关的方程和模型检验技术来评估抽象机器,以便抽象机器的质量可以量化为向量。所提出的标准被实施为B模型质量评估器,并使用一些例子来解释和证明。
2020-03-04 cs.SE
Robust Machine Learning in Critical Care -- Software Engineering and Medical Perspectives
在临床实践中使用机器学习对这些系统的可解释性、可靠性、可复制性和鲁棒性提出了严格的要求。因此,开发用于监测危重患者的可靠软件需要医生和软件工程师之间的密切合作。然而,这两个不同的学科需要找到自己的研究视角,以有助于医学和软件工程领域。在本文中,我们解决的问题是如何建立一个合作的地方,软件工程和医学满足设计强大的机器学习系统用于病人护理。我们描述了我们如何设计的软件系统,用于监测颈动脉内膜切除术下的患者,特别是集中在研究团队的知识建设的过程。我们的研究结果显示了在建立这样的合作时应该考虑什么,它是如何随着时间的推移而发展的,以及基于它可以构建什么样的系统。我们得出结论,主要的挑战是找到一个好的研究团队,其中不同的能力致力于一个共同的目标。
2021-03-15 cs.SE
A Classical Fuzzy Approach for Software Effort Estimation on Machine Learning Technique
软件成本估算的可靠性,生产力和开发工作是一个具有挑战性和繁重的任务。这激发了软件社区提供急需的推力,并深入研究软件工作量估计,以发展复杂的方法。类比估算是软件工作量估算领域的一种有效方法。然而,用于通过类比来估计软件工作量的方法无法以明确和精确的方式处理分类数据。本文提出了一种新的方法来估计软件工作量的项目表示的分类或数值数据,使用类比推理和模糊方法。现有的历史数据集,用模糊逻辑分析,产生准确的结果相比,数据集分析与早期的方法。
2011-12-16 cs.SE
The Effectiveness of Supervised Machine Learning Algorithms in Predicting Software Refactoring
重构是在不改变软件外部行为的情况下改变软件内部结构以提高其质量的过程。经验研究一再表明,重构对软件系统的可理解性和可维护性有积极的影响。然而,在执行重构活动之前,开发人员需要识别重构机会。目前,重构机会识别严重依赖于开发人员的专业知识和直觉。在本文中,我们调查的有效性机器学习算法在预测软件重构。更具体地说,我们训练了六种不同的机器学习算法(即,逻辑回归,朴素贝叶斯,支持向量机,决策树,随机森林和神经网络),数据集包含来自Apache,F-Droid和GitHub生态系统的11,149个真实项目的超过200万次重构。结果模型预测了类、方法和变量级别的20种不同重构,准确率通常高于90%。我们的研究结果表明,(i)随机森林是预测软件重构的最佳模型,(ii)过程和所有权度量似乎在创建更好的模型中发挥了至关重要的作用,(iii)模型在不同的环境中推广良好。
2020-09-11 cs.SE
A Cognitive and Machine Learning-Based Software Development Paradigm Supported by Context
认知和机器学习(ML)使能系统的使用的进步推动了对新方法和工具的追求,以支持支持软件开发人员执行他们的任务。首先,由于软件开发是一项复杂和动态的活动,这些任务高度依赖于软件项目及其上下文的特征,开发人员需要基于任务上下文的信息和指导方面的全面支持。其次,缺乏基于会话引导代理的方法,这些方法考虑了注意力和记忆力等认知方面。第三,还缺乏利用历史隐式或隐性数据来推断关于项目任务的新知识的技术,诸如相关任务、任务专家、任务完成和警告所需的相关信息,以及过程的导航方面,诸如接下来执行什么任务和最佳任务排序。基于这些挑战,本文介绍了一种新的模式,人机软件支持的背景下,认知辅助,和机器学习,并简要介绍了正在进行的研究活动,以实现这一模式。该研究利用了上下文感知软件流程、聊天机器人等认知计算和推荐系统等机器学习中提供的紧急方法之间的协同作用。这些新颖的范例有可能改变软件开发的方式,允许开发人员在参与项目时实时接收有价值的信息和指导。
2021-02-10 cs.SE
Teaching Machine Learning to Software Engineers
Carleton University(卡尔顿大学)
针对软件工程课程缺乏AI/ML系统构建训练的问题,通过主题清单、课程映射和教师调查,提出将高优先级主题嵌入现有SE课程的指南。
2026-06-15 cs.SE
Adaptive Automation: Leveraging Machine Learning to Support Uninterrupted Automated Testing of Software Applications
使用自动化软件工具检查软件应用程序的适用性已成为大多数组织的一个重要因素,无论他们是生产内部软件还是简单地定制现成的软件应用程序供内部使用。随着软件解决方案变得越来越复杂,行业越来越依赖于软件自动化工具,但可用软件自动化工具的脆弱性限制了它们的有效性。公司在获得和实现自动化软件方面投入了大量资金,但当维护有效的自动化测试套件的成本超过手动测试所花费的成本和时间时,大多数工具都无法交付。当前一代软件自动化工具的一个缺点是,它们不能在没有频繁(和时间昂贵)的手动干预的情况下适应意外的修改和障碍。这些问题在行业从业者中是公认的,但目前这一代工具都没有利用机器学习和人工智能的进步来解决这些问题。本文提出了一个框架解决方案,利用机器学习的概念,即模糊匹配和错误恢复。建议的解决方案应用自适应技术来从意外的障碍中恢复,否则这些障碍会阻止脚本继续执行。恢复细节在报告中呈现给用户,可以分析该报告以确定恢复程序是否可接受,并且框架将根据用户的决定调整未来的运行。使用这个框架,从业者可以在没有人为干预的情况下运行自动化套装,同时最大限度地降低了时间表延迟的风险。
2015-08-04 cs.SE
Predicting Software Defects through SVM: An Empirical Approach
软件缺陷预测是软件预防性维护的一个重要方面。许多技术已经被用来通过缺陷预测来提高软件质量。本文介绍了一种基于代码气味的机器学习算法--支持向量机(SVM)的缺陷预测方法。基于支持向量机的缺陷预测模型被用于预测Eclipse软件后续版本中的缺陷。结果表明气味在预测软件缺陷中的作用。结果可以进一步用作基线,以进一步研究气味在预测缺陷中的作用。
2018-03-08 cs.SE
Software Defect Prediction Using Support Vector Machine
软件缺陷预测是软件开发过程中的一项重要任务,它可以帮助管理人员识别出最易出现缺陷的模块。从而降低了测试成本,有效地分配了测试资源。许多分类方法可以用来确定软件是否有缺陷。由于支持向量机在不同的数据集和参数设置下的不稳定性,使得支持向量机在这类问题中的应用并不广泛。影响精度的主要参数是核函数的选择。核函数的使用在以前的论文中没有得到深入的研究。因此,本研究以六种不同的核函数来检验支持向量机的效能与准确度。来自PROMISE项目的各种公共数据集实证验证了我们的假设。结果表明,没有核函数可以在不同的实验设置提供稳定的性能。此外,使用PCA作为特征约简算法在某些数据集上显示出轻微的准确性提高。
2022-09-10 cs.SE
Software Effort Estimation Accuracy Prediction of Machine Learning Techniques: A Systematic Performance Evaluation
软件工作量估计的准确性是有效计划、控制和在预算和进度内交付成功软件项目的关键因素。高估和低估都是未来软件开发的关键挑战,因此,软件工作量估计(SEE)的准确性是一个持续的需求。研究人员和从业人员正在努力确定哪种机器学习估计技术基于评估措施、数据集和其他相关属性提供更准确的结果。相关研究的作者通常不知道以前发表的机器学习工作量估计技术的结果。本研究的主要目的是帮助研究人员了解哪种机器学习技术在软件开发中产生有前途的工作量估计精度预测。在本文中,性能的机器学习集成技术的研究与独奏技术的基础上,两个最常用的准确性评价指标。我们使用了Kitchenham和Charters提出的系统性文献综述方法。这包括搜索最相关的论文,应用质量评估标准,提取数据和绘制结果。我们评估了28个选定研究(14个集合,14个单独)的最先进的准确性性能,使用平均相对误差幅度(MMRE)和PRED(25)作为一组可靠的准确性指标,用于两种技术之间的准确性性能评估,以报告本研究中提出的研究问题。我们发现,机器学习技术是最常见的集成努力估计(ESTA)技术的建设。本研究的结果显示,与单技术相比,双技术通常产生有希望的估计精度。
2021-01-26 cs.SE
Machines that test Software like Humans
自动化的软件测试包括由机器执行测试脚本,而不是手动运行。这大大减少了所需的手动时间和工作量,因此对软件测试行业非常感兴趣。已经开发了各种工具来自动化测试Web应用程序(例如Selenium WebDriver);然而,测试自动化的实际应用仍然很少。这是由于创建和维护自动化脚本的复杂性。现有方法的关键问题是自动化测试脚本需要被测应用(AUT)的某些实现细节(例如,web元素的html代码或web元素的图像)。另一方面,如果我们看一下手工测试的方式,测试人员解释文本测试脚本,并纯粹基于他通过GUI视觉感知的内容与AUT交互。在本文中,我们提出了一种方法来建立一个机器,可以模仿人类的行为,软件测试使用计算机视觉的最新进展。我们还提出了四个用例,说明这种方法如何显着推进测试自动化空间,使测试自动化足够简单,可以实际采用。
2018-09-25 cs.SE
Assessing Quantum Extreme Learning Machines for Software Testing in Practice
本文通过三个工业软件测试案例评估量子噪声对QELM的影响,发现噪声显著降低性能并增大不确定性,且现有错误缓解方法缺乏跨任务和规模的一致性。
2025-09-27 cs.SE
Issue Auto-Assignment in Software Projects with Machine Learning Techniques
通常,软件项目中的经理或技术负责人手动分配问题。随着问题描述更加详细,此任务可能会变得更加复杂。这种复杂性也可能使该过程更容易出错(误分配)和耗时。在文献中,许多研究旨在通过使用机器学习策略来解决这个问题。虽然没有适用于所有公司的特定解决方案,但经验报告可用于指导工业自动分配项目的选择。本文介绍了一个全球性的电子公司,旨在尽量减少所花费的时间和错误,可能会出现在问题分配过程中进行的工业倡议。作为主要贡献,我们提出了一个文献综述,工业报告比较不同的算法,并在项目中吸取的经验教训。
2021-04-05 cs.SE
Log severity level classification: an approach for systems in production
内容:对于系统开发人员和操作工程师来说,数据库通常是理解和诊断软件系统在生产中的行为的主要信息来源。在许多情况下,日志是可用于故障调查的唯一证据。问题:但是,日志严重性级别的选择不当可能会影响生成的日志数据量,从而影响质量。这种存储开销可能会影响基于日志的监控系统的性能,因为过多的日志数据会带来更大的聚合噪声,这使得在尝试进行诊断时利用实际重要的内容变得非常困难。目标:本研究旨在通过处理来自生产系统的日志数据的严重性级别来减少监控系统的开销。方法:为了实现这一目标,我们打算加深对日志严重性级别的了解,并开发一种日志严重性级别分类的自动化方法,证明减少日志严重性级别“噪音”可以提高对生产系统的监控。结论:我们希望这项工作的一系列贡献能够改进软件系统的监控活动,并有助于创建改进日志记录实践的知识
2021-12-22 cs.SE
What Distributed Systems Say: A Study of Seven Spark Application Logs
执行日志是记录软件系统运行时信息的重要媒介。虽然大量日志有助于提供有价值的详细信息,以便在发生故障时在事后分析中确定根本原因,但这也可能导致性能开销和存储成本。因此,在这项研究中,我们提出了我们的实验研究的结果,七个Spark的基准来说明不同的日志详细程度上的分布式软件系统的执行时间和存储成本的影响。我们还评估了日志的有效性和信息增益值,并研究了性能的变化和生成的日志为每个基准与各种类型的分布式系统故障。我们的研究为开发人员和从业人员提供了关于如何设置和利用分布式系统以从执行日志中受益的有见地的发现。
2021-08-18 cs.DC cs.SE
Machine Learning for Software Engineering: A Systematic Mapping
Johannes Kepler University(约翰开普勒大学);Software Competence Center Hagenberg GmbH(哈根伯格软件能力中心有限公司)
内容:软件开发行业正在迅速采用机器学习,将现代软件系统转变为高度智能和自学习系统。然而,机器学习用于改善软件工程生存周期本身的全部潜力还有待发现,即,机器学习在多大程度上可以帮助减少软件工程的工作量/复杂性并提高最终软件系统的质量。到目前为止,还没有一项全面的研究来探索当前在软件工程生存周期阶段采用机器学习的最新技术水平。目的:本文解决了上述问题,旨在介绍机器学习在软件工程中越来越多的应用。方法:我们遵循经验软件工程的标准指南和原则,对机器学习在软件工程中的应用进行了系统的映射研究。结果如下:本研究介绍了一个机器学习的软件工程(MLSE)分类法的国家的最先进的机器学习技术,根据其适用于不同的软件工程生存周期阶段。总体而言,本研究严格选择并分析了227篇文章。结论:从所选的文章中,我们探讨了各种方面,这些方面应该有助于学术界和从业者了解在软件工程项目中采用机器学习技术的潜力。
2020-05-27 cs.LG cs.SE
SELM: Software Engineering of Machine Learning Models
Malek Ashtar University of Technology(马利克阿什塔尔理工大学);Sharif University of Technology(谢里夫理工大学)
任何机器学习模型的支柱之一是它的概念。使用软件工程,我们可以设计这些概念,然后开发和扩展它们。在这篇文章中,我们提出了一个SELM框架的机器学习模型的软件工程。然后,我们通过一个案例研究来评估这个框架。使用SELM框架,我们可以提高机器学习过程的效率,并以更少的处理硬件资源和更小的训练数据集提供更高的学习精度。这个问题突出了跨学科方法对机器学习的重要性。因此,在本文中,我们提供了跨学科团队对机器学习的建议。
2021-03-20 cs.AI cs.SE
A Systematic Literature Review on the Use of Machine Learning in Software Engineering
本研究通过系统性文献综述,梳理了机器学习在软件工程各核心领域的应用现状及所用的具体技术类型,填补了相关整合研究的空白。
2024-06-19 cs.LG cs.SE