Méthode du canard en plastique

Un article de Wikipédia, l'encyclopédie libre.
Un canard « examinant » du code Java.

La méthode du canard en plastique, appelée également méthode du canard en caoutchouc, est une pratique de revue du code source utilisée en génie logiciel dans les phases de débogage.

Principe[modifier | modifier le code]

Canard en plastique dans un environnement de développement.
SparkFun Electronics canard en plastique

La méthode du canard en plastique consiste à expliquer méticuleusement le code source que l'on a écrit à un collègue, à un simple passant, ou même à un objet inanimé comme un canard en plastique[1],[2]. Le simple fait d'exprimer ses pensées à voix haute est censé aider à trouver les erreurs de programmation. Comme les réactions de l'interlocuteur ou son niveau de compréhension du problème n'ont aucune importance dans ce processus, il est possible de le remplacer par un canard en plastique.

Lorsque le programmeur ou l'analyste explique un bout de code ou un algorithme qui est incorrect, il peut en effet se rendre compte de son erreur. La méthode du canard en caoutchouc exploite un support pouvant aider à imaginer un contexte nouveau, favorisant une transposition, contraignant ainsi le programmeur à expliciter l'implicite, en l'adaptant pour le faire comprendre depuis un autre point de vue. Cela est susceptible de confronter le concepteur au fait que le code qu'il a écrit ne correspond pas au code qu'il avait l'intention d'écrire.

L'avantage du canard en plastique sur un interlocuteur humain est que sa capacité d'écoute et sa patience sont sans limite. Son temps est aussi moins précieux que celui d'un consultant ou d'un collègue[3]. Le fait qu'il soit petit permet de le placer discrètement à côté d'un écran d'ordinateur.

Ce principe est aussi utile pour d'autres types de travaux. Par exemple, un projet devant être présenté à l'oral à l'aide d'un diaporama. Il suffit de décrire le projet à une personne ou à son canard en plastique pour le faire de la manière la plus simple possible, ce qui permet de trouver un fil conducteur naturel.

Origine[modifier | modifier le code]

L'ouvrage d'Andrew Hunt et David Thomas, The Pragmatic Programmer: From Journeyman to Master, publié en 1999, semble être le premier à mentionner la méthode du canard en caoutchouc sous ce nom (rubber ducking en anglais)[4]. Selon cet ouvrage, David Thomas a fréquenté un étudiant à l'Imperial College London nommé Greg Pugh, réputé excellent programmeur. Greg Pugh transportait en permanence avec lui un canard en caoutchouc jaune et a expliqué le procédé à David Thomas à sa demande.

Cette méthode a ensuite été rendue célèbre en 2002 par Andrew Errington sur un forum en ligne[5].

Brian Kernighan et Rob Pike ont eux aussi décrit la méthode dans un ouvrage papier publié en 1999, mais en faisant référence à un ours en peluche[6]. Stephen J. Baker l'a décrite en utilisant une figurine de chien en carton à la place d'un canard en caoutchouc[3]. Russ Freeman suggère d'employer une effigie en carton d'un collègue programmeur[7].

Cette technique est enseignée à l'Université de Sherbrooke sous l'appellation « parler à une plante verte »[8].

Notes et références[modifier | modifier le code]

  1. (en) Essential Equipment - The Third Bit.
  2. (en) What is this particular type of revelation called? - Stack Overflow.
  3. a et b (en) The Contribution of the Cardboard Cutout Dog to Software Reliability and Maintainability.
  4. (en) Andrew Hunt et David Thomas, The Pragmatic Programmer : From Journeyman to Master, Addison-Wesley Professional, , 352 p. (ISBN 978-0-201-61622-4), p. 95.
  5. (en) Description de la méthode par Andrew Errington.
  6. (en) Brian Kernighan et Rob Pike, The Practice of Programming, Addison-Wesley Professional, , 288 p. (ISBN 978-0-201-61586-9, lire en ligne), p. 123.
  7. (en) Cardboard programmer.
  8. « IGL501 Méthodes formelles en génie logiciel »(Archive.orgWikiwixArchive.isGoogleQue faire ?), sur www.dmi.usherb.ca (consulté le ).

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Lien externe[modifier | modifier le code]