An Operating System (OS) combines multiple interdependent software packages, which usually have their own independently developed architectures. When a multitude of independent packages are placed together in an OS, an implicit inter-package architecture is formed. For an evolutionary effort, designers/developers of OS can greatly benefit from fully understanding the system-wide dependency focused on individual files, specifically executable files, and dynamically loadable libraries. We propose a framework, DepEx, aimed at discovering the detailed package relations at the level of individual binary files and their associated evolutionary changes. We demonstrate the utility of DepEx by systematically investigating the evolution of a large-scale Open Source OS, Ubuntu. DepEx enabled us to systematically acquire and analyze the dependencies in different versions of Ubuntu released between 2005 (5.04) to 2023 (23.04). Our analysis revealed various evolutionary trends in package management and their implications based on the analysis of the 84 consecutive versions available for download (these include beta versions). This study has enabled us to assert that DepEx can provide researchers and practitioners with a better understanding of the implicit software dependencies in order to improve the stability, performance, and functionality of their software as well as to reduce the risk of issues arising during maintenance, updating, or migration.
翻译:操作系统(OS)将多个相互依赖的软件包整合在一起,这些软件包通常具有各自独立开发的架构。当大量独立软件包被放置在同一操作系统中时,会形成一种隐式的软件包间架构。对于演化工作而言,操作系统设计者/开发者可从全面理解以单个文件(特别是可执行文件和动态可加载库)为中心的系统级依赖关系中获益甚多。我们提出一个名为DepEx的框架,旨在发掘单个二进制文件层面的精细软件包关系及其相关的演化变更。通过系统性地研究大规模开源操作系统Ubuntu的演化过程,我们验证了DepEx的实用性。DepEx使我们能够系统性地采集并分析2005年(5.04版)至2023年(23.04版)间发布的Ubuntu各版本中的依赖关系。基于对84个连续可下载版本(含测试版)的分析,我们的研究揭示了软件包管理的多种演化趋势及其影响。本研究证实,DepEx能够帮助研究人员和实践者更好地理解隐式软件依赖关系,从而提升软件稳定性、性能与功能,并降低维护、更新或迁移过程中出现问题的风险。