El desarrollo de software a escala industrial requiere de infraestructura acorde a los requerimientos de cada proyecto. La comunidad de software se retroalimenta de forma permanente, a través de la reutilización de componentes distribuidos en el formato de bibliotecas o paquetes. Actualmente, los proyectos de software tienden a ser diseñados como una composición de recursos de funcionalidad específica, promoviendo la reutilización y siendo, en muchos casos, un factor clave de éxito, ya sea por calidad probada o integración inmediata de una nueva prestación.
Desde principios de los años 90, han surgido diferentes herramientas de soporte a la integración y actualización de sistemas operativos por medio de paquetes. Esas herramientas, denominadas Gestores de Paquetes, permiten agregar y quitar, de forma atómica, paquetes de software provenientes de repositorios externos.
La industria del software también incorporó el modelo de distribución por paquetes, definiendo a la biblioteca como un conjunto de elementos de software reutilizables, indivisibles y de alta cohesión. Tomando como base a los Gestores de Paquetes, la comunidad de software desarrolló los Gestores de Dependencias. Estas herramientas interactúan con los repositorios de bibliotecas, asistiendo a los ambientes de producción de software en los procesos de recuperación y clausura de las dependencias. Si bien la adaptación del modelo de Gestor de Paquetes al ámbito industrial ha sido exitosa, padece de una serie de inconvenientes que se abordarán a lo largo de esta Tesis.
A continuación, este trabajo se centrará en describir el contexto tecnológico actual y en aquellos aspectos con potencialidad para mejorar el proceso de gestión de dependencias del software Java. Luego, se presentarán tres prototipos de herramientas, una para medir la proporción de referencias entre bibliotecas y las otras dos, a modo de prueba y validación de conceptos. Finalmente se desarrollará una evaluación comparativa con las herramientas más utilizadas en la actualidad y se presentarán las conclusiones.
En resumen, esta Tesis presenta una alternativa al modo como se está gestionando la resolución de las dependencias Java, proponiendo un servicio especializado en resolver y ubicar las bibliotecas requeridas por el software en desarrollo, acorde a las demandas actuales y futuras de la industria.