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 de modelo ) es un programa que implementa todos los requisitos de una especificación correspondiente. La implementación de referencia suele acompañar a un estándar técnico y demuestra lo que debe considerarse el comportamiento "correcto" de cualquier otra implementación del mismo.
Las implementaciones de referencia de algoritmos, por ejemplo los algoritmos criptográficos , suelen ser el resultado o la entrada de procesos de estandarización . En esta función suelen estar dedicados al dominio público con su código fuente como software de dominio público . Algunos ejemplos son el httpd del primer CERN , [1] cifrado Serpent , 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 o no ser calidad de producción. Por ejemplo, la implementación de referencia de Fraunhofer del estándar MP3 generalmente no se compara favorablemente con otras implementaciones comunes, como LAME , en pruebas de escucha que determinan la calidad del sonido. [ cita necesaria ] Por el contrario, CPython , la implementación de referencia del lenguaje de programación Python , [5] es también la implementación más utilizada en producción.
Probar la relación entre implementación y especificación mejora aún más las eficiencias 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. [6]
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 estándar de oro contra el cual se pueden medir otras implementaciones;
- Ayuda a aclarar la intención de la especificación en situaciones donde las pruebas de conformidad son inadecuadas [7]
Desde hace varios años, la distinción entre el lenguaje Python y CPython (la implementación de referencia) ha ido creciendo.