Table of Contents
Fetching ...

Tracing the Lifecycle of Architecture Technical Debt in Software Systems: A Dependency Approach

Edi Sutoyo, Paris Avgeriou, Andrea Capiluppi

TL;DR

This paper investigates architecture technical debt (ATD) and its lifecycle by tracing ATD items from their introduction to repayment using a dependency-focused approach. It leverages FAN-IN and FAN-OUT metrics, together with SLOC and cyclomatic complexity, to assess how ATD reshapes class connectivity and how the frequency of changes relates to architectural dependencies. Analyses on ATD versus Non-ATD items from an Open Source dataset reveal that repayment generally increases connectivity (FAN-IN by about 57.5% and FAN-OUT by about 26.7%), while ATD files are modified less than Non-ATD files; nevertheless, effect sizes are small, indicating modest structural impact. The study highlights that while resolving ATD can improve short-term quality, it may centralize dependencies and complicate future maintenance, and it advocates combining FAN-IN/FAN-OUT with additional architectural measures for a fuller understanding of ATD's effects.

Abstract

Architectural technical debt (ATD) represents trade-offs in software architecture that accelerate initial development but create long-term maintenance challenges. ATD, in particular when self-admitted, impacts the foundational structure of software, making it difficult to detect and resolve. This study investigates the lifecycle of ATD, focusing on how it affects i) the connectivity between classes and ii) the frequency of file modifications. We aim to understand how ATD evolves from introduction to repayment and its implications on software architectures. Our empirical approach was applied to a dataset of SATD items extracted from various software artifacts. We isolated ATD instances, filtered for architectural indicators, and calculated dependencies at different lifecycle stages using FAN-IN and FAN-OUT metrics. Statistical analyses, including the Mann-Whitney U test and Cliff's Delta, were used to assess the significance and effect size of connectivity and dependency changes over time. We observed that ATD repayment increased class connectivity, with FAN-IN increasing by 57.5% on average and FAN-OUT by 26.7%, suggesting a shift toward centralization and increased architectural complexity after repayment. Moreover, ATD files were modified less frequently than Non-ATD files, with changes accumulated in high-dependency portions of the code. Our study shows that resolving ATD improves software quality in the short-term, but can make the architecture more complex by centralizing dependencies. Also, even if dependency metrics (like FAN-IN and FAN-OUT) can help understand the impact of ATD, they should be combined with other measures to capture other effects of ATD on software maintainability.

Tracing the Lifecycle of Architecture Technical Debt in Software Systems: A Dependency Approach

TL;DR

This paper investigates architecture technical debt (ATD) and its lifecycle by tracing ATD items from their introduction to repayment using a dependency-focused approach. It leverages FAN-IN and FAN-OUT metrics, together with SLOC and cyclomatic complexity, to assess how ATD reshapes class connectivity and how the frequency of changes relates to architectural dependencies. Analyses on ATD versus Non-ATD items from an Open Source dataset reveal that repayment generally increases connectivity (FAN-IN by about 57.5% and FAN-OUT by about 26.7%), while ATD files are modified less than Non-ATD files; nevertheless, effect sizes are small, indicating modest structural impact. The study highlights that while resolving ATD can improve short-term quality, it may centralize dependencies and complicate future maintenance, and it advocates combining FAN-IN/FAN-OUT with additional architectural measures for a fuller understanding of ATD's effects.

Abstract

Architectural technical debt (ATD) represents trade-offs in software architecture that accelerate initial development but create long-term maintenance challenges. ATD, in particular when self-admitted, impacts the foundational structure of software, making it difficult to detect and resolve. This study investigates the lifecycle of ATD, focusing on how it affects i) the connectivity between classes and ii) the frequency of file modifications. We aim to understand how ATD evolves from introduction to repayment and its implications on software architectures. Our empirical approach was applied to a dataset of SATD items extracted from various software artifacts. We isolated ATD instances, filtered for architectural indicators, and calculated dependencies at different lifecycle stages using FAN-IN and FAN-OUT metrics. Statistical analyses, including the Mann-Whitney U test and Cliff's Delta, were used to assess the significance and effect size of connectivity and dependency changes over time. We observed that ATD repayment increased class connectivity, with FAN-IN increasing by 57.5% on average and FAN-OUT by 26.7%, suggesting a shift toward centralization and increased architectural complexity after repayment. Moreover, ATD files were modified less frequently than Non-ATD files, with changes accumulated in high-dependency portions of the code. Our study shows that resolving ATD improves software quality in the short-term, but can make the architecture more complex by centralizing dependencies. Also, even if dependency metrics (like FAN-IN and FAN-OUT) can help understand the impact of ATD, they should be combined with other measures to capture other effects of ATD on software maintainability.
Paper Structure (19 sections, 3 figures, 8 tables)

This paper contains 19 sections, 3 figures, 8 tables.

Figures (3)

  • Figure 1: Data distribution of FAN-IN and FAN-OUT for ATD #1
  • Figure 2: Distribution of FAN-IN and FAN-OUT: Introduction vs. Payment Phases of the ATD items
  • Figure 3: Boxplot of Number of Changes: ATD vs. Non-ATD Files