Les analogies en informatique, partie 2

Comme je l’avais promis lors de mon dernier poste à propos de l’avenir de ce blog, je viens de publier un nouveau tutoriel sur zeste de savoir. Cette fois-ci c’est la programmation asynchrone qui est à l’honneur.

Ce tutoriel est dans les bacs depuis pas mal de temps mais si je lui consacre un article qui s’appelle “les analogie en informatique”, en écho au premier article qui tentait d’expliquer le fonctionnement d’un ordinateur, c’est avant tout parce que la rédaction de ce tutoriel a été fortement conditionnée au fait de trouver la bonne analogie.

Continue reading

Tester un logiciel, le cas (d’école) de la ZEP-12

Ca y est, la zep-12 est en test (clementine/orange pour ceux qui connaissent pas)!

Les premiers enseignements de ce projet aussi monstrueux qu’intéressant tombent déjà.
Comme la qualité logicielle m’intéresse depuis un bout de temps et que je vais entrer dans l’équipe de qualification de VadeRetro Technology, je m’intéresse beaucoup à ce qui est en train d’arrivée à notre bébé.

Petit tour d’horizon de ce que je retiens de tout ça. Continue reading

Maven : assurance qualité du code en JAVA

Depuis que j’ai découvert le blog de Frederic Hardy et son outil Atoum pour les tests unitaires en PHP, je m’intéresse beaucoup à l’assurance qualité dans les codes.

Dans le cadre d’un projet scolaire, j’utilise le langage Java pour créer un outil qui fait tourner des algorithmes génétiques à la manière de jgap. Pour ce projet, nous avons à disposition un ensemble d’outils tels que redmine (voir comment intégrer Redmine à Netbeans) ou bien Maven. Au départ nous utilisions Maven surtout pour la gestion des dépendances. En effet, nous avons eu besoin des bibliothèques externes (JFreeChart par exemple) et cela était nécessaire de ne pas se perdre dans nos dossiers avec des classpath locaux.

Ensuite, nous utilisions aussi JUnit pour les tests unitaires. L’avantage alors c’est que Maven, à chaque compilation, exécute les tests : nombreuses heures de débug économisées.

Mais d’ici peu, la deadline arrivera, et comme notre nombre de lignes de code à la minute ne cesse d’augmenter, on s’est rendu compte que parfois nos codes étaient… douteux. J’ai donc pris quelques minutes pour chercher des outils d’analyse du code, j’ai trouvé PMD et FindBugs qui sont très performants. Je les ai fait tourner en parallèle à mon code et finalement, je ne faisais que perdre du temps. Les rapports étaient sur deux logiciels différents, l’ordinateur avait même fini par ralentir (bon, OK, il vieillit quand même). J’ai donc décidé qu’il fallait absolument intégrer ça à Netbeans, ou au moins à Maven. Et j’ai réussi. J’ai par la même découvert des fonctionnalités que je n’attendais pas sur Maven.
Continue reading

Suivi du projet intégré à Netbeans

Les IDE savent tout faire aujourd’hui. Leur architecture qui permettent l’ajout de plugin leur permettent de concentrer en un seul logiciel tous les outils du développement.

Le principal inconvénient de cette évolution, c’est la lenteur au démarrage voire parfois à la compilation. Mais bon quand un logiciel permet d’ajouter aux fonctionnalités habituelles telles que l’autocomplétion, la vérification syntaxique… des outils plus orientés “projets”, ça peut devenir un sacré bonheur d’avoir ces logiciels.

Grand habitué de Netbeans j’utiliserai cet IDE pour la suite du billet, mais sachez que tous les IDE ont ce genres de possibilités, à condition que la communauté (ou l’entreprise) ait développé le plug-in. Ainsi, si vous êtes fan de visual studio, d’éclipse… Un détour sur sourceforge.net vous permettra de découvrir pas mal de plugins open source.

Ce qui m’intéresse dans mon exemple c’est le support d’un gestionnaire de projet, ici redmine. Ce dernier, comme beaucoup d’autres, utilise une interface web pour tout administrer, lier, comprendre. Quand on ne développe pas un site web, c’est parfois frustrant de devoir switcher sur le navigateur pour obtenir l’information qu’on veut, ou pire pour lier un commit à une issue.

Sur redmine, pour lier un commit à un problème, puis clore ledit problème, il faut :

  1. connaître le titre ou l’identifiant de l’issue.
  2. Aller dans Repository=>sélectionner le commit=>cliquer sur “add” en dessous de “related issue”. (c’est petit en plus)
  3. retourner dans issues
  4. ouvrir l’issue
  5. changer le statut
  6. valider.

Quand on est sur netbeans, qui utilise le bugtracker bugzilla, en bas de la fenêtre de commit, on trouve une petite invitation à “mettre à jour l’anomalie”. Preuve que l’IDE a déjà prévu une telle fonctionnalité.

Pour redmine, il faudra aller chercher un plugin qui est pour l’instant en version bêta en entrant ces coordonnées dans le centre de mise à jour (Tools=>Plugin:update center) :

url : http://kenai.com/projects/redminenb/sources/redminenb/content/trunk/dist/updates/updates.xml?raw=true

update

Ensuite, plus qu’à installer le plugin. Une fois cela fait, il faudra ajouter le bugtracker à votre projet. Pour cela, ouvrez votre projet et assurez vous que c’est celui qui est sélectionné. Puis dans Team->Report Issue (signaler une anomalie) cliquez sur “new”.

Il vous proposera tous les bugtracker qu’il connait dans le premier menu déroulant. Sélectionnez redmine. Puis ensuite entrez les coordonnées.

Attention, il faudra que l’API REST soit activée pour que ça marche.

Un petit aperçu :

commit

new_issue

Il ne vous reste plus qu’à configurer vos raccourcis pour que l’accession à ce système soit encore plus rapide. N’hésitez pas aussi à leur faire des retours http://kenai.com/jira/browse/REDMINENB.