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
005
Publications

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

A Pattern Language for Engineering Software for the Cloud

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

Publication
Lecture Notes in Computer Science

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.

2024

Live software documentation of design pattern instances

Authors
Lemos, F; Correia, FF; Aguiar, A; Queiroz, PGG;

Publication
PEERJ COMPUTER SCIENCE

Abstract
Background: Approaches to documenting the software patterns of a system can support intentionally and manually documenting them or automatically extracting them from the source code. Some of the approaches that we review do not maintain proximity between code and documentation. Others do not update the documentation after the code is changed. All of them present a low level of liveness. Approach: This work proposes an approach to improve the understandability of a software system by documenting the design patterns it uses. We regard the creation and the documentation of software as part of the same process and attempt to streamline the two activities. We achieve this by increasing the feedback about the pattern instances present in the code, during development-i.e., by increasing liveness. Moreover, our approach maintains proximity between code and documentation and allows us to visualize the pattern instances under the same environment. We developed a prototype-DesignPatternDoc-for IntelliJ IDEA that continuously identifies pattern instances in the code, suggests them to the developer, generates the respective pattern-instance documentation, and enables live editing and visualization of that documentation. Results: To evaluate this approach, we conducted a controlled experiment with 21 novice developers. We asked participants to complete three tasks that involved understanding and evolving small software systems-up to six classes and 100 lines of code-and recorded the duration and the number of context switches. The results show that our approach helps developers spend less time understanding and documenting a software system when compared to using tools with a lower degree of liveness. Additionally, embedding documentation in the IDE and maintaining it close to the source code reduces context switching significantly.

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.

2024

Patterns for Container Orchestration: Focus Group Report

Authors
Maia, D; 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
While a wide range of resources is available on orchestration techniques and best practices for containerized software systems, many are not documented clearly or in detail. This complicates the process of selecting the most suitable methods for various usage scenarios. To address this gap, we documented a set of orchestration patterns. This paper reports the results of a focus group conducted during the EuroPLoP 2024 conference, where we aimed to obtain feedback on that group of patterns and on a wider pattern map we outlined. We also aimed to identify container orchestration patterns that have not yet been documented. We found that participants knew most of the patterns we included on the pattern map. Additionally, one of the practices mentioned by the participants (Node Balancing) was previously documented as a pattern by us with the name of Service Balancing. Finally, we found important insights into container orchestration patterns, expanding our pattern map to include eight new proto-patterns.

Supervised
thesis

2024

Quality evaluation techniques for Model-Agnostic Methods in Machine Learning Explainability

Author
Ahmed Adel Fares Gadelrab Mohamed

Institution
UP-FEUP

2023

Improving the Developer Experience of Dockerfiles

Author
João Pereira da Silva Matos

Institution
UP-FEUP

2023

Assisted and Incremental Refactoring Towards a Microservice Architecture

Author
Rita Matos Maranhao Peixoto

Institution
UP-FEUP

2023

Trusted Data Transformation with Blockchain Technology in Open Data

Author
Bruno Mário Tavares

Institution
UP-FEUP

2022

Service Mesh Design Patterns

Author
João Tiago Duarte Maia

Institution
UP-FEUP