29,753 research outputs found
Deep Learning Anti-patterns from Code Metrics History
Anti-patterns are poor solutions to recurring design problems. Number of
empirical studies have highlighted the negative impact of anti-patterns on
software maintenance which motivated the development of various detection
techniques. Most of these approaches rely on structural metrics of software
systems to identify affected components while others exploit historical
information by analyzing co-changes occurring between code components. By
relying solely on one aspect of software systems (i.e., structural or
historical), existing approaches miss some precious information which limits
their performances.
In this paper, we propose CAME (Convolutional Analysis of code Metrics
Evolution), a deep-learning based approach that relies on both structural and
historical information to detect anti-patterns. Our approach exploits
historical values of structural code metrics mined from version control systems
and uses a Convolutional Neural Network classifier to infer the presence of
anti-patterns from this information. We experiment our approach for the widely
known God Class anti-pattern and evaluate its performances on three software
systems. With the results of our study, we show that: (1) using historical
values of source code metrics allows to increase the precision; (2) CAME
outperforms existing static machine-learning classifiers; and (3) CAME
outperforms existing detection tools.Comment: Preprint. Paper accepted for inclusion in the Research Track of the
35th IEEE International Conference on Software Maintenance and Evolution
(ICSME 2019), Cleveland, Ohio, US
RePOR: Mimicking humans on refactoring tasks. Are we there yet?
Refactoring is a maintenance activity that aims to improve design quality
while preserving the behavior of a system. Several (semi)automated approaches
have been proposed to support developers in this maintenance activity, based on
the correction of anti-patterns, which are `poor' solutions to recurring design
problems. However, little quantitative evidence exists about the impact of
automatically refactored code on program comprehension, and in which context
automated refactoring can be as effective as manual refactoring. Leveraging
RePOR, an automated refactoring approach based on partial order reduction
techniques, we performed an empirical study to investigate whether automated
refactoring code structure affects the understandability of systems during
comprehension tasks. (1) We surveyed 80 developers, asking them to identify
from a set of 20 refactoring changes if they were generated by developers or by
a tool, and to rate the refactoring changes according to their design quality;
(2) we asked 30 developers to complete code comprehension tasks on 10 systems
that were refactored by either a freelancer or an automated refactoring tool.
To make comparison fair, for a subset of refactoring actions that introduce new
code entities, only synthetic identifiers were presented to practitioners. We
measured developers' performance using the NASA task load index for their
effort, the time that they spent performing the tasks, and their percentages of
correct answers. Our findings, despite current technology limitations, show
that it is reasonable to expect a refactoring tools to match developer code
A Machine-learning Based Ensemble Method For Anti-patterns Detection
Anti-patterns are poor solutions to recurring design problems. Several
empirical studies have highlighted their negative impact on program
comprehension, maintainability, as well as fault-proneness. A variety of
detection approaches have been proposed to identify their occurrences in source
code. However, these approaches can identify only a subset of the occurrences
and report large numbers of false positives and misses. Furthermore, a low
agreement is generally observed among different approaches. Recent studies have
shown the potential of machine-learning models to improve this situation.
However, such algorithms require large sets of manually-produced training-data,
which often limits their application in practice. In this paper, we present
SMAD (SMart Aggregation of Anti-patterns Detectors), a machine-learning based
ensemble method to aggregate various anti-patterns detection approaches on the
basis of their internal detection rules. Thus, our method uses several
detection tools to produce an improved prediction from a reasonable number of
training examples. We implemented SMAD for the detection of two well known
anti-patterns: God Class and Feature Envy. With the results of our experiments
conducted on eight java projects, we show that: (1) our method clearly improves
the so aggregated tools; (2) SMAD significantly outperforms other ensemble
methods.Comment: Preprint Submitted to Journal of Systems and Software, Elsevie
Mining Fix Patterns for FindBugs Violations
In this paper, we first collect and track a large number of fixed and unfixed
violations across revisions of software.
The empirical analyses reveal that there are discrepancies in the
distributions of violations that are detected and those that are fixed, in
terms of occurrences, spread and categories, which can provide insights into
prioritizing violations.
To automatically identify patterns in violations and their fixes, we propose
an approach that utilizes convolutional neural networks to learn features and
clustering to regroup similar instances. We then evaluate the usefulness of the
identified fix patterns by applying them to unfixed violations.
The results show that developers will accept and merge a majority (69/116) of
fixes generated from the inferred fix patterns. It is also noteworthy that the
yielded patterns are applicable to four real bugs in the Defects4J major
benchmark for software testing and automated repair.Comment: Accepted for IEEE Transactions on Software Engineerin
The Machine Learning Landscape of Top Taggers
Based on the established task of identifying boosted, hadronically decaying
top quarks, we compare a wide range of modern machine learning approaches.
Unlike most established methods they rely on low-level input, for instance
calorimeter output. While their network architectures are vastly different,
their performance is comparatively similar. In general, we find that these new
approaches are extremely powerful and great fun.Comment: Yet another tagger included
Report from GI-Dagstuhl Seminar 16394: Software Performance Engineering in the DevOps World
This report documents the program and the outcomes of GI-Dagstuhl Seminar
16394 "Software Performance Engineering in the DevOps World".
The seminar addressed the problem of performance-aware DevOps. Both, DevOps
and performance engineering have been growing trends over the past one to two
years, in no small part due to the rise in importance of identifying
performance anomalies in the operations (Ops) of cloud and big data systems and
feeding these back to the development (Dev). However, so far, the research
community has treated software engineering, performance engineering, and cloud
computing mostly as individual research areas. We aimed to identify
cross-community collaboration, and to set the path for long-lasting
collaborations towards performance-aware DevOps.
The main goal of the seminar was to bring together young researchers (PhD
students in a later stage of their PhD, as well as PostDocs or Junior
Professors) in the areas of (i) software engineering, (ii) performance
engineering, and (iii) cloud computing and big data to present their current
research projects, to exchange experience and expertise, to discuss research
challenges, and to develop ideas for future collaborations
- âŠ