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.