Eco-Conception Logicielle

Cette page est dédiée à la conception éco-responsable d'applications numériques. Ce travail repose sur deux principes de bases, la sobriété numérique et l'accessibilité numérique, qui sont malgré tout fortement liées.


Normes, Référentiels et Recommandations Applicables

  1. Référentiels Internationaux
    1. Règles pour l'Accessibilité des Contenus du Web WCAG
    2. Ce document édité par le W3C a le statut de Recommandation. Il énoncent de nombreuses règles pour permettre l'accessibilité du contenu du Web à toutes personnes quels que soient leurs connaissances techniques ou leur compréhension de la langue ou quelles que soient leurs situations de handicap, qu'il s'agisse de personnes aveugles ou malvoyantes, de personnes sourdes ou malentendantes, de personnes ayant des troubles d'apprentissage, des limitations cognitives, des limitations motrices, des limitations de la parole, de la photosensibilité et les personnes ayant une combinaison de ces limitations fonctionnelles.

      NB: Toutes règles édictées ci-dessous se référant aux recommandations WCAG du W3C sera suivi du sigle WCAG en apostrophe avec le lien renvoyant vers l'URL concernée.

  2. Référentiels Nationaux (France)
    1. Référentiel Général d'Amélioration de l'Acessibilité RGAA
    2. Ce document, édité par la Direction Interministérielle du Numérique (DINUM) de la République Française, établit les modalités techniques d'accessibilité des services en ligne de l'état, des collectivités territoriales et des établissements publics qui en dépendent ainsi que certains services privés; sa création fait suite à l'obligation d'accessibilité imposée par l'article 47 de la loi du 11 février 2005 pour « l'égalité des droits et des chances, la participation et la citoyenneté des personnes handicapées ». Il découle de la norme européenne EN 301 549 édité par l'Institut Européen des Normes de Télécommunications (ETSI) qui elle même découle du référentiel pour l'accessibilité des contenus du Web (WCAG) édité par le W3C cité précédemment.

      NB: Toutes règles édictées ci-dessous se référant au référentiel RGAA sera suivi du sigle RGAA en apostrophe avec le lien renvoyant vers l'URL concernée.

    3. Référentiel Général d'Ecoconception de Services Numériques RGESN
    4. Ce document, édité par la Direction Interministérielle du Numérique (DINUM) de la République Française, a pour objectifs d'énumérer les bonnes pratiques pour la conception de logiciel répondant à des objectifs de réduction de la consommation de ressources informatiques et énergétiques et de réduction de la contribution à l'obsolescence des équipements informatiques ou de communication numérique.

      NB: Toutes règles édictées ci-dessous se référant au référentiel RGESN sera suivi du sigle RGESN en apostrophe avec le lien renvoyant vers l'URL concernée.

  3. Référentiels Associatifs
    1. Le Guide d'Ecoconception de Services Numériques GESN
    2. Ce guide présente les principales bonnes pratiques de design pour réaliser des services numériques à l’empreinte environnementale réduite. Il aborde les questions d’écoconception en tentant de faire le pont avec l’accessibilité, le design de l’attention ou encore la diversité. Ce guide est édité par l'association "Designers Ethiques" qui est une structure française de recherche-action sur le numérique et les pratiques de design.

      NB: Toutes règles édictées ci-dessous se référant au référentiel RGESN sera suivi du sigle GESN en apostrophe avec le lien renvoyant vers l'URL concernée.


Eco-conception d'Interfaces Utilisateurs

Cette section traite de l'éco-conception de parties "Front-End" de sites Web, d'Interface Utilisateur d'applications logicielles et d'Interface Homme Machine (IHM). Est ainsi abordé le design graphique des pages affichées à l'écran, la prise en compte des données entrées via un périphérique utilisateur (clavier, souris, pavé ou écran tactile, appareils HID, ...), la navigation entre les pages ou différentes parties de l'interface utilisateur. Cette section concerne donc les UI/UX Designers.

