Software Architecture Sustainability

Sustainability != Environment-friendly

Instead, software architecture sustainability here refers to long-lasting.
The environmental aspect is discussed in 30_Knowledge/Green Architectural Tactics.

Definition

venters.etal.2018.softwaresustainabilityresearch (pg. 10)

Software architecture sustainability. The capacity of that software system to endure in turn is contingent upon its structures and their ability to evolve. This is often referred to as architecture sustainability (i.e. the degree to which the architecture of the software system supports its continued maintenance and evolution over time without requiring substantial and expensive restructuring) [Koziolek, 2011].

Design Decisions

Studies

@Venters.etal.2018.SoftwareSustainabilityResearch

venters.etal.2018.softwaresustainabilityresearch (pg. 10)

Sustainable software architecture design decisions. This architecture, in turn, reflects the foundational design decisions that structure the system and its elements, so decision making is increasingly a focus of attention (van Vliet & Tang, 2016). Because architectural decisions have long-lasting effects and are expensive to revise, the capacity of each decision to remain valid is a primary concern to the architects. This notion has been described as the sustainability of software architecture design decisions (Zdun et al., 2013).

venters.etal.2018.softwaresustainabilityresearch (pg. 17)

The software architecture of a system is the product of a set of architectural design decisions. However, the knowledge of the architectural design decisions of a software-intensive system is easily lost, which leads to increased maintenance and evolution costs, and design erosion [Tofan, Galster and Avgeriou, 2011].

venters.etal.2018.softwaresustainabilityresearch (pg. 17)

Critical to architectural sustainability is capturing decision viewpoints and their rationale as first-class elements of architectural descriptions. The ability to understand architectural design decision is crucial for the evolution of the system in measuring how sustainable the AK is during architectural changes and can provide an estimation of the maintenance and documentation effort needed when new requirements trigger new decisions.

Debt

Sustainability Debt

Tech Choices

Tech Choices

Metrics

venters.etal.2018.softwaresustainabilityresearch (pg. 18)

Koziolek et al. [2011] suggested a number of more than forty metrics that could be used to estimate software sustainability of software architecture including evolution concerns. Further work by Koziolek et al. [2013] limited the number of metrics to twelve. Garcia et al. [2009] introduced the concept of "architectural bad smell" (i.e., an anti-pattern or inadequate design practice that violates a well-established design principle) exemplified by anti-patterns, architectural mismatch, defects and code smells that impact on the quality of designs, detailing four of these architectural smells as a class of cumulative design problems that lead to architectural refactoring.

Bad characteristics

Characteristics of non-sustainable software architectures:

πŸ”— References

The Karlskrona Manifesto for Sustainability Design

Book Sustainable Software Architecture by Dr. Carola Lilienthal

Web apps that last - Coding with Jesse

Nachhaltige Softwareentwicklung fΓΌr die Zukunft von itemis

The role of tech in climate change and climate justice | TechTarget (interview with Christoph Becker)

It's often not the hottest new tech that gives us the best impact. The projects that make me most excited are those that clearly are driven by and governed by a community where technology comes in -- where there is an actual, clearly identified need to do something meaningful that needs technology rather than a startup that wants to do AI for good and then is desperately looking for an application for some algorithm they already have.