In the following I list the main software projects to which I contributed. For a more complete overview, please refer to my GitHub profile.

GitHub profile


A navigation-aware technique for personalized prefetching of network requests of Android apps. NAPPA is fully automated (with the possibility of custom behaviour provided by developers), transparent w.r.t. the back-end of the app (i.e., it is independent from the data types provided by the back-end and it does not require any modifications in the business logic of the back-end), and adapts its prefetching behaviour according to the navigation patterns of the user.


An technique for JavaScript dead code elimination, where existing JavaScript analysis techniques are applied in combination. Lacuna supports both static and dynamic analyses, it is extensible, and independent of the specificities of the used JavaScript analysis techniques. Lacuna can be applied to any JavaScript code base, without imposing any constraints to the developer, e.g., on coding style or on the use of some specific JavaScript feature (e.g., modules).

Android Time Machine

Android Time Machine provides a dataset (and mining infrastructure) including 8,431 real-world open-source Android apps. It combines source and commit history information available on GitHub with the metadata from Google Play store. The graph representation used for structuring the data eases the analysis of the relationships between source code and metadata. The dataset is provided as Docker containers to improve its accessibility and extensibility.

Android Runner

There are many experiments performed on Android devices through a laptop, and many of them have a custom test suite. At the VU we developed an Android Runner, an open-source tool to generalise the process, reducing boilerplate code and speeding up development. Android Runner is currently used in the Green Lab course at the VU and by other researchers in the software engineering community.


FLYAQ proposes an open source platform to support missions planning of autonomous quadrotors. FLYAQ will allow users to define missions at a high level of abstraction and the will automatically synthesize the code for each quadrotor that will be involved in the mission. In this way FLYAQ will allow an easy and error-prone definition of the missions, thus effectively supporting human personnel during missions.


A modelling and analysis platform to support an architecture-driven development of WSNs. The platform leverages a multi-view architectural approach based on three modeling languages to describe a WSN from different viewpoints. The modeling framework is supported by a programming framework that enables the implementation of analysis and code generation plugins by third party developers.


A framework for developing next generation ADLs according to their evolved requirements. Emerging requirements include: support for domain specific concerns, support for multiple views, extensibility, analysis features, interoperability with other ADLs, promote architecture-centric development and tool-support. byADL is implemented in Eclipse and it is built on model-driven technologies.


An Eclipse based framework to create interoperability among UML2 and Architectural Description Languages (ADLs). DUALLy works at two abstraction levels: meta-modeling (via AMW weaving models), and modeling (via UML, Ecore models and ATL transformations).


An infrastructure for realizing architecture frameworks with a focus on reusing already defined viewpoints and languages and considering stakeholders and their concerns as part of the framework itself. In this specific context, we refer to the conceptual foundations and on the definition of architecture framework provided in the ISO/IEC 42010 standard.


An encrypted(DES) port knocking tool. Knock sequences are defined through XML files; users specify: number of packets of each knock sequence, payload and header of each packet. Logging capability. Generation of smoke packets. No replay-attack.