Technical Debt and Green Software

Sustainability is becoming central in IT. A software system can be defined as green in two cases:

  • When it enables sustainability projects (e.g., a water waste monitoring system)
  • When the software itself is designed in such a way as to minimize its environmental impact, which in this specific case translates into minimizing electricity consumption.

Green Software Engineering aims to find best practices for implementing the second case. The optimization actions that can be implemented are many and applicable at different stages of software development. For example, one can intervene when writing code through specific quality analysis tools or when designing the software architecture, choosing cloud solutions with optimized elastic resource management.

Managing and removing Technical Debt is among the recommended practices. Recent studies have demonstrated a correlation between improved performance and removing code smells and architectural smells. At Arcan, we are studying a new metric, the “Sustainability metric,” to measure the carbon footprint caused by the presence of Technical Debt.

If these topics intrigue you, we recommend watching the “Debito Tecnico e Green Software” webinar by Ilaria Pigazzini, CEO at Arcan, and Marco Bodini, Network Engineer at Brennercom Spa, hosted by Bicocca Alumni (webinar language: Italian).


What are architectural smells?

What are architectural smells?

Architectural smells are undesired structures and anomalies in the architecture of your software. Their presence leads to an increase in technical debt, degrading the quality of your software and affecting when, where, and how much you change your code.

Smells result from (usually unintentional) design decisions that negatively impact the system’s internal quality. Smells create a technical context that increases the effort required to make changes in the future at the cost of short-term advantage.

One example of architectural smell is “Cyclic Dependency”, which appears when two or more artifacts (architectural components) of your system take part in a circular dependency.

When such an anomaly occurs, the

  • Reusability
  • Maintainability
  • Changeability

of those parts are negatively affected.

Moreover, reusing single parts of code becomes difficult: if one part changes, the others must change along. Indeed, this smell increases the coupling inside the system.

Smells create a technical context that increases the effort required to make changes in the future

How can you protect your code from architectural smells?

Architectural smells violate basic design principles, such as Modularity and Acyclicity.

Arcan currently detects the following smells:

  • Cyclic Dependency
  • Hub-Like Dependency
  • Unstable Dependency
  • God Component

See our dedicated Wiki to learn more about the different smells and how to remove them.

Download Arcan to find out where your architecture smells!