Tag: software sustainability

Software Sustainability as a Framework

As a researcher on software sustainabilty, I first tried to search for a definition of the term. But software sustainability turned out not to behave like a simple term. It crosses multiple dimensions and domains. It evolves over time in an unclear time period which can change depending on which aspect is being talked about. Software sustainability considers people, organizations, ecosystems, and technologies. I kept wondering, am I missing something in how I’m choosing my definition of software sustainability? As software and software development practices continually change and new technology developed that then reshape our environment, how could any single definition fully encompass this?

I have now been researching software sustainability for a couple of years, and the problem I faced on day one is the same problem I feel today: What is software sustainability? When people ask me this question, I pause longer than I should. Even though I have answered this question many times, I still get stuck on the best way to describe it. My current research explores industry perspectives on software sustainability, and those perspectives vary widely depending on context, priorities, and organizational concerns as well.

Ergonomic professionals may suggest other work conditions.

Then one day, I tried thinking of sustainability not as a definition but as a framework, and I realized that trying to force software sustainability into a definition may have been the real issue.


Why a Definition Doesn’t Quite Work

Oxford describes definition as ‘a statement of the exact meaning of a word, especially in a dictionary,’ It creates boundaries and clarifies meaning. But definitions are reductive by design, they compress ideas into something succinct.

One of the dimensions identified in sustainability!

This works well for concepts like “protocol” or “algorithm,” but software sustainability is different. Any attempt to define it quickly requires further definitions: Are we talking about making a system more sustainable through the software? Or about the sustainability of the software itself? Or the sustainability of the socio-technical environment around it?

A single definition cannot hold all of this without a lot of explanation on how the term is being used.


Software Sustainability as a Framework

A framework provides structure. It breaks a concept into components or dimensions that can be examined, measured, and discussed. A framework explains how to think about a concept, not just what it is. It can also highlight the limitations of its own structure by making explicit what is included and what is not.

There is one framework that I know of that has been developed towards identifying software’s impact across five dimensions called sustainability awareness framework (SUSAF) which has had multiple publications identifying the usefulness of a framework for sustainability in education and industry.

A definition cannot as directly be used in this same way to develop, structure, or operationalize a concept.


Why Frameworks Work Better for Sustainability Research

Thinking of software sustainability as a framework gives researchers several advantages:

  • It avoids oversimplification. The complexity of sustainability is preserved rather than reduced away.
  • It aligns more easily with research goals. The specific elements relevant to a project can be made explicit.
  • It fits naturally with software engineering. Software engineering already relies on structured models (e.g. quality models, architectural models, lifecycle models) and sustainability integrates well when expressed similarly.
  • Frameworks can be validated. Their components can be tested, refined, and supported by evidence.
  • Frameworks are adaptable. They can evolve as technologies, practices, and sustainability challenges change.

Thinking of sustainability as a framework acknowledges that it is complex and multidimensional. It touches code, infrastructure, people, organizations, and the planet. It changes as software evolves and as its impacts unfold.

A definition indicates understanding.
A framework enables action and analysis.

For researchers in software engineering and software sustainability, shifting the question from “What is sustainability?” to “How is sustainability structured?” makes the concept more usable and meaningful.

A Path to a Brighter Future: Understanding the Relationship Between Software Quality and Sustainability

Image Source: Unsplash

Sustainable development is the development that meets the needs of the present without compromising the ability of future generations to meet their own needs.

Gro Harlem Brundtland, 1987

In recent years, sustainability has emerged as a critical concern in various domains. While environmental sustainability remains a focal point, sustainability also encompasses social and economic dimensions. In our technologically driven society our daily lives encompass many increasing digital needs; researching how to create sustainable software is important. This research area has many gaps to explore.

One aspect of software sustainability can be seen in this example: software that crashes frequently is not sustainable. The user will think this product is low-quality and will probably stop using it. However, the relationship between software quality and sustainability is not always this obvious. Also, sometimes trade-offs between sustainability and quality may be necessary, necessitating a comprehensive understanding of this relationship.

One area where software sustainability and quality have a positive relationship is cost efficiency. Well-crafted code typically requires less maintenance and suffers from fewer defects, translating to reduced operational costs over the software’s lifecycle. Moreover, code optimization and energy-efficient design further contribute to long-term savings, aligning with sustainability goals.

Software sustainability also encompasses social aspects, extending beyond technical considerations. Clean, understandable code not only facilitates collaboration among developers but also can foster a supportive community around the software. The societal impact can also include the software user if the software includes a social influence.

At the center of software sustainability lies the need to understand and address the needs of end-users. By prioritizing quality and sustainability, developers can deliver products that not only meet user expectations but also foster trust and loyalty among stakeholders. This user-centric approach enhances the software’s longevity and cultivates a sense of responsibility towards its societal and environmental impacts.

By embracing a focus on quality and sustainability, software products should be evaluated by more than their functionality. Focusing on sustainability and quality not only benefits end-users but also contributes to the well-being of companies, society, and the environment at large. I look forward to sharing more as the research progresses.