273 research outputs found
Getting Things Done: The Eelco Way
Eelco Visser (1966-2022) was a leading member of the department of Software Technology (ST) of the faculty of Electrical Engineering Mathematics, and Computer Science (EEMCS) of Delft University of Technology. He had a profound influence on the educational programs in computer science at TU Delft, built a highly successful Programming Languages Group from the ground up, and used his research results to develop widely used tools and services that have been used by thousands of students and researchers for more than a decade. He realized all these successes not just alone, but in close collaboration with a range of people, who he convinced to follow his lead. In this short reflection, I look back at his achievements, and at the way in which he worked with others to bring ambitious ideas to successful reality
A Systematic Aspect-Oriented Refactoring and Testing Strategy, and its Application to JHotDraw
Aspect oriented programming aims at achieving better modularization for a
system's crosscutting concerns in order to improve its key quality attributes,
such as evolvability and reusability. Consequently, the adoption of
aspect-oriented techniques in existing (legacy) software systems is of interest
to remediate software aging. The refactoring of existing systems to employ
aspect-orientation will be considerably eased by a systematic approach that
will ensure a safe and consistent migration.
In this paper, we propose a refactoring and testing strategy that supports
such an approach and consider issues of behavior conservation and (incremental)
integration of the aspect-oriented solution with the original system. The
strategy is applied to the JHotDraw open source project and illustrated on a
group of selected concerns. Finally, we abstract from the case study and
present a number of generic refactorings which contribute to an incremental
aspect-oriented refactoring process and associate particular types of
crosscutting concerns to the model and features of the employed aspect
language. The contributions of this paper are both in the area of supporting
migration towards aspect-oriented solutions and supporting the development of
aspect languages that are better suited for such migrations.Comment: 25 page
An Architectural Style for Ajax
A new breed of web application, dubbed AJAX, is emerging in response to a
limited degree of interactivity in large-grain stateless Web interactions. At
the heart of this new approach lies a single page interaction model that
facilitates rich interactivity. We have studied and experimented with several
AJAX frameworks trying to understand their architectural properties. In this
paper, we summarize three of these frameworks and examine their properties and
introduce the SPIAR architectural style. We describe the guiding software
engineering principles and the constraints chosen to induce the desired
properties. The style emphasizes user interface component development, and
intermediary delta-communication between client/server components, to improve
user interactivity and ease of development. In addition, we use the concepts
and principles to discuss various open issues in AJAX frameworks and
application development.Comment: 2nd revision: references ordered, images resized, typo
The effects of change decomposition on code review -- a controlled experiment
Background: Code review is a cognitively demanding and time-consuming
process. Previous qualitative studies hinted at how decomposing change sets
into multiple yet internally coherent ones would improve the reviewing process.
So far, literature provided no quantitative analysis of this hypothesis.
Aims: (1) Quantitatively measure the effects of change decomposition on the
outcome of code review (in terms of number of found defects, wrongly reported
issues, suggested improvements, time, and understanding); (2) Qualitatively
analyze how subjects approach the review and navigate the code, building
knowledge and addressing existing issues, in large vs. decomposed changes.
Method: Controlled experiment using the pull-based development model
involving 28 software developers among professionals and graduate students.
Results: Change decomposition leads to fewer wrongly reported issues,
influences how subjects approach and conduct the review activity (by increasing
context-seeking), yet impacts neither understanding the change rationale nor
the number of found defects.
Conclusions: Change decomposition reduces the noise for subsequent data
analyses but also significantly supports the tasks of the developers in charge
of reviewing the changes. As such, commits belonging to different concepts
should be separated, adopting this as a best practice in software engineering
A common framework for aspect mining based on crosscutting concern sorts
The increasing number of aspect mining techniques proposed in literature calls for a methodological way of comparing and combining them in order to assess, and improve on, their quality. This paper addresses this situation by proposing a common framework based on crosscutting concern sorts which allows for consistent assessment, comparison and combination of aspect mining techniques. The framework identifies a set of requirements that ensure homogeneity in formulating the mining goals, presenting the results and assessing their quality.
We demonstrate feasibility of the approach by retrofitting an existing aspect mining technique to the framework, and by using it to design and implement two new mining techniques. We apply the three techniques to a known aspect mining benchmark and show how they can be consistently assessed
and combined to increase the quality of the results. The techniques and combinations are implemented in FINT, our publicly available free aspect mining tool
Enriching Source Code with Contextual Data for Code Completion Models: An Empirical Study
Transformer-based pre-trained models have recently achieved great results in
solving many software engineering tasks including automatic code completion
which is a staple in a developer's toolkit. While many have striven to improve
the code-understanding abilities of such models, the opposite -- making the
code easier to understand -- has not been properly investigated. In this study,
we aim to answer whether making code easier to understand through using
contextual data improves the performance of pre-trained code language models
for the task of code completion. We consider type annotations and comments as
two common forms of additional contextual information that often help
developers understand code better. For the experiments, we study code
completion in two granularity levels; token and line completion and take three
recent and large-scale language models for source code: UniXcoder, CodeGPT, and
InCoder with five evaluation metrics. Finally, we perform the Wilcoxon Signed
Rank test to gauge significance and measure the effect size. Contrary to our
expectations, all models perform better if type annotations are removed (albeit
the effect sizes are small). For comments, we find that the models perform
better in the presence of multi-line comments (again with small effect sizes).
Based on our observations, we recommend making proper design choices when
training, fine-tuning, or simply selecting such models given the intended data
and application. Better evaluations and multi-modal techniques can also be
further investigated to improve the practicality and accuracy of
auto-completions.Comment: 13 pages. To appear in the Proceedings of the 20th International
Conference on Mining Software Repositories (MSR 2023
- …