Un proceso de desarrollo de paquetes de software es un sistema para desarrollar paquetes de software . Dichos paquetes se utilizan para reutilizar y compartir código, por ejemplo, a través de un repositorio de software . Un proceso de desarrollo de paquetes incluye un sistema formal para la verificación de paquetes que generalmente expone errores, lo que potencialmente facilita la producción de software confiable ( directiva principal de Chambers ). [ 1 ] También puede incluir un estándar para la documentación, lo que facilita que los nuevos usuarios aprendan a usarlo.
Discusión
En este contexto, un paquete es una colección de funciones escritas para usarse en un solo lenguaje, como Python o R. También puede incluir documentación. Para muchos lenguajes de programación, existen repositorios de software donde se comparten dichos paquetes.
Por ejemplo, un paquete de Python combina documentación, código, configuración inicial y posiblemente ejemplos que podrían usarse como pruebas unitarias en un solo archivo con la extensión "py".
Por el contrario, un paquete de R tiene documentación con ejemplos en archivos separados del código, posiblemente agrupados con otro material como conjuntos de datos de muestra y viñetas introductorias. El código fuente de un paquete de R se encuentra en un directorio con un archivo maestro de "descripción" y subdirectorios separados para la documentación, el código o los conjuntos de datos adecuados para pruebas unitarias o de regresión. [ 2 ] Un proceso formal de compilación de paquetes [ 3 ] [ 4 ] verifica errores de varios tipos. Esto incluye la verificación de errores de sintaxis tanto en el lenguaje de marcado de la documentación como en el código, así como la comparación de argumentos entre la documentación y el código. Los ejemplos en la documentación se prueban y generan mensajes de error si fallan. Esto puede usarse como una forma primitiva de prueba unitaria ; se pueden incluir pruebas unitarias y de regresión más formales . Esto puede mejorar la productividad del desarrollo de software al facilitar la búsqueda de errores durante el desarrollo del código. Además, la documentación facilita compartir el código con otros. También facilita que un desarrollador utilice código escrito meses o incluso años antes. Se realizan comprobaciones rutinarias de los paquetes aportados a la Red Integral de Archivos de R (CRAN) y de los que se encuentran en desarrollo en R-Forge, la plataforma colaborativa de código abierto que los acompaña. Estas comprobaciones compilan los paquetes repetidamente en distintas plataformas y con diferentes versiones del lenguaje R. Los resultados se ponen a disposición de los responsables del mantenimiento de los paquetes. De este modo, los colaboradores de los paquetes pueden detectar problemas que, de otro modo, no encontrarían, ya que no tendrían fácil acceso a esos resultados de pruebas alternativas.
Una pregunta de investigación interesante sería comparar la calidad de las contribuciones a diferentes repositorios de software e intentar relacionarla con las características del lenguaje y el proceso de desarrollo de paquetes correspondiente. Esto podría incluir comparar la tasa de crecimiento del software aportado con el grado de formalidad y la aplicación de estándares para la documentación, las pruebas y la codificación.
Véase también
- Sistema de gestión de paquetes para combinar paquetes de software en diferentes lenguajes en un sistema operativo.
- Repositorio de software para colecciones de paquetes para compartir.
- Proceso de desarrollo de software o metodología de desarrollo de software para una discusión más general sobre el desarrollo de software.
Referencias
- ↑ Chambers, John M. (2008). Software para análisis de datos: Programación con R. Springer. ISBN 978-0-387-75935-7.
- ↑ Escribir extensiones de R.
- ↑ Leisch, Friedrich. "Creación de paquetes R: un tutorial" (PDF) .
- ↑ Graves, Spencer B.; Dorai-Raj, Sundar. "Creación de paquetes R, utilizando CRAN, R-Forge y redes locales de archivos R y repositorios Subversion (SVN)" (PDF) .
- Distribución de software
- proceso de desarrollo de software