Best practice for an ecodesigned software

Published on 18 January 2024

References: 

  • Bordage, Frédéric. Ecoconception web: 115 best practices: boost your site and reduce your carbon footprint. Eyrolles editions, 2022
  • Cyrille Bonamy, Cédric Boudinet, Laurent Bourgès, Karin Dassas, Laurent Lefèvre, et al.. I code: best practices in digital service ecodesign for software developers. 2022, pp.1-19. ffhal-03009741v5ff

Ecodesign. A buzzword. The ecodesign of software applications. Not so much!

It’s all over the place these days, and it’s often difficult to separate the actions that have a real impact on improving energy efficiency and software performance from the greenwashing. Indeed, the environmental impact of digital technology is a growing area of concern that is far from negligible. The contribution of digital technology to global greenhouse gas (GHG) emissions is growing exponentially.

However, software ecodesign is not just a trend, it was already a crossroads for French researchers a few years ago. The aim of these various research projects is to transform us from witnesses of the growing impact of digital technology on the environment to actors, because through our daily actions and by collaborating in the production of digital services, we generate very significant impacts.

The proof of this can be found in this GDS EcoInfo article, ” I code: best practices in digital service ecodesign for software developer “, which lists the best practices for ecodesigning a digital service, with a particular focus on software, and the elements that need to be considered before, during and after the software development phase.

Following in the footsteps of Frédéric Bordage and his 115 best practices for web ecodesign, EcoInfo goes one step further by extending these best practices to software in general.

Ecodesigning a digital service means integrating environmental constraints into all development processes to anticipate the reduction of impacts throughout its lifecycle.

Actions to reduce environmental impact are possible and achievable at every stage. Therefore, the impact will be greater if these aspects are taken into account as early as possible.

 

By focusing on the stages before and during the design of a digital service, we can identify the following elements, enriched by our look at software optimization:

1. BEFORE the ecodesign of a digital service

  • During the specification phase, think carefully about the functionalities required by the software: according to Frédéric Bordage, “70% of the functionalities requested by users are never or rarely used”. I’m sure you’re familiar with the idea of implementing an unused feature. However, it’s not so easy to keep track of what is and isn’t used in a piece of software (especially when it contains thousands or even millions of lines of code). We’ll talk about static and dynamic code coverage later, so stay tuned.

  • During the specification phase, we’ll take our thinking a little further by looking at the quality we want in our software. What? A calculation may not be 100% accurate? That’s right. You don’t have Terminator’s eye. A small loss in quality may be perfectly acceptable in some cases and may allow you to gain a great deal in performance/efficiency, but it’s important to quantify it. This reflection on the quality required of our software can be used to address another issue: how to deploy the service according to the characteristics of the available platforms and their constraints, to best adapt to the context.

  • During the specification phase, you need to think about the language you’re going to use. Python looks cool on a purse, but depending on the type of processing you’re doing, the intensity of the computation, and what you’re trying to implement, there’s a real question to ask: Is this a PoC? Does it need to go into production? If so, a compiled language like C/C++ may be in order. In fact, numerous studies show that C/C++ remains one of the most efficient and effective languages.

 

2. DURING the ecodesign of a digital service

  • Combat software obsolescence during the design phase by optimizing software from the start, potentially adding functionality to software already embedded on a processor. This optimization phase is not carried out systematically when the required performance of the application is satisfactory, and yet the reflex to systematically carry out an optimization pass can only be beneficial for the life of your products.
  • As a developer, it’s important to be able to see and measure your efforts directly, for example, by analyzing your code through static analysis to determine how difficult the software is to maintain, and dynamic analysis to quantify resource usage. Dynamic analysis can also be used to measure software performance: execution time, power consumption, data size, number of queries, carbon emissions… Finally, the study can be taken a step further by profiling power consumption over time to discover the different intensive phases of the software.

  • Throughout all phases of the lifecycle, reduce the amount of data exchanged as much as possible, especially for inputs/outputs (e.g., disk or network interface accesses). For example, one of the things you can work on to reduce the impact of data is to work on its size (don’t carry 64-bit data when 16 bits would be sufficient).

 

These few best practices may seem very general, but they provide a solid foundation on how to build a software ecodesign approach. The questions now are how to implement them? What expertise is required? Or how can we target the technique that will have the greatest impact?

WedoLow’s expertise lies in providing developers with an informed view of the areas where optimization can have an impact (within the software), while suggesting the most appropriate optimization techniques. Learn more in our next articles!