Publications Publication list in PDF

Bug prediction aims at finding source code elements in a software system that are likely to contain defects. Being aware of the most …

Working with machine learning models has become an everyday task not only for software engineers, but for a much wider spectrum of …

Bugs are inescapable during software development due to frequent code changes, tight deadlines, etc.; therefore, it is important to …

JavaScript is a popular programming language that is also error‐prone due to its asynchronous, dynamic, and loosely typed nature. In …

Our increasing reliance on software products and the amount of money we spend on creating and maintaining them makes it crucial to find …

Bug datasets have been created and used by many researchers to build and validate novel bug prediction models. In this work, our aim is …

Heterogeneous computer environments are becoming commonplace so it is increasingly important to understand how and where we could …

Call graphs provide the groundwork for numerous analysis algorithms and tools. However, in practice, their construction may have …

The rapid rise of cyber-crime activities and the growing number of devices threatened by them place software security issues in the …

In our recent work, we proposed BugsJS, a benchmark of several hundred bugs from popular JavaScript server-side programs. In this …

JavaScript is a popular programming language that is also error-prone due to its asynchronous, dynamic, and loosely-typed nature. In …

The SONARQUBE platform is a widely used open-source tool for continuous code quality management. It provides an API to extend the …

The popularity and wide adoption of JavaScript both at the client and server side makes its code analysis more important than ever …

Context: Refactoring is a technique for improving the internal structure of software systems. It has a solid theoretical background …

Background: Bug datasets have been created and used by many researchers to build bug prediction models.

Aims: In this work we collected …

We examine hundreds of manual refactoring commits from large-scale industrial systems.We study the effects of these commits on source …

Newer technologies - programming languages, environments, libraries - change very rapidly. However, various internal and external …

Refactoring is a popular technique for improving the internal structure of software systems. It has a solid theoretical background …

Besides well-known CPU based architectures, the so-called accelerators (GPU, DSP, FPGA) are about to gain ground in everyday …

Code refactoring has a solid theoretical background while being used in development practice at the same time. However, previous works …

Detecting defects in software systems is an evergreen topic, since there is no real world software without bugs. Many different bug …

There are several challenges which should be kept in mind during the design and development phases of a refactoring tool, and one is …

It is very common in various fields that there is a gap between theoretical results and their practical applications. This is true for …

In this study we present how some version control history based metrics affect maintainability of the source code. These metrics cover …

Context
Program queries play an important role in several software evolution tasks like program comprehension, impact analysis, or the …

One solution to prevent the quality erosion of a software product is to maintain its quality by continuous refac-toring. However, …

Refactoring is often treated as the main remedy against the unavoidable code erosion happening during software evolution. Studies show …

It is a well-known phenomena that the source code of software systems erodes during development, which results in higher maintenance …

Heterogeneous environments are becoming commonplace so it is increasingly important to understand how and where we could execute a …

The RPG programming language is a popular language employed widely in IBM i mainframes nowadays. Legacy mainframe systems that evolved …

Software systems erode during development, which results in high maintenance costs in the long term. Is it possible to narrow down …

In software systems the coding errors are unavoidable due to the frequent source changes, the tight deadlines and the inaccurate …

Most of the runtime failures of a software system can be revealed during test execution only, which has a very high cost. The symbolic …

The IBM i mainframe was designed to manage business applications for which the reliability and quality is a matter of national …

The SourceMeter Sonar Qube plug-in is an extension of Sonar Qube, an open-source platform for managing code quality made by Sonar …

The quality of a software system is mostly defined by its source code. Software evolves continuously, it gets modified, enhanced, and …

The number of software systems under development and maintenance is rapidly increasing. The quality of a system’s source code tends to …

Software development in C/C++ languages is tightly coupled with preprocessor directives. While the use of preprocessor constructs …

Similarly to design patterns and their inherent extra information about the structure and design of a system, antipatterns - or bad …

Refactoring source code has many benefits (e.g. improving maintainability, robustness and source code quality), but it takes time away …

Measuring software product maintainability is a central issue in software engineering which led to a number of different practical …

Software systems are evolving continuously in order to fulfill the ever-changing business needs. This endless modification, however, …

Program queries play an important role in several software evolution tasks like program comprehension, impact analysis, or the …

Both for software developers and managers it is crucial to have information about different aspects of the quality of their systems. …

Most of the runtime failures of a software system can be revealed during test execution only, which has a very high cost. In Java …

A good compiler which implements many optimizations during its compilation phases must be able to perform several static analysis …

Software erosion is a well-known phenomena, meaning that software quality is continuously decreasing due to the ever-ongoing …

Most of the runtime failures of a software system can be revealed during test execution only, which has a very high cost. In Java …

A good compiler which implements many optimizations during its compilation phases must be able to perform several static analysis …

Preprocessors such as cpp are often used to manage families of programs from a common code base. The approach is simple, but code …

Regression testing is an important step to make sure that after committing a change to our software we do not make unwanted changes to …

Most of the software maintenance costs come from usability bugs reported after the release and deployment. A usability bug is really …

Testing an application via its Graphical User Interface (GUI) requires lots of manual work, even if some steps of GUI testing can be …

Version control systems store the whole history of the source code. Since the source code of a system is organized into files and …

