13 research outputs found

    Analysis of Software Binaries for Reengineering-Driven Product Line Architecture\^aAn Industrial Case Study

    Full text link
    This paper describes a method for the recovering of software architectures from a set of similar (but unrelated) software products in binary form. One intention is to drive refactoring into software product lines and combine architecture recovery with run time binary analysis and existing clustering methods. Using our runtime binary analysis, we create graphs that capture the dependencies between different software parts. These are clustered into smaller component graphs, that group software parts with high interactions into larger entities. The component graphs serve as a basis for further software product line work. In this paper, we concentrate on the analysis part of the method and the graph clustering. We apply the graph clustering method to a real application in the context of automation / robot configuration software tools.Comment: In Proceedings FMSPLE 2015, arXiv:1504.0301

    Uso de ontolog铆as para mapear una arquitectura de software con su implementaci贸n

    Get PDF
    La arquitectura de software de un sistema es un activo importante para una organizaci贸n que desarrolla software. Para maximizar los beneficios que provee una arquitectura, 茅sta debe estar en correspondencia con la implementaci贸n del sistema. En muchos proyectos existe cierta documentaci贸n de la arquitectura, pero sin embargo, la informaci贸n de mapeos entre los elementos de dicha arquitectura y su implementaci贸n en c贸digo es escasa o inexistente. Este problema trae aparejadas dificultades de entendimiento de los elementos de c贸digo en relaci贸n a la arquitectura originalmente dise帽ada, lo que repercute negativamente sobre el aseguramiento de la calidad y los esfuerzos de mantenimiento del sistema. Si bien la provisi贸n manual de estos mapeos es factible, es una tarea compleja y proclive a errores, particularmente a medida que la implementaci贸n del sistema evoluciona en el tiempo. En este contexto, las t茅cnicas de alineaci贸n de ontolog铆as se presentan como una alternativa para producir mapeos en forma autom谩tica. Por esta raz贸n, el presente trabajo propone un enfoque automatizado y basado en ontolog铆as para la generaci贸n de mapeos entre la arquitectura de un sistema y su implementaci贸n

    The Quality Attribute Design Strategy for a Social Network Data Analysis System

    Get PDF
    An excellent software project can often identify quality attributes, expressed by the nonfunctional requirements. Quality attributes include modifiability, performance, availability, security, and so on. The nonfunctional requirements that address those quality attributes should be considered during the design phase. The quality attribute design approaches will be considered to achieve those requirements. In this thesis, an architecture will be designed for a new social network data analysis system, is named Trowser, through several architectural approaches. Before starting the design phase, the source code of an existing social network analysis system, Gephi, is analyzed. The quality attribute design strategies are summarized from the analysis result and unite with the known design tactics to design the architecture of Trowser. The Architecture Tradeoff Analysis Method(ATAM) will be used for evaluating the quality of the architecture. Finding the good design strategies for social network data analysis system

    Uso de ontolog铆as para mapear una arquitectura de software con su implementaci贸n

    Get PDF
    La arquitectura de software de un sistema es un activo importante para una organizaci贸n que desarrolla software. Para maximizar los beneficios que provee una arquitectura, 茅sta debe estar en correspondencia con la implementaci贸n del sistema. En muchos proyectos existe cierta documentaci贸n de la arquitectura, pero sin embargo, la informaci贸n de mapeos entre los elementos de dicha arquitectura y su implementaci贸n en c贸digo es escasa o inexistente. Este problema trae aparejadas dificultades de entendimiento de los elementos de c贸digo en relaci贸n a la arquitectura originalmente dise帽ada, lo que repercute negativamente sobre el aseguramiento de la calidad y los esfuerzos de mantenimiento del sistema. Si bien la provisi贸n manual de estos mapeos es factible, es una tarea compleja y proclive a errores, particularmente a medida que la implementaci贸n del sistema evoluciona en el tiempo. En este contexto, las t茅cnicas de alineaci贸n de ontolog铆as se presentan como una alternativa para producir mapeos en forma autom谩tica. Por esta raz贸n, el presente trabajo propone un enfoque automatizado y basado en ontolog铆as para la generaci贸n de mapeos entre la arquitectura de un sistema y su implementaci贸n.Sociedad Argentina de Inform谩tica e Investigaci贸n Operativa (SADIO

    Uso de ontolog铆as para mapear una arquitectura de software con su implementaci贸n

    Get PDF
    La arquitectura de software de un sistema es un activo importante para una organizaci贸n que desarrolla software. Para maximizar los beneficios que provee una arquitectura, 茅sta debe estar en correspondencia con la implementaci贸n del sistema. En muchos proyectos existe cierta documentaci贸n de la arquitectura, pero sin embargo, la informaci贸n de mapeos entre los elementos de dicha arquitectura y su implementaci贸n en c贸digo es escasa o inexistente. Este problema trae aparejadas dificultades de entendimiento de los elementos de c贸digo en relaci贸n a la arquitectura originalmente dise帽ada, lo que repercute negativamente sobre el aseguramiento de la calidad y los esfuerzos de mantenimiento del sistema. Si bien la provisi贸n manual de estos mapeos es factible, es una tarea compleja y proclive a errores, particularmente a medida que la implementaci贸n del sistema evoluciona en el tiempo. En este contexto, las t茅cnicas de alineaci贸n de ontolog铆as se presentan como una alternativa para producir mapeos en forma autom谩tica. Por esta raz贸n, el presente trabajo propone un enfoque automatizado y basado en ontolog铆as para la generaci贸n de mapeos entre la arquitectura de un sistema y su implementaci贸n.Sociedad Argentina de Inform谩tica e Investigaci贸n Operativa (SADIO

    Effectively incorporating expert knowledge in automated software remodularisation

    Get PDF
    Remodularising the components of a software system is challenging: sound design principles (e.g., coupling and cohesion) need to be balanced against developer intuition of which entities conceptually belong together. Despite this, automated approaches to remodularisation tend to ignore domain knowledge, leading to results that can be nonsensical to developers. Nevertheless, suppling such knowledge is a potentially burdensome task to perform manually. A lot information may need to be specified, particularly for large systems. Addressing these concerns, we propose the SUMO (SUpervised reMOdularisation) approach. SUMO is a technique that aims to leverage a small subset of domain knowledge about a system to produce a remodularisation that will be acceptable to a developer. With SUMO, developers refine a modularisation by iteratively supplying corrections. These corrections constrain the type of remodularisation eventually required, enabling SUMO to dramatically reduce the solution space. This in turn reduces the amount of feedback the developer needs to supply. We perform a comprehensive systematic evaluation using 100 real world subject systems. Our results show that SUMO guarantees convergence on a target remodularisation with a tractable amount of user interaction

    The Impact of Code Review on Architectural Changes

    Get PDF
    Although considered one of the most important decisions in the software development lifecycle, empirical evidence on how developers perform and perceive architectural changes remains scarce. Architectural decisions have far-reaching consequences yet, we know relatively little about the level of developers' awareness of their changes' impact on the software's architecture. We also know little about whether architecture-related discussions between developers lead to better architectural changes. To provide a better understanding of these questions, we use the code review data from 7 open source systems to investigate developers' intent and awareness when performing changes alongside the evolution of the changes during the reviewing process. We extracted the code base of 18,400 reviews and 51,889 revisions. 4,171 of the reviews have changes in their computed architectural metrics, and 731 present significant changes to the architecture. We manually inspected all reviews that caused significant changes and found that developers are discussing the impact of their changes on the architectural structure in only 31% of the cases, suggesting a lack of awareness. Moreover, we noticed that in 73% of the cases in which developers provided architectural feedback during code review, the comments were addressed, where the final merged revision tended to exhibit higher architectural improvement than reviews in which the system's structure is not discussed

    Measuring the Impact of Code Dependencies on Software Architecture Recovery Techniques

    Get PDF
    Many techniques have been proposed to automatically recover software architectures from software implementations. A thorough comparison among the recovery techniques is needed to understand their effectiveness and applicability. This study improves on previous studies in two ways. First, we study the impact of leveraging more 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, the impact of virtual call resolution, global variable usage and whether using direct dependencies provides better results than using transitive dependencies. Previous studies have not extensively studied how the quality of the input might affect the quality of the output for architecture recovery techniques. Second, we study a system (Chromium) that is substantially larger (10 million lines of code) than those included in previous studies. Obtaining the ground-truth architecture of Chromium involved two years of collaboration with its developers. As part of this work we developed a new submodule-based technique to recover preliminary versions of ground-truth architectures. The other systems that we study have been examined previously. In some cases, we have updated the ground-truth architectures to newer versions, and in other cases we have corrected newly discovered inconsistencies. Our evaluation of nine variants of six state-of-the-art architecture recovery techniques on 8 types of dependencies shows that symbol dependencies generally produce architectures with higher accuracies than include dependencies. We also observed that using a higher level of granularity (i.e., module level) and direct dependencies helps generating better architectures. Despite this improvement, the overall accuracy is low for all recovery techniques. The results suggest that (1) in addition to architecture recovery techniques, the type of dependencies used as their inputs is another factor to consider for high recovery accuracy, and (2) more accurate recovery techniques are needed. Our results show that some of the studied architecture recovery techniques (ACDC, Bunch-SAHC, WCA and ARC) scale to the 10M lines-of-code range (the size of Chromium), whereas others do not
    corecore