Catégorie : Logiciels

Concours d’éco-conception Legends of Code : Résultats

D2SI a organisé, en collaboration avec GreenIT.fr, un concours de programmation destiné aux étudiants en dernière année d’école d’ingénieur ou d’université.

Le concours a rassemblé le 17 novembre 9 binômes d’étudiants issus de diverses écoles (Supinfo, Efrei, UTC, Mines de Nantes, Epita, Esaip, Telecom Sud Paris, Université Paris 6). Les étudiants avaient pour objectif de développer un client et un serveur TCP permettant la création et la résolution d’une grille composée de pièces de tuyauterie, d’émetteurs et de récepteurs.

Les contraintes de développement étaient les suivantes : Serveur Windows et base SQL, technos courantes permises (C, C++, Java…). Pour la partie client, le choix était libre pour les binômes. Certains étaient sous Windows, d’autre sur Linux ou Mac. Un binôme a même choisi une plateforme Android !

Aucun binôme n’a réussi à finaliser un produit. Au fur et à mesure que la fin approchait, le jury espérait… mais au final rien. Voici notre analyse:

Alors qu’une infrastructure de test était en place, les premiers tests n’ont été lancé que 3 heures avant la fin. Le serveur permettait de tester par exemple le protocole de communication ou alors de mesurer la consommation d’énergie côté serveur. Dommage car appliquer très tôt des tests (avec des itérations régulières comme le préconise l’agilité) aurait permis d’éviter un effet tunnel assez néfaste. On retrouve malheureusement cette mauvaise pratique pas uniquement chez les étudiants !

Même constat sur les optimisations ou bonnes pratiques qui pourraient être appliquées plus tôt : Mettre un test conditionnel sur la désactivation des printf et autres informations de debug. Si l’on met dès le début du développement, on aura juste à changer une option de configuration avec la livraison du code. Si on ne le fait pas, on risque tout bonnement de ne pas avoir le temps d’implémenter la bonne pratique.

Sur les technologies, 1 groupe à choisi C#, 1 autre le C++ et les 7 autres Java. Ceci est bien représentatif des technologies maîtrisées dans les écoles. Mais au delà de la technologie, on peut noter que la partie du sujet qui demandait une simple communication TCP avec un protocole d’échange de caractère a déstabilisé la plupart des binômes. Notre analyse rejoint celle sur l’éloignement des développeurs du matériel et des couches basses. En effet, le développeur s’appuie de plus en plus sur des framework et s’éloigne du matériel. Cela apporte plus de flexibilité, de portabilité… mais à un coût non négligeable sur l’éco-conception. Connaitre un peu mieux ces couches basses permettrait au développeur une meilleur optimisation des frameworks et des environnements.

Au final faute de code évaluable en terme énergétique, le groupe primé a été le groupe ayant été le plus agile et produit un code de qualité. En effet, suite à l’analyse statique du code des étudiants, nous avons identifié des grandes différences de qualité (Entre 0,15 warning par ligne à 1 warning). De la même manière, certains on quand même limité l’effet tunnel (mais pas assez !) en livrant un code sur le serveur de test régulièrement et aussi des bouts de programme fonctionnel. Le 1er prix a donc été donné au binôme de l’UTC, NOLIN Aloïs et FRICOT Pierre-Henri.

La complexité (identifiée a posteriori) et la durée délimitée de ce concours a été représentatif des modes de développement du monde logiciel. Et selon le rapport Chaos du Standish Group, uniquement 20% des projets logiciels sont fonctionnels à temps et dans les budgets, le reste dépasse les budgets, les plannings ou est tout simplement annulé. Nos étudiants n’ont donc pas à rougir, ils sont à l’image du monde logiciel. L’éco-conception (mais pas qu’elle) c’est aussi de rendre le processus efficient ! Et là les méthodologies agiles, les bonnes pratiques de développement et la qualité logicielle permet de répondre à cette inefficience. Qui a dit que la solution était simple ?

Photos du concours : http://www.facebook.com/?ref=tn_tnmn#!/cabinetD2SI

Site du concours : http://www.legendsofcode.fr/

Olivier Philippot