En el proceso de desarrollo de software , una implementación de referencia (o, con menos frecuencia, una implementación de muestra o una implementación modelo ) es un programa que implementa todos los requisitos de una especificación correspondiente. La implementación de referencia suele acompañar a una norma técnica y demuestra lo que debería considerarse el comportamiento "correcto" de cualquier otra implementación de la misma.
Las implementaciones de referencia de algoritmos, por ejemplo, algoritmos criptográficos , son a menudo el resultado o la entrada de procesos de estandarización . En esta función, a menudo se dedican al dominio público con su código fuente como software de dominio público . Algunos ejemplos son el primer httpd del CERN , [1] el cifrado Serpent , las variantes base64 , [2] y SHA-3 . [3] El Proyecto Openwall mantiene una lista de varios algoritmos con su código fuente de referencia en el dominio público. [4]
Una implementación de referencia puede tener o no calidad de producción. Por ejemplo, la implementación de referencia de Fraunhofer del estándar MP3 no suele compararse favorablemente con otras implementaciones comunes, como LAME , en pruebas de escucha que determinan la calidad del sonido. [5] Por el contrario, CPython , la implementación de referencia del lenguaje de programación Python , [6] también es la implementación más utilizada en producción.
Probar la relación entre implementación y especificación mejora aún más la eficiencia entre procesos de producción :
Una implementación de referencia es, en general, una implementación de una especificación que se utilizará como interpretación definitiva de esa especificación. Durante el desarrollo del conjunto de pruebas de conformidad, es necesaria al menos una implementación relativamente confiable de cada interfaz para (1) descubrir errores o ambigüedades en la especificación y (2) validar el funcionamiento correcto del conjunto de pruebas. [7]
Características de una implementación de referencia:
- Desarrollado simultáneamente con la especificación y el conjunto de pruebas;
- Verifica que la especificación sea implementable;
- Permite probar el conjunto de pruebas;
- Sirve como un estándar de oro con el que se pueden medir otras implementaciones;
- Ayuda a aclarar la intención de la especificación en situaciones donde las pruebas de conformidad son inadecuadas [8]
La función de esponja de Keccak, diseñada por: Bertoni, Guido; Daemen, Joan; Peeters, Michaël; Van Assche, Gilles. Para obtener más información, comentarios o preguntas, consulte nuestro sitio web: keccak.noekeon.org/ / Implementación por parte de los diseñadores, en adelante denominados "el implementador". / En la medida en que lo permita la ley, el implementador ha renunciado a todos los derechos de autor y derechos conexos o vecinos al código fuente de este archivo. creativecommons.org/publicdomain/zero/1.0/
Desde hace varios años, la distinción entre Python-the-language y CPython (la implementación de referencia) ha ido creciendo. La mayor parte de este cambio se debe a la aparición de Jython, IronPython y PyPy como implementaciones alternativas viables de Python.