9 research outputs found

    An analysis of techniques and methods for technical debt management: a reflection from the architecture perspective

    Full text link
    Technical debt is a metaphor referring to the consequences of weak software development. Managing technical debt is necessary in order to keep it under control, and several techniques have been developed with the goal of accomplishing this. However, available techniques have grown disperse and managers lack guidance. This paper covers this gap by providing a systematic mapping of available techniques and methods for technical debt management, covering architectural debt, and identifying existing gaps that prevent to manage technical debt efficiently

    Resoluci贸n m谩s eficiente de dependencias Java

    Get PDF
    En este trabajo se realiza una revisi贸n general acerca de las caracter铆sticas y modos de gesti贸n de dependencias de c贸digo abierto para proyectos Java. Asimismo, tambi茅n se desarrolla un estudio para establecer una tasa de utilizaci贸n habitual respecto del total de recursos disponibles en cada dependencia. En base a los resultados obtenidos en las mediciones y el an谩lisis de otros trabajos que tambi茅n abordaron el tema, se propone cambiar la estrategia de sincronizaci贸n completa de dependencias (repositorio local) por un middleware que interact煤e entre el entorno de desarrollo y los repositorios p煤blicos. Se plantea establecer un servicio que resuelva autom谩ticamente los requerimientos de dependencias directas e indirectas y que atienda solicitudes puntuales de bytecode en tiempo de ejecuci贸n y de descriptores para la compilaci贸n. Para una siguiente etapa, se planea desarrollar el software propuesto a modo de prueba de concepto.XII Workshop Ingenier铆a de Software (WIS)Red de Universidades con Carreras en Inform谩tica (RedUNCI

    Resoluci贸n m谩s eficiente de dependencias Java

    Get PDF
    En este trabajo se realiza una revisi贸n general acerca de las caracter铆sticas y modos de gesti贸n de dependencias de c贸digo abierto para proyectos Java. Asimismo, tambi茅n se desarrolla un estudio para establecer una tasa de utilizaci贸n habitual respecto del total de recursos disponibles en cada dependencia. En base a los resultados obtenidos en las mediciones y el an谩lisis de otros trabajos que tambi茅n abordaron el tema, se propone cambiar la estrategia de sincronizaci贸n completa de dependencias (repositorio local) por un middleware que interact煤e entre el entorno de desarrollo y los repositorios p煤blicos. Se plantea establecer un servicio que resuelva autom谩ticamente los requerimientos de dependencias directas e indirectas y que atienda solicitudes puntuales de bytecode en tiempo de ejecuci贸n y de descriptores para la compilaci贸n. Para una siguiente etapa, se planea desarrollar el software propuesto a modo de prueba de concepto.XII Workshop Ingenier铆a de Software (WIS)Red de Universidades con Carreras en Inform谩tica (RedUNCI

    Resoluci贸n m谩s eficiente de dependencias Java

    Get PDF
    En este trabajo se realiza una revisi贸n general acerca de las caracter铆sticas y modos de gesti贸n de dependencias de c贸digo abierto para proyectos Java. Asimismo, tambi茅n se desarrolla un estudio para establecer una tasa de utilizaci贸n habitual respecto del total de recursos disponibles en cada dependencia. En base a los resultados obtenidos en las mediciones y el an谩lisis de otros trabajos que tambi茅n abordaron el tema, se propone cambiar la estrategia de sincronizaci贸n completa de dependencias (repositorio local) por un middleware que interact煤e entre el entorno de desarrollo y los repositorios p煤blicos. Se plantea establecer un servicio que resuelva autom谩ticamente los requerimientos de dependencias directas e indirectas y que atienda solicitudes puntuales de bytecode en tiempo de ejecuci贸n y de descriptores para la compilaci贸n. Para una siguiente etapa, se planea desarrollar el software propuesto a modo de prueba de concepto.XII Workshop Ingenier铆a de Software (WIS)Red de Universidades con Carreras en Inform谩tica (RedUNCI

    Servicio para la resoluci贸n de dependencias de software basado en componentes

    Get PDF
    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.Facultad de Inform谩tic

    Machine Learning for Software Dependability

    Get PDF
    Dependability is an important quality of modern software but is challenging to achieve. Many software dependability techniques have been proposed to help developers improve software reliability and dependability such as defect prediction [83,96,249], bug detection [6,17, 146], program repair [51, 127, 150, 209, 261, 263], test case prioritization [152, 250], or software architecture recovery [13,42,67,111,164,240]. In this thesis, we consider how machine learning (ML) and deep learning (DL) can be used to enhanced software dependability through three examples in three different domains: automatic program repair, bug detection in electronic document readers, and software architecture recovery. In the first work, we propose a new G&V technique鈥擟oCoNuT, which uses ensemble learning on the combination of convolutional neural networks (CNNs) and a new context-aware neural machine translation (NMT) architecture to automatically fix bugs in multiple programming languages. To better represent the context of a bug, we introduce a new context-aware NMT architecture that represents the buggy source code and its surrounding context separately. CoCoNuT uses CNNs instead of recurrent neural networks (RNNs) since CNN layers can be stacked to extract hierarchical features and better model source code at different granularity levels (e.g., statements and functions). In addition, CoCoNuTtakes advantage of the randomness in hyperparameter tuning to build multiple models that fix different bugs and combines these models using ensemble learning to fix more bugs.CoCoNuT fixes 493 bugs, including 307 bugs that are fixed by none of the 27 techniques with which we compare. In the second work, we present a study on the correctness of PDF documents and readers and propose an approach to detect and localize the source of such inconsistencies automatically. We evaluate our automatic approach on a large corpus of over 230Kdocuments using 11 popular readers and our experiments have detected 30 unique bugs in these readers and files. In the third work, we compare software architecture recovery techniques to understand their effectiveness and applicability. Specifically, we study the impact of leveraging accurate symbol dependencies on the accuracy of architecture recovery techniques. In addition, we evaluate other factors of the input dependencies such as the level of granularity and the dynamic-bindings graph construction. The results of our evaluation of nine architecture recovery techniques and their variants suggest that (1) using accurate symbol dependencies has a major influence on recovery quality, and (2) more accurate recovery techniques are needed. Our results show that some of the studied architecture recovery techniques scale to very large systems, whereas others do not

    CACIC 2015 : XXI Congreso Argentino de Ciencias de la Computaci贸n. Libro de actas

    Get PDF
    Actas del XXI Congreso Argentino de Ciencias de la Computaci贸n (CACIC 2015), realizado en Sede UNNOBA Jun铆n, del 5 al 9 de octubre de 2015.Red de Universidades con Carreras en Inform谩tica (RedUNCI
    corecore