2 research outputs found

    On Tracking Java Methods with Git Mechanisms

    Full text link
    Method-level historical information is useful in research on mining software repositories such as fault-prone module detection or evolutionary coupling identification. An existing technique named Historage converts a Git repository of a Java project to a finer-grained one. In a finer-grained repository, each Java method exists as a single file. Treating Java methods as files has an advantage, which is that Java methods can be tracked with Git mechanisms. The biggest benefit of tracking methods with Git mechanisms is that it can easily connect with any other tools and techniques build on Git infrastructure. However, Historage's tracking has an issue of accuracy, especially on small methods. More concretely, in the case that a small method is renamed or moved to another class, Historage has a limited capability to track the method. In this paper, we propose a new technique, FinerGit, to improve the trackability of Java methods with Git mechanisms. We implement FinerGit as a system and apply it to 182 open source software projects, which include 1,768K methods in total. The experimental results show that our tool has a higher capability of tracking methods in the case that methods are renamed or moved to other classes.Comment: accepted by Journal of Systems and Softwar

    Exploring the use of co-change clusters in software comprehension tasks

    Get PDF
    Dissertação (mestrado)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2015.O desenvolvimento de software orientado a características (FOSD) é um paradigma que pode ser usado, entre outros, para estruturar um sistema de software em torno de características que podem representar pequenas funcionalidades do software bem como requisitos não funcionais. Além do seu papel na estruturação do software, o uso de FOSD habilita a ativação e desativação de features individuais em uma dada configuração de software. Essa vantagem pode ser útil em cenários onde a variabilidade do software é necessária. Por outro lado, a adoção da abordagem FOSD pode ser feita em um sistema de software existente, torna-se necessária a aplicação de alguma técnica de engenharia reversa para extração de features de uma base de código legada, bem como o mapeamento dessas features para suas implementações. Essa dissertação apresenta uma nova abordagem para auxiliar nessa atividade de engenharia reversa, a qual relaciona dados históricos extraídos de sistemas de controle de tarefas de desenvolvimento e de mudanças em código-fonte. A abordagem se baseia em técnicas de Mineração de Repositórios de Software (MSR), especificamente o agrupamento baseado em dependências evolucionárias entre elementos do código-fonte, que leva ao descobrimento de grupos de co-mudança. Assim, o objetivo deste trabalho é descobrir as propriedades dos grupos de co-mudança que podem ser úteis no processo de extração de features. Especificamente, um conjunto de termos, associados com os grupos, que revelam conceitos que podem ajudar a identificar features. De acordo com os resultados obtidos, os grupos de co-mudança não possuem vantagem quando usa- dos como unidades de modularização, mas podem revelar novas dependências que são ocultas ao desenvolvedor. Também mostram que os grupos de co-mudança possuem coesão conceitual, e que podem ser usados para extrair conceitos e termos associados com eles. Por fim, os conceitos extraídos dos grupos de co-mudança podem ser usados para construir um mapeamento entre eles e o código-fonte, e que podem ser usados como uma lista de sementes de entrada para métodos de expansão de features.Feature-oriented software development (FOSD) is a paradigm that can be used, among others, to structure a software system around the feature concept that can represents small functionalities and non-functional requirements. Besides their role in software structure, FOSD enables the activation and deactivation of individual features in a given configuration of the software. This advantage can be useful in scenarios where the variability of the software is required. On the other hand, the adoption of FOSD can be done for an existing software system, thus, becomes necessary to apply some reverse engineering technique to extract features from a legacy code base, and also the mapping between these features and their implementations. This dissertation presents a new approach to aid in the reverse engineering activity, that relates historical data from issue tracking systems and source-code changes. The approach relies upon Mining Software Repositories (MSR) techniques, specifically the clustering based on co-evolutionary dependencies between source-code elements, which leads to the discover of co-change clusters. Thus, the goal of this work is to discover the properties of the co-change clusters that can be useful in a feature extraction process. Specifically, a set of terms, associated with the clusters, which reveal concepts that can help to identify features. According to the study results, co-change clusters have no advantage when used as a modular unit, but can reveal new dependencies that is hidden to the developer. They also show that the co-change clusters have conceptual cohesion, and can be used to extract concepts and the terms associated with them. In the end, the concepts extracted from co-change clusters can be used to build a mapping from them and the source-code, and that can be used as a input seed list to feature expansion methods
    corecore