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 :).



7 commentaires:

Romain a dit…

Hey, ça a l'air intéressant. Courage pour ce projet, et tiens-nous au courant.

N'oublie pas les tests unitaires, pour être tranquille lors de tes refactoring !

amine a dit…

je trouve la programmation graphique extrêmement dur, j'ose même pas l'approché. bonne courage à toi.

nancy a dit…

refactoring......WAW c pationnant

bonne courage
nous attendons tes nouvelles.

Amokrane Chentir a dit…

Merci ;)
J'ai eu avec mon binôme une première séance de travail avec notre encadreur et le projet s'avère encore plus passionnant que je ne l'aurais imaginé ! Ya moyen d'implémenter des fonctionnalités assez sympas sur le logiciel :).

ahmed a dit…

ça a l'aire vraiment cool comme projet ... , du java en plus :p
vivement tes prochaines publications,
t'as déjà de sacrés antécédents dans la programmation graphique... ^^ tiens nous au courant de l'avancement de ton projet .

Ismail a dit…

Alors maintenant, a coté de Code Complete 2, il te faudra "Refactoring" de Martin Fowler.

A quand tes propres code smells?

Raouf a dit…

C'est ce qu'on appele un problème NP-complet ;)
Bravo pour le boulot.