Implementación de referencia


En el proceso de desarrollo de software , una implementación de referencia (o, con menos frecuencia, implementación de muestra o implementación de modelo ) es un programa que implementa todos los requisitos de una especificación correspondiente. La implementación de referencia a menudo acompaña 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 httpd del CERN , [1] cifrado Serpent , variantes en 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 ser calidad de producción o no. 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 las pruebas de escucha que determinan la calidad del sonido. [ cita requerida ] En contraste, 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 implementación vs 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 (esta definición es un poco grandilocuente pero funciona). 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]