Cookies Policy
The website need some cookies and similar means to function. If you permit us, we will use those means to collect data on your visits for aggregated statistics to improve our service. Find out More
Accept Reject
  • Menu
About

About

Currently professor at FEUP and researcher at INESC TEC, formerly software architect, coach, and developer. His research interests focus in software engineering topics, namely on Software Architecture, Design Patterns, Cloud Computing, Continuous Delivery, Agility and Live Software Development. He is especially interested in microservice-based architectures and the highly maintainable and flexible systems that they allow to create.

Interest
Topics
Details

Details

  • Name

    Filipe Figueiredo Correia
  • Role

    Area Manager
  • Since

    01st December 2018
006
Publications

2025

A Pattern Language for Engineering Software for the Cloud

Authors
Sousa, TB; Ferreira, HS; Correia, FF;

Publication
Transactions on Pattern Languages of Programming V

Abstract
Software businesses are continuously increasing their presence in the cloud. While cloud computing is not a new research topic, designing software for the cloud is still challenging, requiring engineers to invest in research to become proficient at working with it. Design patterns can be used to facilitate cloud adoption, as they provide valuable design knowledge and implementation guidelines for recurrent engineering problems. This work introduces a pattern language for designing software for the cloud. We believe developers can significantly reduce their R&D time by adopting these patterns to bootstrap their cloud architecture. The language comprises 10 patterns, organized into four categories: Automated Infrastructure Management, Orchestration and Supervision, Monitoring, and Discovery and Communication. © The Author(s), under exclusive license to Springer-Verlag GmbH, DE, part of Springer Nature 2025.

2025

Multilanguage Detection of Design Pattern Instances

Authors
Andrade, H; Bispo, J; Correia, FF;

Publication
JOURNAL OF SOFTWARE-EVOLUTION AND PROCESS

Abstract
Code comprehension is often supported by source code analysis tools that provide more abstract views over software systems, such as those detecting design patterns. These tools encompass analysis of source code and ensuing extraction of relevant information. However, the analysis of the source code is often specific to the target programming language. We propose DP-LARA, a multilanguage pattern detection tool that uses the multilanguage capability of the LARA framework to support finding pattern instances in a code base. LARA provides a virtual AST, which is common to multiple OOP programming languages, and DP-LARA then performs code analysis of detecting pattern instances on this abstract representation. We evaluate the detection performance and consistency of DP-LARA with a few software projects. Results show that a multilanguage approach does not compromise detection performance, and DP-LARA is consistent across the languages we tested it for (i.e., Java and C/C++). Moreover, by providing a virtual AST as the abstract representation, we believe to have decreased the effort of extending the tool to new programming languages and maintaining existing ones.

2025

Can ChatGPT Suggest Patterns? An Exploratory Study About Answers Given by AI-Assisted Tools to Design Problems

Authors
Maranhao, JJ Jr; Correia, FF; Guerra, EM;

Publication
AGILE PROCESSES IN SOFTWARE ENGINEERING AND EXTREME PROGRAMMING-WORKSHOPS, XP 2024 WORKSHOPS

Abstract
General-purpose AI-assisted tools, such as ChatGPT, have recently gained much attention from the media and the general public. That raised questions about in which tasks we can apply such a tool. A good code design is essential for agile software development to keep it ready for change. In this context, identifying which design pattern can be appropriate for a given scenario can be considered an advanced skill that requires a high degree of abstraction and a good knowledge of object orientation. This paper aims to perform an exploratory study investigating the effectiveness of an AI-assisted tool in assisting developers in choosing a design pattern to solve design scenarios. To reach this goal, we gathered 56 existing questions used by teachers and public tenders that provide a concrete context and ask which design pattern would be suitable. We submitted these questions to ChatGPT and analyzed the answers. We found that 93% of the questions were answered correctly with a good level of detail, demonstrating the potential of such a tool as a valuable resource to help developers to apply design patterns and make design decisions.

2024

Towards Living Software Architecture Diagrams

Authors
Correia, FF; Ferreira, R; Queiroz, PGG; Nunes, H; Barra, M; Figueiredo, D;

Publication
CoRR

Abstract

2024

Patterns for Anonymization, Pseudonymization and Perturbation: Focus Group Report

Authors
Monteiro, M; Correia, FF; Queiroz, PGG;

Publication
Proceedings of the 29th European Conference on Pattern Languages of Programs, People, and Practices, EuroPLoP 2024, Irsee, Germany, July 3-7, 2024

Abstract
Ensuring privacy while sharing sensitive data is critical, particularly in fields such as healthcare, and everywhere compliance with data protection regulations is required. Anonymization and pseudonymization techniques are essential for preserving individual privacy but it is challenging to select the most appropriate methods given particular privacy and utility requirements. We conducted a focus group during the EuroPLoP 2024 conference that aimed to obtain feedback on patterns that we documented in this space and on a pattern map we outlined, and to identify patterns related to anonymization or pseudonymization of data that have not yet been documented. Some of the patterns we documented were not known by participants. On the other hand, we found some techniques that are potentially privacy-preserving patterns that have not yet been documented, and framed these techniques according to the category in our pattern map. Although the results suggest that our current patterns address some recurring privacy challenges, further exploration and documentation of the techniques are necessary to capture the full range of privacy-preserving solutions.