“In fact what I would like to see is thousands of computer scientists let loose to do whatever they want. That’s what really advances the field” - Donald Knuth

My Research Overview

Softwares have impacted billions of life across the world. Starting from its inception in the 1930s, usage of software kept expanding to different walks of life. Over the years, software complexity has further increased due to the ever-increasing pervasive nature of modern software systems, resulting in different architecting challenges to ensure better performance, reliability, security, etc. Furthermore, modern software systems generate a tremendous amount of data. In fact, we live in a data-driven world powered by software where we have an abundance of data generated by different sources like web applications, smartphones, sensors, etc. A recent article from Forbes quotes that about 2.5 quintillion bytes of data are created every day. This number is expected to increase drastically in the years to come. Over the years, with the advancements in computing infrastructure, these data have been fueled by Artificial Intelligence (AI), in particular, Machine Learning (ML) to generate actionable insights. It has further paved the way for developing software systems and services that power autonomous vehicles, recommendations in Netflix, search results in Google, etc.

My Research Overview

As remarked by one of the pioneers of the modern AI, Andrew Ng, AI is considered the new electricity and is expected to transform the world just like electricity did about 100 years ago. However, the increasing adoption of AI has given rise to different challenges associated with development practices, deployments, ensuring data quality, etc. in addition to the challenges of a traditional software system. These challenges call for better architecting practices for addressing the concerns of AI-based software systems.

On the one hand, we have software systems that generate a tremendous amount of data but face different architectural challenges. Some of those challenges can be solved using AI and on the other hand, we have AI systems that thrive on data but require better architecting practices. This combination of challenges in the field of Software architecture and AI has resulted in two broad research areas: i) Software architecture for AI systems. It primarily focuses on developing architectural techniques for better developing AI systems; ii) AI for Software architectures, which focuses on developing AI techniques to better architect software systems. My research focusses on addressing this two broad research challenges. This is accomplished by: i) by identifying the challenges and solutions for coming up with best practices for architecting AI in particular ML-enabled systems and; ii) By developing ML-based approaches for architecting self-adaptive software systems. The research is further applied to domains such as IoT, Microservices, Robotic systems, etc. More specifically my research can be classified into the following areas:

Machine Learning for Software Architecture (ML4SA)

Software systems are subjected to various types of run-time uncertainties which can have a huge impact on the overall Quality of Service (QoS). Over the last decade, self-adaptation has emerged as a possible solution to tackle such issues as it allows softwares to overcome run-time uncertainties thereby providing guarantees to the overall QoS. Many approaches to self-adaptation has been proposed in the literature. However, even though they allow systems to overcome a given uncertainty, they do not necessarily allow the system to improve its adaptation capability with each adaptation. To this end, this research area focusses on devising machine learning based self-adaptation approach which allows the system to continously adapt and improve the architecture at run-time. The research is further applied to microservice-based systems, robotic and generic CPS, etc.

Software Architecture for Machine Learning (SA4ML)

This area aims to contribute to improving the architecting practices in developing AI/ML-enabled software systems. ML-enabled systems bring in additional challenges with respect to traditional software systems. This is due to the factors such as the: i) probabilistic nature of outputs leading to uncertainties; ii) heavy dependance on quality of data used for training; iii) need to constantly improve models to prevent issues associated to model drift; iv) CPU and energy intensive nature of the algorithms with potential impact on the overall system performance and the list goes on. Moreover, as per latest statistics, close to 80% of the ML-enabled systems do not make it into production due to the challenges associated with maintainability. This calls for devising better approaches to architect ML-enabled systems. For instance, coming up with architectural patterns and tactics for building ML-enabled systems, solving challenges associated with maintainability of ML-enabled systems, etc.

Software Architecture for Internet of Things

The advent of Internet of Things (IoT) has resulted in software becoming more and more pervasive in nature. IoT development is not just about software or hardware but its about building a system which consists of a set of connected components in the form of different sensors and actuators deployed in an environment (human body, outside space, etc) which functions or communicates with the help of smart, lightweight and even complex software in some cases. On one hand, IoT systems are becoming more and more popular especially due to the innovations in wearable computing, availability of 5G infrastructure and so on. On the other hand, developing and maintaining IoT systems poses lots of challenges due to heterogeneity, interoperability, security, scalability, etc. To this end, this research direction aims to develop approaches to solve various challenges associated with architecting large scale IoT systems. This involves developing hyper scalable architectures, building model-driven frameworks, etc.

Green software

One of the main challenges for the Software engineering community going forward is to reduce the impact of software systems on the global carbon footprint. By 2025, ICT is expected to consume 30% of worlds electricity and already contributes to about 10% of global footprint. To this end, this research direction aims to come up with architecture-centric approach for developing green software systems. These approaches will be applied to real-life ML-enabled and IoT systems.


The above research has resulted in some initial publications. You can find the detailed list of publications here


A big thanks to all my past and present collaborators who all have helped me to improve my research and personal skills.

  1. Prof. Henry Muccini, Full Professor, University of L’Aquila, Italy (Supervisor)
  2. Dr. Javier Camara, Associate Professor, University of Malaga, Spain
  3. Prof. Mauro Caporuscio, Full Professor, Linneaus University, Sweden
  4. Dr. Martina De Sanctis, Assistant Professor, Gran Sasso Science Institute, Italy
  5. Dr. Mahyar Mogahaddam, Assistant Professor, University of Southern Denmark (SDU), Denmark
  6. Dr. Guilia De Masi, Principal Scientist, Technology Innovation Institute (TII), Abu Dhabi, UAE
  7. Dr. Bradley Schmerl, Principal Systems Scientist, Carnengie Mellon University (CMU), USA