One of the major hurdles for the growth of the quantum industry is to have a robust labour market with a sufficient workforce specialised in the different skills demanded by quantum computing as soon as possible. However, this is proving very difficult due to the high level of quantum illiteracy globally, which implies a very high learning curve that delays the results of quantum alphabetisation programmes.
In the case of quantum software development, the small workforce that has mastered the principles of quantum computing to develop quantum algorithms is usually not software engineers. Many software developers are interested, but for now most lack the necessary knowledge and skills. On the other hand, quantum software developers often do not have the software engineering skills and tools to be able to create quantum software whit its high-quality principles.
The development of quantum software takes place in different contexts, with their objectives being decisive in defining who, how and with what quantum software is developed. For the purpose of this article, we will highlight three of these contexts that we consider relevant today:
· Quantum software research
· Development of tools for quantum software development
· Development of practical quantum solutions and applications
We work intensively in these three contexts, so we know very well that:
· When researching quantum software, the goal of development is to validate the conceptual feasibility of the research objects through experiments and proofs of concept. In this context, if the research team succeeds in demonstrating technological feasibility with the equipment, tools, and methods at hand, that is enough. Other teams will then have to convert what they have successfully tested into a product (“engineer”). In this context, there is currently a great deal of activity at the global level.
· When developing tools for quantum software development, the main objective is to design and implement a set of tools, services, processes, methods, etc., integrated in a harmonious ecosystem, which facilitates the professional development of algorithms and solutions for quantum and hybrid information systems, thanks to the application of the best technologies and techniques, as well as the best practices of software engineering and quantum programming. In this context, there are currently very few companies working globally.
· When developing practical real-world solutions and applications, the goal is to efficiently design and implement (if done correctly based on a good catalogue of requirements) a robust, scalable, and secure solution, capable of satisfying the needs that gave rise to the development. Technologically and technically is another dimension of the problem to be solved. To this end, the development team defines the tools, languages, standards, processes, etc. with which it will ensure the quality of the software development. In this context, the global movement is gaining momentum.
When we started our journey in quantum software R&D, it was relatively “easy” for us to define that we would devote special attention to the second context of quantum software development, with the objective that it would provide us (as we have succeeded) with robust tools, both for quantum software development in R&D and for the development of high quality professional practical solutions. We therefore quickly realised that our first challenge would be, and still is, that whenever we approached it, we would do so from the perspective of best practices in Software Engineering and Quantum Programming, because we are convinced that it is called to make an indispensable contribution to the resounding success of quantum computing in practice.
Of course, this challenge does not respond to a purist attitude, but to the experience gained during decades of developing real software solutions, many of them critical, from which we have learned an indelible lesson: developing high quality quantum software must be the main goal and, for this to be possible, methods, methodologies and tools that facilitate the application of the best practices of quantum software engineering and programming must be adopted.
Is it possible to develop quantum software without applying these practices? Of course, it is, as it is still too often the case with classical software. But there is no doubt that, just as happens with a poorly designed building, bridge or road, with deficiencies in the strength calculations of the materials and a poorly foreseen or not estimated load of use, it is normal for that software to present serious errors and limitations in certain contexts of use and, as a result, it will not withstand the passage of time efficiently, it will not be scalable or secure and, for all these reasons, it will not provide guarantees for the investment made. For this reason, we believe that developing professional software of any kind, whether classical or quantum, that provides high quality assurance, necessarily involves applying good software engineering practices.
The existence of multiple quantum hardware proposals, each of which requires specific knowledge and developments for the software to work properly, presented us with the second challenge: to provide developers with a way of programming that is agnostic with respect to quantum hardware, so that they can focus on the functional requirements of the solution, on its design and development without having to spend time mastering the complex operation of the quantum computers of the different suppliers.
As if this were not enough, in order to develop quantum software today, one must be aware (and be prepared for it in terms of knowledge and skills), that there are two major quantum technological approaches: gate-based and annealing. This gave rise to the third challenge: to provide an environment in which to work with both approaches.
We quickly realised that we had to master a wide variety of programming languages (although it is also true that progressively, in almost all cases, Python has become a sort of “universal” quantum language, although there are still proprietary languages in the manufacturers) or “marry” some of them, thus jeopardising the “universality” of quantum developments. Hence, almost from the outset, the following challenge also arose: to be able to develop high-quality quantum software without the need to use any particular programming language.
From our point of view, the quantum advantage will be achieved not only when quantum hardware becomes powerful enough to demonstrate that capability in laboratories becomes available (however unquestionably important it is to achieve and demonstrate it) but, above all, as has happened in the great historical leaps in the adoption of computing in society, when the exploitation of that quantum computing power on a large practical scale is achieved, thanks to the “invasion” of real software applications of high quality.
This “invasion” of applications to exploit the benefits of quantum computing, as is already foreseen, will not come about because of the replacement of classical computing by quantum computing, but as a result of the development of a robust hybrid computing ecosystem, integrating classical and quantum software. And so, we are faced with the following challenge: to facilitate the development of integrated classical/quantum hybrid software, in a dynamic way, to solve everyday business, institutional, and user needs.
To provide continuous high-quality delivery to the demanding business, more and more software development is done with a faster development lifecycle, something we know as DevOps, an acronym for development and operations. Enabling the “business” teams (healthcare, finance, etc.) to define the problem and participate in the project, and then developing the quantum software and deploying it on the quantum computers was the next challenge identified.
In order to be able to develop the software we designed, at the pace we need to develop it to be competitive, we needed the technical team to not only grow rapidly, but to be able to contribute in the shortest possible time. But, given the situation already indicated about the quantum workforce market, the most practical solution for us was to recruit by visualising their potential for some competencies, and to train and coach for the development of those necessary individual competencies to form a robust polymath team, ready to tackle all the challenges of quantum software development. This brings us to another challenge: to be able to “simplify” the work of quantum software developers with tools that, in a practical way, contribute to accelerating their preparation. But don’t be fooled by this last expression: developing quantum software is far from simple. The fact that the tools help does not even remotely imply that developers should not possess the necessary knowledge and skills to use them properly, but rather that the tools can complement those skills that they do not have.
The reality today, and unfortunately will be tomorrow, is that quantum software development requires a wide range of knowledge and skills, some of which can only be provided by professionals from different disciplines who, working in teams with a high degree of organisation and scientific-technical collaboration, make progress in quantum software development possible. Successfully overcoming this complexity depends, to a large extent, on the existence of high-quality quantum software development tools that are valid for any professional in these development teams.
There are, of course, many possible ways to try to address these and other challenges that we have encountered in our R&D work on Software Engineering and Quantum Programming. We approached it through the development of a set of solutions that, conceived as part of a whole, have resulted in a platform for high quality quantum software development, ready to make a practical and operational contribution to the growth of the quantum workforce: QuantumPath®.
Let’s see below, in more detail, how we approached the solution to each of these challenges, by focusing on the most relevant results of our R&D activity materialised so far in practical tools for developing high quality quantum software. We will also share some of our views on some of the excellent expectations that, in the short term, the degree to which these challenges have been met offers us.
Solutions to the challenges of practical quantum software development with QuantumPath®
Five years have passed since we started our journey through R&D on Software Engineering and Quantum Programming. It has been such an exciting journey, full of so many satisfactions that make us think that it was only yesterday that we started and, thanks to this, the logical complex situations we faced to transfer the results of the research to useful tools for the development of quantum software remain as anecdotes of overcoming them.
With the fundamental goal of creating tools for the professional development of quantum solutions for the real world, accelerating the adoption of quantum computing in practice, one of the first steps we took for the architecture of the platform was to separate its structure into two:
· CORE: core of the QuantumPath® platform, currently composed of 9 modules, capable of managing quantum algorithms and quantum technology agnostic solutions (gate-based, quantum annealing), which enables the engineering and lifecycle of hybrid quantum software.
· APPs: a set of applications (to date there are 12 defined for the platform) that are integrated or will be integrated with the Core modules, which support the adoption of good software engineering and programming practices and ensure the quality of quantum development projects and the integration of classical software with quantum software.
This architecture guarantees that the development of tools, services, and APIs of the CORE platform for the creation of quality quantum solutions is, at all times of its evolution, technologically secure, extensible, high-performance, and scalable. Let’s see how, based on this, we address some of the R&D challenges we have faced:
First challenge: application of Quantum Software Engineering and Programming best practices
The search for ideas to overcome this challenge began by visualising a platform that would allow, through appropriate interfaces, the development and lifecycle of professional quantum algorithms and solutions. The goal was to achieve the assisted management of processes and even the automation of ALM tasks and phases.
The solution to the challenge was achieved by developing and integrating in the QPath® CORE the entire ALM stack oriented to the creation of quantum software: asset management, metalanguages, compilers, transpilers, scalable execution units, unified results, integration adapters, quantum services catalogue… All the necessary elements to support the lifecycle: from creation, development, testing and implementation, to deployment and reuse.
This ALM support provided by the CORE for the management of quantum projects will be enriched with platform APPs specialised in advanced lifecycle management, which will enable this challenge to be overcome by far.
Second challenge: providing programmers with a quantum hardware agnostic way of programming
The starting point for overcoming this challenge was the idea of implementing a solution that would allow the unrestricted reuse of algorithm and solution developments for one or more vendors’ quantum ecosystems. In other words, to be able to run quantum processing units transparently, regardless of the platform on which they run. Achieving full software portability (write once, run everywhere) became the goal.
The solution to this challenge was achieved by designing and developing a powerful intermediate language that supports the development of native QPath® quantum algorithms and solutions in a 100% agnostic way.
Having achieved this result, we added the semi-agnostic option with DirectCode, which makes it easier for developers to use non-native QPath® algorithms and solutions.
Third challenge: to provide developers with an environment from which they can work with both gate-based and annealing approaches.
Since quantum computing has two main technological approaches: gate-based model and quantum annealing, the goal was for the platform to support both approaches, with the same general features for both, so that developers can use the one they need or want without the need to work in different development environments.
The solution to this challenge was achieved in QPath® integrating it naturally with the multiple quantum platforms and approaches, and also supporting a powerful high-level stack with a totally agnostic rich set of quantum gates and a pure QUBO definition language that allows not to have to worry about the specific low-level details of each QPU. This makes possible automatic portability from an annealing-based solution to a gate-based solution, transparently to the quantum software developer.
Fourth challenge: to be able to develop high-quality quantum software professionally without the need to know any particular programming language.
Bearing in mind the situation described at the beginning of the article about the knowledge and skills of quantum software developers, we thought it appropriate to look for solutions to develop quantum software professionally without the need for programming.
The solution to this challenge was achieved by designing and developing Q Assets Compositor™, a QPath® toolkit for the visual design of quantum algorithms and solutions consisting of Quantum Gates editor, Annealing compositor, DirectCode editor.
Fifth challenge: facilitating the development of integrated quantum/classical hybrid software in a dynamic way
From our perspective, to talk about practical quantum computing is to talk about applications that are useful for business, organisational activity, and users. Therefore, for us, the valid solution to this challenge was not to access a sample of data in a specific format to carry out experimental tests typical of the development phases, but to dynamically integrate, in real time, quantum software and classical information systems.
The solution to the challenge was found by creating qSOA®, a technological solution from QPath® that makes it possible through ConnectionPoint and its protocol based on open standards the:
· Dynamic aggregation and modification of new assets to the solution based on business rules.
· Dynamic execution of algorithms by sending input data and collecting consolidated results both online and deferred.
Sixth challenge: facilitating continuous engineering from business needs, through the development of quantum solutions, to their deployment and operation.
If it is important to remove the existing barriers between “business” experts, software developers and operations managers (following a “BizDevOps” approach) in the case of “classic” software, it is even more so in quantum systems where the participation of experts (scientists, chemists, economists, doctors, etc.) must be continuous to iteratively refine quantum algorithms and models.
To solve this challenge, QPath® provides a set of practices and tools that enable a disciplined “Quantum BizDevOps” approach, allowing domain experts to define quantum algorithms in an intelligible and assisted way, automatically generating quantum software solutions and deploying them in a transparent and monitored way on different computers and quantum simulators. In this way, quantum software can not only be developed more agile but also respond more efficiently to changing user needs.
Seventh challenge: to simplify the work of quantum software developers with tools that, in a practical way, help accelerate the readiness of the quantum workforce.
The goal in overcoming this challenge was clear: to design a platform exploitation model that would accelerate the practical development of quantum software by abstracting its technical complications and thereby reduce the learning curve.
The solution to this challenge was achieved by designing and developing a RAD (Rapid Application Development) tools, valid for the creation of professional quantum algorithms and solutions which, combined with the design and visual development of Q Assets Compositor™, allow development teams to focus on the functional requirements of the solution, leaving the underlying details to the QPath® platform.
Bearing in mind the situation of the quantum workforce market and the multidisciplinary characteristics of quantum software development teams, our decisions to address and overcome the challenges described above have always been linked to one major goal: to design solutions that contribute to democratise the application of quantum software engineering best practices and, through this, to facilitate the development of high-quality quantum software in any working context and for any developer profile.
The quantum community has no doubts about the importance of having a rich catalogue of good quantum algorithms to be well placed in the quantum computing race. But we must also be aware that it will not be enough to have good quantum algorithms if we are not able to exploit them in a useful, practical, and everyday way. And this will only happen thanks to the existence of solutions capable of connecting classical systems with the marvellous quantum algorithmics.
The production of high-quality quantum software has a major impact on accelerating the adoption of practical quantum computing. This has been, and is, the common rationale in addressing the challenges described above, those we are currently addressing and those we will undoubtedly have to address in the evolution of quantum computing. For now, the great effort made to overcome these challenges has had an enormous reward and therefore, the results materialised in QuantumPath® stimulate us to continue working on the research, design, and development of new challenges that contribute to accelerating the adoption of high-quality quantum software development.