I am a Research Fellow at the University of Molise, Italy, where I am part of the STAKE lab. My research interests are in the field of Empirical Software Engineering, and they include Software Maintenance, Testing, and Security. I am also CSO at Datasound.
I received my Ph.D. from the University of Molise, defending a thesis entitled "Automatically Assessing and Improving Code Readability and Understandability", supervised by Prof. Rocco Oliveto.
I received my Master's Degree in Computer Science from the University of Salerno, defending a thesis on Search Based Software Testing, supervised by Prof. Andrea De Lucia.
I received my Bachelor's Degree in Computer Science from the University of Molise, defending a thesis on Software Readability, supervised by Prof. Rocco Oliveto and Prof. Denys Poshyvanyk.
ATTICUS (Ambient-intelligent Tele-monitoring and Telemetry for Incepting & Catering over hUman Sustainability) is a tele-service and remote monitoring system for ambient-assisted living based on the analysis of vital and behavioural parameters. ATTICUS finds fertile ground in all contexts where there is a small number of digitized services and home help for the citizen, and for those categories of individuals who tend to be more at risk, such as elderly people or people with disabilities. The aim of the ATTICUS project is to develop an intelligent hardware/software system that can constantly monitor an individual and report anomalies affecting both the health status (through the analysis of vital parameters) and the behaviour, detected through the monitoring and analysis of the moves that the person performs in carrying out his/her activities. The core component is represented by a Smart Wearable, a t-shirt made of innovative fabrics, embedding a data acquisition system (integrating into the fabric) that can measure vital parameters. The electronic device is capable of analysing both home and exterior user movements and to process and store locally acquired data and, whenever possible, transmit them in real time via wireless connection, to a home station (ambient intelligence device) or a monitoring station.
Code Readability Predictor. Unreadable code could compromise program comprehension and it could cause the introduction of bugs. Code consists of mostly natural language text, both in identifiers and comments, and it is a particular form of text. Nevertheless, the models proposed to estimate code readability take into account only structural aspects and visual nuances of source code, such as line length and alignment of characters. The model proposed considers also textual aspects. You can download the tool here.
TIRESIAS. Understanding software is an inherent requirement for many maintenance and evolution tasks. Without a thorough understanding of the code, a developer would not be able to adequately test the software nor fix bugs in a timely manner. Acquiring full knowledge about big codebases can be utopian, because it requires a big effort if no sufficient documentation is provided. TIRESIAS is an IntelliJ-IDEA plugin that aims at supporting newcomers in the code-understanding process. TIRESIAS allows to open (i) good candidate starting points, and (ii) central classes often referred throughout the whole project. You can download TIRESIAS here.
OCELOT (Optimal Coverage sEarch-based tooL for sOftware Testing) is a new test suite generation tool for C programs implemented in Java. Unlike previous tools for C programs, OCELOT automatically detects the input types of a given C function without requiring any specification of parameters. In addition, the tool handles the different data types of C, including structs and pointers and it is able to produce test suites based on the Check unit testing framework. Learn more at https://ocelot.science.
CLAP (Crowd Listener for releAse Planning) is a tool designed to support developers in timely addressing several kinds of problems that users report in their reviews on app markets. CLAP provides a web-interface through which developers can easily handle the reviews. As a first step, the tool automatically labels each review as a bug report, a feature request, a performance-, security-, energy-, usability-related issue, or "other" (i.e., non-informative review). Then, to reduce the cost of manually reading all the reviews, it clusters the ones that regard the same issue and it provides some keywords for each cluster. Finally, it prioritizes the clusters, showing in red the critical issues that should be addressed when planning the subsequent app release. Try CLAP at https://dibt.unimol.it/CLAP.
ACRyL. Android fragmentation is a well-known issue referring to the adoption, in the multitude of devices supporting the mobile operating system, of different Android versions. Recent reports show that the most adopted Android version (Oreo) is installed on only ∼28% of devices, with four other versions covering more than 10% of the devices each. Each Android version features a set of APIs provided to developers to build Android apps. These APIs are subject to changes and may result in compatibility issues. ACRyL is a tool that learns from changes implemented in other apps in response to API changes ("client side" learning). You can download ACRyL here.
Rust. A data analysis toolkit for Ruby. At the moment, it works by using R behind the scenes, and it provides the most useful functions, including statistical hypothesis tests, plots, models, and many others.
Silos. Some online contents, typically accessed through a browser, are fully fledged applications (web applications). YouTube or Google Maps are examples of that. These webapps are self-consistent, and they usually work very well without standard browser features (e.g., bookmarks or history). Silos is the simplest web browser conceivable: it only provides the content of the page and, by default, three actions (back, reload and home), accessible through a contextual menu. Nothing else. Silos is specific for webapps, and it works with a single webapp at a time. Users that want to access Google Maps can open Silos with a configuration file specific for that app. The configuration file allows to personalize the user experience of the specific webapp, adding shortcuts to the contextual menu. Silos opens links not related to the webapp (e.g., the webpage of a restaurant) in the default system browser. In summary, Silos transforms webapps in desktop apps with no effort and it provides a consistent user experience.