Hugo Sereno Ferreira
Current Organizations / Institutes
The organizations/institutes from the scholar's latest article
Previous Organizations / Institutes
The organizations / institutes from the scholar's other articles in the past ten years
Research Subjects
Hugo Sereno Ferreira has a total of 71 co-authors. Here are the top co-authors by number of shared publications:
- João Pedro Dias
University of Porto
20 shared publications - Filipe Figueiredo Correia
Faculty of Engineering University of Porto Porto Portugal
12 shared publications - Ademar Aguiar
Department of Informatics Engineering, Faculty of Engineering, University of Porto, Porto, Portugal
11 shared publications - Tiago Boldt Sousa
University of Porto, Porto, Portugal
9 shared publications - André Restivo
Faculty of Engineering LIACC University of Porto Portugal
7 shared publications Ademar Aguiar
University of Porto, Portugal / INESC TEC, Portugal
3 shared publications
Latest Publications
- 21 March 2025
- Published by Springer Nature
- p. 1-66
A Pattern Language for Engineering Software for the Cloud
- 21 March 2025
- Published by Springer Nature
- p. 1-66
A Pattern Language for Engineering Software for the Cloud
- 24 April 2024
- Published by Elsevier in Journal of Systems and Software
- Vol. 214
WASMICO: Micro-containers in microcontrollers with WebAssembly
- 24 April 2024
- Published by Elsevier in Journal of Systems and Software
- Vol. 214
WASMICO: Micro-containers in microcontrollers with WebAssembly
- 15 January 2021
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. 48 (6) , 2128-2140
A Survey on the Adoption of Patterns for Engineering Software for the Cloud
This work takes as a starting point a collection of patterns for engineering software for the cloud and tries to find how they are regarded and adopted by professionals. Existing literature assessed the adoption of cloud computing with a focus on business and technological aspects and fall short in grasping a holistic view of the underlying approaches. Other authors delved into how independent patterns can be discovered (mined) and verified, but do not provide insights on their adoption. We investigate (1) their relevance for professional software developers, (2) the extent to which product and company characteristics influence their adoption, and (3) how adopting some patterns might correlate with the likelihood of adopting others. For this purpose, we surveyed practitioners using an online questionnaire (n = 102). Among other findings, we conclude that most companies use these patterns, with the overwhelming majority (97%) using at least one. We observe that the mean pattern adoption tends to increase as companies mature, namely when varying the product operation complexity, active monthly users, and company size. Finally, we search for correlations in the adoption of specific patterns and attempt to infer causation among them, further hinting on how some practices are dependent or influence the adoption of others. We conclude that there are patterns of practices adoption that best correlates with a specific company and product characteristics, as well as relationships between the patterns that were not covered by the original pattern language and which might deserve further investigation.
- 15 January 2021
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. 48 (6) , 2128-2140
A Survey on the Adoption of Patterns for Engineering Software for the Cloud
This work takes as a starting point a collection of patterns for engineering software for the cloud and tries to find how they are regarded and adopted by professionals. Existing literature assessed the adoption of cloud computing with a focus on business and technological aspects and fall short in grasping a holistic view of the underlying approaches. Other authors delved into how independent patterns can be discovered (mined) and verified, but do not provide insights on their adoption. We investigate (1) their relevance for professional software developers, (2) the extent to which product and company characteristics influence their adoption, and (3) how adopting some patterns might correlate with the likelihood of adopting others. For this purpose, we surveyed practitioners using an online questionnaire (n = 102). Among other findings, we conclude that most companies use these patterns, with the overwhelming majority (97%) using at least one. We observe that the mean pattern adoption tends to increase as companies mature, namely when varying the product operation complexity, active monthly users, and company size. Finally, we search for correlations in the adoption of specific patterns and attempt to infer causation among them, further hinting on how some practices are dependent or influence the adoption of others. We conclude that there are patterns of practices adoption that best correlates with a specific company and product characteristics, as well as relationships between the patterns that were not covered by the original pattern language and which might deserve further investigation.
- 8 September 2020
- Published by Springer Nature
- p. 315-332
Determining Microservice Boundaries: A Case Study Using Static and Dynamic Software Analysis
- 8 September 2020
- Published by Springer Nature
- p. 315-332
Determining Microservice Boundaries: A Case Study Using Static and Dynamic Software Analysis
- 15 June 2020
- Published by Springer Nature
- Vol. 12141, 384-397
Conversational Interface for Managing Non-trivial Internet-of-Things Systems
Internet-of-Things has reshaped the way people interact with their surroundings. In a smart home, controlling the lights is as simple as speaking to a conversational assistant since everything is now Internet-connected. But despite their pervasiveness, most of the existent IoT systems provide limited out-of-the-box customization capabilities. Several solutions try to attain this issue leveraging end-user programming features that allow users to define rules to their systems, at the cost of discarding the easiness of voice interaction. However, as the number of devices increases, along with the number of household members, the complexity of managing such systems becomes a problem, including finding out why something has happened. In this work we present Jarvis, a conversational interface to manage IoT systems that attempts to address these issues by allowing users to specify time-based rules, use contextual awareness for more natural interactions, provide event management and support causality queries. A proof-of-concept was used to carry out a quasi-experiment with non-technical participants that provides evidence that such approach is intuitive enough to be used by common end-users.
- 15 June 2020
- Published by Springer Nature
- Vol. 12141, 384-397
Conversational Interface for Managing Non-trivial Internet-of-Things Systems
Internet-of-Things has reshaped the way people interact with their surroundings. In a smart home, controlling the lights is as simple as speaking to a conversational assistant since everything is now Internet-connected. But despite their pervasiveness, most of the existent IoT systems provide limited out-of-the-box customization capabilities. Several solutions try to attain this issue leveraging end-user programming features that allow users to define rules to their systems, at the cost of discarding the easiness of voice interaction. However, as the number of devices increases, along with the number of household members, the complexity of managing such systems becomes a problem, including finding out why something has happened. In this work we present Jarvis, a conversational interface to manage IoT systems that attempts to address these issues by allowing users to specify time-based rules, use contextual awareness for more natural interactions, provide event management and support causality queries. A proof-of-concept was used to carry out a quasi-experiment with non-technical participants that provides evidence that such approach is intuitive enough to be used by common end-users.
- 15 June 2020
- Published by Springer Nature
- Vol. 12141, 357-370
Visual Self-healing Modelling for Reliable Internet-of-Things Systems
Internet-of-Things systems are comprised of highly heterogeneous architectures, where different protocols, application stacks, integration services, and orchestration engines co-exist. As they permeate our everyday lives, more of them become safety-critical, increasing the need for making them testable and fault-tolerant, with minimal human intervention. In this paper, we present a set of self-healing extensions for Node-RED, a popular visual programming solution for IoT systems. These extensions add runtime verification mechanisms and self-healing capabilities via new reusable nodes, some of them leveraging meta-programming techniques. With them, we were able to implement self-modification of flows, empowering the system with self-monitoring and self-testing capabilities, that search for malfunctions, and take subsequent actions towards the maintenance of health and recovery. We tested these mechanisms on a set of scenarios using a live physical setup that we called SmartLab. Our results indicate that this approach can improve a system’s reliability and dependability, both by being able to detect failing conditions, as well as reacting to them by self-modifying flows, or triggering countermeasures.
- 15 June 2020
- Published by Springer Nature
- Vol. 12141, 357-370
Visual Self-healing Modelling for Reliable Internet-of-Things Systems
Internet-of-Things systems are comprised of highly heterogeneous architectures, where different protocols, application stacks, integration services, and orchestration engines co-exist. As they permeate our everyday lives, more of them become safety-critical, increasing the need for making them testable and fault-tolerant, with minimal human intervention. In this paper, we present a set of self-healing extensions for Node-RED, a popular visual programming solution for IoT systems. These extensions add runtime verification mechanisms and self-healing capabilities via new reusable nodes, some of them leveraging meta-programming techniques. With them, we were able to implement self-modification of flows, empowering the system with self-monitoring and self-testing capabilities, that search for malfunctions, and take subsequent actions towards the maintenance of health and recovery. We tested these mechanisms on a set of scenarios using a live physical setup that we called SmartLab. Our results indicate that this approach can improve a system’s reliability and dependability, both by being able to detect failing conditions, as well as reacting to them by self-modifying flows, or triggering countermeasures.
- Open Access
- 23 March 2020
- Published by Association for Computing Machinery (ACM)
- p. 209-210
Helping software developers through live software metrics visualization
With the increasing complexity of software systems, software developers would benefit from instant and continuous feedback about the system they are maintaining and evolving. Despite existing several solutions providing feedback and suggesting improvements, many tools require explicit invocations, leading developers to miss some improvement opportunities, such as important refactorings, due to the loss of their train of thought. Therefore, to address these limitations, we developed a Visual Studio Code plugin providing real-time feedback --- and also information about each commit made to the version control system. This tool is also capable of recommending two types of refactorings. To validate this approach, we did a preliminary controlled experiment using hypothesis-tests to check specific results. However, in this initial stage, we didn't have enough data to confirm our research questions, and we weren't able yet to confirm the main hypothesis.
- 23 March 2020
- Published by Association for Computing Machinery (ACM)
- p. 209-210
Open AccessHelping software developers through live software metrics visualization
With the increasing complexity of software systems, software developers would benefit from instant and continuous feedback about the system they are maintaining and evolving. Despite existing several solutions providing feedback and suggesting improvements, many tools require explicit invocations, leading developers to miss some improvement opportunities, such as important refactorings, due to the loss of their train of thought. Therefore, to address these limitations, we developed a Visual Studio Code plugin providing real-time feedback --- and also information about each commit made to the version control system. This tool is also capable of recommending two types of refactorings. To validate this approach, we did a preliminary controlled experiment using hypothesis-tests to check specific results. However, in this initial stage, we didn't have enough data to confirm our research questions, and we weren't able yet to confirm the main hypothesis.
- 9 February 2020
- Published by Springer Nature in Communications in Computer and Information Science
- p. 83-107
Live Software Development Environment Using Virtual Reality: A Prototype and Experiment
- 9 February 2020
- Published by Springer Nature in Communications in Computer and Information Science
- p. 83-107
Live Software Development Environment Using Virtual Reality: A Prototype and Experiment
- 9 February 2020
- Published by Springer Nature
- p. 58-82
Experimenting with Liveness in Cloud Infrastructure Management
- 9 February 2020
- Published by Springer Nature
- p. 58-82
Experimenting with Liveness in Cloud Infrastructure Management