285 research outputs found

    Mining Crosscutting Concerns through Random Walks

    Full text link

    TOOL SUPPORT FOR CAPTURING THE ESSENCE OF A CONCERN IN SOURCE CODE

    Get PDF
    Software evolves constantly to adapt to changing user needs. As it evolves, it becomes progressively harder to understand due to accumulation of code changes, increasing code size, and the introduction of complex code dependencies. As a result, it becomes harder to maintain, exposing the software to potential bugs and degradation of code quality. High maintenance costs and diminished opportunities for software reusability and portability lead to reduced return on investment, increasing the likelihood of the software product being discarded or replaced. Nevertheless, we believe that there is value in legacy software due to the amount of intellectual efforts that have been invested in it. To extend its value, we utilize the common practice of identifying the pieces of code relevant to a given concern. Identifying relevant code is a manual process and relies on domain and code expertise. This makes it difficult to scale to large and complex code. In this thesis, we propose several automated approaches for capturing the essential code that represents a concern of interest. We utilize dynamic program analysis of execution traces to identify a relevant code subset. Information retrieval techniques are then utilized to improve the accuracy of the capture, refine the process, and verify the results

    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

    Tool-supported identification of functional concerns in object-oriented code

    Get PDF
    Concern identification aims to find the implementation of a functional concern in existing source code. In this work, concerns are described, using the Hierarchic Concern Model, as gray-boxes containing subconcerns, inputs, and outputs. The inputs and outputs are used as concern seeds to identify data-oriented abstractions of concern implementations, called concern skeletons. The identification approach is based on context free language reachability and supported by a tool, called CoDEx

    On the naturalness of software

    Get PDF
    Natural languages like English are rich, complex, and powerful. The highly creative and graceful use of languages like English and Tamil, by masters like Shakespeare and Avvaiyar, can certainly delight and inspire. But in practice, given cognitive constraints and the exigencies of daily life, most human utterances are far simpler and much more repetitive and predictable. In fact, these utterances can be very usefully modeled using modern statistical methods. This fact has led to the phenomenal success of statistical approaches to speech recognition, natural language translation, question-answering, and text mining and comprehension. We begin with the conjecture that most software is also natural, in the sense that it is created by humans at work, with all the attendant constraints and limitations---and thus, like natural language, it is also likely to be repetitive and predictable. We then proceed to ask whether (a) code can be usefully modeled by statistical language models and (b) such models can be leveraged to support software engineers. Using the widely adopted n-gram model, we provide empirical evidence supportive of a positive answer to both these questions. We show that code is also very regular, and, in fact, even more so than natural languages. As an example use of the model, we have developed a simple code completion engine for Java that, despite its simplicity, already improves Eclipse's completion capability. We conclude the paper by laying out a vision for future research in this area

    The Tradeoffs of Societal Computing

    Get PDF
    As Social Computing has increasingly captivated the general public, it has become a popular research area for computer scientists. Social Computing research focuses on online social behavior and using artifacts derived from it for providing recommendations and other useful community knowledge. Unfortunately, some of that behavior and knowledge incur societal costs, particularly with regards to Privacy, which is viewed quite differently by different populations as well as regulated differently in different locales. But clever technical solutions to those challenges may impose additional societal costs, e.g., by consuming substantial resources at odds with Green Computing, another major area of societal concern. We propose a new crosscutting research area, Societal Computing, that focuses on the technical tradeoffs among computational models and application domains that raise significant societal issues. We highlight some of the relevant research topics and open problems that we foresee in Societal Computing where software engineering research approaches and techniques seem particularly likely to be fruitful. We feel that these topics, and Societal Computing in general, need to gain prominence as they will provide useful avenues of research leading to increasing benefits for society as a whole

    Research and Education in Computational Science and Engineering

    Get PDF
    Over the past two decades the field of computational science and engineering (CSE) has penetrated both basic and applied research in academia, industry, and laboratories to advance discovery, optimize systems, support decision-makers, and educate the scientific and engineering workforce. Informed by centuries of theory and experiment, CSE performs computational experiments to answer questions that neither theory nor experiment alone is equipped to answer. CSE provides scientists and engineers of all persuasions with algorithmic inventions and software systems that transcend disciplines and scales. Carried on a wave of digital technology, CSE brings the power of parallelism to bear on troves of data. Mathematics-based advanced computing has become a prevalent means of discovery and innovation in essentially all areas of science, engineering, technology, and society; and the CSE community is at the core of this transformation. However, a combination of disruptive developments---including the architectural complexity of extreme-scale computing, the data revolution that engulfs the planet, and the specialization required to follow the applications to new frontiers---is redefining the scope and reach of the CSE endeavor. This report describes the rapid expansion of CSE and the challenges to sustaining its bold advances. The report also presents strategies and directions for CSE research and education for the next decade.Comment: Major revision, to appear in SIAM Revie

    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

    Call graph reduction by static estimated function execution probability.

    Get PDF
    Lo, Kwun Kit.Thesis (M.Phil.)--Chinese University of Hong Kong, 2009.Includes bibliographical references (leaves 153-161).Abstracts in English and Chinese.Chapter 1 --- Introduction --- p.1Chapter 1.1 --- Existing Approaches in Program Understanding --- p.2Chapter 1.1.1 --- Localized Program Understanding --- p.2Chapter 1.1.2 --- Whole System Analysis --- p.3Chapter 1.2 --- Example of Function Execution Probability Reduction of the Call Graph --- p.5Chapter 1.3 --- Organization of the Dissertation --- p.7Chapter 2 --- Preliminary Study --- p.8Chapter 2.1 --- Participants --- p.8Chapter 2.2 --- Study Design --- p.8Chapter 2.3 --- ispell --- p.10Chapter 2.3.1 --- Subject I1 (ispell) --- p.10Chapter 2.3.2 --- Subject PG1 (ispell) --- p.12Chapter 2.3.3 --- Subject PG2 (ispell) --- p.13Chapter 2.3.4 --- Subject I2 (ispell) --- p.14Chapter 2.3.5 --- ispell Analysis --- p.15Chapter 2.4 --- FreeBSD Kernel Malloc --- p.15Chapter 2.4.1 --- Subject I1 (FreeBSD) --- p.16Chapter 2.4.2 --- Subject PG1 (FreeBSD) --- p.17Chapter 2.4.3 --- Subject PG2 (FreeBSD) --- p.18Chapter 2.4.4 --- Subject I2 (FreeBSD) --- p.20Chapter 2.4.5 --- FreeBSD Analysis --- p.20Chapter 2.5 --- Threats to Validity --- p.21Chapter 2.6 --- Summary --- p.22Chapter 3 --- Approach --- p.24Chapter 3.1 --- Building Branch-Preserving Call Graphs --- p.26Chapter 3.1.1 --- Branch Reserving Call Graphs --- p.26Chapter 3.1.2 --- Branch-Preserving Call Graphs --- p.28Chapter 3.1.3 --- Example of BPCG Building Process --- p.31Chapter 3.2 --- System Function Removal --- p.34Chapter 3.3 --- Function Rating Calculation --- p.35Chapter 3.3.1 --- Rating Algorithm Complexity --- p.38Chapter 3.4 --- Building the Colored Call Graph --- p.39Chapter 3.5 --- Call Graph Reduction --- p.39Chapter 3.5.1 --- Remove-high-fan-in-functions Approach (FEPR-fanin) --- p.39Chapter 3.5.2 --- Remove-leaf-nodes Approach (FEPR-leaf) --- p.41Chapter 4 --- Validation --- p.42Chapter 4.1 --- Measures --- p.43Chapter 4.1.1 --- Inclusion Accuracy (IA) --- p.43Chapter 4.1.2 --- Reduction Efficiency (RE) --- p.44Chapter 4.1.3 --- Stability (S) --- p.45Chapter 4.2 --- Analysis of FEPR Techniques --- p.45Chapter 4.2.1 --- Settings --- p.45Chapter 4.2.2 --- Inclusion Accuracy (IA): --- p.47Chapter 4.2.3 --- Reduction Efficiency (RE): --- p.47Chapter 4.2.4 --- Stability (S) --- p.48Chapter 4.3 --- Ying and Tarr´ةs Approach --- p.48Chapter 4.3.1 --- Settings --- p.50Chapter 4.3.2 --- Inclusion Accuracy (IA) --- p.50Chapter 4.3.3 --- Reduction Efficiency (RE) --- p.51Chapter 4.3.4 --- Stability (S) --- p.51Chapter 4.4 --- Centrality Measure Approach --- p.52Chapter 4.4.1 --- Inclusion Accuracy (IA) --- p.53Chapter 4.5 --- Top-down Search Approach --- p.56Chapter 4.5.1 --- Reduction Efficiency (RE) --- p.57Chapter 4.6 --- Synthesized Analysis --- p.58Chapter 4.6.1 --- Inclusion Accuracy (IA) --- p.58Chapter 4.6.2 --- Reduction Efficiency (RE) --- p.59Chapter 4.6.3 --- Stability (S) --- p.59Chapter 4.6.4 --- Threats to Validity --- p.59Chapter 4.7 --- Summary --- p.60Chapter 5 --- Discussion --- p.62Chapter 5.1 --- Flexibility of Analysis --- p.62Chapter 5.2 --- "Existence of Function Pointers, GOTOs and Early Exits" --- p.62Chapter 5.3 --- Precision of Branch-Preserving Call Graphs --- p.63Chapter 5.4 --- Function Ranking and Recommender System --- p.64Chapter 5.5 --- Extending the Approach Beyond C --- p.66Chapter 6 --- Related Work --- p.67Chapter 6.1 --- Existing Approaches in Program Understanding --- p.67Chapter 6.1.1 --- Localized Program Understanding --- p.67Chapter 6.1.2 --- Whole Program Analysis --- p.69Chapter 6.2 --- Branch Prediction and Static Profiling --- p.73Chapter 7 --- Conclusions --- p.76Chapter A --- Call Graphs in Case Studies --- p.78Chapter B --- Source Files for BPCG Builder --- p.85Bibliography --- p.15
    • …
    corecore