Les bonnes pratiques d’un logiciel écoconçu
Références :
- 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
L’écoconception. Buzzword. L’écoconception des applications logicielles. Un peu moins !
On en entend parler partout en ce moment et il est souvent difficile de démêler les actions ayant un véritable impact pour améliorer l’efficience énergétique et la performance des logiciels du greenwashing. En effet, l’impact environnemental du numérique est un sujet d’attention en pleine croissance qui est loin d’être négligeable. On observe une augmentation exponentielle de la contribution du numérique dans les émissions de Gaz à Effet de Serre (GES) globales mondiales.
Et pourtant, l’écoconception logicielle n’est pas juste un phénomène de mode, mais était déjà le chemin de croix de chercheurs Français il y a quelques années. L’objectif de ces différents travaux de recherche est de nous transformer de témoin de la croissance de l’impact du numérique sur l’environnement à acteur, car au travers de nos actions quotidiennes et en collaborant à la production de services numériques, nous générons des impacts bien significatifs.
Preuve grâce à cet article du GDS EcoInfo, « Je code : les bonnes pratiques en écoconception de service numérique à destination des développeurs de logiciels », recensant les bonnes pratiques de l’écoconception d’un service numérique en s’intéressant tout particulièrement au logiciel, et aux éléments à prendre en compte avant, pendant et après la phase de développement logiciel.
À la mode de Frédéric Bordage et ses 115 bonnes pratiques d’écoconception web, EcoInfo va plus loin en généralisant les bonnes pratiques au logiciel en général.
Éco-concevoir un service numérique demande à intégrer des contraintes environnementales dans tous les processus de développement, afin d’anticiper la réduction des impacts pendant son cycle de vie.
Cette action d’agir pour réduire l’impact environnemental est possible et réalisable à chaque étape. C’est pourquoi l’effet est plus important quand la prise en compte de ces aspects intervient au plus tôt.
En se concentrant sur les étapes avant et pendant la conception d’un service numérique, on peut noter les éléments suivants, enrichis par notre regard sur l’optimisation des logiciels :
1. AVANT l’écoconception d’un service numérique
- Durant la phase de spécification, avoir une réflexion poussée sur les fonctionnalités nécessaires au logiciel ; en effet, d’après Frédéric Bordage, “70% des fonctionnalités demandées par les utilisateurs ne sont jamais ou rarement utilisées”. Je suis sûre que ça vous parle, l’implémentation d’une feature qui ne sert pas. Pourtant, pas si simple d’avoir un regard sur ce qui est utilisé ou non dans un logiciel (surtout quand il fait des milliers voire millions de lignes de code). Pour cela, on parlera un peu plus tard de couverture statique et dynamique de code, stay tuned.
- Durant la phase de spécification encore, pousser la réflexion un peu plus loin en abordant la qualité requise sur notre logiciel. What ? Un calcul peut ne pas être exact à 100% ? Et oui. Votre œil n’est pas celui de Terminator. Une petite perte de qualité peut être tout à fait acceptable dans certains cas et vous permettre de gagner beaucoup en performance / efficience, mais il est essentiel de la quantifier. Cette réflexion sur la qualité requise sur notre logiciel peut permettre d’aborder un autre axe : réfléchir au déploiement du service en fonction des caractéristiques des plateformes disponibles et de ses contraintes pour s’adapter au mieux au contexte.
- Durant la phase de spécification toujours, réfléchir au langage utilisé. Le Python, c’est sympa sur un sac à main mais il y a une vraie question à se poser en fonction de la nature des traitements effectués, de l’intensivité du calcul, mais également de ce que l’on souhaite mettre en œuvre : est-ce un PoC ? Est-ce que cela doit passer en production ? Si c’est le cas, peut-être que se tourner vers un langage compilé comme le langage C/C++ peut être intéressant. En effet, de nombreuses études indiquent que le C/C++ reste parmi les langages les plus performants et efficients.
2. PENDANT l’écoconception d’un service numérique
- Durant la phase de conception, combattre l’obsolescence des logiciels en les optimisant dès le départ de manière à potentiellement pouvoir rajouter des fonctionnalités sur un logiciel déjà embarqué sur un processeur. Cette phase d’optimisation n’est pas systématiquement réalisée dans le cas où les performances requises sur l’application sont satisfaisantes, et pourtant, prendre le réflexe de systématiquement faire une passe d’optimisation ne peut qu’être bénéfique pour la durée de vie de vos produits.
- En tant que développeur, il est essentiel de constater et mesurer directement les efforts réalisés, par exemple en analysant son code au travers d’une analyse statique, afin de déterminer la difficulté de maintenabilité du logiciel, et d’une analyse dynamique, pour quantifier l’usage des ressources. L’analyse dynamique peut également permettre de mesurer les performances du logiciel : temps d’exécution, consommation électrique, taille des données, nombre de requêtes, mesure émissions carbone… Pour finir, l’étude peut être poussée jusqu’au profilage de la consommation électrique dans le temps pour découvrir les différentes phases intensives du logiciel.
- Durant toutes les phases du cycle de vie, réduire au maximum le volume de données échangées, notamment avec les entrées / sorties (par exemple, les accès au disque ou à l’interface réseau). Par exemple, l’un des points qui peut être travaillé pour réduire l’impact des données est d’en travailler la taille (ne pas transporter des données sur 64 bits si 16 peuvent suffire).
Ces quelques bonnes pratiques peuvent paraître extrêmement génériques mais sont une réelle base solide pour entamer une approche d’éco-conception logicielle. Les questions qui se posent désormais sont comment les mettre en œuvre ? Quelle expertise faut-il ? ou encore comment cibler la technique qui aura le plus d’impact ?
L’expertise apportée par WedoLow c’est de proposer au développeur un regard éclairé sur les zones où l’optimisation peut avoir un impact (au sein du logiciel), tout en proposant les techniques d’optimisation les plus adaptées.
Contactez notre équipe d’expert échanger sur ce sujet : sales@wedolow.com
Plus d’infos dans nos prochains articles !