1,347 research outputs found
Exploranative Code Quality Documents
Good code quality is a prerequisite for efficiently developing maintainable
software. In this paper, we present a novel approach to generate exploranative
(explanatory and exploratory) data-driven documents that report code quality in
an interactive, exploratory environment. We employ a template-based natural
language generation method to create textual explanations about the code
quality, dependent on data from software metrics. The interactive document is
enriched by different kinds of visualization, including parallel coordinates
plots and scatterplots for data exploration and graphics embedded into text. We
devise an interaction model that allows users to explore code quality with
consistent linking between text and visualizations; through integrated
explanatory text, users are taught background knowledge about code quality
aspects. Our approach to interactive documents was developed in a design study
process that included software engineering and visual analytics experts.
Although the solution is specific to the software engineering scenario, we
discuss how the concept could generalize to multivariate data and report
lessons learned in a broader scope.Comment: IEEE VIS VAST 201
Evolution of statistical analysis in empirical software engineering research: Current state and steps forward
Software engineering research is evolving and papers are increasingly based
on empirical data from a multitude of sources, using statistical tests to
determine if and to what degree empirical evidence supports their hypotheses.
To investigate the practices and trends of statistical analysis in empirical
software engineering (ESE), this paper presents a review of a large pool of
papers from top-ranked software engineering journals. First, we manually
reviewed 161 papers and in the second phase of our method, we conducted a more
extensive semi-automatic classification of papers spanning the years 2001--2015
and 5,196 papers. Results from both review steps was used to: i) identify and
analyze the predominant practices in ESE (e.g., using t-test or ANOVA), as well
as relevant trends in usage of specific statistical methods (e.g.,
nonparametric tests and effect size measures) and, ii) develop a conceptual
model for a statistical analysis workflow with suggestions on how to apply
different statistical methods as well as guidelines to avoid pitfalls. Lastly,
we confirm existing claims that current ESE practices lack a standard to report
practical significance of results. We illustrate how practical significance can
be discussed in terms of both the statistical analysis and in the
practitioner's context.Comment: journal submission, 34 pages, 8 figure
Community Smells -- The Sources of Social Debt: A Systematic Literature Review
Context: Social debt describes the accumulation of unforeseen project costs
(or potential costs) from sub-optimal software development processes. Community
smells are sociotechnical anti-patterns and one source of social debt that
impact software teams, development processes, outcomes, and organizations.
Objective: To provide an overview of community smells based on published
literature, and describe future research. Method: We conducted a systematic
literature review (SLR) to identify properties, understand origins and
evolution, and describe the emergence of community smells. This SLR explains
the impact of community smells on teamwork and team performance. Results: We
include 25 studies. Social debt describes the impacts of poor socio-technical
decisions on work environments, people, software products, and society. For
each of the 30 identified community smells, we provide a description,
management approaches, organizational strategies, and mitigation effectiveness.
We identify five groups of management approaches: organizational strategies,
frameworks, models, tools, and guidelines. We describe 11 properties of
community smells. We develop the Community Smell Stages Framework to concisely
describe the origin and evolution of community smells. We describe the causes
and effects for each community smell. We identify and describe 8 types of
causes and 11 types of effects for community smells. Finally, we provide 8
Sankey diagrams that offer insights into threats the community smells pose to
teamwork factors and team performance. Conclusion: Community smells explain the
influence work conditions have on software developers. The literature is scarce
and focuses on a small number of community smells. Thus, community smells still
need more research. This review organizes the state of the art about community
smells and provides motivation for future research along with educational
material.Comment: Accepted for publication in Information and Software Technolog
Cross-Dataset Design Discussion Mining
Being able to identify software discussions that are primarily about design,
which we call design mining, can improve documentation and maintenance of
software systems. Existing design mining approaches have good classification
performance using natural language processing (NLP) techniques, but the
conclusion stability of these approaches is generally poor. A classifier
trained on a given dataset of software projects has so far not worked well on
different artifacts or different datasets. In this study, we replicate and
synthesize these earlier results in a meta-analysis. We then apply recent work
in transfer learning for NLP to the problem of design mining. However, for our
datasets, these deep transfer learning classifiers perform no better than less
complex classifiers. We conclude by discussing some reasons behind the transfer
learning approach to design mining.Comment: accepted for SANER 2020, Feb, London, ON. 12 pages. Replication
package: https://doi.org/10.5281/zenodo.359012
Detecting modularity "smells" in dependencies injected with Java annotations
Dependency injection is a recent programming mechanism reducing dependencies among components by delegating them to an external entity, called a dependency injection framework. An increasingly popular approach to dependency injection implementation relies upon using Java annotations, a special form of syntactic metadata provided by the dependency injection frameworks. However, uncontrolled use of annotations may lead to potential violations of well-known modularity principles. In this paper we catalogue "bad smells", i.e., modularity-violating annotations defined by the developer or originating from the popular dependency injection frameworks. For each violation we discuss potential implications and propose means of resolving it. By detecting modularity bad smells in Java annotations our approach closes the gap between the state-of-the-art programming practice and currently available analysis techniques
- …