<p>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 88.45% and 96.46%, and Brier scores of 0.201 and 0.243, respectively. We find that our solution is able to find the right dependency for a given change within a list of 10 recommended changes in 67.19% of the evaluated cases. While we compare our solution to an Agentic-AI equipped with regex-based search tools, the machine learning-based approach still outperforms the agentic-AI one, suggesting the need for further studies to investigate how to improve the agentic-AI solution by equipping it with additional tools, prompt engineering techniques, and/or fine-tuning. Furthermore, this study provides actionable recommendations for practitioners, researchers, and tool builders working with large-scale software systems.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

A recommendation system for predicting dependencies among software changes insights from an empirical study on OpenStack

  • Ali Arabat,
  • Mohammed Sayagh,
  • Jameleddine Hassine

摘要

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 88.45% and 96.46%, and Brier scores of 0.201 and 0.243, respectively. We find that our solution is able to find the right dependency for a given change within a list of 10 recommended changes in 67.19% of the evaluated cases. While we compare our solution to an Agentic-AI equipped with regex-based search tools, the machine learning-based approach still outperforms the agentic-AI one, suggesting the need for further studies to investigate how to improve the agentic-AI solution by equipping it with additional tools, prompt engineering techniques, and/or fine-tuning. Furthermore, this study provides actionable recommendations for practitioners, researchers, and tool builders working with large-scale software systems.