Forecasting Technical Debt: Using Social Network Analysis to Predict Architectural Smells

Applying Social Network Analysis Techniques to Architectural Smell Prediction

2019-03-01
Antonela Tommasel
Summary
Problem
Method
Results
Takeaways
Abstract

This research proposes a methodology to predict architectural smells in software systems by treating software dependency graphs as social networks. It utilizes Social Network Analysis (SNA) and Link Prediction (LP) techniques to anticipate unwanted future dependencies (such as cycles and hubs) before they manifest in the source code.

TL;DR

Modern software architecture often suffers from "architectural smells"—structural flaws like cyclic dependencies or hub-like components that degrade maintainability. This paper argues that instead of just detecting these smells after they appear, we can predict them. By modeling software modules as nodes in a social network and using Link Prediction (LP) algorithms, architects can anticipate harmful dependencies before they are even written into the code.

Background: The Limits of Reactive Detection

Most architects rely on tools like SonarQube or LattixDSM. While powerful, these tools are reactive: they flag a cyclic dependency only after a developer has committed the code. At that point, fixing the issue is expensive and often resisted by teams. The author posits that software evolution behaves much like a social network—certain modules "gravitate" toward each other based on their history and function. If we can model this "attraction," we can predict where the next architectural rot will occur.

The Core Insight: Software as a Social Network

The central hypothesis is that software dependency graphs follow patterns similar to human social structures. In SNA, the Homophily Principle suggests that "like associates with like." In software:

  • Topological Similarity: If Package A and Package B both depend on Package C, they are statistically more likely to form a direct dependency in the future.
  • Lexical Similarity: If two modules share a high degree of "vocabulary" (method names, comments, identifiers), they are likely solving related problems and may eventually become coupled.

Methodology: From Graphs to Forecasts

The author proposes a multi-tiered approach to transform a static code analysis into a predictive engine:

1. The Dependency Graph

The system extracts a Directed Graph () where:

  • Nodes: Top-level Java packages.
  • Edges: Usage, implementation, or extension relations extracted via bytecode analysis.

2. Prediction Strategies

The research explores three levels of sophistication:

  • Ranking-based: Uses simple similarity scores (e.g., Common Neighbors) to rank likely future links.
  • Machine Learning (SVM): A binary classifier is trained on features from Version and Version . It learns not just what relations exist, but also which ones never appear, reducing false positives.
  • Time Series (Gaussian Processes): Analyzes a window of multiple past versions to forecast the "trajectory" of a dependency's strength.

Proposed Approach Workflow Figure 1: The workflow from repository crawling to smell ranking.

3. Smell Filtering

A predicted "link" isn't a smell on its own. The methodology introduces Filters:

  • Cycle Filter: Specifically flags predicted links that would close a loop in the dependency graph.
  • Hub Filter: Identifies nodes that are predicted to exceed a threshold of incoming/outgoing edges, turning them into maintenance bottlenecks.

Experiments and Insights

The research tested these methods on long-lived Apache projects. Several key takeaways emerged:

  • Evolutionary Trends: Architectural smells, specifically cycles, tend to grow in size and complexity over time if left unchecked (RQ1).
  • Feature Power: While topological metrics (graph structure) are strong, combining them with content-based (lexical) features significantly improves the precision of link prediction (RQ2).
  • Imbalance Handling: Since "new smells" are rare compared to the total possible connections, the use of SVM with RBF kernels was crucial to handle the highly unbalanced dataset.

Critical Analysis & Future Outlook

While the paper provides a ground-breaking shift toward proactive architecture management, there are inherent challenges:

  • The "Intent" Gap: Unlike social networks where links are often organic, software dependencies are (ideally) the result of deliberate design. The model must learn to distinguish between a "natural" evolution and an "intentional" decoupling by an architect.
  • False Positives: Over-predicting smells could lead to "alert fatigue" for architects. The author suggests a reinforcement learning feedback loop where the architect's corrections help the model learn.

Final Takeaway

By treating software as a living, evolving social network, we can move away from "architectural archaeology" and toward "architectural forecasting." This approach allows teams to assess the cost of technical debt before it is incurred, effectively simulating the long-term impact of today's design decisions.

Find Similar Papers

Try Our Examples

  • Find recent papers that apply Link Prediction or Graph Neural Networks to the automated detection of architectural debt in microservices.
  • What were the seminal papers on Link Prediction in social networks by Liben-Nowell and Kleinberg, and how has the "homophily principle" been adapted specifically for technical artifact networks?
  • Explore research that integrates Natural Language Processing (NLP) with graph-based metrics to identify linguistic anti-patterns and architectural smells in Java-based open-source repositories.
Contents
Forecasting Technical Debt: Using Social Network Analysis to Predict Architectural Smells
1. TL;DR
2. Background: The Limits of Reactive Detection
3. The Core Insight: Software as a Social Network
4. Methodology: From Graphs to Forecasts
4.1. 1. The Dependency Graph
4.2. 2. Prediction Strategies
4.3. 3. Smell Filtering
5. Experiments and Insights
6. Critical Analysis & Future Outlook
6.1. Final Takeaway