An ML-based Approach to Predicting Software Change Dependencies: Insights from an Empirical Study on OpenStack

2508.05034v2 cs.SE, cs.LG 2025-08-11
Авторы:

Ali Arabat, Mohammed Sayagh, Jameleddine Hassine

Резюме на русском

## Контекст Современные программные системы становятся все более сложными, что повышает важность точной идентификации и управления зависимостями между изменениями. Например, изменение, использующее функцию, должно быть зависимо от изменения, которое добавило эту функцию. Установление таких зависимостей позволяет CI/CD-пайплайнам эффективно создавать и оркестрировать изменения, избегая сбоев сборки и неполных развертываний функций. Зависимости часто пересекаются между несколькими компонентами и командами, что создает сложности для разработки и развертывания программного обеспечения. Они могут служить разным целям, например, вводя новые функции, управляя конфигурациями или даже изменяя документацию. Для решения этих проблем авторы основываются на эмпирическом исследовании проекта OpenStack, где обнаружили, что значительная часть изменений в нем зависит друг от друга. ## Метод Чтобы упростить процесс управления зависимостями, авторы предлагают подход, основанный на машинном обучении (ML). Он состоит из двух моделей: первая оценивает вероятность зависимости между изменениями, а вторая определяет конкретные пары зависимых изменений. Модели используют данные из OpenStack, включающие сведения о временных отношениях между изменениями. Архитектура моделей основывается на предварительной обработке данных с использованием хэш-функций для создания эмбеддингов изменений. Эти модели обучаются с помощью техник машинного обучения для классификации и регрессии. Эксперименты проводятся на большом наборе данных, позволяющем оценить точность и надежность моделей в реальных условиях. ## Результаты Эксперименты показали, что модели достигли высокой точности. Точность классификации (AUC) для первой модели составила 79.33%, а для второй — 91.89%. Также были измерены Brier-скоры, достигшие 0.11 и 0.014, что указывает на высокую точность прогнозирования. Модель второго типа продемонстрировала приемлемую точность в топ-k предсказаниях, но потребовала более подробного анализа для точности в предсказании конкретных пар. Эти результаты показали, что модели способны проводить анализ зависимостей с высокой точностью, что может улучшить процесс разработки в OpenStack. ## Значимость Предлагаемый подход может быть применен в различных сферах, где управление зависимостями является критически важной задачей. Например, он может использоваться для повышения эффективности CI/CD-пайплайнов, уменьшения времени разработки и устранения ошибок в развертываниях. Одним из преимуществ является повышение производительности разработчиков, уменьшая необходимое время для поиска зависимостей. Благодаря этой технологии можно значитель

Abstract

As software systems grow in complexity, accurately identifying and managing dependencies among changes becomes increasingly critical. For instance, a change that leverages a function must depend on the change that introduces it. Establishing such dependencies allows CI/CD pipelines to build and orchestrate changes effectively, preventing build failures and incomplete feature deployments. In modern software systems, dependencies often span multiple components across teams, creating challenges for development and deployment. They serve various purposes, from enabling new features to managing configurations, and can even involve traditionally independent changes like documentation updates. To address these challenges, we conducted a preliminary study on dependency management in OpenStack, a large-scale software system. Our study revealed that a substantial portion of software changes in OpenStack over the past 10 years are interdependent. Surprisingly, 51.08% of these dependencies are identified during the code review phase-after a median delay of 5.06 hours-rather than at the time of change creation. Developers often spend a median of 57.12 hours identifying dependencies, searching among a median of 463 other changes. To help developers proactively identify dependencies, we propose a semi-automated approach that leverages two ML models. The first model predicts the likelihood of dependencies among changes, while the second identifies the exact pairs of dependent changes. Our proposed models demonstrate strong performance, achieving average AUC scores of 79.33% and 91.89%, and Brier scores of 0.11 and 0.014, respectively. Indeed, the second model has a good top-k recall across all types of pairs, while the top-k precision has room for improvement.

Ссылки и действия