Un proceso de desarrollo de paquetes de software es un sistema para desarrollar paquetes de software . Los paquetes facilitan la reutilización y el intercambio de código, por ejemplo, a través de un repositorio de software . Un sistema formal para la verificación de paquetes puede ayudar a exponer errores, lo que potencialmente facilita la producción de software confiable ( directiva principal de Chambers ). [1] Esto, a su vez, puede ayudar a mejorar la productividad de las personas que producen y utilizan software, como parte de un proceso de desarrollo de software o una metodología de desarrollo de software .
Discusión
En este contexto, un paquete es una colección de funciones escritas para su uso en un solo lenguaje como Python o R , incluidas con la documentación. Para muchos lenguajes de programación, existen repositorios de software donde las personas comparten dichos paquetes.
Por ejemplo, un paquete de Python combina documentación, código y configuración inicial y posiblemente ejemplos que podrían usarse como pruebas unitarias en un solo archivo con una extensión "py".
Por el contrario, un paquete R tiene documentación con ejemplos en archivos separados del código, posiblemente incluidos con otro material, como conjuntos de datos de muestra y viñetas introductorias . El código fuente de un paquete R está contenido en un directorio con un archivo maestro de "descripción" y subdirectorios separados para documentación, código, conjuntos de datos opcionales adecuados para pruebas unitarias o de regresión, y quizás otros. [2] Un proceso formal de compilación de paquetes [3] [4] busca errores de varios tipos. Esto incluye la comprobació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 los argumentos entre la documentación y el código. Los ejemplos de la documentación se prueban y producen mensajes de error si fallan. Esto se puede utilizar como una forma primitiva de prueba unitaria ; Se pueden incluir pruebas unitarias más formales y pruebas de regresión . Esto puede mejorar la productividad del desarrollo de software al facilitar la búsqueda de errores a medida que se desarrolla el código. Además, la documentación facilita compartir código con otros. También facilita que un desarrollador use código escrito meses o incluso años antes. Se realizan comprobaciones de rutina de los paquetes aportados a Comprehensive R Archive Network (CRAN) y en desarrollo en el sitio web complementario de desarrollo colaborativo de código abierto, R-Forge. Estas comprobaciones compilan los paquetes repetidamente en diferentes plataformas bajo diferentes versiones del lenguaje R básico. Los resultados están disponibles para los mantenedores de paquetes. De esta manera, los contribuyentes de paquetes se dan cuenta de los problemas que de otro modo nunca encontrarían, porque de otro modo no tendrían fácil acceso a esos resultados de prueba alternativos.
Una pregunta de investigación interesante sería comparar la calidad de las contribuciones a diferentes repositorios de software e intentar relacionar eso con las características del lenguaje y el proceso de desarrollo del paquete que lo acompaña. Esto podría incluir tratar de comparar la tasa de crecimiento del software contribuido con el grado de formalidad y aplicación de los estándares para la documentación, las pruebas y la codificación.
Ver también
- Sistema de gestión de paquetes para combinar paquetes de software en diferentes idiomas 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 del desarrollo de software.
Referencias
- ^ Cámaras, John M. (2008). Software de Análisis de Datos: Programación con R . Saltador. ISBN 0-387-75935-2.
- ^ Extensiones de escritura R .
- ^ Leisch, Friedrich. "Creación de paquetes R: un tutorial" (PDF) .
- ^ Graves, Spencer B .; Dorai-Raj, Sundar. "Creación de paquetes R, uso de CRAN, R-Forge y redes de archivo locales R y repositorios de subversión (SVN)" (PDF) .