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.Comment: This paper is accepted for publication in the 17th international
conference on Software Architectur