Affichage des articles dont le libellé est java. Afficher tous les articles
Affichage des articles dont le libellé est java. Afficher tous les articles

mardi 20 octobre 2009

[PROJET] Une fois n'est pas coutume..du java !

Une fois n'est pas coutume du java ? Et oui.. Je vous avais parlé de l'isima lors d'un précédent post, et du fait que je devais travailler sur un projet de 100h pour ma 2ème année. La liste des projets est tombée fin de semaine dernière et après un rapide coup d'oeil je me suis focalisé sur le projet suivant : "Amélioration d'un logiciel 3D pour le chargement de containers". Le problème revient à placer de manière optimale des objets 3D dans un volume (un container par exemple !). Ce problème fait partie de la classe NP-difficile. La difficulté ? Le placement d'objets 3D dans un volume est annexé à d'autres types de difficultés dont : Les respects de l'ordre de déchargement dans le positionnement des colis, la présence des colis fragiles, la possibilité de rotation ou non des colis etc.

Vous aurez remarqué le terme "Amélioration" dans le titre du sujet. En effet, un binôme a déjà travaillé sur ce projet l'année dernière et a développé un logiciel de simulation en Java, en utilisant la librairie java3D !


Le cahier des charges de cette année s'appuie donc sur ce travail existant, et c'est ça exactement qui m'a intéressé ! La refactorisation d'un code existant, un exercice difficile mais oh combien passionnant !

En gros refactoriser un code revient à : Lire et analyser le code existant, identifier les zones qui posent problème, les classes qui ont besoin d'être réorganisées, réécrites autrement. Et enfin réécrire ces zones de code en les refactorisant ! La refactorisation est bien souvent ce qui différencie un développeur ordinaire d'un autre ! Alex Iskold, définit d'ailleurs le refactoring comme étant l'une des conditions que doit remplir un rockstar software engineer !

Pour résumer, le refactoring permet à la fois de lire du code et d'en écrire ! Le cahier des charges, inclus également la correction de bugs de rendu, l'intégration d'algorithmes de placement 3D ainsi que l'étude d'alternatives à java3D. En plus du refactoring, ce projet m'a motivé étant donné que j'ai pas mal travaillé sur la programmation graphique dans mon passé (beaucoup plus de 2D c'est vrai, mais il m'est arrivé de faire de la 3D avec OpenGL :) ). Cerise sur le gâteau, ça me permettra de travailler sérieusement sur du Java (j'ai des projets en C++ et en C# .NET sous la manche mais pas de projets Java !).

Bien entendu, j'essayerai de poster des billets au fur et à mesure du développement de ce projet, afin de partager des détails techniques que je jugerais utiles :).