Quantum software is increasingly recognized as a critical component of quantum computing systems. As resources for quantum software design grow, the need for specialized tools and techniques to support quantum software development becomes more pressing. In this paper, we introduce the quantum program dependence graph (QPDG), a novel dependence analysis model specifically tailored for quantum software. The QPDG operates directly on the source code of quantum programs, capturing both classical and quantum-specific dependencies—namely, entanglement, no-cloning, temporal, and measurement dependencies—thus providing detailed insights into program dependencies at the code level. We further discuss key applications of QPDG, including quantum program slicing, comprehension, debugging, testing, maintenance, reuse, and complexity metrics, demonstrating its potential to enhance various aspects of quantum software engineering.
Quantum software is increasingly recognized as a critical component of quantum computing systems. As resources for quantum software design grow, the need for specialized tools and techniques to support quantum software development becomes more pressing. In this paper, we introduce the quantum program dependence graph (QPDG), a novel dependence analysis model specifically tailored for quantum software. The QPDG operates directly on the source code of quantum programs, capturing both classical and quantum-specific dependencies—namely, entanglement, no-cloning, temporal, and measurement dependencies—thus providing detailed insights into program dependencies at the code level. We further discuss key applications of QPDG, including quantum program slicing, comprehension, debugging, testing, maintenance, reuse, and complexity metrics, demonstrating its potential to enhance various aspects of quantum software engineering.
Quantum software is often described using circuit-level metrics, including the number of qubits, the number of gates, circuit depth, the number of two-qubit gates, and the number of measurement operations. These metrics are useful for estimating program size and execution cost, but they do not directly describe whether and to what extent qubits become structurally related through possible entanglement during program execution. This paper argues that entanglement dependence provides a basis for measuring a quantum-specific form of software complexity. The proposed metrics capture possible entanglement-related structural dependence, not physical entanglement observed in a particular execution. Based on this notion, we define a focused set of six metrics that characterize the amount, density, local connectivity, global scope, program span, and modular crossing of entanglement-related dependencies. We also analyze these metrics using Weyuker’s properties for evaluating software complexity measures. The paper presents the metrics as a measurement framework and research direction for empirical quantum software engineering. It discusses how future studies can validate the metrics and examine their usefulness for testing, debugging, maintenance, and program comprehension of quantum software.
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 software plays a critical role in exploiting the full potential of quantum computing systems. As a result, it has been drawing increasing attention recently. This paper defines the term "quantum software engineering" and introduces a quantum software life cycle. The paper also gives a generic view of quantum software engineering and discusses the quantum software engineering processes, methods, and tools. Based on these, the paper provides a comprehensive survey of the current state of the art in the field and presents the challenges and opportunities we face. The survey summarizes the technology available in the various phases of the quantum software life cycle, including quantum software requirements analysis, design, implementation, test, and maintenance. It also covers the crucial issues of quantum software reuse and measurement.
Refactoring is a crucial technique for improving the efficiency and maintainability of software by restructuring its internal design while preserving its external behavior. While classical programs have benefited from various refactoring methods, the field of quantum programming lacks dedicated refactoring techniques. The distinct properties of quantum computing, such as quantum superposition, entanglement, and the no-cloning principle, necessitate specialized refactoring techniques. This paper bridges this gap by presenting a comprehensive set of refactorings specifically designed for quantum programs. Each refactoring is carefully designed and explained to ensure the effective restructuring of quantum programs. Additionally, we highlight the importance of tool support in automating the refactoring process for quantum programs. Although our study focuses on the quantum programming language Q\#, our approach is applicable to other quantum programming languages, offering a general solution for enhancing the maintainability and efficiency of quantum software.
Abstract Developers of the many promising quantum computing applications that currently exist are urging companies in many different sectors seriously consider integrating this new technology into their business. For these applications to function, not only are quantum computers required, but quantum software also. Accordingly, quantum software engineering has become an important research field, in that it attempts to apply or adapt existing methods and techniques (or propose new ones) for the analysis, design, coding, and testing of quantum software, as well as playing a key role in ensuring quality in large-scale productions. The design of quantum software nevertheless poses two main challenges: the modelling of software quantum elements must be done in high-level modelling languages; and the need to further develop so-called “hybrid information systems”, which combine quantum and classical software. To address these challenges, we first propose a quantum UML profile for analysing and designing hybrid information systems; we then demonstrate its applicability through various structural and behavioural diagrams such as use case, class, sequence, activity, and deployment. In comparison to certain other quantum domain-specific languages, this UML profile ensures compliance with a well-known international standard that is supported by many tools and is followed by an extensive community.
With recent breakthroughs in quantum computing, it has become a coming reality instead of a promising future. Quantum computing applications offer revolutionary potential across multiple domains including artificial intelligence (AI), optimization, healthcare, energy, and space, known as quantum advantage. The power of quantum computing relies on novel quantum algorithms, quantum software, and hardware. Unlike classical software, quantum software has unique features because of quantum mechanics such as superposition and noncloning. This opens a new research field - quantum software engineering (QSE). While the software engineering (SE) research community became aware of this need in 2019, we noticed the lack of a comprehensive investigation of state-of-the-art technologies and tools to improve quantum software quality. Testing and debugging are the two most efficient approaches to assure software quality in classical SE. In QSE, testing and debugging quantum programs become challenging due to quantum mechanics. While we can leverage some best practices from the classical world, new techniques and tools are needed to address the concerns in QSE. In this chapter, we first conduct a survey study of the state-of-the-art technologies and tools for testing and debugging quantum software. This study includes but is not limited to quantum bug pattern analysis and detection, quantum software testing techniques and classification, and quantum debugging techniques. In the second place, we provide our visions and insights of testing and debugging quantum software in terms of challenges and opportunities for improving quantum software quality. This survey has the potential to foster a research community committed to developing novel methods and tools for QSE.