Sont donnés ici des principes généraux avec quelques notions de codage non exaustives.

  1. Eléments Interactifs
  2. Les technologies numériques et les plateformes Web doivent être accessibles à toutes personnes y compris celles souffrant d'handicaps visuels, auditifs, physiques, de la parole, cognitifs, du langage, d'apprentissage ou neurologiques (d'après TAG Ethical Web Principles §2.4, Draft Note éditée par le W3C).

    • Définition
    • Le terme "Elément Interactif" désigne tous les éléments qui permettent aux utilisateurs d'interagir avec les applications "Front End" via l'interface graphique : boutons, liens, éléments de formulaires, zones de saisies, etc...

    • Accessibilité des fonctionnalités des éléments WCAG | RGAA
    • Toutes les fonctionnalités d'une interface utilisateur doivent être accessibles et utilisables au moyen d'un clavier ou d'un émulateur de clavier (logiciel de commande ou de saisie vocale par exemple). Les applications graphiques conçues pour une utilisation avec un dispositif de pointage (souris, clavier tactile, ...) doivent proposer des fonctionalités alternatives utilisable par clavier (touches de fonctions, touches directionnelles, raccourcis claviers, commandes textuelles).

    • Eléments de code associés

  3. Images et autres contenus multimédias
    • Images Matricielles ou Images Vectorielles ?
    • Les images matricielles sont composées de pixels de couleurs dont les caractéristiques et les dispositions sont mémorisées dans des variables tableaux appellées matrices. Elles sont privilégiés dans la photographie car elles permettent d'afficher beaucoup plus de détails et d'éditer une palette de couleurs bien plus large que les images vectorielles. Leur principal inconvénient est que leur poids en octet augmente très rapidement avec la résolution de l'image, il faut donc choisir une résolution adaptée à l'écran utilisé et au but recherché.

      Les images vectorielles sont définies par des équations vectorielles décrivant les caractéristiques (longueur, courbure, ...) des différentes formes géométriques constituant l'image. Elles sont très pratiques pour les dessins, les graphiques, les schémas, les diagrammes. Leur poids en octet est largement inférieur au poids d'une image matricielle équivalente. Elles sont redimensionnables à l'écran sans perte de qualité, contrairement à une image matricielle. Les logiciels transforment l’image vectorielle en image matricielle pour l’afficher à l’écran.

    • Lazy Loading ou Eager Loading ?
    • Le lazy loading ou chargement différé est une technique qui permet d'optimiser le processus de chargement d'une interface utilisateur en permettant de différer le chargement d'éléments externes non essentiels. Cela facilite la navigation sur internet en augmentant la vitesse de chargement d'une page Web par la réduction du chemin de rendu critique, le chargement des ressources externes ne se faisant que lorsque l'utilisateur navigue à proximité du point d'ancrage sur la page de celles-ci. Egalement, cela est très utile pour des applications d'e-commerce qui renvoient vers de nombreuses ressources externes lourdes en données telles que des photos ou des vidéos; ne seront alors chargées que les ressources réellement utiles à l'utilisateur.

      Le eager loading est la technique opposée au lazy loading, elle consiste à charger toutes les ressources d'une interface utilisateur en une seule fois au risque d'augmenter la quantité de données à réceptionner et le temps nécessaire à l'affichage de l'interface.

    • Eléments de code associés
      • En HTML, l'intégration de contenu multimédia s'effectue comme décrit dans le lien suivant: MDN - Multimédia et Intégration .
      • En HTML, CSS ou JavaScript le chargement différé (lazy loading) peut être appliqué sur de multiples ressources et avec de multiples stratégies comme indiqué dans le lien suivant: MDN - Le chargement différé .

  4. Animation d'Eléments WCAG | RGAA | GESN
    • Définition
    • Une transition désigne le process qui permet de modifier progressivement, selon une courbe d'accélération donnée, les propriétés d'un élément graphique. Une animation désigne le process qui consiste à modifier l'apparence d'un éléments graphique en passant par une succession de transition intermédiaire. Cela se définit par un état initial, un état final, et un ou plusieurs états intermédiaires gérés par des fonctions de temporisation ou Keyframes.

    • Protéger les utilisateurs photosensibles
    • La mise en oeuvre d'une animation nécessite le respect de règles de contrastes de couleurs ou de luminosité afin d'éviter d'exposer l'utilisateur à des surcharges sensorielles susceptibles de provoquer une fatigue visuelle ou des crises d'épilepsie. On s'assurera nottament, que l'utilisateur ne subisse pas plus de trois flashs par seconde; un flash étant défini comme une alternance de luminosité relative de 10% ou plus par rapport à la luminosité relative maximum, où la luminosité relative de l'image la plus sombre est en dessous de 0,80 et où « une alternance » est définie comme étant une augmentation suivie d'une diminution ou une diminution suivie d'une augmentation.

    • Rester sobre pour ne pas encombrer la machine ou perturber l'utilisateur
    • Les animations doivent rester sobres et ajustables ou désactivables au besoin, cela afin de ne pas perturber la concentration de l'utilisateur de l'interface et ne pas l'exposer à des surcharges cognitives. De même le codage des animations doit être optimisé au mieux pour ne pas alourdir la page et éviter ainsi d'augmenter le temps de chargement de l'interface graphique et l'encombrement de la mémoire vive du terminal.

    • Garantir l'utilisabilité des éléments WCAG | RGAA
    • Certains éléments interactifs peuvent être paramétrées pour changer d'états au bout d'un certains délais: fenêtres de saisies ou de confirmation d'actions limitées dans le temps par exemple. Cependant, à moins que ces contraintes de temps soient justifiées par des besoins technologiques ou organisationnels (synchronisation de tâches, organisation d'évènements temps réels,...), l'utilisateur doit pouvoir en ajuster les paramètres afin de pourvoir utiliser pleinement les fonctionnalités des éléments à son rythme et sans risque d'être victime de perturbations cognitives.

    • Eléments de code associés

  5. Apparence visuelle des éléments
    1. Feuilles de Styles
    2. Une Feuille de Style est un ensemble de règles définissant l'apparence visuelle à l'écran des éléments constituants un document, une page, ou une interface utilisateur codé en HTML ou XML. Elle définit par exemple les police de caractères, le positionnement des titres, des paragraphes, des images à l'écran, le comportement visuel des éléments interactifs, etc... Elle peut être écrite en CSS ou XSL.

      Une Feuille de Style peut être utilisée de manière interne, son code est alors écrit entre deux balises STYLE au sein de l'en-tête de métadonnées du document ou de l'interface graphique, ou être utilisée de manière externe, son code est alors écrit dans un fichier .CSS ou .XSL distinct référencé dans l'en-tête de métadonnées du document ou de l'interface graphique via l'élément LINK. On préfèrera cependant utiliser des feuilles de style externes, car cela permet de gérer l'affichage graphique de plusieurs pages à partir d'un seul endroit, plutôt que de reécrire le code pour chaque page; cela permet également lors d'utilisation d'un agent utilisateur d'accessibilité de substituer une feuille de style par une autre mieux adaptée aux besoins et contraintes de l'utilisateurs.

    3. Polices de caractères
    4. Les polices de charactère choisies limiteront la fatigue occulaire et garantiront aurant que possible l'accès aux contenux aux personnes souffrantes de troubles ou défficiences visuelles. L'usage de polices de caractères spéciales peux nécessiter le téléchargement de fichiers complémentaires, il est donc préférable de privilègier les polices standards déjà incluses dans les bibliothèques du navigateur.

    Il ne doit pas être nécessaire d'avoir un niveau élevé de connaissances techniques pour utiliser le Web ou toutes autres applications numériques à destination du public. Leur accessibilité doit être possible même au travers de réseaux à faible bande passante ou avec des équipements peu performants. Leurs interfaces utilisateur doivent être construite de manière cohérente et intuitive; elles doivent pouvoir s'adapter aux besoins des utilisateurs en rendant possible l'utilisation d'agents utilisateurs et permettant ainsi d'installer des feuilles de style, des extensions de navigateur d'assistance, des bloqueurs de contenu ou de scripts indésirables ou de vidéos lues automatiquement. (suivant TAG Ethical Web Principles §2.4 et TAG Ethical Web Principles §2.12, Draft Note éditée par le W3C)

    Plus spécifiquement pour les pages Web codées en langage HTML, l'arborescence et le choix des balises utilisée pour le codage est fondamental pour garantir une bonne navigabilité. En HTML chaque balise a une fonctionnalité qui lui est propre, des balises différentes peuvent avoir un rendu graphique similaire sur la page mais ne seront pas interprêtées de la même manière par les agents utilisateur.

    1. En-Têtes de Métadonnées
    2. Les Métadonnées ou En-Têtes de Métadonnées sont des éléments qui décrivent les caractéristiques des éléments contenus dans un fichier informatique, elles servent à l'indexation et à la recherche dans les bases de données ou les moteurs de recherche, elles sont essentielles au bon fonctionnement des agents utilisateurs, des services d'accessibilité ou d'aide à la navigation. Elles ne s'affichent pas à l'écran et sont invisibles pour l'utilisateur.

      Pour les pages internet codées en langage HTML l'En-Tête de Métadonnées est identifiable par la balise HEAD, ce qui la dissocie du corps principal du document qui est identifié par la balise BODY, elle contient les feuilles de style ou de script internes ou externes. Plus d'informations consultable sur le lien ci-après: Stucturation du code d'une page HTML.

    3. Feuilles de Script
    4. Une Feuille de Script désigne pour une page Web, le code exécutable, généralement JavaScript, déterminant le comportement des applications ou fonctionnalitées de la page. Elle peut être interne, elle est alors définie entre deux balises SCRIPT au sein de l'en-tête de métadonnées de la page (section HEAD), elle peut être utilisée de manière externe, grace à un fichier .JS référencée dans l'ent-tête de métadonnées grâce à l'élément d'utiliser SCRIPT avec un attribut src pointant vers le fichier du script en utilisant l'URL du fichier.

    5. En-tête, Pied de Page, Elément de Navigation RGAA
    6. La deuxième étape consiste à organiser la page affichable à l'écran, cela se fait à l'intérieur de l'élément BODY). Le rendu graphique du document contiendra l'en-tête (élément HEADER), le contenu principal de la page (élément MAIN, le pied de page (élément FOOTER et eventuellement une section complémentaire (élément ASIDE). L'en-tête, le pied de page et la section complémentaire sont généralement communs à toutes les pages d'un même site Web.

    7. Structuration de l'Information RGAA
    8. L'organisation du contenu de la page se fait au travers de sections, chapitres et paragraphes de manière logique et fluide. Les titres de pages ou de sections, des en-têtes de chapitres devront être concis mais suffisamment précis pour décrire clairement le contenu et donner envie de le lire, ils devront contenir des mots clefs pertinents pour optimiser le référencement dans les moteurs de recherche. Des volets de navigation aideront le lecteur à se repérer sur la page ou le site en renvoyant vers ceux-ci. Les paragraphes devront être court et direct pour permettre à l'utilisateur d'accéder rapidement à l'information souhaitée.

    9. Style rédactionnel
    10. Le style rédactionnel choisit devra faire en sorte de captiver le lecteur sans le détourner du sujet abordé, le vocabulaire utilisé sera adapté au public concerné. L'usage de liste sera privilégiée aux longues phrases énumératives. La compréhension du sujet abordé sera facilité par des exemples concrets, des shémas, images et vidéos adaptées. De nombreux liens renvoyant vers des articles complémentaires au sujet traité, ou vers les sources ayant servi à la rédaction du contenu seront ajoutés.

    11. Délai de consultation
    12. Les contraintes de temps lorsqu'elles sont mises en place doivent être justifiées par des besoins technologiques ou organisationnels (synchronisation de tâches, organisation d'évènements temps réels,...). Si une limite de temps de visionnage ou d'utilisation est fixée pour un contenu ou une fonctionnalité, l'utilisateur doit pouvoir l'ajuster en fonction de sa capacité. Pour les évènements temps réel (web-conférence, enchère,...) la demande d'ajustement doit pouvoir être faite aux administrateurs de ceux-ci. Lorsque la conception de la page prévoit des déplacement, clignotement, ou défilement d'éléments y associer des mécanismes permettant de les accélérer, décelérer, mettre en pause ou arrêter.

  6. Applications d'Accessibilité
    1. Agent Utilisateur
    2. Un Agent Utilisateurs (User-Agent) est une application logicielle cliente qui au cours d'une connexion internet, échange des données avec le serveur consulté afin de permettre à celui-ci de fournir les informations numériques demandées dans un format adapté aux paramètres définis par l'utilisateur et à la configuration du matériel que ce dernier utilise. Un Agent Utilisateur rend ainsi accessible les sites Web quelque soit le type de terminal utilisé (PC, Smart Phone, télévision, enceinte connectée,...) ou quelque soit les besoins spécifiques de l'utilisateur, à condition qu'il puisse accéder correctement aux feuilles de styles ou aux scripts renseignés dans l'en-tête de métadonnées de la page consultée.

    3. Lecteur d'Ecran
    4. Un lecteur d'écran est une application logicielle qui retranscrit le contenu affiché sur un écran de manière non visuelle, comme par exemple sous forme de synthèse vocale ou d'icônes en braille ou sonores. Un lecteur d'écran apporte ainsi une aide aux personnes malvoyantes, analphabètes ou ayant des troubles d'apprentissage.

    5. Service d'Accessibilité
    6. Un service d'accessibilité est une application conçue pour adapter une interface aux besoins de son utilisateur, qu'il s'agisse du fait d'une situation d'handicap ou qu'il s'agisse d'une situation particulière rendant difficile l'interaction avec l'appareil (utilisation lors de la conduite d'un véhicule, utilisation dans un espace public très bruyant ou necessitant de la discrétion, ...).


Eco-conception d'applications logicielles

    Cette section traite de l'écoconception des applications logicielles dans leur partie "Back-End" (par opposition à la partie "Front-End" qui fait l'objet de la section précédente)

  1. Définir précisément le besoin et éliminer ce qui n'est pas essentiel

  2. La définition du besoin ne doit pas être négligé, elle doit être réalisé avec rigueur et précision. Cela se fait en concertation avec le client ou les utilisateurs du produit. Il est important de dissocier ce qui indispensable et incontournable pour l'utilisateur de ce qui est secondaire ou superflu.

  3. Evaluer la valeur ajoutée de l'application

  4. Définir une utilisation de l'application simple et fluide

  5. A ce stade du projet il est important d'énumérer les cas d'utilisation, identifier les chemins nécessaires pour leurs exécutions, et identifier les doublons.

  6. Concevoir en priorité pour les terminaux les moins performants

  7. L'objectif ici est de concevoir des applications capable de fonctionner sur n'importe quelles machines y compris les machines les plus anciennes. Pour cela il est nécessaire de veiller à :

    • Bien optimiser le code
    • Utiliser des bibliothèques légères et éviter celles qui nécessitent beaucoup de ressources. Minimiser l’utilisation de la mémoire en évitant les allocations excessives et en libérant l'espace mémoire non nécessaire à la tâche en éxécution. Concevoir les algorithmes de manière simple et efficace.

    • Choisir des langages et des frameworks légers
    • Eviter les langages de programmation de trop "Haut Niveau", préférer des langages légers et de plus "Bas Niveau" comme C/C++, Python, ou Java, ce qui facilitera lors de la programmation la gestion des ressources de la machine. De même, choisir des frameworks qui ne sont pas trop gourmands en ressources.

    • Concevoir des interfaces utilisateurs minimalistes
    • Eviter les animations complexes et prioriser la simplicité. Des effets visuels trop complexes peuvent ralentir les machines les moins performantes. Pour en savoir plus se référer à la section précédente.

    • Apporter une attention particulières aux tests de fonctionnalités
    • Moins les machines utilisées sont performantes, plus grand est le risque de beug et de plantage! Une attrention particulières doit être apportée sur la simulation des conditions limites.

  8. Pour les applications Web, prévoir une utilisation hors ligne


Optimisation de la Performance Réseau

  • Réduire la taille des fichiers et la quantité de données réceptionnées

    • Coder plutôt que de recourir à des technologies "No-Code" ou "Low-Code"
    • Les technologies "No-Code" ou "Low-Code" bien que très pratiques car elles permettent de développer assez rapidement des interfaces utilisateurs tout en ayant que très peu de compétences informatiques, sont à éviter si l'on souhaite maîtriser le poids des données et par conséquent la vitesse de chargement. En effet en utilisant ce type de technologies il y a un risque important de générer des données redondantes et inutiles ce qui a innévitablement un impact sur la performance de l'application ou du site web.

      Par exemple, pour la conception d'une paghe Web il est préférable de coder directement en HTML puis CSS plutôt que de recourir à des CMS (Système de Gestion de Contenu); cela permet de mieux maîtriser le codage, éviter les balises redondantes ou inutiles générées automatiquement, et par conséquent réduire la taille des fichiers nécessaires à l'affichage de la page. Pour les feuilles de style utiliser le codage CSS en privilégiant une organisation en classe de style.

    • Refuser le superflux et garantir la qualité du contenu
    • Identifier précisément le besoin, ne garder que les fonctionnalités réellement utiles et indispensables, éliminer ce qui n'est pas essentiel, éviter les répétitions et les redondances d'informations.

      Une application mal structurée complexe perd l'utilisateur, l'amenant à effectuer des requêtes inutiles et par voie de conséquence des transferts de données inutiles.

    • Gestion des mises à jour

    • Pour toutes mises à jour automatique prévoir un mécanisme à la disposition de l'utilisateur pour la mettre en pause, l'arrêter ou pour en contrôler la fréquence des mises à jour.

  • Optimisation du chemin de rendu critique

  • Le "chemin de rendu critique" ("critical rendering path" en anglais) représente au sein d'un navigateur le processus de traitement des données reçues (code HTML, CSS, javaScripts) après exécution d'une requête HTTP(S) GET pour les transformer en pixels rendus. Ce processus se déclenche dès la réception des données et se décompose en 5 principales étapes:

    • Construction du DOM
    • Le Document Object Model, abrégé DOM, est un document interne au navigateur qui définit la structure d'une page Web en fonction du code HTML renseigné dans le fichier source; plus concrètement il transforme le contenu des différentes balises HTML en Objet informatique.
    • Construction du CSSOM
    • Le Cascading Style Sheet Object Model, abrégé CSS-OM, est un document interne au navigateur complémentaire au DOM qui décrit comment les Objets définis dans ce dernier seront affichés en fonction du code CSS renseigné dans le fichier source.
    • Définition de l'Arbre de Rendu
    • Après avoir créé séparément le DOM et le CSSOM, le navigateur génère une Arbre de Rendu qui est représentation combiné des Objets décris dans chacun de ces documents en les regroupants par Classes d'Objets, énumérants l'ensemble de leurs attributs et propriétés, et créant leurs liens d'héritage.
    • Construction de la mise en page ("Layout" ou "Reflow")
    • A partir de l'Arbre de Rendu le navigateur connait le contenu des éléments qui doivent être visibles, avec quels styles ils doivent être affichés et dans quels ordres; cependant il lui reste encore à calculer en "pixels absolus" la position et la taille exacte des éléments à afficher en fonction de leurs propritétés et des caractéristiques du terminal de l'utilisateur.
    • Affichage du résultat à l'écran ("Paint" ou "Rasterization")
    • Il s'agit ici de l'étape ultime du processus de rendu à l'écran d'une page Web, cela consiste à reformater le "Layout" précédemment établis en fonction des contraintes de reglage de l'écran du terminal de l'utilisateur.

    Pour plus d'information sur le sujet voir l'article publié par l'entreprise KADISKA: "Qu’est-ce que le chemin de rendu critique en performance web".

  • Concevoir des requêtes dont le poids n'exède pas le MSS (Maximum Segment Size)

  • Les systèmes de communications s'échangent les données par l'envoie d'entitées élémentaires appellées, suivant les protocoles ou couches réseaux, trames, paquets, segments ou datagrammes; celles-ci sont limitées en taille, ce qui peux nécessiter la fragmentation des fichiers pour en assurer la transmission. Le processus de fragmentation et défragmentation de fichiers nécessite des ressources informatiques et du temps de calcul, ainsi autant l'éviter.

    On définit le Maximum Segment Size (MSS) la quantité maximale de données en octets pouvant être transmise en une seule fois, sans fragmentation entre une machine source et une machine destination. Le MSS est calculé à partir du MTU (Maximum Transmission Unit) auxquels on soustrait les tailles du Header et du Trailer; le MTU, le Header et le Trailer étant des caractéristiques du protocole réseau utilisé. En cas de différents protocoles réseaux en série on retiendra le plus petit des MTU de tous les protocoles.

    Exemple de valeur de MTU selon le type de réseau:

    • Ethernet : MTU par défaut = 1 500 octets
    • PPPoE : MTU = 1 492 octets
    • ADSL ou ATM25 : MTU = 1 468 octets
    • ADSL en Wi-Fi : MTU = 1 468 octets

Pour en savoir plus

Commentaires

Posts les plus consultés de ce blog

La Blockchain au service de l'Economie Sociale et Solidaire

Impact du numérique sur l'environnement et le vivant

Promouvoir un Numérique porteur des valeurs de l'Economie Sociale et Solidaire