Publications
Daniel Pinho, Petr Pícha, Filipe Correia, Přemek Brada
Conference paper, EuroPLoP '25: Proceedings of the 30th European Conference on Pattern Languages of Programs, People, and Practices (to be published; arXiv preprint linked), 2025
DOI
Abstract
Higher education courses teaching about agile software development (ASD) have increased in commonality as the ideas behind the Agile Manifesto became more commonplace in the industry. However, a lot of the literature on how ASD is applied in the classroom does not provide much actionable advice, focusing on frameworks or even moving beyond the software development area into teaching in an agile way. We, therefore, showcase early work on a pattern language that focuses on teaching ASD practices to university students, which stems from our own experiences as educators in higher education contexts. We present five patterns, specifically focused on team and project setup phase: Capping Team Size, Smaller Project Scope, Business Non-Critical Project, Self-Assembling Teams, and Team Chooses Topic as a starting point for developing the overall pattern language.
Francisca Almeida, Daniel Pinho, Ademar Aguiar
Conference paper, EuroPLoP '24: Proceedings of the 29th European Conference on Pattern Languages of Programs, People, and Practices, December 2024
DOI
Abstract
The concept of patterns and pattern languages, although very common in software nowadays, was first approached by Christopher Alexander, in the area of architecture, in the book A pattern language: towns, buildings, construction. However, it was only in 1980 that the term was adapted for software development, gaining its popularity in 1994. Despite the fact that the concept of patterns has been used in the area of software development for more than 40 years, there is still no consensus on the best method to validate patterns and patterns languages, and the existing methods are scattered in several different papers and research across the scientific community. As such, in this paper, we conduct a systematic literature review about the existing methods in the scientific community to validate patterns and pattern languages.
Daniel Pinho, Ademar Aguiar, Vasco Amaral
Conference paper, EuroPLoP '24: Proceedings of the 29th European Conference on Pattern Languages of Programs, People, and Practices, December 2024
DOI
Abstract
The need for software developers is growing in a world where software systems play multiple roles in our daily lives. Due to the mental nature of their work, we are driven to address their needs. The concept of developer experience (DX) was defined as an extension of user experience, focusing on the dual role developers have as users and creators. This paper proposes a pattern language that can assist developers in improving their developer experience. In addition, we present a selection of patterns that focus on the cognitive dimension of the mind: Infrastructure Alignment, Adequate Skills, It Takes A Village, Learning From A Master, Written Knowledge, and Practice Makes Perfect.
Daniel Pinho, Ademar Aguiar, Vasco Amaral
Conference paper, PLoP '24: Proceedings of the 31st Conference on Pattern Languages of Programs, People, and Practices, October 2024
Abstract
Context: Low-code development is a concept whose presence has grown both in academia and the software industry and is discussed alongside others, such as model-driven engineering and domain-specific languages. Usability is an important concept in low-code contexts since users of these tools often lack a background in programming. Grey literature articles have also stated that low-code tools have high usability. Objective: This paper examines the current literature about low-code and no-code to discover more about them and their relationship with usability, particularly its quality, which factors are the most relevant, and how users view these tools. This focus on usability aims to provide a different point of view from other works on low-code. Method: We performed a systematic literature review based on a formal protocol for this study. The search protocol returned a total of 207 peer-review articles across five databases, which was supplemented with a snowballing process. These were filtered using inclusion and exclusion criteria, resulting in 38 relevant articles that were analysed, synthesised and reported. Conclusion: Despite growing interest and a strong enterprise presence in academia, we did not find a formal definition of low-code, although common characteristics have been specified. We found that users have a heightened awareness of usability regarding low-code tools, with some authors performing feasibility studies on their implementations or listing factors that influence the user experience in a given tool. Researchers are considering usability factors unconsciously, and the low-code field would grow if research on usability increased. This paper also suggests a definition for low-code development.
Daniel Pinho, Ademar Aguiar, Vasco Amaral
Conference paper, PLoP '23: Proceedings of the 30th Conference on Pattern Languages of Programs, October 2023
Link
Abstract
Low-code development has been empowering end-user developers, who may not have programming or technological backgrounds, to build applications on their own, facing a world with increasing demand for software developers. Developer experience is a concept similar to user experience, but it focuses on the additional role developers play in software development: they create software in addition to using it. There is a need for low-code tool makers to be more aware of the quality of the developer experience they provide, as end-user programmers have increased awareness and expectations of their experience. This paper presents a pattern language to assist the low-code community in improving their developer experience and showcases three patterns that touch upon different dimensions of the mind: Balancing the Scales, Makers’ Guidance, and Feasibility Tests.
Daniel Pinho, Ademar Aguiar, Vasco Amaral
Journal paper, Journal of Computer Languages, January 2023
DOI
Abstract
Context: Low-code development is a concept whose presence has grown both in academia and the software industry and is discussed alongside others, such as model-driven engineering and domain-specific languages. Usability is an important concept in low-code contexts since users of these tools often lack a background in programming. Grey literature articles have also stated that low-code tools have high usability. Objective: This paper examines the current literature about low-code and no-code to discover more about them and their relationship with usability, particularly its quality, which factors are the most relevant, and how users view these tools. This focus on usability aims to provide a different point of view from other works on low-code. Method: We performed a systematic literature review based on a formal protocol for this study. The search protocol returned a total of 207 peer-review articles across five databases, which was supplemented with a snowballing process. These were filtered using inclusion and exclusion criteria, resulting in 38 relevant articles that were analysed, synthesised and reported. Conclusion: Despite growing interest and a strong enterprise presence in academia, we did not find a formal definition of low-code, although common characteristics have been specified. We found that users have a heightened awareness of usability regarding low-code tools, with some authors performing feasibility studies on their implementations or listing factors that influence the user experience in a given tool. Researchers are considering usability factors unconsciously, and the low-code field would grow if research on usability increased. This paper also suggests a definition for low-code development.
Daniel Pinho, Ademar Aguiar, Vasco Amaral
Conference paper, PLoP '21: Proceedings of the 28th Conference on Pattern Languages of Programs, October 2021
Link
Abstract
Low-code software development enables the creation of applications without having to write many lines of code or even none at all. This lowers the level of technical skills required, providing a mechanism for non-technical people to develop software and reduces the effort on dependency management, integration and deployment. Research on low-code approaches is still in its infancy, and we aim to work towards expanding the available literature about good practices for the development of low-code platforms. Model-driven software development uses models and transformations as its main elements while providing higher levels of abstraction. It enables the automation software development processes, such as code generation or model interpretation. Given the similarities between low-code software development and model-driven software development, in this work, we focus on performing pattern mining for good low-code software development practices based on existing patterns from existing model-driven development literature. Taking the patterns that we found, we analysed and compared them to low-code contexts, having identified a potential starting set of patterns that showcase good practices for developing low-code software development platforms.
Daniel Pinho, Ademar Aguiar
Conference paper, EuroPLoP '20: Proceedings of the European Conference on Pattern Languages of Programs 2020, December 2020
DOI
Abstract
Communication is crucial in agile contexts due to the need for collaboration and the number of different people involved, ranging from developers to users and business people. This communication should be effective to ensure everyone is on the same page; otherwise it can lead to undesired results such as misunderstanding and loss of productivity. As such, there is a need to ensure good communication in agile contexts. This paper presents a pattern language to tackle this issue, alongside with the patterns of a section of the language. The pattern language aims to provide a set of practices that help with recurrent problems and increase the effectiveness of communication. The patterns presented in this paper (Information Radiators, Co-Located Team, Open Space, Informal Communication Space and Cubes) address the issues related with the physical environment surrounding an agile team.
Daniel Pinho
MSc Dissertation, Faculty of Engineering, University of Porto, July 2020
Link
Abstract
The Agile Manifesto states the importance and reliance agile software development methodologies place on teamwork and communication between team members and stakeholders. People from vastly different roles and backgrounds work together and, as such, it is important to en- sure any information relayed between these parties does not have any errors. When this does not happen, unwanted events may occur, such as time wasted due to mistakes that happened, misun- derstandings, and a client not receiving what they expected due to the requirements gathered by the development team not being accurate. As such, it is vital to ensure the communication in place is as effective as it can be. This work aims to address the topic of effective communication in agile contexts. It includes the background about the relevant fields, presenting a list of relevant communication skills and issues to address, as well as describing them in slight detail. A review of three methodologies - Scrum, Extreme Programming (XP) and Large Scale Scrum (LeSS) - is also presented in this document, where each methodology’s history, main characteristics, and approaches to communi- cation are detailed. A literature search of existing work is present, where one can find information about how agile methods affect communication and common practices and elements. The area of pattern theory is explored, detailing the history of patterns as a problem-solving tool and explains the key concepts. Finally, the background also provides details about pattern languages related to the topic at hand. The key contribution was the creation of a pattern language, using a method that employs research, writing and symbolising. The resulting pattern language contains by now thirty-one patterns and proto-patterns approaching concepts regarding both the physical and digital environ- ments, the activities people partake in, the individuals themselves and how they interact with each other. The pattern language’s validation is mainly done by surveying industry professionals using a questionnaire asking about the patterns’ implementation in their organisations. The survey results are positive, showing almost all patterns are implemented, most of which in their full capacity. In addition, the pattern language as a whole, along with five of its patterns, was presented at EuroPLoP 2020, where further feedback was received.