References:
Bordage, Frédéric. Ecoconception web: les 115 bonnes pratiques: doper son site et réduire son empreinte écologique. Editions Eyrolles, 2022.
Cyrille Bonamy, Cédric Boudinet, Laurent Bourgès, Karin Dassas, Laurent Lefèvre, et al. Je code : les bonnes pratiques en écoconception de service numérique à destination des développeurs de logiciels. 2022, pp. 1–19. ffhal-03009741v5ff
Eco-design. A buzzword. The eco-design of software applications? Much less so!
We hear about it everywhere these days, and it’s often difficult to untangle actions that truly have an impact on improving energy efficiency and software performance from greenwashing. Indeed, the environmental impact of digital technologies is a growing concern that is far from negligible. We are seeing an exponential increase in the contribution of digital technology to global greenhouse gas (GHG) emissions.
And yet, software eco-design is not just a passing fad. It was already the focus of pioneering French researchers years ago. The objective of this research is to transform us from passive witnesses of the growing environmental impact of digital technologies into active participants. Through our daily actions and by collaborating in the creation of digital services, we generate significant impacts.
This is evidenced by the GDS EcoInfo article “Je code : les bonnes pratiques en écoconception de service numérique à destination des développeurs de logiciels,” which catalogs good eco-design practices for digital services, focusing particularly on software and the elements to be considered before, during, and after the software development phase.
In the style of Frédéric Bordage and his 115 Best Practices for Web Eco-design, EcoInfo goes further by generalizing these best practices to software as a whole.
Eco-designing a digital service means integrating environmental constraints into all development processes, in order to anticipate impact reduction throughout its lifecycle.
This shift—acting to reduce environmental impact—is both possible and achievable at every stage. That’s why the effect is greater when these aspects are taken into account as early as possible.
1. BEFORE eco-designing a digital service
- During the specification phase, think carefully about which features are truly necessary. According to Frédéric Bordage, “70% of features requested by users are never or rarely used.” Sounds familiar? Adding a feature no one uses. But determining what is actually used in large software (thousands or even millions of lines of code) isn’t trivial. For this, static and dynamic code coverage will help—more on that later, stay tuned.
- Still in the specification phase, push the reflection further by defining the required quality for the software. Wait—calculations don’t have to be 100% accurate? Exactly. Your eye isn’t Terminator’s. A slight drop in accuracy may be acceptable in some contexts and could save a lot of performance/efficiency—but it’s essential to quantify it. This reflection also leads to another dimension: deployment strategy, adapting the service to available platforms and their constraints.
- Again during specifications, consider the programming language. Python looks great on a handbag, but when it comes to computation intensity, there’s a real question to ask: is it just a PoC? Is it going to production? If yes, turning to a compiled language like C/C++ may be wiser. Many studies confirm that C/C++ remain among the most efficient and high-performance languages.
2. DURING eco-design of a digital service
- During the design phase, fight software obsolescence by optimizing early so additional features can be added later, even on a processor running an already-embedded software. This optimization phase isn’t always done when performance seems sufficient—but making optimization a reflex can only extend the product’s lifetime.
- As a developer, it’s essential to measure results directly, for example using static analysis to assess maintainability, and dynamic analysis to quantify resource usage. Dynamic analysis can also measure performance: execution time, power consumption, data size, number of requests, carbon emissions… You can even profile electrical consumption over time to reveal intensive phases.
- Throughout the lifecycle, minimize data volume exchanged, especially with inputs/outputs (disk access, network interface, etc.). For example, don’t transfer 64-bit data if 16 bits are enough.
These practices may sound generic, but they form a solid foundation for beginning a software eco-design approach. The real questions now are: How to implement them? What expertise is required? How to identify which technique will have the greatest impact?
At WedoLow, our expertise is to provide developers with a clear perspective on where optimization can have an impact (within the software itself), while recommending the most suitable optimization techniques.
📩 Get in touch with our team of experts to discuss this topic: sales@wedolow.com
Stay tuned for more in our upcoming articles!