Research

Topics

Software Engineering

Research in software engineering aims at:

  1. developing new methods, tools, and frameworks to support the entire software development lifecycle or some of its phases with the objective of creating high quality software, and
  2. running empirical experiments that aim at assessing the behavior of software development and operation teams, and at evaluating the qualities of the produced software, as well as the effectiveness of specific methods, tools and frameworks.

A primary aspect in this area is the attention to new types of software that, because of their peculiarities, require the introduction of specific innovations in the lifecycle. For instance, important issues that have emerged in the last few years concern the analysis of “AI” software and its explainability, the definition of suitable programming and verification models for quantum computing, and the creation of architectures and frameworks to support the development of big data application.  

The DeepSE group is focusing on studying and proposing approaches for all the above issues. Another important area of interest is the application of model-driven engineering techniques to specific application domains, such as the creation of IaC (Infrastructure as Code), as well as the analysis of the impact of software on all dimensions (human, economical, and environmental) of sustainability and, vice versa. Our research efforts span multiple domains and fields of applications, such as distributed systems, robotics, automotive, Industry 4.0, and FinTech. The group employs interdisciplinary approaches to guarantee dependable, safe, efficient, and robust operations of software systems.

  • Baresi Luciano
  • Bersani Marcello M.
  • Camilli Matteo
  • Cugola Gianpaolo
  • Di Nitto Elisabetta
  • Fuggetta Alfonso
  • Morzenti Angelo Carlo
  • Mottola Luca
  • Margara Alessandro
  • Mirandola Raffaela
  • Pradella Matteo
  • Quattrocchi Giovanni
  • San Pietro Pierluigi
  • Sbattella Licia
  • Tamburri Damian

Parallel and Distributed Systems Engineering

In today’s landscape, software permeates every facet of our lives, often relying on multi-core processors or distributed servers, whether in close proximity to end-users (e.g., as seen in cyber-physical systems with edge-like compute scenarios) or dispersed globally within the cloud. Even our pocket-sized mobile phones enable parallel processing and the execution of complex tasks like voice-to-text translation and facial recognition.

Parallel and distributed systems play an indispensable role across computing domains (including, e.g., cloud computing, big data processing, and machine learning). Our research focuses on developing solutions to manage such systems throughout their lifecycle and aid software developers, application architects, and operations engineering in two key areas:

  1. Design process: we support the fulfillment of non-functional properties and software qualities (e.g., application execution time, system dependability, and energy-efficiency) even on extreme resource constrained devices, through model-driven-engineering, formal verification and automated testing, reliable and scalable middleware.
  2. Application deployment and operational efficiency: we leverage infrastructure-as-code solutions, machine-learning, and optimization techniques to pinpoint the most cost-effective deployment and operation strategies across the cloud-edge-IoT continuum (including nano-satellites and HPC systems).
  3. Data-intensive systems: we design and implement innovative distributed systems to manage and analyze large volumes of static and dynamic data. Our solutions aim to offer a high level of absolute performance and scalability, while retaining simple and expressive programming models.
  • Ardagna Danilo
  • Baresi Luciano
  • Camilli Matteo
  • Cugola Gianpaolo
  • Di Nitto Elisabetta
  • Margara Alessandro
  • Mirandola Raffaela
  • Mottola Luca
  • Quattrocchi Giovanni
  • Tamburri Damian

Algorithm Engineering and Theoretical Computer Science

Formal methods are techniques and tools for analyzing and verifying complex, safety-critical systems. This research area has produced strong theoretical results such as model checking techniques that are used to build industrial-strength tools for automatic analysis.

Our group owns a significant experience in this area. Over the years, we introduced and studied several new notations and languages to this aim (e.g., temporal and metric logics, variants of automata-based models, logics for push-down systems) which model the typical behavior of running programs written using modern programming languages, such as those offering exception systems, continuations, or transactional memory. Moreover, we established various model checking and verification tools supporting most of these notations.

  • Bersani Marcello M.
  • Fuggetta Alfonso
  • Morzenti Angelo Carlo
  • Mirandola Raffaela
  • Pradella Matteo
  • Rossi Matteo
  • San Pietro Pierluigi