jeudi 14 mai 2009

Revue de code, Peer Code review


Revue de code, Peer Code review

Les erreurs sont omniprésentes dans divers domaines tel la programmation. Il existe cependant divers méthode afin de réduire les problèmes lié au développement. La revue de code est l'une d'entre elle. Elle est une étape cruciale dans le cycle de développement logiciel.

Méthode

Quelques méthodes de revue de code existe. Chacune présente des avantages et des inconvénients selon le type de développement employé.

Analyse par dessus l'épaule (Over the shoulder review)

Deux personnes sont présentes lors de cette personne. L'auteur du code qui dirige et celui qui analyse. Ce derniers, n'est pas nécessairement un informaticien. L'auteur parcourt le code, l'autre peut lui poser des questions, effectuer des traces le faire réfléchir. L'auteur inscrit les problèmes et les fixes après la rencontre. Cette méthode est très simple à mettre en place. Celui qui analyse, peut trouver de la difficulté à comprendre des algorithmes, portions de code plus complexe. Certaine partie de code peut ne pas être analysé. Cette méthode permet d'effectuer un transfert de connaissance.

Envoi d'email

Cette méthode nécessite l'emploi d'un outils de gestion de code source. Lorsqu'un changement a lieu, un courriel est envoyé aux personnes qui doivent analyser le code. Si un problème est décelé, il l'envoie au développeur. Ce derniers vérifie le problème et le corrige. Grâce à ce genre d'outils, tous les changements effectués sont retracables. Cette méthode permet de faire des analyses de code à distance. Les personnes n'ont pas besoin de se rencontrer. Cependant, étant donné la possibilité d'éloignement, l'analyse du code peut être plus longue, car il peut avoir plusieurs échanges entre les personnes.

Programmation en paire (Pair Programming)

Cette méthode de programmation implique que deux personnes soient devant un ordinateur. Un seul tape sur le clavier, mais les deux sont discussion, s'échange des idées. Des statistiques démontrent que cette approche permet de déceler plus d'erreur tout en effectuant un transfert de connaissance entre les participants. Cependant, elle nécessite que deux participant travaillent en commun ce qui coûte plus chère en terme de ressource, temps.

Liste de contrôle (check-list)

D'après plusieurs professionnels du domaine, dont Jason Cochen c'est une des méthodes les plus efficaces. Cette méthode consiste à créer une liste de point à vérifier dans le code. Voici par exemple, quelques points.
  • Est-ce que les cas où un objet peut être nul est vérifié
  • Est-ce que les limites d'un tableau sont bien vérifiés pour ne pas dépasser sa taille
  • Est-ce que les ressources sont bien libérés
  • Est-ce qu'une gestion est faite lorsque des paramètres invalides sont utilisés dans une méthode
  • Est-ce que les méthodes sont bien documentés
  • Est-ce que les algorithmes complexes sont expliqués et justifiés
  • Est-ce que les objets accessibles par plusieurs threads sont seulement accessible via un verrou (lock)
  • Est-ce que les objets sont dupliqués utilement
Cette liste est incomplète, à mesure que vous faites des vérification, vous allez voir des points à ajouter à cette liste.
Un exercice intéressant à faire est d'utiliser cette liste sur notre code et de faire des statistiques. Ainsi, vous pourriez connaître les erreurs que vous faire le plus fréquemment et être d'avantage attentif à ceux là. Si une autre personne vérifie votre code, vous pourriez lui spécifier ses erreurs plus fréquentes. De façon globale, utilisé en entreprise, les erreurs les plus fréquentes seraient ainsi connu.

Avantage

Coût

La découverte d'un problème peut être faite à toute étape du cycle du développement logiciel. Le coût ne sera par contre par le même, s'il est trouvé en phase de maintenant qu'en phase de conception. Plus que le problème sera trouvé tardivement, plus le coût sera élevé. Il faudra trouvé une solution, la testé, effectuer divers test de régression. Le changement peut avoir divers répercussion sur le système en place. Le support technique est ainsi réduit.

Qualité

Utiliser cette approche permet de déceler plus de problème, d'erreur, d'améliorer la robustesse du code. Au final, la qualité du système est ainsi augmenté. L'équipe de développement en sort grandie car ainsi, elle apprend à utiliser les bonnes techniques. En adoptant toujours ces bonnes pratiques, le cycle de développement entre dans une phase d'optimisation, où chaque développement devient de plus en plus de qualité. L'apprentissage d'erreur, permet habituellement de ne plus les refaire.

Outils

Un outils doit être en mesure d'effectuer le plus de tâche possible d'une revue de code. Gérer les fichiers (réception, transmission de fichier), commentaire et défaut pris par les participant. En gérant les fichiers, l'outil doit être en mesure de voir les différentes versions du fichiers. Ainsi, les changements sont aisément décelable. Les commentaires, défaut... doivent être associé au fichier. De cette façon, une conversation entre les participants est plus simple à suivre.