A search-based file recommendation approach for infrastructure-as-code evolution

Research output: Contribution to journalJournal Articlepeer-review

Abstract

Infrastructure-as-Code (IaC) is increasingly adopted in modern software projects to automate the setup of infrastructure components like servers and networking through code-based files. However, as configurations grow in size, complexity, and coupling with other artifacts (e.g., test files), it becomes challenging for development teams to identify the right files to change. Therefore, we propose an automated approach to recommend files likely to co-change with a given IaC file. Our approach uses a mono-objective genetic algorithm (GA) with a combination of two heuristics: file similarity and change history. Then, GA searches for the optimal solution and generates a ranked list of files from the most to the least likely files to co-change with the given IaC file. We evaluated our approach on 20 open-source Ansible and Puppet projects. Results show that our approach correctly recommended files in 86 % of commits within the top 10 recommendations. Using Instance Space Analysis (ISA), we found that our approach performs better for IaC files relying heavily on external modules and maintained by dedicated developers. However, GA struggles with highly customized Ansible files. In Puppet projects, high path similarity did not consistently predict co-changing files, while higher content similarity improved the similarity heuristic.

Original languageEnglish
Article number112746
JournalJournal of Systems and Software
Volume234
DOIs
Publication statusPublished - Apr 2026
Externally publishedYes

!!!Keywords

  • File recommendation
  • Genetic algorithm
  • Infrastructure-as-code
  • Search-based software engineering (SBSE)

Fingerprint

Dive into the research topics of 'A search-based file recommendation approach for infrastructure-as-code evolution'. These topics are generated from the title and abstract of the publication. Together, they form a unique fingerprint.

Cite this