Implémentation de référence

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

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 test, 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:

  1. Développée simultanément avec le cahier des charges et la batterie de tests;
  2. Prouve que le cahier des charges est réalisable;
  3. Permet de tester la batterie de tests;
  4. Sert de point de comparaison contre lequel les autres implémentions peuvent êtres mesurées;
  5. 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]. 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[7], Serpent de cipher, base64 variantes[8] et SHA-3[9]. Le Openwall Projet maintient une liste de plusieurs algorithmes, avec leur code source dans le domaine public[10].

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[11], est aussi la mise en œuvre la plus largement utilisée en production.

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

  1. Dalci, Eric; Fong, Elizabeth; Goldfine, Alan (2003). Requirements for GSC-IS Reference Implementations. National Institute of Standards and Technology, Information Technology Laboratory. Requirements for GSC-IS Reference Implementations
  2. Curran, Patrick (2003). Conformance Testing: An Industry Perspective. Sun Microsystems. [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. For more information, feedback or questions, please refer to our website: http://keccak.noekeon.org/Implementation

    Le modèle {{dead link}} doit être remplacé par {{lien brisé}} selon la syntaxe suivante :
    {{ lien brisé | url = http://example.com | titre = Un exemple }} (syntaxe de base)
    Le paramètre url est obligatoire, titre facultatif.
    Le modèle {{lien brisé}} est compatible avec {{lien web}} : il suffit de remplacer l’un par l’autre.

    by the designers, hereby denoted as "the implementer". To the extent possible under law, the implementer has waived all copyright and related or neighboring rights to the source code in this file. https://creativecommons.org/publicdomain/zero/1.0/"
  6. Source code snippets and frameworks placed in the public domain on openwall.info
  7. The birth of the web Licensing the web on cern.ch (2014)
  8. libb64 on sourceforge
  9. KeccakReferenceAndOptimized-3.2.zip mainReference.c "The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche. For more information, feedback or questions, please refer to our website: http://keccak.noekeon.org/Implementation

    Le modèle {{dead link}} doit être remplacé par {{lien brisé}} selon la syntaxe suivante :
    {{ lien brisé | url = http://example.com | titre = Un exemple }} (syntaxe de base)
    Le paramètre url est obligatoire, titre facultatif.
    Le modèle {{lien brisé}} est compatible avec {{lien web}} : il suffit de remplacer l’un par l’autre.

    by the designers, hereby denoted as "the implementer". To the extent possible under law, the implementer has waived all copyright and related or neighboring rights to the source code in this file. https://creativecommons.org/publicdomain/zero/1.0/"
  10. Source code snippets and frameworks placed in the public domain on openwall.info
  11. Modèle {{Lien web}} : paramètre « url » manquant. Eric Snow, « PEP 421 -- Adding sys.implementation », sur Python.org, Python Software Foundation, (consulté le 6 janvier 2017) : « For a number of years now, the distinction between Python-the-language and CPython (the reference implementation) has been growing. »