Papers for

software maintainers

Papers whose findings have a practical use for this group, as judged from the abstract. Open a paper to read what it means in practice.

How ai agents change software libraries with dependency transformations

Agentic Dependency Transformations: Lessons from an Exploratory Case Study of Flask

Abstract: Modern software relies heavily on third-party libraries, requiring maintainers to balance the benefits of reuse against dependency-related maintenance and risk. We define dependency transformation as an emerging approach in which an AI coding agent alters how a repository handles external dependencies. Local reimplementation is one transformation strategy that recreates required functionality as local code; dependency transformation is broader and may include other strategies. In this emerging-results paper, we report an exploratory case study of Flask to explore dependency transformation strategies. We design experiments that show how available context shapes an agent's dependency discovery and iterative transformation of dependencies. The case yields five preliminary lessons. These lessons and the five-part research agenda position dependency transformation as an emerging research direction and motivate explicit transformation contracts, provenance constraints, preservation requirements, and independent validation criteria.

Thu 15 OctSoftware Engineering
The gist
Modern software often uses code from others, called dependencies, which can cause problems when those external pieces change or break. The authors studied how AI coding agents can change how software uses these dependencies, sometimes by replacing them with their own copy of the code. They looked at the popular Flask software to see how these AI agents find and change dependencies step-by-step. From this, they learned five important lessons about how AI agents handle dependencies and suggested ideas for safely managing these changes in the future.
Open → 2610.21372v1

Neural networks improve file to module mapping in software projects

When Does the Dependency Graph Help Code-to-Architecture Mapping?

Abstract: Architectural technical debt arises when a system's implementation drifts from its inten ded modular decomposition, while the mapping between source files and architectural modu les is missing, incomplete, or costly to maintain manually. We formulate code-to-archite cture mapping as semi-supervised node classification over a directed multi-relational de pendency graph, with files as nodes, typed dependencies as edges, and lexical features d erived from code identifiers and directory layout. Starting from a small labeled sample, an iterative self-training procedure expands the mapping to the remaining files. We com pare a graph convolutional network (GCN), a graph attention network (GAT), and a graph-f ree multi-layer perceptron (MLP), using identical features and training procedures for t he learned models, against a Naive Bayes reference. Across 100 runs on ten open-source J ava and C/C++ systems, all three neural models outperform the reference on both F1 metri cs. GAT achieves the highest averages of system-level median macro and micro F1, at 83.5 and 92.2, respectively, whereas MLP remains competitive or superior on several systems. On Chrome, the largest system with 18,343 files, GAT and GCN exceed MLP by 22 and 19 ma cro-F1 points, respectively, and have substantially fewer persistently misclassified fil es. Connectivity and homophily are associated with where neural message passing helps, w hile multi-relational aggregation outperforms a single merged edge type on every system for both GCN and GAT. A follow-up study finds that several model rankings depend on the training seed, qualifying smaller advantages without removing the large graph benefit ob served on Chrome.

Wed 14 OctSoftware EngineeringMachine Learning
The gist
Software projects often get messy over time, with files not clearly belonging to parts of the system as originally planned, making it hard to manage the system's architecture. The authors studied how machine learning, especially graph-based neural networks, can help assign files back to their architectural modules by looking at how files depend on each other and other clues. They tested several kinds of models across many real software projects and found that including the file dependency structure helps most for big, well-connected projects. Different models worked better in different cases, but overall, using the graph of file dependencies improved the accuracy of mapping files to their intended architectural parts.
Open → 2610.19769v1

Linux kernel visualized as interactive 3D city for evolution insight

Analysis and Visualization of the Linux Kernel's Software Evolution Using the City Metaphor

Abstract: The Linux kernel is one of the largest and longest-maintained open source projects in existence. With more than 40 million lines of code, understanding the kernel's internal structure and assessing its software evolution is a great challenge. In this paper, we present an approach to visualize the Linux kernel using our software visualization tool ExplorViz. We analyze commits from the Linux Git repository using a custom analysis service. The web-based frontend utilizes the 3D city metaphor for visualization of the software structure. Metrics such as the number of lines are collected for each file and are accumulated for directories and commits. Calculated metrics can be mapped to the building's dimensions or be displayed via a heat map. A wide range of visualization, search, and filter options enable the interactive exploration of the visualized data. We present both a visualization of all files in the kernel repository and a visual analysis of the code evolution of Rust files in the Linux kernel. Demo video: https://youtu.be/3ODnERqD8g0

