Analyse du cycle de vie des logiciels : Etat de l'art

Livre - Green patterns 3

Livre du Green Code Lab

A l’occasion de la publication du livre du Green Code Lab, nous publions une série d’article sur l’éco-conception des logiciels. Voici le premier de la série sur l’analyse du cycle de vie.

Pourquoi des ACV du logiciel ?

L’analyse des impacts du logiciel ne sera cohérente qu’en prenant en compte tout le cycle de vie du logiciel (du berceau à la tombe, i.e. de la conception à la désinstallation du logiciel). L’impact de la fabrication est en effet non négligeable pour certains logiciels (Trés grosses équipes de développement, infrastructure lourdes…), de la même manière qu’une fin de vie mal gérée peut être assez néfaste (cause par exemple d’obsolescence ressentie). La phase d’utilisation quand à elle est potentiellement tout aussi polluante, d’autant plus que le logiciel sera déployé à grande échelle. Les CMS comme Drupal ou Wordpress dont la performance n’est pas la meilleure et qui sont la base d’une trés grande partie des sites mondiaux en est l’exemple.

Les méthodologies actuelles d’ACV sur le logiciel ne sont cependant pas encore répandues et traitent généralement de la phase d’utilisation du logiciel intégré à du matériel (exemple de 19 grammes de CO2 : l’empreinte carbone d’un e-mail selon l’ADEME). L’immatérialité du logiciel est en effet complexe à traiter et cela pose au domaine de nouveaux problèmes : définition du périmètre du logiciel, intégration de la variable du nombre de déploiement, évolutivité constante du logiciel… Pourtant, l’ACV du logiciel lui même est un instrument de pilotage obligatoire pour l’éco-conception du logiciel. Les méthodologies de chiffrage et d’analyse du logiciel, existant depuis longtemps, sont une piste de réflexion pour de nouvelles méthodologies d’ACV.

Unité fonctionnelle comme élément de comparaison

La définition de l’unité fonctionnelle est par exemple critique et complexe pour les applications. Elle permet de comparer différents produits entre eux. Or le logiciel intègre une multitude de fonctionnalité. La définition de l’unité fonctionnelle doit prendre en compte cette contrainte. Comment comparer deux logiciels de bureautique compte tenu du nombre de fonctions, d’options et d’interfaces ?
On peut trouver des pistes de réflexions dans les points de fonctions utilisés dans le chiffrage des logiciels.

Les points de fonction permettent de mesurer la taille du logiciel en quantifiant les fonctionnalités offertes aux utilisateurs en se basant sur des modèles de calcul. Cette métrique est standardisée par l’IFPUG (International Function Point User’s Group) et par l’ISO. La méthode inventorie les éléments suivants et affecte des points :

  • ENT (entrée) : fonctions d’entrée de données de l’utilisateur : Créations, modifications, duplications, validations, suppressions
  • INT (interrogation) : fonctions de consultation des données : Listes, détails, annotations
  • SOR (sortie) : fonctions de restitution des données transformées : Calculs, graphiques, déductions.

La somme des points attribués à tous les composants donne la taille fonctionnelle du logiciel.

  • Portail complet de vente de pièces détachées sur internet : env. 6 000 points ;
  • Logiciel de navigation, type Carminat, Garmin, … : 1 000 points ;
  • Logiciel de comptabilité, type Ciel Compta : 2 000 points ;
  • Logiciel de gestion des nomenclatures industrielles : 4 000 points;
  • Logiciel d’analyse de temps et de la paie dans une grande entreprise : 5 000 points.

La définition de l’unité fonctionnelle peut ensuite se baser sur les points de fonction. Analyser l’impact de deux logiciels est alors plus cohérent si l’on compare des applications ayant le même nombre de points de fonction.

Déploiement des logiciels et analyse de l’impact 

Pour un produit physique, on arrive très bien à identifier la partie de fabrication nécessaire pour le produit fini. Or pour le logiciel, cela est beaucoup plus complexe : La fabrication du logiciel ne va pas en effet donner une unité mais plusieurs unités. Le logiciel va être en effet déployé à plus ou moins grande échelle. Nous pouvons comparer cela à la démultiplication d’un produit physique (qui elle n’est pas possible). Le déploiement permet de mutualiser l’impact de la phase de fabrication sur tous les utilisateurs mais il augmente aussi les impacts de la phase d’utilisation. Donc, deux approches sont possibles (et complémentaires) :

  • On considère le périmètre d’un logiciel unique. L’impact de la phase de fabrication va donc être divisé par le nombre de logiciels déployés
  • On considère la totalité des logiciels déployés. On ne divise plus l’impact de la phase de fabrication mais on multiplie l’impact de la phase d’utilisation.

La première approche est utile pour fournir des éléments de comparaison intéressants. Par exemple, si l’on veut évaluer l’impact comparatif de l’intégration de plusieurs logiciels, on pourra utiliser ces données. On pourra alors dire concrètement quel impact prendre en compte. L’impact d’un fournisseur sera beaucoup plus important si le logiciel n’a pas été déployé à grande échelle. Cela est normal car on doit assumer l’impact du fournisseur. Cependant cela ne doit pas être une excuse pour que les développeurs s’affranchissent d’intégrer des bonnes pratiques si ils déploient le logiciel à grande échelle. La deuxième approche est donc nécessaire pour analyser l’impact du logiciel vis-à-vis du déploiement. Une amélioration même mineure de l’impact lors de la phase d’utilisation aura alors un effet important sur un logiciel déployé largement. 

