Un patch ou correctif, est une section de code que l'on ajoute à un logiciel, pour y apporter des modifications : correction d'un bug, traduction, crack.
Les termes recommandés en France par la DGLFLF sont « retouche » ou « correctif ». Au Canada, le terme recommandé par l'OQLF est « correctif », le mot « rustine » étant également accepté.
L'origine de l'expression provient de l'utilisation des rubans perforés sur lesquels on ajoutait une rustine pour corriger un bug (voir figure). L'idée est celle d'ajouter un emplâtre comme on le fait sur un vêtement, un bateau ou un toit, avec la connotation que l'emplâtre ne correspond pas parfaitement à l'original.
L'usage du terme s'est étendu assez naturellement au logiciel. Le terme est courant dans la communauté des programmeurs à la fin des années 1950. Par exemple, le noyau de Multics, appelé BOS, a une commande autorisant les patchs.
Bien qu'à l'origine, un patch était une modification du code machine, il se présente normalement comme une séquence de modifications à apporter au code source du logiciel traité, après quoi le code devra être recompilé et les bibliothèques liées pour obtenir la version modifiée du logiciel.
Cependant, dans certains cas, notamment quand l'éditeur du logiciel ne désire pas que les utilisateurs aient accès à son code source, le correctif peut se présenter comme un programme autonome qui va greffer sur le logiciel original une modification sous la forme d'un ajout de code exécutable et de la mise en place d'une instruction de branchement vers la section de code ajoutée.
Plusieurs correctifs peuvent être distribués simultanément et sont alors regroupés dans un Service Pack (SP).
Par abus de langage, on appelle parfois patch les corrections de bugs livrés sous forme de code compilé (binaire) annulant et remplaçant un exécutable ou une bibliothèque.
Le principe des patchs offre donc un palliatif aux manques d'un logiciel, mais il a des limites. L'accumulation de patchs, surtout de sources différentes, peut, à l'image du patchwork, poser un problème de cohérence globale et surtout un problème de sécurité.