Actions pour le développement durable du logiciel

Phase de fabrication

  • Principaux impacts environnementaux :

    • déplacements,

    • fonctionnement d'une entreprise de service dématérialisée (moyens humains et matériels pour le développement).

  • Actions recommandées (typique pour les entreprises de service dématérialisées) :

    • favoriser le télétravail pour réduire les déplacements,

    • prolonger la durée de vie du matériel et des infrastructures,

    • favoriser la gestion de configuration,

    • économiser les consommables et l'énergie sur le matériel,

    • mettre en place un cadre de travail agréable ,

    • favoriser la non-discrimination.

Phase de distribution

  • Principaux impacts environnementaux :

    • moyens techniques (serveurs, réseaux, terminaux, etc.)

    • moyens humains

    • éventuellement, affrètement et production de manuels utilisateurs et supports matériels (DVD).

  • Actions recommandées (typique pour les entreprises de bien de consommation) :

    • privilégier une distribution dématérialisée,

    • éviter des installations de trop grosses tailles en espace disques et des performances surdimensionnées,

    • permettre une installation fonctionnelle modulaire pour diminuer l'espace disque et mémoire requis,

    • respect des données personnelles,

    • pratiques commerciales claires pour le client.

Phase d'utilisation

  • Principaux impacts environnementaux :

    • énergie consommée lors de l'utilisation,

    • production des équipements nécessaire sà l'utilisation du logiciel (serveurs, terminaux, etc.)

    • consommables,

  • Actions recommandées :

    • bonne conception pour éviter l'obésiciel et une consommation importante de ressource :

      • étudier les choix d'architecture du logiciel et décomposer les fonctionnalités par service,

      • bien choisir les langages et bibliothèques, favoriser la réutilisation, et optimiser (quitte à re-développer) les fonctions majeures et consommatrices,

      • mettre en place des outils de mesure de la qualité et de la consommation pour favoriser la maintenance,

      • optimiser la volumétrie des données nécessaires.

    • considérer les aspects sociaux :

      • accessibilité au plus grand nombre,

      • privilégier l'usage : le logiciel doit d'adapter à l'usage et ne proposer que les fonctionnalités nécessaires,

      • sûreté et sécurité du produit,

      • respect des données personnelles.

Phase de fin de vie

  • Principaux impacts environnementaux :

    • désinstallation,

    • fin de vie des données (recyclage, réutilisation, anonymisation) ou de l'accés à un service (désinscription)

  • Actions recommandées :

    • pérennisation du code (documentation et évolutivité),

    • désinstallation propre,

    • récupération facile des données,

    • interruption du logiciel ou du service sans contrepartie dissuasive.

Cycles de vie projet et développement durable durabilité

  • Généralement, éviter la programmation quick and dirty.

    Une dette technique se transforme généralement en dette environnementale : obésiciel, code non maintenu et abandonné, code mal optimisé, etc.

  • L'aspect environnemental peut être facilement intégré comme exigences dans la plupart des modèles de cycle de vie.

    Exemple du cycle en V : lister les exigences environnementales dans la phase descendante de l'expression des besoins, les dériver tout au long de la phase descendante et vérifier leur intégration dans la phase ascendante.

  • Avantages environnementaux dans les méthodes agiles :

    • meilleure convergence avec les besoins utilisateurs (pas de fonctions inutiles, retour rapide du client sur le produit, meilleure maîtrise des coûts et des délais en pouvant arrêter le projet à tout moment),

    • processus itératif permettant d'ajouter si nécessaire à chaque cycle au backlog des tâches de réduction de la dette technique et de mesures et corrections des contraintes environnementales.

    • effet rebond possible avec une perte de la posture de sobriété : le client peut être trop enthousiaste devant les fonctionnalités proposées ou le développeur peut chercher à faire le maximum de fonctionnalités possibles pour maximiser le coût du produit

Code d'éthique

  • Contradictions existantes entre développement durable et intérêt économique

    • sobriété vs. facturation/marketing du produit

    • coût des approches durables (ACV, développement supplémentaire, etc.)

  • Appétence de plus en plus importante des ingénieurs pour un impact positif et durable de leur travail sur la société.

  • Proposition conjointe de code d'éthique des ingénieurs logiciels par l'ACM (Association for computing) et l'IEEE-CS en 1997 (DOI: 10.1145/265684.265699).

    Principes fondamentaux en faveur de :

    • Public : Les ingénieurs logiciels doivent agir en conformité avec l'intérêt public.

      Exemple : accepter la responsabilité pour son travail ; modérer les intérêts de l'ingénieur, de l'employeur, du client, des utilisateurs avec le bien public ; informer les autorités appropriées de tout danger pour l'utilisateur, l'environnement ou le grand public ; etc.

    • Client et l'employeur : Les ingénieurs logiciels doivent agir d'une manière qui est dans le meilleur intérêt de leur client et l'employeur et conforme à l'intérêt public.

      Exemple : être honnête dans ses propres compétences et leurs limites ; garder les informations privées confidentielles, tant qu'elles ne sont pas contraires à l'intérêt public et à la loi ; etc.

    • Produit : Les ingénieurs logiciels doivent s'assurer que leurs produits et modifications connexes sont conformes aux plus hautes normes professionnelles possibles.

      Exemple : Réaliser toute action de maintenance aussi professionnellement que le développement d'un nouveau produit ; garantir une documentation suffisante, notamment considérant tout problème rencontré et solutions adoptées, sur tous ses projets ; etc.

    • Jugements : Les ingénieurs logiciels doivent maintenir l'intégrité et l'indépendance de leur jugement professionnel.

      Exemple : maintenir une objectivité professionnelle face à tout logiciel ou document à évaluer ; refuser de participer à tout comité ou organisation dans laquelle l'employeur peut avoir de potentiels conflits d'intérêt non-déclarés, etc.

    • Management : Les responsables de l'ingénierie du logiciel et les dirigeants doivent souscrire et promouvoir une approche éthique de la gestion du développement de logiciels et de la maintenance.

      Exemple : Ne pas empêcher quelqu'un d'obtenir un poste pour lequel il est correctement qualifié ; s'assurer qu'il y a un juste accord sur la propriété de toute propriété intllectuelle à laquelle un ingénieur a contribué, etc.

    • Profession : Les ingénieurs logiciels doivent porter la réputation de la profession conformément à l'intérêt public.

      Exemple : ne pas promouvoir son intérêt personnel au dépens de la profession, d'un client ou d'un employeur ; être précis sur les caractéristiques d'un logiciel développé, évitant non seulement les propos faux mais aussi les propos vagues, hypothétiques, manipulateurs ou douteux.

    • Collègues : Les ingénieurs logiciels doivent être justes et aider leurs collègues.

      Exemple : encourager ses collègues à adhérer à ce code ; assister ses collègues dans leur développement professionel ; créditer justement le travail des autres et ne pas s'octroyer un crédit non-mérité ; etc.

    • Soi-même : Les ingénieurs logiciels doivent participer à l'apprentissage tout au long de la pratique de leur profession et promouvoir une approche éthique de la pratique de la profession.

      Exemple : Améliorer ses propres connaissances concernant le développement logiciel ; reconnaître que ne pas respecter ce code est en contradiction avec être un ingénieur développeur responsable et professionnel ; etc.

Benjamin Lussier Paternité - Partage des Conditions Initiales à l'Identique