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.
Caracteristicas y ejemplos
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.
Pruebas
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 para 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]
Características de una implementación de referencia:
- Desarrollado al mismo tiempo que la especificación y el conjunto de pruebas;
- Verifica que la especificación sea implementable;
- Permite probar la suite 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 en las que las pruebas de conformidad son inadecuadas [7]
Referencias
- ^ El nacimiento de la web Licencia de la web en cern.ch (2014)
- ^ libb64 en sourceforge
- ^ KeccakReferenceAndOptimized-3.2.zip mainReference.c "La función de esponja Keccak, diseñada por Guido Bertoni, Joan Daemen, Michaël Peeters y Gilles Van Assche. Para obtener más información, comentarios o preguntas, consulte nuestro sitio web: http: // keccak. noekeon.org/Implementation [ enlace muerto permanente ] por parte de los diseñadores, denominado "el implementador". En la medida de lo posible según la ley, el implementador ha renunciado a todos los derechos de autor y derechos relacionados o conexos al código fuente de este archivo. https: //creativecommons.org/publicdomain/zero/1.0/ "
- ^ Fragmentos de código fuente y marcos colocados en el dominio público en openwall.info
- ^ Snow, Eric (26 de enero de 2012). "PEP 421 - Adición de implementación del sistema" . Python.org . Fundación de software Python. Archivado desde el original el 7 de enero de 2017 . Consultado el 6 de enero de 2017 .
Desde hace varios años, la distinción entre Python-the-language y CPython (la implementación de referencia) ha ido creciendo.
- ^ Dalci, Eric; Fong, Elizabeth; Goldfine, Alan (2003). Requisitos para implementaciones de referencia GSC-IS . Instituto Nacional de Estándares y Tecnología, Laboratorio de Tecnología de la Información. [ https://web.archive.org/web/20060928231404/http://xw2k.sdct.itl.nist.gov/smartcard/document/ref-imp51.pdf Requisitos para implementaciones de referencia GSC-IS]
- ^ Curran, Patrick (2003). Pruebas de conformidad: una perspectiva de la industria . Sun Microsystems. [1]