There are no doubts that quantum programming and, in general, quantum computing, is one of the most promising areas within computer science and one of the areas where most expectations are being placed in recent years. Although the days when reliable and affordable quantum computers will be available is still a long way off, the explosion of programming languages for quantum programming has grown exponentially in recent years. The software engineering community has been quick to react to the need to adopt and adapt well-known tools and methods for software development, and for the design of new ones tailored to this new programming paradigm. However, many key aspects for its success depend on the establishment of an appropriate conceptual framework for the conception and design of quantum programs. This article discusses the concept of module, key in the software engineering discipline, and establishes initial criteria for determining the cohesion and coupling levels of a module in the field of quantum programming as a first step towards a sound quantum software engineering. As detailed in the article, the conceptual differences between classical and quantum computing are so pronounced that the translation of classical concepts to the new programming approach is not straightforward.
There are no doubts that quantum programming and, in general, quantum computing, is one of the most promising areas within computer science and one of the areas where most expectations are being placed in recent years. Although the days when reliable and affordable quantum computers will be available is still a long way off, the explosion of programming languages for quantum programming has grown exponentially in recent years. The software engineering community has been quick to react to the need to adopt and adapt well-known tools and methods for software development, and for the design of new ones tailored to this new programming paradigm. However, many key aspects for its success depend on the establishment of an appropriate conceptual framework for the conception and design of quantum programs. This article discusses the concept of module, key in the software engineering discipline, and establishes initial criteria for determining the cohesion and coupling levels of a module in the field of quantum programming as a first step towards a sound quantum software engineering. As detailed in the article, the conceptual differences between classical and quantum computing are so pronounced that the translation of classical concepts to the new programming approach is not straightforward.
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.
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 programming languages provide necessary constructs to program quantum computers. To write such programs, one needs to understand the characteristics of quantum computers such as superposition and entanglement, which are novel as compared to programming with classical computers. Understanding these characteristics requires an understanding of quantum physics. Thus, there is a need to build high-level modeling abstractions of quantum programs for software engineers who are used to program on classical computers to understand and model quantum programs at a high-level of abstraction and independent of quantum platforms. To this end, we present some ideas for developing such quantum software modeling languages, by presenting a conceptual model of quantum programs and an example of modeling the state-based behavior of quantum entanglement program. Moreover, we present some open issues in the area of modeling quantum programs.
Since the invention of Quantum Computing (QC) in the 1980s, substantial claims about QC’s ability to solve computational problems of unparalleled complexity have emerged. However, forty years later, no significant real-world QC applications exist. Indeed, the availability of small-scale noisy quantum computers is to blame. Still, simultaneously, the programming of quantum computers is too close to quantum hardware, requiring software engineers with specialized backgrounds to build QC applications and limiting the maximum exploitation of QC’s potential. Thus, there is a need for an abstract yet intuitive quantum-oriented paradigm (QOP) for building QC applications, similar to the object-oriented paradigm established in the 1960s for classical computers that laid the foundations of modern programming and modeling languages for classical computers. Unfortunately, such a QC paradigm doesn’t exist. Thus, we foresee the need to build a novel QOP based on which future quantum programming and modeling languages shall be developed. Such QOP shall enable users with diverse backgrounds (e.g., computer scientists, software engineers, and physicists) to build QC applications cost-effectively, intuitively, and independently of low-level quantum mechanics characteristics (e.g., superposition and entanglement). This paper discusses the emerging work of QOP and presents research directions that the software engineering and programming communities can follow to build a successful QOP.
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.
Abstract Quantum computing is based on the principles of quantum mechanics, such as superposition, entanglement, measurement, and decoherence. The basic units of computation are qubits, which are abstract objects with a mathematical expression to implement the quantum mechanics principles. Alongside quantum hardware, software is a principal element for conducting quantum computing. The software consists of logic gates and quantum circuits that implement algorithms for the execution of quantum programs. Due to those characteristics, quantum computing is a paradigm that non-physics experts cannot understand. Under this new scheme for developing software, it is important to integrate a conceptual framework of the fundamentals on which quantum computing is based. In this paper, we present a kind of taxonomical view of the fundamental concepts of quantum computing and the derived concepts that integrate the emerging discipline of quantum software engineering. We performed a quasi-systematic mapping for conducting the systematic review because the objective of the review only intends to detect the fundamental concepts of quantum computing and quantum software. The results can help computer science students and professors as a starting point to address the study of this discipline.