Quantum computing deserve more and more attention owing to all the promising applications in several fields. These applications are achieved through quantum software. The development of quantum software still poses some challenges as the complexity of quantum algorithms, lack of abstraction mechanisms and the need to integrate classical and quantum software. These challenges could be addressed by applying some quantum software design patterns, which have been already proposed in the literature. However, there is a lack of insights about what is the extend of application of certain design patterns, and how are the characteristics of quantum circuits where these patterns are applied. Thus, this paper proposes a preliminary code repository analysis to systematically analyze the application of five design patterns: initialization, uniform superposition, oracle, entanglement and uncompute. The obtained dataset with 80 source code files in Qiskit and OpenQASM shows that initialization and uniform superposition are the most common design patterns. This study can help quantum software developers to understand how and when to apply some design patterns. Additionally, insights of this study could help to define new design patterns.
Quantum computing deserve more and more attention owing to all the promising applications in several fields. These applications are achieved through quantum software. The development of quantum software still poses some challenges as the complexity of quantum algorithms, lack of abstraction mechanisms and the need to integrate classical and quantum software. These challenges could be addressed by applying some quantum software design patterns, which have been already proposed in the literature. However, there is a lack of insights about what is the extend of application of certain design patterns, and how are the characteristics of quantum circuits where these patterns are applied. Thus, this paper proposes a preliminary code repository analysis to systematically analyze the application of five design patterns: initialization, uniform superposition, oracle, entanglement and uncompute. The obtained dataset with 80 source code files in Qiskit and OpenQASM shows that initialization and uniform superposition are the most common design patterns. This study can help quantum software developers to understand how and when to apply some design patterns. Additionally, insights of this study could help to define new design patterns.
Abstract Quantum computing holds great promise for solving complex problems that classical computing cannot address, with applications in various industries and sectors. However, developing efficient quantum software remains a challenge. Quantum software engineering (QSE) has emerged to address this, adapting classical software engineering practices for quantum systems. Design patterns, widely used in classical software, can provide reusable solutions for common quantum development issues, but their use in quantum software remains underexplored. This paper presents an empirical study investigating the use of design patterns in 2610 Qiskit programs from GitHub. Using the QCPD Tool to detect four design patterns (initialization, superposition, entanglement, and oracle) and QMetrics to compute software metrics, the study creates a dataset linking patterns with code characteristics. Three research questions guide the study: RQ1 examines the prevalence of design patterns in quantum software, RQ2 explores the relationship between design patterns and code metrics, and RQ3 analyzes the combinations of patterns that occur together. The findings provide insights into quantum software development, offering developers practical guidance on applying specific patterns. The results contribute to QSE by revealing key relationships between patterns and metrics, which can inform future research and tool development. These findings support improved performance, maintainability, and scalability, fostering the broader adoption of quantum computing.
Quantum computing has become an active research field in recent years, as its applications in fields such as cryptography, optimization, and materials science are promising. Along with these developments, challenges and opportunities exist in the field of Quantum Software Engineering, as the development of frameworks and higher-level abstractions has attracted practitioners from diverse backgrounds. Unlike initial quantum frameworks based on the circuit model, recent frameworks and libraries leverage higher-level abstractions for creating quantum programs. This paper presents an empirical study of 985 Jupyter Notebooks from 80 open-source projects to investigate how quantum patterns are applied in practice. Our work involved two main stages. First, we built a knowledge base from three quantum computing frameworks (Qiskit, PennyLane, and Classiq). This process led us to identify and document 9 new patterns that refine and extend the existing quantum computing pattern catalog. Second, we developed a reusable semantic search tool to automatically detect these patterns across our large-scale dataset, providing a practitioner-focused analysis. Our results show that developers use patterns in three levels: from foundational circuit utilities, to common algorithmic primitives (e.g., Amplitude Amplification), up to domain-specific applications for finance and optimization. This indicates a maturing field where developers are increasingly using high-level building blocks to solve real-world problems.
Quantum computers have the potential to solve certain problems faster than classical computers by exploiting quantum mechanical effects such as superposition. However, building high-quality quantum software is challenging due to the fundamental differences between quantum and traditional programming and the lack of abstraction mechanisms. To mitigate this challenge, researchers have introduced quantum patterns to capture common high-level design solutions to recurring problems in quantum software engineering. In order to utilize patterns as an abstraction level for implementation, a mapping between the theoretical patterns and the source code is required, which has only been addressed to a limited extent. To close this gap, we propose a framework for the automatic detection of quantum patterns using state- and circuit-based code analysis. Furthermore, we contribute a dataset for benchmarking quantum pattern detection approaches. In an empirical evaluation, we show that our framework is able to detect quantum patterns very accurately and that it outperforms existing quantum pattern detection approaches in terms of detection accuracy.
Quantum computing has become an active research field in recent years, as its applications in fields such as cryptography, optimization, and materials science are promising. Along with these developments, challenges and opportunities exist in the field of Quantum Software Engineering, as the development of frameworks and higher-level abstractions has attracted practitioners from diverse backgrounds. Unlike initial quantum frameworks based on the circuit model, recent frameworks and libraries leverage higher-level abstractions for creating quantum programs. This paper presents an empirical study of 985 Jupyter Notebooks from 80 open-source projects to investigate how quantum patterns are applied in practice. Our work involved two main stages. First, we built a knowledge base from three quantum computing frameworks (Qiskit, PennyLane, and Classiq). This process led us to identify and document nine new patterns that refine and extend the existing quantum computing pattern catalog. Second, we developed a reusable semantic search tool to automatically detect these patterns across our large-scale dataset, providing a practitioner-focused analysis. Our results show that developers use patterns in three levels: from foundational circuit utilities, to common algorithmic primitives (e.g., Amplitude Amplification), up to domain-specific applications for finance and optimization. This indicates a maturing field where developers are increasingly using high-level building blocks to solve real-world problems.
Quantum software is an emerging class of software systems, services, and applications that leverage the principles of quantum mechanics through programmable quantum bits (qubits) and quantum gates to perform computations that offer advantages for certain classes of problems. Quantum software architecture enables quantum software developers to abstract away implementation-specific details (i.e., mapping of qubits and quantum gates to high-level architectural components and connectors). Architecture patterns provide proven solutions to recurring design problems, while architecture strategies are approaches that guide the overall design and evolution of a system to meet specific goals. Such patterns and strategies are needed because quantum software systems involve complex hybrid quantum-classical design concerns. However, quantum software practitioners face significant challenges in selecting and implementing appropriate patterns and strategies. To address these challenges, this study proposes decision models for selecting patterns and strategies in six critical design areas in quantum software systems: Communication, Decomposition, Data Processing, Fault Tolerance, Integration and Optimization, and Algorithm Implementation. These decision models are constructed based on data collected from both a mining study (GitHub and Stack Exchange) and an SLR, which were used to identify relevant patterns and strategies with their involved QAs. We then conducted semi-structured interviews with 30 quantum software practitioners to evaluate the familiarity, understandability, completeness, and usefulness of the proposed decision models. The results show that the proposed decision models can aid practitioners in selecting suitable patterns and strategies to address the challenges related to the architecture design of quantum software systems. The dataset is at https://github.com/shamimaaktar1/DMQSA
Quantum software engineering (QSE) has emerged as a discipline to address the challenges associated with developing software systems in the context of advancing quantum computing technology. This paper explores architectural design patterns specific to QSE. Building on previous work highlighting the need for high-level patterns, we analyze emerging architectural approaches in quantum computing. We identify key challenges unique to hybrid quantum-classical systems and propose a preliminary taxonomy of QSE architectural patterns. These patterns address recurring design problems in areas such as quantum resource management and classical-quantum integration. We describe several potential patterns and discuss their theoretical applications in hybrid software systems. This work aims to provide a foundation for further research into standardizing QSE architectural practices, with the goal of enhancing various quality characteristics of hybrid software (e.g., modularity or maintainability) in the NISQ era and beyond.