“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 achitecting 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.

You can find my 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