157 research outputs found
Structured Review of the Evidence for Effects of Code Duplication on Software Quality
This report presents the detailed steps and results of a structured review of code clone literature. The aim of the review is to investigate the evidence for the claim that code duplication has a negative effect on code changeability. This report contains only the details of the review for which there is not enough place to include them in the companion paper published at a conference (Hordijk, Ponisio et al. 2009 - Harmfulness of Code Duplication - A Structured Review of the Evidence)
The DynAlloy Visualizer
We present an extension to the DynAlloy tool to navigate DynAlloy
counterexamples: the DynAlloy Visualizer. The user interface mimics the
functionality of a programming language debugger. Without this tool, a DynAlloy
user is forced to deal with the internals of the Alloy intermediate
representation in order to debug a flaw in her model.Comment: In Proceedings LAFM 2013, arXiv:1401.056
Structural Complexity and Decay in FLOSS Systems: An Inter-Repository Study
Past software engineering literature has firmly established that software architectures and the associated code decay over time. Architectural decay is, potentially, a major issue in Free/Libre/Open Source Software (FLOSS) projects, since developers sporadically joining FLOSS projects do not always have a clear understanding of the underlying architecture, and may break the overall conceptual structure by several small changes to the code base.
This paper investigates whether the structure of a FLOSS system and its decay can also be influenced by the repository in which it is retained: specifically,
two FLOSS repositories are studied to understand whether the complexity of the software structure in the sampled projects is comparable, or one repository hosts more complex systems than the other. It is also studied
whether the effort to counteract this complexity is dependent on the repository, and the governance it gives to the hosted projects.
The results of the paper are two-fold: on one side, it is shown that the repository hosting larger and more active projects presents more complex structures. On the other side, these larger and more complex systems benefit
from more anti-regressive work to reduce this complexity
NuzzleBug: Debugging Block-Based Programs in Scratch
While professional integrated programming environments support developers
with advanced debugging functionality, block-based programming environments for
young learners often provide no support for debugging at all, thus inhibiting
debugging and preventing debugging education. In this paper we introduce
NuzzleBug, an extension of the popular block-based programming environment
Scratch that provides the missing debugging support. NuzzleBug allows
controlling the executions of Scratch programs with classical debugging
functionality such as stepping and breakpoints, and it is an omniscient
debugger that also allows reverse stepping. To support learners in deriving
hypotheses that guide debugging, NuzzleBug is an interrogative debugger that
enables to ask questions about executions and provides answers explaining the
behavior in question. In order to evaluate NuzzleBug, we survey the opinions of
teachers, and study the effects on learners in terms of debugging effectiveness
and efficiency. We find that teachers consider NuzzleBug to be useful, and
children can use it to debug faulty programs effectively. However, systematic
debugging requires dedicated training, and even when NuzzleBug can provide
correct answers learners may require further help to comprehend faults and
necessary fixes, thus calling for further research on improving debugging
techniques and the information they provide.Comment: To appear at the 2024 IEEE/ACM 46th International Conference on
Software Engineering (ICSE '24), April 14--20, 2024, Lisbon, Portuga
Mutation analysis to evaluate Lustre program specifications in the context of model-checking
Mutation analysis is a technique used to evaluate the ad- equacy of a test set with respect to a fault model. This approach is mainly used for unit testing evaluation. It is also used to produce new test data. In this paper, we apply mutation analysis in order to evaluate the accuracy of a specification in the context of reactive program verification by model-checking
- …