08/06/2010

Reverse engineering

Je suis, en ce moment, plongé assez profondément dans l'étude des codes d'un logiciel complexe. L'objectif est d'extraire un bout de librairie pour travailler aussi bien, mais en codant moins. Je vous rassure, c'est un logiciel libre, il s'appelle BEAM. Et c'est pour inclure dans un autre logiciel libre, donc ça va ;-)

Le problème, dans ce petit exercice, c'est la taille des codes... J'ai un peu plus de 1700 classes (sans compter les classes de test, d'ailleurs), au total. Et c'est pas forcément évident de comprendre les liens entre les classes et package. Bref, il me fallait un logiciel de reverse engineering performant, pour pouvoir faire de l'UML vite et gagner du temps.

J'ai cur pouvoir compter sur ArgoUML. Et ben non. face à la taille de la tâche, ce cher logiciel me claquait dans les pattes. Il commençait par passer une bonne demi-heure à mouliner (et pourtant mon dual-core ne fait pas semblant de compter, en général... :-p ), et à la fin, il n'était plus franchement utilisable. Après, c'est peut être de ma faute, mais bon...

Du coup, changement de plan, je cherche un suppléant. Et je tombe sur BOUML. J'étais plutôt sceptique, au début, l'expérience précédente m'avait refroidie. D'autant que le logiciel, écrit en C, s'appuie sur qt3, et que c'est pas forcément très courant sur ma machine. Mais je me dégonfle pas, je le cherche dans mes dépôts. Et je l'installe, ni une ni deux.

Après un peu de prise en main, je trouve une bonne méthode pour faire l'import des classes qui m'intéressent intelligemment. Je commence par spécifier l'ensemble du jdk comme bibliothèque de base. Pas d'objections. Puis j'ajoute les dossiers contenant les sources en omettant juste les classes de test. Toujours pas d'objections. Je lance l'opération... et en cinq minutes c'était fait.

Je me retrouve donc avec un logiciel libre (j'ai du oublier de le dire avant ^_^ ) hyper efficace. Mes classes sont toutes là, liées entre elles et avec les classes du jdk. Les imports sont hyper rapides, et le logiciel sait résoudre les dépendances sur plusieurs niveaux. Tout petit bémol : au-delà d'une centaine de classes affichées simultanémént, il commence à ramer un peu... mais un diagramme de classe avec autant de monde, c'est pas super rationnel :-p

En clair, c'est un très bon logiciel. Pour les gens qui ont besoin de ce genre de choses... il vaut le coup :-)