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.
Ссылки и действия
Дополнительные ресурсы: