16 research outputs found
Interactive Query Language for Code Comprehension
Code comprehension is a fundamental task for software development. Every bug fix, maintenance or new feature development requires the whole understanding of the affectedcode. There exist a number of code comprehension tools but most of them has a limitedfeature set and they are binded with a fixed (usually) graphical user interface.
This putlimitations for their use. In this thesis we will define a flexible but safe query language to execute the most fundamental comprehension queries against a large code base.
We will investigate how much this language could be language agnostic and how to support specificlanguage features. I will implement a prototype tool to prove the concept using the opensource CodeCompass code comprehension platform. In this prototype i mainly target C and C++ languages
SusTrainable: Promoting Sustainability as a Fundamental Driver in Software Development Training and Education. 2nd Teacher Training, January 23-27, 2023, Pula, Croatia. Revised lecture notes
This volume exhibits the revised lecture notes of the 2nd teacher training
organized as part of the project Promoting Sustainability as a Fundamental
Driver in Software Development Training and Education, held at the Juraj
Dobrila University of Pula, Croatia, in the week January 23-27, 2023. It is the
Erasmus+ project No. 2020-1-PT01-KA203-078646 - Sustrainable. More details can
be found at the project web site https://sustrainable.github.io/
One of the most important contributions of the project are two summer
schools. The 2nd SusTrainable Summer School (SusTrainable - 23) will be
organized at the University of Coimbra, Portugal, in the week July 10-14, 2023.
The summer school will consist of lectures and practical work for master and
PhD students in computing science and closely related fields. There will be
contributions from Babe\c{s}-Bolyai University, E\"{o}tv\"{o}s Lor\'{a}nd
University, Juraj Dobrila University of Pula, Radboud University Nijmegen,
Roskilde University, Technical University of Ko\v{s}ice, University of
Amsterdam, University of Coimbra, University of Minho, University of Plovdiv,
University of Porto, University of Rijeka.
To prepare and streamline the summer school, the consortium organized a
teacher training in Pula, Croatia. This was an event of five full days,
organized by Tihana Galinac Grbac and Neven Grbac. The Juraj Dobrila University
of Pula is very concerned with the sustainability issues. The education,
research and management are conducted with sustainability goals in mind.
The contributions in the proceedings were reviewed and provide a good
overview of the range of topics that will be covered at the summer school. The
papers in the proceedings, as well as the very constructive and cooperative
teacher training, guarantee the highest quality and beneficial summer school
for all participants.Comment: 85 pages, 8 figures, 3 code listings and 1 table; editors: Tihana
Galinac Grbac, Csaba Szab\'{o}, Jo\~{a}o Paulo Fernande
Practical heuristics to improve precision for erroneous function argument swapping detection in C and C++
Argument selection defects, in which the programmer chooses the wrong argument to pass to a parameter from a potential set of arguments in a function call, is a widely investigated problem. The compiler can detect such misuse of arguments only through the argument and parameter type for statically typed programming languages. When adjacent parameters have the same type or can be converted between one another, a swapped or out of order call will not be diagnosed by compilers. Related research is usually confined to exact type equivalence, often ignoring potential implicit or explicit conversions. However, in current mainstream languages, like C++, built-in conversions between numerics and user-defined conversions may significantly increase the number of mistakes to go unnoticed. We investigated the situation for C and C++ languages where developers can define functions with multiple adjacent parameters that allow arguments to pass in the wrong order. When implicit conversions – such as parameter pairs of types ``(int, bool)`` – are taken into account, the number of mistake-prone functions markedly increases compared to only strict type equivalence. We analysed a sample of projects and categorised the offending parameter types.
The empirical results should further encourage the language and library development community to emphasise the importance of strong typing and to restrict the proliferation of implicit conversions. However, the analysis produces a hard to consume amount of diagnostics for existing projects, and there are always cases that match the analysis rule but cannot be “fixed”. As such, further heuristics are needed to allow developers to refactor effectively based on the analysis results. We devised such heuristics, measured their expressive power, and found that several simple heuristics greatly help highlight the more problematic cases
Energy analysis in the CodeCompass system
Dissertação de mestrado em Computer ScienceGreen computing has an increasing importance in software engineering. Unfortunately,
there are lack of tools on this field to help developers to understand and fix issues related
to unwanted energy consumption.
The thesis project will provide Software (sw) eng. with information about energy consumption
of functions and methods. The CodeCompass system helps software developers to
understand their source code, and it was developed by the Hungarian team members of
Ericsson.
Thus, I will locate hot spots in the software’s source code responsible for abnormal energy
consumption, and I will do a plug-in to extend the CodeCompass tool so that it can automatically
locate such energy faults, helping software developers to optimize the energy
consumption of their software.Computação verde tem uma importância crescente em engenharia de software. Infelizmente,
há falta de ferramentas neste campo para ajudar os eng. de software a entender e
corrigir problemas relacionados ao consumo de energia indesejados.
O projecto desta tese fornecerá aos desenvolvedores de software informações sobre o consumo
de energia de funções e métodos. A ferramenta CodeCompass ajuda os engenheiros
de software a entender o código-fonte e foi desenvolvida pelos membros da equipa húngara
da Ericsson.
Por fim, localizarei zonas "quentes" no código fonte do software responsáveis pelo consumo
anormal de energia e irei construir um plug-in para estender a ferramenta CodeCompass
para que ela possa localizar automaticamente essas falhas de energia, ajudando os engenheiros
de software na otimização do consumo de energia de seus programas
Javaslatok a Language Server Protocol kiterjesztésére
Language Server Protocol (LSP) bemutatása. Rövid példákon, kód részleteken keresztüli szemléltetése a protokoll funkcióinak. Felhasználásának különböző lehetséges módjai és, hogy ennek a használata mennyivel könnyíti meg a fejlesztők életét. Nyelvi eszközök és a Visual Studio Code kapcsolata LSP-n keresztül
A Comprehensive Review on Software Comprehension Models
Software comprehension is one of the most important among software development tasks since most developers do not start a brand new software every time they switch jobs or get transferred from one project to another but join long-running software projects. Every experienced and expert developer has their own established methods of understanding complex software systems. These methods might be different for everyone but they still have common aspects by which multiple well-defined code comprehension models can be constructed. Furthermore, the degree of understanding of a software can be categorized as well, according to the ability of the programmer to modify or develop a certain part of the software system. This paper is intended to provide a review of the cognitive software comprehension models established by extensive research in this topic as well as describe the dimensions of understanding software. It also determines the editor support of cognition models by examining common editor functionalities and categorizing code editors based on the availability of functionalities of each cognition approach
Visualization of Read-Copy-Update synchronization contexts in C code
The Read-Copy-Update (RCU) mechanism is a way of synchronizing concurrent access to variables with the goal of prioritizing read performance over strict consistency guarantees. The main idea behind this mechanism is that RCU avoids the use of lock primitives while multiple threads try to read and update elements concurrently. In this case, elements are linked together through pointers in a shared data structure. RCU is used in the Linux kernel, but there are user-space libraries which implement the technique as well. One of the user-space solutions is liburcu that is a C language library. Earlier, we defined our code comprehension framework for easing the development of RCU solutions. In this paper, we present our visualization techniques for the Microsoft’s Monaco Editor
Visualization of Read-Copy-Update synchronization contexts in C code
The Read-Copy-Update (RCU) mechanism is a way of synchronizing concurrent access to variables with the goal of prioritizing read performance over strict consistency guarantees. The main idea behind this mechanism is that RCU avoids the use of lock primitives while multiple threads try
to read and update elements concurrently. In this case, elements are linked
together through pointers in a shared data structure. RCU is used in the
Linux kernel, but there are user-space libraries which implement the technique as well. One of the user-space solutions is liburcu that is a C language
library. Earlier, we defined our code comprehension framework for easing the
development of RCU solutions. In this paper, we present our visualization
techniques for the Microsoft’s Monaco Editor
A comprehensive review on software comprehension models
Software comprehension is one of the most important among software de-
velopment tasks since most developers do not start a brand new software
every time they switch jobs or get transferred from one project to another
but join long-running software projects. Every experienced and expert developer
has their own established methods of understanding complex software
systems. These methods might be different for everyone but they still have
common aspects by which multiple well-defined code comprehension models
can be constructed. Furthermore, the degree of understanding of a software
can be categorized as well, according to the ability of the programmer to modify
or develop a certain part of the software system. This paper is intended
to provide a review of the cognitive software comprehension models established
by extensive research in this topic as well as describe the dimensions
of understanding software. It also determines the editor support of cognition
models by examining common editor functionalities and categorizing code
editors based on the availability of functionalities of each cognition approach