Skip to main content
Top

2025 | Book

Transactions on Pattern Languages of Programming V

insite
SEARCH

About this book

The Transactions on Pattern Languages of Programming subline aims to publish papers on patterns and pattern languages as applied to software design, development, and use, throughout all phases of the software life cycle, from requirements and design to implementation, maintenance and evolution. The primary focus of this LNCS Transactions subline is on patterns, pattern collections, and pattern languages themselves. The journal also includes reviews, survey articles, criticisms of patterns and pattern languages, as well as other research on patterns and pattern languages.

This book, the fifth volume in the Transactions on Pattern Languages of Programming series, includes papers on patterns and pattern languages for engineering specific kinds of application and for improving processes, as well as papers on the discovery, validation, and systemic use of patterns more broadly.

Table of Contents

Frontmatter
A Pattern Language for Engineering Software for the Cloud
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.
Tiago Boldt Sousa, Hugo Sereno Ferreira, Filipe Figueiredo Correia
An Extended Pattern Collection for Blockchain-Based Applications
Abstract
Blockchain is an emerging technology that enables new forms of decentralized software architectures, where distributed components can reach agreements on shared system states without trusting a central integration point. Blockchain provides a shared infrastructure to execute programs, called smart contracts, and to store data. Since blockchain technologies are at an early stage, there is a lack of a systematically organized knowledge providing a holistic view on designing software systems that use blockchain. We view blockchain as a component of a bigger software system, which requires patterns for using blockchain in the design of the software architecture. In this paper, we collect a list of patterns for blockchain-based applications. The pattern collection is categorized into five categories, including interaction with external world patterns, data management patterns, security patterns, structural patterns of contracts, and user interaction patterns. Some patterns are designed considering the nature of blockchain and how blockchains can be specifically introduced within real-world applications. Others are variants of existing design patterns applied in the context of blockchain-based applications and smart contracts.
Xiwei Xu, Cesare Pautasso, Sin Kuang Lo, Liming Zhu, Qinghua Lu, Ingo Weber
Anti-patterns and Code Smells for Multi-language Systems
Abstract
Software quality becomes a necessity and no longer an advantage. In fact, with the advancement of technologies, companies must provide software with good quality. Many studies introduce the use of design patterns as improving software quality and discuss the presence of occurrences of design defects as decreasing software quality. Code smells include low-level problems in source code, and poor coding decisions that are symptoms of the presence of anti-patterns in the code. Most of the studies present in the literature discuss the occurrences of design defects for mono-language systems. However, nowadays most of the systems are developed using a combination of several programming languages, to use particular features of each of them. As the number of languages increases, so does the number of design defects. They generally do not prevent the program from functioning correctly, but they indicate a higher risk of future bugs and make the code less readable and harder to maintain. We analysed open-source systems, developers’ documentation, bug reports, and programming language specifications to extract bad practices of multi-language systems usage. We encoded and cataloged these practices in the form of code smells and design anti-patterns. We report in this paper six anti-patterns and 12 code smells.
Mouna Abidi, Manel Grichi, Foutse Khomh, Yann-Gaël Guéhéneuc
Pattern Language for Lightweight and Interactive Software Analytics Process
Abstract
Software analytics is a data-driven approach to decision-making, which allows software practitioners to leverage valuable insights from data about software to achieve higher development process productivity and improve many aspects of the software quality. Although widely adopted by large companies, software analytics has not yet reached its full potential for broad industrial adoption. Usually, software practitioners do not use analytics of data generated during the software development process to inform their decisions. Decisions based on practitioners’ feelings and intuition can lead to wasted resources and increase the cost of building and maintaining the software. This paper presents a Pattern Language for supporting software analytics activities implementation in practice. The proposed patterns focus on recurring solutions about how to incorporate software analytics on an interactive and continuous basis to inform the decision-making process of software practitioners. The main contribution of patterns is to encourage and guide the software teams to develop software analytics activities lightly so as not to disrupt the production process.
Joelma Choma, Tiago Silva da Silva, Eduardo M. Guerra
Bridging the Gap Between Business Process Modellers and Domain Experts by Variability Patterns
Abstract
Communication between business process modellers and domain experts can be aided by business process models. However, this communication can become difficult if the domain experts have no deep knowledge of the formal modelling language and the processes include variable elements, i.e. when several ways exist to reach the goal of a process. We propose to support the communication by means of a lightweight and rather informal language. It is based on building blocks that express different patterns of variability. In addition to discussing these patterns, we also show how they can be expressed in the formal modelling languages BPMN and CMMN. This allows to communicate on an informal, but easy-to-understand level without loosing the possibility to create computer-interpretable formal business process models.
Ralf Laue, Kathrin Kirchner, Birger Lantow, Kasper Edwards
Pattern Discovery and Validation Using Scientific Research Methods
Abstract
Pattern discovery, the process of discovering previously unrecognized patterns, is often performed as an ad-hoc process with little resulting certainty in the quality of the proposed patterns. Pattern validation, the process of validating the accuracy of proposed patterns, remains dominated by the simple heuristic of “the rule of three”. This article shows how to use established scientific research methods for the purpose of pattern discovery and validation. We present a specific approach, called the handbook method, that uses the qualitative survey, action research, and case study research for pattern discovery and evaluation, and we discuss the underlying principle of using scientific methods in general. We evaluate the handbook method using three exploratory studies and demonstrate its usefulness.
Dirk Riehle, Nikolay Harutyunyan, Ann Barcomb
Configuring Patterns and Pattern Languages for Systemic Inquiry and Design
Abstract
The present paper explores how a systems approach to patterns and pattern language could support systemic inquiry and systemic design, and more broadly, the advancement of pattern language. It examines the multiple facets and definitions of the concept of pattern and proposes reconciling them to include the affordances that patterns bring both to inquiry and design within a larger systems framework. In particular, it discusses extending the act of design to encompass the inquiry that motivates a design and the ongoing monitoring of the fitness of this design to its intended purpose in a systems perspective. Considering complexity and the notion of generativity, this approach challenges the appropriateness of patterns expressed in problem-solution form and suggests ways forward for extended definitions and pattern forms. This work contributes to bringing pattern thinking and systems thinking, or pattern science and systems science, closer to each other. The purpose is to further integrate pattern thinking and pattern language in the design, assessment, and orientation of our socio-technological and socio-environmental systems, both large and small, to better address the societal challenges of our time. It complements various initiatives aimed at harnessing pattern languages for sustainability and societal change and at developing pattern literacy in support of systems literacy.
Helene Finidori
Backmatter
Metadata
Title
Transactions on Pattern Languages of Programming V
Editors
Eugene Wallingford
Uwe Zdun
Christian Kohls
Copyright Year
2025
Publisher
Springer Berlin Heidelberg
Electronic ISBN
978-3-662-70810-1
Print ISBN
978-3-662-70809-5
DOI
https://doi.org/10.1007/978-3-662-70810-1

Premium Partner