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 Tiago Boldt Sousa

2018

Engineering Software for the Cloud: External Monitoring and Failure Injection

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

Publication
EUROPLOP 2018: PROCEEDINGS OF THE 23RD EUROPEAN CONFERENCE ON PATTERN LANGUAGES OF PROGRAMS

Abstract
Cloud software continues to expand globally, highly motivated by how widespread the Internet is and the possibilities it unlocks with cloud computing. Still, cloud development has some intrinsic properties to it, making it complex to unexperienced developers. This research is capturing those intricacies in the form of a pattern language, gathering ten patterns for engineering software for the cloud. This paper elaborates on that research by contributing with two new patterns: External Monitoring, which continuously monitors the system as a black box, validating its status and Failure Injection, which continuously verifies system reliability by injecting failures into the cloud environment and confirming that the system recovers from it. The described patterns are useful for anyone designing software for the cloud, either to bootstrap or to validate their design decisions with the end goal of enabling them to create better software for the cloud.

2019

Towards a Pattern Language for the Masters Student

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

Publication
PROCEEDINGS OF THE 24TH EUROPEAN CONFERENCE ON PATTERN LANGUAGES OF PROGRAMS (EUROPLOP 2019)

Abstract
Every year, thousands of new students begin their Masters in STEM related topics. Despite being regarded as a common occurrence by the faculty, it represents the culmination of years of studying and preparation for their professional life. Notwithstanding, these students face well-known recurrent problems: how to choose a topic, how to choose an advisor, how to start researching, and how to deal with all the unknowns associated with academic research. Although there are several books on how to write a thesis, most of them avoid prescriptive recommendations on topics beyond research per se or focus on doctoral students, for which the duration and motivation are significantly different. In this paper, we draft a pattern language comprised of thirty patterns that we have observed from supervising over a hundred masters students within the last decade.

2019

Testing and Deployment Patterns for the Internet-of-Things

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

Publication
PROCEEDINGS OF THE 24TH EUROPEAN CONFERENCE ON PATTERN LANGUAGES OF PROGRAMS (EUROPLOP 2019)

Abstract
As with every software, Internet-of-Things (IoT) systems have their own life-cycle, from conception to construction, deployment, and operation. However, the testing requirements from these systems are slightly different due to their inherent coupling with hardware and human factors. Hence, the procedure of delivering new software versions in a continuous integration/delivery fashion must be adopted. Based on existent solutions (and inspired in other closely-related domains), we describe two common strategies that developers can use for testing IoT systems, (1) Testbed and (2) Simulation-based Testing, as well as one recurrent solution for its deployment (3) Middleman Update.

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.

2011

Storytelling Meets the Social Web: An HTML5 Cross-Platform Application for Older Adults

Authors
Sousa, TB; Tenreiro, P; Silva, PA; Rodrigues, EM;

Publication
HUMAN-COMPUTER INTERACTION - INTERACT 2011, PT IV

Abstract
This demonstration presents a storytelling application specifically designed for older adults to share stories and thoughts. Studies claim that older adults commonly have difficulties in engaging with on-line social networks [1], but increased social inclusion and sense of well-being has been observed in those who engage [2]. While following a user-centered design approach, we have developed an HTML5 device-independent and intuitive social web application which addresses older adults' specific needs and age-related impairments, allowing them to connect to their friends and family through storytelling.

  • 2
  • 4