Wed 7 OctSoftware Engineering
The gist
Understanding the Linux kernel, a huge and complex software project, is very hard because it has millions of lines of code that change over time. The authors created a tool that shows the Linux kernel like a 3D city where files are buildings, and their size or changes are shown by building height or colors. This visualization helps people explore and understand how the kernel’s code grows and evolves, especially looking at newer Rust language files. It makes it easier to see the structure and history of the kernel at a glance.
Open → 2610.09910v1

Logging code removal automation falls short on accurately pruning code

Towards Automatically Pruning Logging Code with Coding Agents: How Far Are We?

Abstract: Logging code supports debugging, monitoring, and software maintenance, but excessive logging can add noise, impose runtime overhead, and obscure diagnostic information. While prior research has extensively studied logging code generation and modification, logging removal remains comparatively underexplored. In this paper, we study developer logging removal practices and explore the use of coding agents for this task. We extract and manually validate logging removal cases from Python and Java repositories and derive 10 removal patterns and 11 removal reasons that characterize how and why logging code was removed in real-world software changes. We further construct LogRem, a dataset of 387 real-world cases covering direct logging statement removal, logging infrastructure removal, and logging replacement. We evaluate four coding agents with multiple model settings and compare their outputs with accepted real-world changes. Although 95.6% to 100.0% of outputs pass validity checks, only 11.1% to 19.6% remove the same logging code as the corresponding real-world change while preserving unrelated code. Agents differ through missed removals, extra removals, and unrelated code edits, with substantial variation across logging removal categories and trajectories. Execution cost varies widely, but higher cost does not consistently yield closer alignment. Commit messages and developer discussions provide the largest alignment gains, while taxonomy guidance consistently reduces runtime. Overall, our study establishes logging removal as a distinct software maintenance task and shows that reliable automation depends on accurately determining removal scope while preserving necessary code. To the best of our knowledge, this is the first study to examine logging code removal from this perspective.

Sat 3 OctSoftware EngineeringArtificial Intelligence
The gist
Logging helps programmers find and fix bugs, but too much logging can cause confusion and slow programs down. The authors looked at how developers remove logging code and created a list of common ways and reasons for removing it. They collected real examples of these removals and tested automated coding agents to see how well they can copy developers' logging removals. While these agents usually make valid code changes, they rarely match the exact logging removed by humans without affecting other code. The study shows that removing logging code automatically is a hard problem that needs precise understanding of what to remove.
Open → 2610.04716v1

Coding agents fix performance issues but do not always deliver improvements

Merged, Not Measured: An Empirical Study of Performance Issues Fixed by Coding Agents

Abstract: Coding agents open pull requests (PRs) that claim to speed up software, but studies of human performance fixes say little about how maintainers respond to such a fix or whether its claim holds. From the 71,677 agent PRs of AIDev v4, a text filter and codebook coding by language models and by the authors select 1,262 performance issues fixed by six agents in 582 repositories. We code each issue and its tests and re-execute 23 rejected and 30 merged fixes. (1) 57% of closed fixes are merged, 61% of rejections give no stated reason, and only 6 of the 23 re-executed rejected claims held under our three-run pilot on mostly agent-built workloads. (2) Acceptance rises with the agent's track record in the repository (31-37% to 70%) and with the repository's pre-opening merge rate on its other agent PRs (33% to 84%). Merged fixes delete a larger share of the lines they change (0.26 versus 0.15), a difference that holds within agent and within repository, with no such difference detected in the coded content, description, tests or measurements. (3) Repeated computation and redundant data processing cause 44% of the issues, and 46% of fixes are architectural-level. (4) Agents change tests in 37% of fixes and 11% carry a performance test or benchmark; of the 30 merged fixes, 18 met our delivery criterion, 3 fell short of the claim, 9 showed no significant gain or regressed, and 14 change behavior on untested inputs. The outcome tracks the repository's history with the agent rather than the coded content of the fix, and a merge does not show that the fix delivers what it claims.

Tue 29 SeptSoftware Engineering
The gist
Sometimes computer programs called coding agents make changes that claim to speed up software. The authors studied over a thousand such performance fixes across many projects. They found that only about half of these fixes were accepted and merged by the software maintainers. Even among accepted fixes, many did not actually improve performance when tested. The decision to accept a fix depended more on the history of the agent in that project than on whether the fix truly worked.
Open → 2609.37985v1