The interest and expertise of the Compiler Technology group are centered on concepts, methods and tools for translation and optimization of languages. In the past we have developed static and dynamic compilers for a variety of languages and platforms. Current research activities focus on compiler and runtime support for parallel languages and programming model, on reverse engineering (decompilation), and on compiler support for emerging extra-functional properties, such as security and energy-efficiency.
The Natural Language Processing and Accessibility group conducts research activities for the creation of applications and adaptive software environments to support communication, relational, and cognitive processes. We leverage models and methods of SE, AI, and Deep Learning for analysis and management of both textual and vocal linguistic information (NLP), and for making our solutions accessibile. Our most innovative research concerns: analysis of dialogic interaction, with detection of emotional and affective states; prosody recognition, and support for improving its expression; learning of foreign languages; multimedia storytelling; extraction of information and reasoning; automatic summarisation; readability evaluation; semantic indexing; accessibility of documents, in accordance with the constantly evolving international regulations.
Most relevant research achievements
Transiently-powered IoT software
We are developing software techniques to support IoT embedded applications that may be unpredictably interrupted because of energy shortages and must later resume as soon as energy is newly available. Examples are in the domains of smart buildings and wearable devices, whose energy provisioning may be assisted through ambient energy harvesting and wireless energy transfer. Because energy availability will be erratic, shutdowns and reboots will frequently happen. To ameliorate this, we are seeking answers to three questions. First is how to enable checkpointing of the program state on stable storage with minimal latency and energy consumption. Second is how to determine when and how to intertwine checkpointing with the main application’s processing. Third is what support to offer to developers to manage the possibility that applications be interrupted for a non-negligible amount of time.
Resource management and monitoring of service-based, cloud, and big data application
We have developed a monitoring infrastructure (EcoWare) that allows developers to specify both functional and non-functional properties of service-based, cloud, and big-data applications. The monitoring platform has then been used to develop solutions for the automated allocation of computing resources. Proposed solutions are based on control theory and on the use of containers to get proper reaction times (with respect to the system evolution). The evaluation has been conducted on service-based and Web applications and also on big data applications.
A Model-Driven Approach for Quality Aware Big Data Applications
We developed methodologies and tools to design data-intensive applications that leverage Big Data technologies hosted in private or public clouds. In particular, we developed a novel UML profile and tools for the performance evaluation, verification, optimisation and automatic deployment of Big Data applications relying on principles from the emerging DevOps paradigm.
Middleware abstractions for distributed systems
We conducted several studies in the area of event-based and reactive systems. The most significant achievements are: REDS, a a distributed and reconfigurable publish/subscribe middleware; T-Rex, a Complex Event Processing (CEP) system that combines an expressive rule language with an efficient engine capable of leveraging multi-core CPUs and GPUs; CCBR, a publish/subscribe routing infrastructure for wireless sensor networks; DREAM, a middleware for distributed reactive programming with configurable consistency guarantees; T-SPoon, a stream processing system that offers transactional guarantees.
Formal Methods for Timed and Safety Critical Systems
We investigated the features of a variety of formalisms for describing and analyzing timed systems. We have also investigated techniques to model and analyze real-time systems through temporal logics. A technique to integrate continuous-time and discrete-time metric temporal specifications in the same framework was developed.
A model-driven solution for the creation of cross-platform mobile apps
We have studied the characteristics of both Android and iOS applications and then created a “generic” model of mobile app. The model has then been used to conceive ProtoCode, a toolset for the automated generation of native code for creating Android and iOS apps. The user can exploit a dedicated IDE to design the app in a kind of abstract way, and then ProtoCode generates automatically some 70/80% of the code needed.
Operator precedence languages
Operator precedence languages (OPL, Floyd 1963) enjoy all the closure properties of Regular, McNaughton's Parenthesis, and Visibly Pushdown (or Input-Driven) languages, yet are much more expressive. Automata theoretic and logic characterizations of OPL and their extension to omega languages have been defined, together with other logic models, with the goal of verification of timed and reactive push-down systems. We also proved that OPL enjoy the local parsability property, so their parsing can be efficiently parallelized; we devised and implemented a very efficient parallel parser generator called PAPAGENO.
Compiler Technologies for Extra-Functional Properties
We developed an OpenCL compiler and runtime support based on the LLVM infrastructure, OpenCRun; a runtime support library for parallel programming of deeply heterogeneous HPC systems with automated resource management, mangolibs; and a library for the management of dynamic (re)compilation in HPC applications, libVC. To support energy efficiency in both HPC and embedded low-power systems, we develop compiler techniques for automated precision tuning. Finally, a set of software techniques to provide security against side-channel attacks has been developed, including both vulnerability analysis and automated countermeasure application.
Reverse Engineering
We developed rev.ng, a decompiler based on LLVM and QEMU. rev.ng can easily support new architectures, thanks to its modular design based on industry-strength open source frameworks. Furthermore, rev.ng supports including binary-to-binary compilation (assuming the same OS but different architectures) and binary instrumentation. rev.ng can therefore be usefully applied for legacy application support in case of lost source codes, as well as for security analysis.
ICF*
The World Health Organization ICF model permits to describe each person through a list of qualitative values. The ICF does not permits to describe interaction abilities with computers, phones and other ICT devices. The ICF* we defined tries to address those issues, providing a simple yet expressive model, tailored for the description of university students and the personalization of software applications.
NLP applications
DIKE describes court interrogations, according to a multi-level model that includes analysis at the level of sentence, discourse and dialogue. DIKE allows the analysis of the moments of discontinuity and the definition of speakers’ profiles and interrogation profiles. PrEmA recognizes and classifies emotions expressed in speech, taking advantage of both acoustic features and textual information, coming from audio transcriptions. KASPAR permits to "train” prosody skills, by emulating expert speakers (actors, mother-tongue speakers, …). The prosody is represented drawing the contours of its fundamental parameters.