Implementación de referencia

Implementación de una especificación que sirve como ejemplo

En el proceso de desarrollo de software , una implementación de referencia (o, con menor 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.

Características 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 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.

Pruebas

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:

  1. Desarrollado simultáneamente con la especificación y el conjunto de pruebas;
  2. Verifica que la especificación sea implementable;
  3. Permite probar el conjunto de pruebas;
  4. Sirve como un estándar de oro con el que se pueden medir otras implementaciones;
  5. Ayuda a aclarar la intención de la especificación en situaciones donde las pruebas de conformidad son inadecuadas [8]

Referencias

  1. ^ Smith, Tim; Flückiger, François. "Licencias para la Web: para todos". CERN . Archivado desde el original el 2021-12-10 . Consultado el 2014-08-17 .
  2. ^ Devolve, Chris (20 de noviembre de 2005). «libb64: Base64 Encoding/Decoding Routines» (libb64: rutinas de codificación y decodificación Base64). SourceForge . Archivado desde el original el 30 de julio de 2010. Consultado el 6 de febrero de 2016 .
  3. ^ Bertoni, Guido; Daemen, Joan; Peeters, Michael; Van Assche, Gilles (27 de febrero de 2013). "KeccakReferenceAndOptimized-3.2.zip" (ZIP) . keccak.noekeon.org . /KeccakReferenceAndOptimized/Sources/mainReference.c. Archivado desde el original (ZIP) el 30 de septiembre de 2013 . Consultado el 6 de febrero de 2016 . La función esponja Keccak, diseñada por: Bertoni, Guido; Daemen, Joan; Peeters, Michael; 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, denominados en este documento "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/
  4. ^ solar (5 de noviembre de 2009). «Fragmentos de código fuente y marcos de trabajo colocados en el dominio público». Wiki de la comunidad Openwall . Archivado desde el original el 26 de enero de 2019. Consultado el 16 de noviembre de 2017 .
  5. ^ Daulton, Steve (11 de junio de 2019). "La información de medios no coincide con las opciones de formato seleccionadas para los archivos MP3 exportados - n.° 6 de Steve - Windows". Foro de Audacity . Archivado desde el original el 2 de diciembre de 2023. Consultado el 5 de septiembre de 2024 .
  6. ^ Snow, Eric (26 de abril de 2012). "PEP 421 – Adding sys.implementation". peps.python.org . Python Software Foundation (que es propietaria de "python.org"). Motivación. Archivado desde el original el 11 de abril de 2022 . 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. La mayor parte de este cambio se debe a la aparición de Jython, IronPython y PyPy como implementaciones alternativas viables de Python.
  7. ^ Dalci, Eric; Fong, Elizabeth; Goldfine, Alan (26 de marzo de 2003). "Requisitos para las implementaciones de referencia de GSC-IS" (PDF) . Instituto Nacional de Estándares y Tecnología, Laboratorio de Tecnología de la Información . Archivado desde el original (PDF) el 28 de septiembre de 2006. Consultado el 22 de julio de 2006 .
  8. ^ Curran, Patrick (10 de diciembre de 2003). "Pruebas de conformidad: una perspectiva de la industria" (PDF) . Instituto Nacional de Normas y Tecnología . Sun Microsystems . Archivado desde el original (PDF) el 19 de diciembre de 2003 . Consultado el 22 de julio de 2006 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Implementación_de_referencia&oldid=1244299385"