Implémentation de référence

Un article de Wikipédia, l'encyclopédie libre.

Dans le processus de développement de logiciel, une implémentation de référence (aussi appelé, moins fréquemment, exemple de mise en œuvre ou modèle d'implémentation) est la norme à partir de laquelle toutes les autres implémentations et les autres personnalisations sont dérivées.

Une amélioration à une implémentation de référence ne reflète pas un changement de la spécification sous-jacente. À l'inverse, l'échec d'une de la mise en œuvre d'une implémentation de référence peut s'avérer être la preuve que le cahier des charges n'est pas adapté et qu'il nécessite une amélioration..

« Une implémentation de référence est, en général, une implémentation d'un cahier des charges qui doit être vue comme une interprétation canonique de ce cahier des charges. Cette définition est un peu grandiloquente mais fonctionne en pratique. Pendant le développement de la batterie de tests, au moins une implémentation de confiance pour chaque interface est nécessaire pour :

  1. découvrir les erreurs et les mauvaise interprétations du cahier des charges et
  2. valider le fonctionnement correct de la batterie de tests[1]

Caractéristiques d'une implémentation de référence[modifier | modifier le code]

  • Développée simultanément avec le cahier des charges et la batterie de tests ;
  • Prouve que le cahier des charges est réalisable ;
  • Permet de tester la batterie de tests ;
  • Sert de point de comparaison contre lequel les autres implémentions peuvent être mesurées ;
  • Permet de clarifier l'intention du cahier des charges[2]

Les implémentations de référence des algorithmes, par exemple les algorithmes de chiffrement, sont souvent le résultat de la normalisation des processus. Ils sont souvent dédiés au domaine public avec leur code source disponible ouvertement. Des exemples sont la première version du CERN httpd[3], Serpent de cipher, base64 variantes[4] et SHA-3[5]. Le Openwall Projet maintient une liste de plusieurs algorithmes, avec leur code source dans le domaine public[6].

Une implémentation de référence peut ou peut ne pas être digne de la qualité de requise pour la production. Par exemple, l'implémentation de référence de mise en œuvre du standard MP3 de l'institut Fraunhofer, ne se compare pas favorablement aux autres implémentations usuelles, comme LAME, dans les tests d'écoute qui déterminent la qualité du son.[réf. nécessaire]. En revanche, CPython, l'implémentation de référence du langage de programmation Python[7], est aussi la mise en œuvre la plus largement utilisée en production.

Références[modifier | modifier le code]

  1. Eric Dalci, Elizabeth Fong, Alan Goldfine, Requirements for GSC-IS Reference Implementations, National Institute of Standards and Technology, Information Technology Laboratory, 2003. Requirements for GSC-IS Reference Implementations
  2. Patrick Curran, Conformance Testing: An Industry Perspective, Sun Microsystems, 2003. [1]
  3. The birth of the web Licensing the web on cern.ch (2014)
  4. libb64 on sourceforge
  5. KeccakReferenceAndOptimized-3.2.zip mainReference.c The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche
  6. Source code snippets and frameworks placed in the public domain on openwall.info
  7. Eric Snow, « PEP 421 -- Adding sys.implementation », sur Python.org, Python Software Foundation, (consulté le ) : « For a number of years now, the distinction between Python-the-language and CPython (the reference implementation) has been growing. »