Measuring source code maintainability has always been a challenge for software engineers. To address this problem, a number of …

Measuring source code maintainability has always been a challenge for software engineers. To address this problem, a number of …

The maintainability of software systems is getting more and more attention both from researchers and industrial experts. This is due to …

Although the belief of utilizing design patterns to create better quality software is fairly widespread, there is relatively little …

In the age of advanced integrated development environments there is a lack of support for understanding preprocessor macros. The …

In this paper we present a maintainability based model for estimating the costs of developing source code in its evolution phase. Our …

This special issue on Software Quality and Maintainability offers a venue to researchers to present their original work and to …

Measuring high level quality attributes of operation-critical IT systems is essential for keeping the maintainability costs under …

A good software development process involves thorough testing phases, that are usually expensive, but necessary to deliver a reliable …

It is common that due to the pressure of business, banking systems evolve and grow fast and even the slightest wrong decision may …

In order to take the right decisions in estimating the costs and risks of a software change, it is crucial for the developers and …

Nowadays, the most popular programming languages are so-called third generation languages, such as Java, C# and C++, but higher level …

Re-engineering a legacy software system to support new, modern technologies instead of old ones is not an easy task, especially for …

In this paper we present an approach and a toolset for automatic bug prediction during software development and maintenance. The …

The availability of up-to-date documentation of the architecture is crucial for software maintenance tasks, but it is often missing or …

The paper presents two novel conceptual metrics for measuring coupling and cohesion in software systems. Our first metric, Conceptual …

Nowadays there are many tools and methods available for source code quality assurance based on static analysis, but most of these tools …

Having an up-to-date knowledge of the architecture of a software system is of primary importance, since it affects every aspect of …

The paper proposes a new measure for the cohesion of classes in Object-Oriented software systems. It is based on the analysis of latent …

When developing a software system developers use the scripts of a given operating system (e.g. Windows) to solve certain problems and …

Coupling is an important property of software systems, which directly impacts program comprehension. In addition, the strength of …

Several tools are published in the literature which are able to mine design pattern usage from source code. Because a common test …

Recovering design pattern usage in source code is a very difficult task. Several tools are described in the literature for this …

Several tools and methods for source code quality assurance based on static analysis finally reached a state when they are applicable …

In this paper we present work in progress towards implementing a benchmark called BEFRIEND (BEnchmark For Reverse engInEering tools …

High cohesion is a desirable property of software as it positively impacts understanding, reuse, and maintenance. Currently proposed …

Reverse engineering tools analyze the source code of a software system and produce various results, which usually point back to the …

Although source code cloning (copy&paste programming) represents a significant threat to the maintainability of a software system, …

The expressiveness of the C/C++ preprocessing facility enables the development of highly configurable source code. However, the usage …

Several tools are published in the literature which are able to mine design patterns from source code. Because a common test database - …

The usage of software metrics for various purposes has become a hot research topic in academia and industry (e.g. detecting design …

In this paper, we study a metamodel for the C++ programming language. We work out refactorings on the C++ metamodel and present the …

Many articles and tools have been proposed over the years for mining design patterns from source code. These tools differ in several …

Open source software systems are becoming increasingly important these days. Many companies are investing in open source projects and …

BibTeX: @InProceedings{FBF05, author = {Ferenc, Rudolf and Besz\'edes, {\'A}rp\'ad and F\"ul\"op, Lajos Jen{\H{o}} and Lele, …

In this paper we present our approach to several common problems in reverse engineering that are built around the Columbus framework. …

Automatic fact extraction from software systems is the fundamental building block in the process of understanding the relationships …

Open source software systems are becoming increasingly important these days. Many companies are investing in open source projects and …

In this paper we summarize our experiences in designing and running CSiBE, the new code size benchmark for GCC. Since its introduction …

Fact extraction from software systems is the fundamental building block in the process of understanding the relationships among the …

File inclusion, conditional compilation and macro processing has made the C/C++ preprocessor a powerful tool for programmers. However, …

In this work we present a new method called compiler wrapping for extracting information from the source code of large software systems …

Modern object oriented software systems, to meet the continuously growing expectations of the market, are getting more and more …

Program code compression is an emerging research activity that is having an impact in several production areas such as networking and …

Design patterns are micro architectures that have proved to be reliable, easy-to implement and robust. There is a need in science and …

A method for recognizing design patterns from C++ programs is presented. The method consists of two separate phases, analysis and …

One of the most critical issues in large-scale software development and maintenance is the rapidly growing size and complexity of …

To successfully carry out a software maintenance or reengineering task, a suitably assembled set of tools is required, which …

Developing a standard schema at the abstract syntax tree (AST) level for C/C++ to be used by reverse engineering and reengineering …

A method for recognizing design patterns from C++ programs is presented. The method consists of two separate phases, analysis and …

One of the most critical issues in large-scale software development and maintenance is the rapidly growing size and complexity of the …

Parsing C++ source code and extracting information from it is inherently a very difficult task (and for most researchers it is out of …

In this paper we shortly present a reverse engineering framework called Columbus that is able to analyze large C/C++ projects. Columbus …

One of the most critical issues in large-scale software development and maintenance is the rapidly growing size and complexity of the …

The reverse engineering capabilities of a software tool system are essential for the process of analyzing and understanding complex …
Publication list in PDF