Current Projects

RECHARGE

Funder: MIUR - PRIN: Progetti di Ricerca di Rilevante Interesse Nazionale – Bando 2022 PNRR
Role: Unit Leader

Modern software systems are heterogeneous and feature different non-functional requirements. For example, smartphones have limited battery life and require software optimized to reduce energy consumption. Embedded systems often come with performance-critical requirements specifying precise time windows in which a task must be executed. Nevertheless, most issues reported during software testing are related to software crashes or incorrect system responses, while system performance degradations are often neglected. The problem is even more relevant in Continuous Integration and Deployment (CI/CD), where software is built on a dedicated infrastructure every time a change is pushed. Automated performance testing in CI/CD is still an ongoing effort. RECHARGE is a novel automated framework for automating performance testing in CI/CD pipelines leveraging static analysis and search-based algorithms.

SMARTITUDE

Funder: MIUR - PRIN: Progetti di Ricerca di Rilevante Interesse Nazionale – Bando 2022
Role: Principal Investigator

Decentralized finance (DeFi) is changing finance, having prominence from the summer of 2020 with yield farming and the rise of tokens promising attractive yields to crypto traders. DeFi is based on blockchain, a decentralized, distributed digital ledger, where transactions are used to transfer cryptocurrency from one address to another and deploy and interact with blockchain smart contracts (BSC). Once passed the consensus check and written to the blockchain, a BSC and its transactions are immutable, despite programming defects, security vulnerabilities, or faulty transactions. Incorrect computations are frozen forever in the blockchain. Therefore, achieving accurate and comprehensive testing and verification of BSC failures and security vulnerabilities requires specific approaches that consider the persistent nature of code in this novel programming model. Smartitude aims to provide a comprehensive set of software engineering methods and tools to improve the BSC quality assurance by leveraging automated test case generation and formal methods.

Previous Projects

RADON H2020

Funder: European Union Horizon 2020
Role: Work Package Leader

RADON aims at creating a DevOps framework to create and manage microservices-based applications that can optimally exploit serverless computing technologies. These applications will include fine-grained and independently deployable microservices that can efficiently exploit FaaS and container technologies. The RADON framework will consist of an integrated methodology and an open source toolchain, to define, evolve, and operate event-centric applications that consume serverless functions, allowing a high-degree of reuse and automation of functions, services and associated data pipelines. The end goal is to broaden the adoption of serverless computing technologies within the European software industry. The methodology will strive to tackle complexity, harmonize the abstraction and actuation of action-trigger rules, avoid FaaS lock-in, and optimize decomposition and reuse through model-based FaaS-enabled development and orchestration.

Web Site

SECO-ASSIST 2018-2021

Funder: Fonds de la Recherche Scientifique and Fonds voor Wetenschappelijk Onderzoek – Vlaanderen
Role: Work Package Leader

Software ecosystems are the most promising avenue for organising the software needs of the digital era. Jointly funded by F.R.S.-FNRS and FWO-Vlaanderen, the four-year Excellence of Science Project SECO-ASSIST aims to realise a scientific breakthrough to nurture the ecosystems of the future, by providing novel software recommendation techniques that address the resilience, evolvability, heterogeneity, and social interaction. To achieve this the project partners will combine their expertise in social networks (UMONS), software testing (UAntwerpen), software reuse (VUB) and database evolution (UNamur).

Web Site

INTiMALS

Funder: Innoviris
Role: Work Package Leader

This project’s goal is to research and deploy novel pattern mining algorithms in an industrial prototype of an intelligent modernisation assistant for legacy software systems. The assistant pro-actively recommends software engineers source code modernisation actions by comparing their current development efforts with insights gained by treating source code repositories as data. The assistant draws its intelligence from continuously mining for previously unknown patterns in the current state and structure of the system’s source code (programming idioms, coding conventions, library usage protocols) and in changes made to this code (systematic edits, repetitive changes). The proposed modernisation actions appear increasingly informed as the recommendation assistant uncovers and refines more patterns in the code, version and change repositories it mines. The success of the modernisation assistant hinges on the quality of the pattern mining algorithms it incorporates and their ability to improve their results by learning from their interaction with the software engineers.

Web Site

Tools

Defuse

Defuse automatically collects and classifies failure data, enables the correction of those classifications, and builds machine learning models to detect defects based on those data. We instantiated the tool in the scope of Infrastructure-as-Code, the DevOps practice enabling management and provisioning of infrastructure through the definition of machine-readable files. It is released under the Apache 2.0 license.

Source Code - Video

RepoMiner

RepoMiner is a language-agnostic tool developed to support software engineering researchers in creating datasets to support any study on defect prediction.RepoMiner automatically collects failure data from software components, labels them as failure-prone or neutral, and calculates metrics to be used as ground truth for defect prediction models. It is released under the Apache 2.0 license.

Source Code - Documentation

AnsibleMetrics

AnsibleMetrics is a Python-based static source code measurement tool to characterize Infrastructure-as-Code. It analyzes Ansible projects, but it could be easily extended to support additional formats. AnsibleMetrics represents a step forward towards software quality support for DevOps engineers developing and maintaining infrastructure code. It is released under the Apache 2.0 license.

Source Code - Documentation

SoCRATES

SoCRATES is an IntelliJ IDEA plugin to detect test smells in Scala/SBT projects. It automatically detects and reports on six test smells including four variants of General Fixture. It is released under the MIT license.

Source Code

aDoctor

aDoctor is an IntellJ IDEA plugin to detect and refactor five Android-specific code smells that impact the energy consumption of these applications. It is released under the MIT license.

Plugin - Source Code - Video

PETrA

PETrA is a software able to estimate the energy consumption of method calls in Android apps. It is based on some Android tools that are Monkey, Batterystats, Systrace, and dmtracedump.

Web Site - Video

Landfill

Landfill is a code smell dataset.

Web Site

Tools I contributed to

Gnome Maps

Gnome Maps is a map application for GNOME.

Web Site

GraphHopper

GraphHopper offers memory efficient algorithms in Java for routing on graphs. E.g. Dijkstra and A* but also optimized road routing algorithms like Contraction Hierarchies. It stands under the Apache License and is build on a large test suite.

Web Site