Quantum computing is the latest revolution in computing and will probably come to be seen as an advance as important as the steam engine or the information society. In the last few decades, our understanding of quantum computers has expanded and multiple efforts have been made to create languages, libraries, tools, and environments to facilitate their programming. Nonetheless, quantum computers are complex systems at the bottom of a stack of layers that programmers need to understand. Hence, efforts towards creating quantum programming languages and computing environments that can abstract low-level technology details have become crucial steps to achieve a useful quantum computing technology. However, most of these environments still lack many of the features that would be desirable, such as those outlined in The Talavera Manifesto for Quantum Software Engineering and Programming. For advancing quantum computing, we will need to develop quantum software engineering techniques and tools to ensure the feasibility of this new type of quantum software. To contribute to this goal, this paper provides a review of the main quantum software components and platforms. We also propose a set of quality requirements for the development of quantum software platforms and the conduct of their quality assessment.
Quantum computing is the latest revolution in computing and will probably come to be seen as an advance as important as the steam engine or the information society. In the last few decades, our understanding of quantum computers has expanded and multiple efforts have been made to create languages, libraries, tools, and environments to facilitate their programming. Nonetheless, quantum computers are complex systems at the bottom of a stack of layers that programmers need to understand. Hence, efforts towards creating quantum programming languages and computing environments that can abstract low-level technology details have become crucial steps to achieve a useful quantum computing technology. However, most of these environments still lack many of the features that would be desirable, such as those outlined in The Talavera Manifesto for Quantum Software Engineering and Programming. For advancing quantum computing, we will need to develop quantum software engineering techniques and tools to ensure the feasibility of this new type of quantum software. To contribute to this goal, this paper provides a review of the main quantum software components and platforms. We also propose a set of quality requirements for the development of quantum software platforms and the conduct of their quality assessment.
Practical quantum computing is rapidly becoming a reality. To harness quantum computers’ real potential in software applications, one needs to have an in-depth understanding of all such characteristics of quantum computing platforms (QCPs), relevant from the Software Engineering (SE) perspective. Restrictions on copying, deletion, the transmission of qubit states, a hard dependency on quantum algorithms are few, out of many, examples of QCP characteristics that have significant implications for building quantum software.Thus, developing quantum software requires a paradigm shift in thinking by software engineers. This paper presents the key findings from the SE perspective, resulting from an in-depth examination of state-of-the-art QCPs available today. The main contributions that we present include i) Proposing a general architecture of the QCPs, ii) Proposing a programming model for developing quantum software, iii) Determining architecturally significant characteristics of QCPs, and iv) Determining the impact of these characteristics on various Quality Attributes (QAs) and Software Development Life Cycle (SDLC) activities.We show that the nature of QCPs makes them useful mainly in specialized application areas such as scientific computing. Except for performance and scalability, most of the other QAs (e.g., maintainability, testability, and reliability) are adversely affected by different characteristics of a QCP.
Quantum Computing (QC) has evolved into a computational model that can potentially solve problems of classes that cannot be solved by classical systems. This review gives a discussion on the innovation of software frameworks, experimental platforms and quantum computing tools used to compute quantum algorithm development, simulation and implementation. It concentrates on widely used programming environments, which compile abstract quantum models into practical workflows, including Cirq, TensorFlow Quantum, ProjectQ and Qiskit. The paper, besides describing the long-lasting problems related to scalability, error correction, and hardware reliability, also considers the architecture of the modern quantum computing platforms. Finally, new advances are outlined, such as quantum cloud service and the integration of artificial intelligence and quantum computing, and their role in the development of QC to viable and lucrative deployments. All in all, the discussion suggests that even now quantum computing still needs to be taken to the next level in terms of hardware infrastructure and software development that would allow progressing to the next stage of quantum technology testing and implementation.
Over the last few years, quantum computing has been growing at an exponential pace. Every day, new techniques, frameworks, modeling, and programming languages are emerging that aim to facilitate the development of quantum software, which is key to achieving the promising applications of quantum computing. However, which of these are actively used and the degree of satisfaction of researchers and developers regarding these quantum software frameworks and languages is not known. To address this, we conducted a survey to characterize which modeling tools and which quantum programming languages are used during the quantum software lifecycle. Researchers in academia and industry developers were surveyed, and a total of 57 responses were collected. The results indicate that during quantum software development, some models and diagrams are used to guide development. In addition, the survey results show what quantum programming languages are the most used alongside the classical programming languages employed to build hybrid programs, among other important insights. The implications of this survey are: (i) to find out what the current trends are within quantum software development and (ii) to find out what the needs are of quantum software developers with respect to current modeling and programming languages and tools.
Quantum computing is no longer only a scientific interest but is rapidly becoming an industrially available technology that can potentially overcome the limits of classical computation. Over the last years, all major companies have provided frameworks and programming languages that allow developers to create their quantum applications. This shift has led to the definition of a new discipline called quantum software engineering, which is demanded to define novel methods for engineering large-scale quantum applications. While the research community is successfully embracing this call, we notice a lack of systematic investigations into the state of the practice of quantum programming. Understanding the challenges that quantum developers face is vital to precisely define the aims of quantum software engineering. Hence, in this paper, we first mine all the GitHub repositories that make use of the most used quantum programming frameworks currently on the market and then conduct coding analysis sessions to produce a taxonomy of the purposes for which quantum technologies are used. In the second place, we conduct a survey study that involves the contributors of the considered repositories, which aims to elicit the developers' opinions on the current adoption and challenges of quantum programming. On the one hand, the results highlight that the current adoption of quantum programming is still limited. On the other hand, there are many challenges that the software engineering community should carefully consider: these do not strictly pertain to technical concerns but also socio-technical matters.
Quantum Computing holds the potential to change our world. Following the quantum wave, software engineers have recognised the opportunity to establish a new discipline of Quantum Software Engineering. Despite the significant progress achieved, Quantum Computing's widespread adoption still faces critical hurdles. In this paper, we outline two of these challenges. (1) Quantum programming continues to be a complex art mastered by a select few experts. We suggest that the primary culprit can be pinpointed in the absence of high-level quantum software abstractions which forces developers to work with low-level quantum concepts and reason in terms of matrix multiplications. (2) The scarce collaboration among quantum software engineers resulted in a lack of platform and software interoperability. While a diversity of research proposals fuels scientific progress, it can hinder the development and adoption of innovative technologies, potentially fragmenting the collective efforts and confining them within isolated research groups. We believe that overcoming these issues is crucial for fostering innovation, advancing Quantum Software Engineering, and Quantum Computing as a whole.
As the practical Quantum Computing Platforms (QCPs) rapidly become a reality, it is desirable to harness their true potential in software applications. Thus it becomes important to determine the implications of QCPs for software architecture. In this paper we present the in-depth examination of state-of-the-art QCPs for identifying all such characteristics of a QCP that are relevant from software architecture perspective. Lack of a native quantum operating system, a hard dependency on quantum algorithms, the lower level of programming abstractions are few, out of many, examples of QCP characteristics which may affect architecture of quantum software applications. Key contributions of this paper include identifying: i) The general architecture of a QCP, ii) The programming model which is typically used when developing software for a QCP, iii) Architecturally significant characteristics of QCPs and iv) The impact of these characteristics on various Quality Attributes (QAs). We show that except performance and scalability, most of the other QAs (e.g. maintainability, testability, reliability etc.) are adversely affected by different characteristics of a QCP.