14 research outputs found

    Evaluation Measures for Partitioning based Aspect Mining Techniques

    Get PDF
    Aspect mining is a research direction that tries to identify crosscutting concerns in already developed software systems, without using aspect oriented programming. The goal is to identify them and then to refactor them to aspects, to achieve a system that can be easily understood, maintained and modified. In this paper we propose two new evaluation measures for evaluating the results of partitioning based aspect mining techniques. A small example on how to compute them is provided. The applicability of these measures to different aspect mining techniques is also discussed

    AMII: a prototype for discovering crosscutting concerns in legacy systems

    Get PDF
    El mantenimiento y evolución de sistemas legados es complejo y costoso. Surge la necesidad de contar con herramientas y técnicas que ayuden a los desarrolladores en estas tareas. Identificar crosscutting concerns (CCC) y transformar los mismos en aspectos se considera un aporte que puede solucionar en parte éstos problemas. El proceso de identificar CCC en sistemas legados se conoce como Minería de Aspectos (Aspect Mining). Este trabajo presenta el prototipo AMII  que analiza el código fuente Java y genera una estructura semejante a un índice invertido, la cual registra ciertas características y propiedades del código con el propósito de posibilitar la identificación de CCC. El trabajo incluye una experiencia inicial sobre la técnica y la herramienta.The maintenance and evolution of legacy systems is complex and costly. The need arises for tools and techniques that help developers in these tasks. Identifying crosscutting concerns (CCC) and transform them in aspects that can be considered a contribution partial solution to these problems. The process of identifying CCC legacy systems is known as Mining Aspects. This paper presents a prototype AMII that analyzes Java source code and creates a structure similar to an inverted index, which records certain characteristics and properties of the code with the purpose of permit the identification of CCC. The work includes a first experience about the technique and tool

    AMII: un prototipo para descubrir crosscutting concerns en sistemas legados

    Get PDF
    El mantenimiento y evolución de sistemas legados es complejo y costoso. Surge la necesidad de contar con herramientas y técnicas que ayuden a los desarrolladores en estas tareas. Identificar crosscutting concerns (CCC) y transformar los mismos en aspectos se considera un aporte que puede solucionar en parte éstos problemas. El proceso de identificar CCC en sistemas legados se conoce como Minería de Aspectos (Aspect Mining). Este trabajo presenta el prototipo AMII  que analiza el código fuente Java y genera una estructura semejante a un índice invertido, la cual registra ciertas características y propiedades del código con el propósito de posibilitar la identificación de CCC. El trabajo incluye una experiencia inicial sobre la técnica y la herramienta

    Enhanced Method Call Tree for Comprehensive Detection of Symptoms of Cross Cutting Concerns

    Get PDF
    Aspect oriented programming languages provide a new enhanced composition mechanism between the functional sub units as compared to earlier non aspect oriented languages. For this reason the refactoring process requires a new approach to the analysis of existing code that focuses on how the functions cross cut one another. Aspect mining is a process of studying an existing program in order to find these cross cutting functions or concerns so they may be implemented using new aspect oriented constructs and thus reduce the complexity of the existing code. One approach to the detection of these cross cutting concerns generates a method call tree that outlines the method calls made within the existing code. The call tree is then examined to find recurring patterns of methods that can be symptoms of cross cutting concerns. The conducted research focused on enhancing this approach to detect and quantify cross cutting concerns that are a result of code tangling as well as code scattering. The conducted research also demonstrates how this aspect mining approach can be used to overcome the difficulties in detection caused by variations in the coding structure introduced by over time

    Método de tratamento de tokens para a identificação de concerns em código MATLAB

    Get PDF
    Em engenharia de software, o termo concern é descrito como uma qualquer abstração, conceito ou conjunto consistente de responsabilidades que gostaríamos de localizar no seu próprio módulo. No entanto, os paradigmas de programação têm bastante dificuldade em modularizar os concerns em sistemas de software. A presença de concerns ao longo de vários sistemas pode ser detetada através de sintomas a que esses concerns dão origem no código, com destaque para concerns não-modularizados. Este trabalho contribui para a maturação duma técnica destinada a detetar e analisar a presença de concerns em sistemas MATLAB, baseada no mapeamento de grupos de tokens a concerns específicos. A tese a ser desenvolvida pretende validar e melhorar essa técnica. Para tal, esta tese emprega métodos da linguística computacional, dos quais se destaca a informação mútua pontual, que permitem validar e refinar os grupos de tokens relacionados com determinados concerns. A análise dos resultados deste tipo de métricas, recolhidas com base num repositório de código MATLAB específico, pretendem analisar a proximidade entre tokens através das suas ocorrências e coocorrências nesse mesmo repositório. A análise e comparação entre estas métricas poderá indicar alterações relativamente às relações existentes entre tokens e concerns sobre a abordagem existente. Dessa forma, pretende-se que este trabalho valide essa abordagem fazendo a correspondência indicada entre concerns e tokens para a identificação de concerns no código MATLAB

    Aspect Mining Using Multiobjective Genetic Clustering Algorithms

    Get PDF
    In legacy software, non-functional concerns tend to cut across the system and manifest themselves as tangled or scattered code. If these crosscutting concerns could be modularized and the system refactored, then the system would become easier to understand, modify, and maintain. Modularized crosscutting concerns are known as aspects and the process of identifying aspect candidates in legacy software is called aspect mining. One of the techniques used in aspect mining is clustering and there are many clustering algorithms. Current aspect mining clustering algorithms attempt to form clusters by optimizing one objective function. However, the objective function to be optimized tends to bias the formation of clusters towards the data model implicitly defined by that function. One solution is to use algorithms that try to optimize more than one objective function. These multiobjective algorithms have been used successfully in data mining but, as far as this author knows, have not been applied to aspect mining. This study investigated the feasibility of using multiobjective evolutionary algorithms, in particular, multiobjective genetic algorithms, in aspect mining. The study utilized an existing multiobjective genetic algorithm, MOCK, which had already been tested against several popular single objective clustering algorithms. MOCK has been shown to be, on average, as good as, and sometimes better than, those algorithms. Since some of those data mining algorithms have counterparts in aspect mining, it was reasonable to assume that MOCK would perform at least as good in an aspect mining context. Since MOCK\u27s objective functions were not directly trying to optimize aspect mining metrics, the study also implemented another multiobjective genetic algorithm, AMMOC, based on MOCK but tailored to optimize those metrics. The reasoning hinged on the fact that, since the goal was to determine if a clustering method resulted in optimizing these quality metrics, it made sense to attempt to optimize these functions directly instead of a posteriori. This study determined that these multiobjective algorithms performed at least as good as two popular aspect mining algorithms, k-means and hierarchical agglomerative. As a result, this study has contributed to both the theoretical body of knowledge in the field of aspect mining as well as provide a practical tool for the field

    Management Aspects of Software Clone Detection and Analysis

    Get PDF
    Copying a code fragment and reusing it by pasting with or without minor modifications is a common practice in software development for improved productivity. As a result, software systems often have similar segments of code, called software clones or code clones. Due to many reasons, unintentional clones may also appear in the source code without awareness of the developer. Studies report that significant fractions (5% to 50%) of the code in typical software systems are cloned. Although code cloning may increase initial productivity, it may cause fault propagation, inflate the code base and increase maintenance overhead. Thus, it is believed that code clones should be identified and carefully managed. This Ph.D. thesis contributes in clone management with techniques realized into tools and large-scale in-depth analyses of clones to inform clone management in devising effective techniques and strategies. To support proactive clone management, we have developed a clone detector as a plug-in to the Eclipse IDE. For clone detection, we used a hybrid approach that combines the strength of both parser-based and text-based techniques. To capture clones that are similar but not exact duplicates, we adopted a novel approach that applies a suffix-tree-based k-difference hybrid algorithm, borrowed from the area of computational biology. Instead of targeting all clones from the entire code base, our tool aids clone-aware development by allowing focused search for clones of any code fragment of the developer's interest. A good understanding on the code cloning phenomenon is a prerequisite to devise efficient clone management strategies. The second phase of the thesis includes large-scale empirical studies on the characteristics (e.g., proportion, types of similarity, change patterns) of code clones in evolving software systems. Applying statistical techniques, we also made fairly accurate forecast on the proportion of code clones in the future versions of software projects. The outcome of these studies expose useful insights into the characteristics of evolving clones and their management implications. Upon identification of the code clones, their management often necessitates careful refactoring, which is dealt with at the third phase of the thesis. Given a large number of clones, it is difficult to optimally decide what to refactor and what not, especially when there are dependencies among clones and the objective remains the minimization of refactoring efforts and risks while maximizing benefits. In this regard, we developed a novel clone refactoring scheduler that applies a constraint programming approach. We also introduced a novel effort model for the estimation of efforts needed to refactor clones in source code. We evaluated our clone detector, scheduler and effort model through comparative empirical studies and user studies. Finally, based on our experience and in-depth analysis of the present state of the art, we expose avenues for further research and development towards a versatile clone management system that we envision

    Reengineering legacy software products into software product line

    Get PDF
    Ph.DDOCTOR OF PHILOSOPH

    A Survey of Automated Code-Level Aspect Mining Techniques

    No full text
    This paper offers a first, in-breadth survey and comparison of current aspect mining tools and techniques. It focuses mainly on automated techniques that mine a program’s static or dynamic structure for candidate aspects. We present an initial comparative framework for distinguishing aspect mining techniques, and assess known techniques against this framework. The results of this assessment may serve as a roadmap to potential users of aspect mining techniques, to help them in selecting an appropriate technique. It also helps aspect mining researchers to identify remaining open research questions, possible avenues for future research, and interesting combinations of existing techniques
    corecore