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
Publications

Publications by Hugo Sereno Ferreira

2020

Conversational Interface for Managing Non-trivial Internet-of-Things Systems

Authors
Lago, AS; Dias, JP; Ferreira, HS;

Publication
Computational Science - ICCS 2020 - 20th International Conference, Amsterdam, The Netherlands, June 3-5, 2020, Proceedings, Part V

Abstract
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. © Springer Nature Switzerland AG 2020.

2020

Helping software developers through live software metrics visualization

Authors
Fernandes, S; Restivo, A; Ferreira, HS; Aguiar, A;

Publication
Programming'20: 4th International Conference on the Art, Science, and Engineering of Programming, Porto, Portugal, March 23-26, 2020

Abstract
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. © 2020 Owner/Author.

2020

Determining Microservice Boundaries: A Case Study Using Static and Dynamic Software Analysis

Authors
Matias, T; Correia, FF; Fritzsch, J; Bogner, J; Ferreira, HS; Restivo, A;

Publication
SOFTWARE ARCHITECTURE (ECSA 2020)

Abstract
A number of approaches have been proposed to identify service boundaries when decomposing a monolith to microservices. However, only a few use systematic methods and have been demonstrated with replicable empirical studies. We describe a systematic approach for refactoring systems to microservice architectures that uses static analysis to determine the system's structure and dynamic analysis to understand its actual behavior. A prototype of a tool was built using this approach (MonoBreaker) and was used to conduct a case study on a real-world software project. The goal was to assess the feasibility and benefits of a systematic approach to decomposition that combines static and dynamic analysis. The three study participants regarded as positive the decomposition proposed by our tool, and considered that it showed improvements over approaches that rely only on static analysis.

2020

Real-time Feedback in Node-RED for IoT Development: An Empirical Study

Authors
Torres, D; Dias, JP; Restivo, A; Ferreira, HS;

Publication
PROCEEDINGS OF THE 2020 IEEE/ACM 24TH INTERNATIONAL SYMPOSIUM ON DISTRIBUTED SIMULATION AND REAL TIME APPLICATIONS (DS-RT)

Abstract
The continuous spreading of the Internet-of-Things across application domains, aided by the continuous growth on the number of devices and systems that are Internet-connected, created both a rise in the complexity of these systems and made noticeable a lack of human resources with the expertise to design, develop and maintain them. Recent works try to mitigate these issues by creating solutions that abstract the complexity of the systems, such as using visual programming languages. Node-RED, as one of the most common solutions for the visual development IoT systems, stills has several limitations, such as the lack of observability and inadequate debugging mechanisms. In this work, we address some of these limitations by enhancing Node-RED with new features that improve the user's system development, debugging, and understanding tasks. We proceed to empirically evaluate the impact of these enhancements, concluding that, overall, such enhancements reduce the development time and the number of failed attempts to deploy the system.

2020

A Pattern-Language for Self-Healing Internet-of-Things Systems

Authors
Dias, JP; Sousa, TB; Restivo, A; Ferreira, HS;

Publication
EuroPLoP '20: European Conference on Pattern Languages of Programs 2020, Virtual Event, Germany, 1-4 July, 2020

Abstract
Internet-of-Things systems are assemblies of highly-distributed and heterogeneous parts that, in orchestration, work to provide valuable services to end-users in many scenarios. These systems depend on the correct operation of sensors, actuators, and third-party services, and the failure of a single one can hinder the proper functioning of the whole system, making error detection and recovery of paramount importance, but often overlooked. By drawing inspiration from other research areas, such as cloud, embedded, and mission-critical systems, we present a set of patterns for self-healing IoT systems. We discuss how their implementation can improve system reliability by providing error detection, error recovery, and health mechanisms maintenance. © 2020 ACM.

2022

A Survey on the Adoption of Patterns for Engineering Software for the Cloud

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

Publication
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING

Abstract
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 assesses the adoption of cloud computing with a focus on business and technological aspects and falls short in grasping a holistic view of the underlying approaches. Other authors delve into how independent patterns can be discovered (mined) and verified, but do not provide insights on their adoption. We investigate (1) the relevance of the patterns 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 survey practitioners using an online questionnaire (n = 102). Among other findings, we conclude that most companies use these patterns, with the overwhelming majority (97 percent) 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, providing further clues on how some practices depend or influence the adoption of others. We conclude that the adoption of some practices correlates with specific company and product characteristics, and find relationships between the patterns that were not covered by the original pattern language and which might deserve further investigation.

  • 5
  • 10