En el proceso de desarrollo de software , una implementación de referencia (o, con menos frecuencia, una implementación de ejemplo 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 cuál debería o debe 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 , suelen ser el resultado o el insumo 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 . Ejemplos de ello son el primer httpd del CERN , [ 1 ] el cifrado Serpent , variantes de 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 apta para producción. Por ejemplo, la implementación de referencia 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. [ 5 ] En contraste, CPython , la implementación de referencia del lenguaje de programación Python , [ 6 ] 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 la eficiencia entre procesos de producción :
Una implementación de referencia es, en general, una implementación de una especificación que se utiliza como interpretación definitiva de dicha especificación. Durante el desarrollo del conjunto de pruebas de conformidad, es necesaria al menos una implementación relativamente fiable de cada interfaz para (1) detectar errores o ambigüedades en la especificación y (2) validar el correcto funcionamiento 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 referente de excelencia con el que se pueden comparar otras implementaciones;
- Ayuda a aclarar la intención de la especificación en situaciones donde las pruebas de conformidad son inadecuadas [ 8 ].
Notas
- ↑ DEBE según la RFC 2119
Referencias
- ↑ Smith, Tim; Flückiger, François. "Licencias para la web: para todos" . CERN . Archivado del original el 10 de diciembre de 2021. Consultado el 17 de agosto de 2014 .
- ↑ Devolve, Chris (2005-11-20). "libb64: Rutinas de codificación/decodificación Base64" . SourceForge . Archivado del original el 30-07-2010 . Recuperado el 06-02-2016 .
- ↑ 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 afines sobre el código fuente de este archivo. creativecommons.org/publicdomain/zero/1.0/
- ↑ solar (05/11/2009). "Fragmentos de código fuente y marcos de trabajo puestos en el dominio público" . Wiki de la comunidad de Openwall . Archivado del original el 26/01/2019 . Recuperado el 16/11/2017 .
- ↑ Daulton, Steve (11/06/2019). "La información del medio no coincide con las opciones de formato seleccionadas para los MP3 exportados - #6 por steve - Windows" . Foro de Audacity . Archivado del original el 02/12/2023 . Recuperado el 05/09/2024 .
- ↑ Snow, Eric (26-04-2012). "PEP 421 – Adding sys.implementation" . peps.python.org . Python Software Foundation (propietaria de "python.org"). Motivación. Archivado del original el 11-04-2022 . Recuperado el 06-01-2017 .
Desde hace varios años, la distinción entre Python (el lenguaje) y CPython (la implementación de referencia) ha ido en aumento. La mayor parte de este cambio se debe a la aparición de Jython, IronPython y PyPy como implementaciones alternativas viables de Python.
- ↑ Dalci, Eric; Fong, Elizabeth; Goldfine, Alan (26 de marzo de 2003). "Requisitos para implementaciones de referencia de GSC-IS" (PDF) . Instituto Nacional de Estándares y Tecnología, Laboratorio de Tecnología de la Información . Archivado del original (PDF) el 28 de septiembre de 2006. Recuperado el 22 de julio de 2006 .
- ↑ Curran, Patrick (10 de diciembre de 2003). "Pruebas de conformidad: una perspectiva de la industria" (PDF) . Instituto Nacional de Estándares y Tecnología . Sun Microsystems . Archivado del original (PDF) el 19 de diciembre de 2003. Recuperado el 22 de julio de 2006 .
- Elementos de prueba
- Terminología de ingeniería de software