Autres spécificités des ACV logiciels 

Quelques autres spécificités des acv logiciels sont à noter :

  • Même si un produit logiciel est commercialisé, l’effort de fabrication n’est pas terminé. Il va en effet se prolonger sous la forme de la maintenance de correction et d’évolution. Donc l’impact de la phase de fabrication va augmenter. Compte tenu que le coût de maintenance peut atteindre 80 % du coût global de fabrication, cet impact n’est pas à négliger. L’analyse du cycle de vie est donc à mettre à jour régulièrement tout au long de la vie du logiciel.
  • Le logiciel évolue sous différentes formes et plus particulièrement sous différentes versions. Les nouvelles versions sont considérées comme une suite et on hérite donc de l’impact des versions antérieures
  • Toutes les parties du logiciel ne sont pas toujours développées par la société : des librairies sont parfois fournies par d’autres sociétés ou d’autres développeurs. L’impact de ses modules ne peut pas être négligé. Chaque module intégré doit donc être évalué afin d’en analyser le poids sur le logiciel fini.

L’ACV d’un logiciel n’est donc pas une étape simple. C’est cependant une étape obligatoire dans l’éco-conception. Des projets pilotes seraient nécessaires pour avancer sur le sujet… Intéressé ?


Commentaires

Intéressé, oui, mais cela me dépasse totalement. Le texte est parfaitement rédigé, j’ai parfaitement compris le thème détaillé, mais quoi faire ? Techniquement, incapable de suggérer aucune piste mais je reste attaché à votre sujet. Aussi, comment le suivre (à part via les commentaires) ?

entreprise (non vérifié) le 20/01/2012

C’est pas simple en effet …

Il apparait que l’ACV ne peut par définition qu’être une estimation. Mais basée sur un bon référentiel, elle est un bon indicateur.

Un bon référentiel, c’est une analyse du logiciel (comme avec les points de fonction) et une base de données de cas de référence.

La difficulté actuelle est, me semble-t-il, que l’évolution des technologies va trop vite pour avoir un recul satisfaisant pour les ACV des cas de référence cités plus haut. Le temps de faire l’ACV, et hop, on a déjà changé de version …

Peut être est-il trop ambitieux d’étudier des logiciels complexes qui évoluent sans cesse. On pourrait déjà commencer par mettre en place des métriques sur des “bouts de code”. Tiens, ce ne serait pas l’idée des Green Patterns ?

Yann le 20/01/2012

@Yann : ce n’est pas si compliqué qu’on veut nous le faire croire.

1) L’inflation des besoins en ressources (mémoire vive, cycles CPU, etc.) des nouvelles versions de logiciels est la principale source de l’obsolescence accélérée du matériel informatique.

2) Il suffit donc de réduire progressivement les besoins en ressources des nouvelles versions de logiciels pour allonger la durée de vie du matériel.

3) Tous les éditeurs de logiciels savent comment réduire le besoin en ressource de leurs logiciels. Il suffit de :
- ne pas entasser frameworks et autres objets les uns sur les autres,
- compiler le code.

4) Les éditeurs de logiciel ne le font pas parce que “bien développer” est largement moins rentable que de balancer des logiciels qui ne sont pas finis sur le marché.

CQFD

admin le 21/01/2012

@admin : Merci pour ce résumé brillant en quatre points !

C’est vrai que l’on est très loin de la notion de “responsabilité étendue du producteur” dans le domaine du logiciel… Concrètement, j’apprécie la démarche du Green Code Lab et de ses guide d’éco-conception du logiciel, mais je la trouve un peu trop abstraite et éloignée des préoccupations du grand public et des DSI. Or c’est à ce niveau que se déroule le grand drame de l’obsolescence programmée des matériels…

Une idée me travaille depuis quelques temps : pourquoi ne pas publier un “rétro-banc d’essai” indiquant tous les mois un logiciel dont la dernière version tourne toujours parfaitement sur de vieilles machines méritantes ? (Ces configurations de test sont à définir à l’avance, évidemment.) Les gens n’ont pas idée de ce que peuvent faire des ordinateurs de 10 ans d’âge, si on les entretient bien…

David Bourguignon (non vérifié) le 16/02/2012

@David : je n’ai pas le temps de réaliser un “rétro-banc d’essai”. En revanche je peux te donner quelques infos sur ma config.

- Thinkpad T23
- Pentium III 900 MZh
- 512 Mo de RAM
- 16 Mo de carte vidéo

J’y utilise :
- MS Windows 2000 SP4
- MS Office 2000
- Firefox 3.6
- VLC 8.6a

Ce sont toutes d’anciennes versions qui fonctionnent très bien sur une petite configuration.

D’ailleurs, à force ce downgrader certains logiciels, je me demande vraiment ce que Vista et 7 apportent de plus que Windows XP

admin le 17/02/2012

@admin : Merci pour ces informations ! Cette configuration est évidemment mini-mini… Bravo ! :-)

J’y repense : plutôt que des “rétro-bancs d’essai”, on pourrait lancer la mode du “vintage computing”… Être fier d’utiliser une vielle machine en parfait état de marche, la montrer à ses amis, etc. Le monde de la mode s’est bien emparé des montres CASIO à cristaux liquides des années 70-80… :-) À creuser !

Par ailleurs, je viens de publier un billet de blogue sur le sujet du “bloat” (en anglais, cela m’arrive parfois) et j’y fais référence à cet article…

David Bourguignon (non vérifié) le 20/02/2012

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement.