128 research outputs found
From zero to hero: A process mining tutorial
Process mining is an emerging area that synergically combines model-based and data-oriented analysis techniques to obtain useful insights on how business processes are executed within an organization. This tutorial aims at providing an introduction to the key analysis techniques in process mining that allow decision makers to discover process models from data, compare expected and actual behaviors, and enrich models with key information about the actual process executions. In addition, the tutorial will present concrete tools and will provide practical skills for applying process mining in a variety of application domains, including the one of software development
Climbing Routes Clustering Using Energy-Efficient Accelerometers Attached to the Quickdraws
One of the challenges for climbing gyms is to find out popular routes for the
climbers to improve their services and optimally use their infrastructure. This
problem must be addressed preserving both the privacy and convenience of the
climbers and the costs of the gyms. To this aim, a hardware prototype is
developed to collect data using accelerometer sensors attached to a piece of
climbing equipment mounted on the wall, called quickdraw, that connects the
climbing rope to the bolt anchors. The corresponding sensors are configured to
be energy-efficient, hence becoming practical in terms of expenses and time
consumption for replacement when used in large quantities in a climbing gym.
This paper describes hardware specifications, studies data measured by the
sensors in ultra-low power mode, detect patterns in data during climbing
different routes, and develops an unsupervised approach for route clustering
Does Cyclomatic or Cognitive Complexity Better Represents Code Understandability? An Empirical Investigation on the Developers Perception
Background. Code understandability is fundamental. Developers need to clearly
understand the code they are modifying. A low understandability can increase
the amount of coding effort and misinterpretation of code has impact on the
entire development process. Ideally, developers should write clear and
understandable code with the least possible effort. Objective. The goal of this
work is to investigate if the McCabe Cyclomatic Complexity or the Cognitive
Complexity can be a good predictor for the developers' perceived code
understandability to understand which of the two complexities can be used as
criteria to evaluate if a piece of code is understandable. Method. We designed
and conducted an empirical study among 216 junior developers with professional
experience ranging from one to four years. We asked them to manually inspect
and rate the understandability of 12 Java classes that exhibit different levels
of Cyclomatic and Cognitive Complexity. Results. Cognitive Complexity slightly
outperforms the Cyclomatic Complexity to predict the developers' perceived
understandability. Conclusion. The identification of a clear and validated
measure for Code Complexity is still an open issue. Neither the old fashioned
McCabe Cyclomatic Complexity and the most recent Cognitive Complexity are good
predictors for code understandability, at least when considering the complexity
perceived by junior developers
Open Tracing Tools: Overview and Critical Comparison
Background. Coping with the rapid growing complexity in contemporary software
architecture, tracing has become an increasingly critical practice and been
adopted widely by software engineers. By adopting tracing tools, practitioners
are able to monitor, debug, and optimize distributed software architectures
easily. However, with excessive number of valid candidates, researchers and
practitioners have a hard time finding and selecting the suitable tracing tools
by systematically considering their features and advantages. Objective. To such
a purpose, this paper aims to provide an overview of the popular tracing tools
on the market via a critical comparison. Method. Herein, we first identified 11
tools in an objective, systematic, and reproducible manner adopting the
Systematic Multivocal Literature Review protocol. Then, we characterized each
tool looking at the 1) measured features, 2) popularity both in peer-reviewed
literature and online media, and 3) benefits and issues. Results. As a result,
this paper presents a systematic comparison amongst the selected tracing tools
in terms of their features, popularity, benefits and issues. Conclusion. Such a
result mainly shows that each tracing tool provides a unique combination of
features with also different pros and cons. The contribution of this paper is
to provide the practitioners better understanding of the tracing tools
facilitating their adoption
Big Code != Big Vocabulary: Open-Vocabulary Models for Source Code
Statistical language modeling techniques have successfully been applied to
large source code corpora, yielding a variety of new software development
tools, such as tools for code suggestion, improving readability, and API
migration. A major issue with these techniques is that code introduces new
vocabulary at a far higher rate than natural language, as new identifier names
proliferate. Both large vocabularies and out-of-vocabulary issues severely
affect Neural Language Models (NLMs) of source code, degrading their
performance and rendering them unable to scale.
In this paper, we address this issue by: 1) studying how various modelling
choices impact the resulting vocabulary on a large-scale corpus of 13,362
projects; 2) presenting an open vocabulary source code NLM that can scale to
such a corpus, 100 times larger than in previous work; and 3) showing that such
models outperform the state of the art on three distinct code corpora (Java, C,
Python). To our knowledge, these are the largest NLMs for code that have been
reported.
All datasets, code, and trained models used in this work are publicly
available.Comment: 13 pages; to appear in Proceedings of ICSE 202
development tools usage inside out
The software engineering community is continuously producing tools to tackle software construction problems. This paper presents a research study to identify which tools, artifacts, and commands developers use during task solving and how one can design software that can suggest and convince the developer to use specific software construction techniques. We want to understand under which conditions developers accept suggestions for a more efficient and effective usage of the available instruments, and if observed usage patterns correlate with observable improvements in the process or product. The expected results include detailed logs of how developers construct software during XP 2016, their preferences for software construction recommendations, and which effects accepted suggestions have on task execution and outcome
Breaks and Code Quality: Investigating the Impact of Forgetting on Software Development. A Registered Report
Developers interrupting their participation in a project might slowly forget
critical information about the code, such as its intended purpose, structure,
the impact of external dependencies, and the approach used for implementation.
Forgetting the implementation details can have detrimental effects on software
maintenance, comprehension, knowledge sharing, and developer productivity,
resulting in bugs, and other issues that can negatively influence the software
development process. Therefore, it is crucial to ensure that developers have a
clear understanding of the codebase and can work efficiently and effectively
even after long interruptions. This registered report proposes an empirical
study aimed at investigating the impact of the developer's activity breaks
duration and different code quality properties. In particular, we aim at
understanding if the amount of activity in a project impact the code quality,
and if developers with different activity profiles show different impacts on
code quality. The results might be useful to understand if it is beneficial to
promote the practice of developing multiple projects in parallel, or if it is
more beneficial to reduce the number of projects each developer contributes
- …