5 research outputs found

    Clustering large software systems at multiple layers

    Get PDF
    Abstract Software clustering algorithms presented in the literature rarely incorporate in the clustering process dynamic information, such as the number of function invocations during runtime. Moreover, the structure of a software system is often multi-layered, while existing clustering algorithms often create flat system decompositions. This paper presents a software clustering algorithm called MULICsoft that incorporates in the clustering process both static and dynamic information. MULICsoft produces layered clusters with the core elements of each cluster assigned to the top layer. We present experimental results of applying MULICsoft to a large opensource system. Comparison with existing software clustering algorithms indicates that MULICsoft is able to produce decompositions that are close to those created by system experts

    Reverse Engineering Heterogeneous Applications

    Get PDF
    Nowadays a large majority of software systems are built using various technologies that in turn rely on different languages (e.g. Java, XML, SQL etc.). We call such systems heterogeneous applications (HAs). By contrast, we call software systems that are written in one language homogeneous applications. In HAs the information regarding the structure and the behaviour of the system is spread across various components and languages and the interactions between different application elements could be hidden. In this context applying existing reverse engineering and quality assurance techniques developed for homogeneous applications is not enough. These techniques have been created to measure quality or provide information about one aspect of the system and they cannot grasp the complexity of HAs. In this dissertation we present our approach to support the analysis and evolution of HAs based on: (1) a unified first-class description of HAs and, (2) a meta-model that reifies the concept of horizontal and vertical dependencies between application elements at different levels of abstraction. We implemented our approach in two tools, MooseEE and Carrack. The first is an extension of the Moose platform for software and data analysis and contains our unified meta-model for HAs. The latter is an engine to infer derived dependencies that can support the analysis of associations among the heterogeneous elements composing HA. We validate our approach and tools by case studies on industrial and open-source JEAs which demonstrate how we can handle the complexity of such applications and how we can solve problems deriving from their heterogeneous nature

    Coherent Dependence Cluster

    Get PDF
    This thesis introduces coherent dependence clusters and shows their relevance in areas of software engineering such as program comprehension and mainte- nance. All statements in a coherent dependence cluster depend upon the same set of statements and affect the same set of statements; a coherent cluster’s statements have ‘coherent’ shared backward and forward dependence. We introduce an approximation to efficiently locate coherent clusters and show that its precision significantly improves over previous approximations. Our empirical study also finds that, despite their tight coherence constraints, coherent dependence clusters are to be found in abundance in production code. Studying patterns of clustering in several open-source and industrial programs reveal that most contain multiple significant coherent clusters. A series of case studies reveal that large clusters map to logical functionality and pro- gram structure. Cluster visualisation also reveals subtle deficiencies of program structure and identify potential candidates for refactoring efforts. Supplemen- tary studies of inter-cluster dependence is presented where identification of coherent clusters can help in deriving hierarchical system decomposition for reverse engineering purposes. Furthermore, studies of program faults find no link between existence of coherent clusters and software bugs. Rather, a longi- tudinal study of several systems find that coherent clusters represent the core architecture of programs during system evolution. Due to the inherent conservativeness of static analysis, it is possible for unreachable code and code implementing cross-cutting concerns such as error- handling and debugging to link clusters together. This thesis studies their effect on dependence clusters by using coverage information to remove unexecuted and rarely executed code. Empirical evaluation reveals that code reduction yields smaller slices and clusters

    Estrategias para interconectar el dominio del problema con el dominio del Programa en Sistemas Multiparadigmas

    Get PDF
    Sin lugar a dudas, una de las tareas más complejas y que más tiempo consume en el ciclo de vida de una aplicación es la de Mantenimiento y Evolución de Software (MES). Dentro del entorno de MES, las tareas que más tiempo demandan son aquellas que debe ejecutar el ingeniero de software para lograr un completo entendimiento del sistema. A partir de la necesidad de asistir al arduo proceso de comprensión mencionado anteriormente, surge una disciplina de la Ingeniería de Software denominada Comprensión deProgramas (CP). La CP se presenta como un área de investigación interesante para impulsar el trabajo de MES a través de técnicas y herramientas que asistan al ingeniero de software en la difícil tarea de analizar y comprender sistemas. En esta tesis doctoral sepresenta una estrategia de CP que busca asistir al arduo proceso cognitivo que implica la comprensión de sistemas desarrollados usando lenguajes multiparadigma, mediante la interconexión de los Dominios del Problema y del Programa. El primero hace referencia a la salida del sistema en estudio, el segundo se relaciona con los artefactos de software utilizados para producir dicha salida. Esta vinculación es muy importante ya que permite establecer puentes cognitivos que asisten de manera sólida al ingeniero de software en las tareas de comprensión. Para alcanzar este objetivo, se utilizan distintas técnicas de Ingenierı́a Reversa que permitirán obtener un modelo de caso de uso de UML el cual servirá como medio para lograr la vinculación. Este tipo de modelo es aceptado como un componente provechoso para describir los requisitos de comportamiento para un sistema y como un medio efectivo de comunicación entre los involucrados entorno al mismo. Para derivar este modelo, la estrategia realiza, en términos generales, los siguientes pasos: i) extracción de información estática del sistema relacionada con diferentes tipos de artefactos de software, estableciendo cierto énfasis en los widgets de GUI, los cuales están estrechamente relacionados con el Dominio del Problema del sistema; ii) filtrado de la información extraída; iii) implementación de un proceso de agrupamiento específico que tiene en cuenta la información extraída; y iv) mapeo del modelo de cluster a un modelo de casos de uso de UML. Aunque las actividades desarrolladas en estospasos se usan con frecuencia en el contexto de Ingeniería Reversa, la estrategia introduce enfoques inusuales con respecto a las propuestas que se encuentran en la literatura disponible. Más específicamente, la estrategia presenta: un conjunto de métricas que infiere la importancia relativa de un método o función dentro del sistema analizado, un proceso de reducción de información irrelevante y una nueva técnica para agrupar artefactos de software para luego mapear los mismos en un modelo de caso de uso. La evaluación del enfoque sugiere que la estrategia asiste al ingeniero de software a comprender un sistema que proporciona un modelo de caso de uso detallado.Fil: Miranda, Enrique Alfredo
    corecore