<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Quantum Software Engineering and Technology Workshop, Oct</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Non-Functional Requirements for Quantum Programs</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Lorenzo Saraiva</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Edward Hermann Haeusler</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Vaston Costa</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marcos Kalinowski</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Pontificia Universidade Católica do Rio de Janeiro. R. Marquês de São Vicente</institution>
          ,
          <addr-line>225 - Gávea, Rio de Janeiro - RJ</addr-line>
          ,
          <country country="BR">Brazil</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Universidade Federal de Catalão.</institution>
          <addr-line>Av. Dr. Lamartine Pinto de Avelar 1120. Catalão - GO</addr-line>
          ,
          <country country="BR">Brazil</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <volume>1</volume>
      <fpage>8</fpage>
      <lpage>22</lpage>
      <abstract>
        <p>Quantum computing is moving from a purely theoretical area to an area with practical applications, allowing considerable performance eficiency improvements. The goal of this paper is to discuss nonfunctional requirements for quantum programs. Based on experiences developing quantum software for real quantum hardware we analyze hardware-related constraints and derive a set of generic nonfunctional requirements for this type of program. We identified a set of five performance eficiency and reliability related non-functional requirements that should considered when implementing a quantum program for a quantum device. We also discuss available solution options to address the requirements. There are high level solutions to deal with the hardware-related constraints described in our identified requirements. While many of the them are specific to quantum programming languages and technologies, the scientific community is engaging to integrate these kind of solutions into the quantum software engineering life cycle in an agnostic way regarding quantum programming languages and technologies.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Quantum software engineering</kwd>
        <kwd>Non-functional requirements</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        With the developments in the last decade, quantum computing is going from a purely theoretical
area to an area with practical applications, achieving considerable performance eficiency
improvements compared to classical computing. As it becomes more widespread and accessible,
the demand for writing quantum software in a controlled, industrial manner will increase
accordingly [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Quantum Software Engineering (QSE) arises as an area that is aiming to bring
the principles and heuristics of software engineering to the quantum computing context.
      </p>
      <p>
        Classical software development can be divided into phases, and together these phases compose
what is called the software life cycle[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Over the years, many life cycle process models have been
designed, such as waterfall, evolutionary, and spiral [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Also, aiming at improving production
speed and stakeholders’ collaboration, agile development approaches have gained popularity
[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        In the quantum context, there also have been diferent attempts to create models that
accurately describe the development life cycle. Zhao[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] describes a QSE life cycle model that can be
used as a reference. He divides the life cycle of a quantum program into requirement analysis,
design, implementation, testing, and maintenance, and reviews the main articles published on
each of the defined phases. The amount of research dedicated to each life cycle phase varies
greatly: while the implementation and test phases have several academic articles written about
them, there is not a single published article about quantum software requirement analysis yet
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ][
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], which was the initial motivation for this research.
      </p>
      <p>
        In the requirements area, the term Non-Functional Requirement (NFR) has been used to
refer to concerns not related to the software’s functionality. Diferent authors characterize this
concept in informal and unequal definitions. The definition we use in the context of this paper
is the following: non-functional requirements describe the non-behavioural aspects of a system,
capturing the properties and constraints under which a system must operate [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Non-functional
requirements are typically documented textually either quantified or non-quantified [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. The
quantification depends on the type of non-functional requirement. For instance, performance is
rather documented quantitatively while maintainability is rather documented non-quantitatively
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        Quantum algorithms are often described in terms that facilitate proving correctness or
deriving asymptotic complexity estimates, without considering requirements related to the
specific computing device on which to execute them [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Still, the fact is that quantum computers
have a series of properties that can be safely ignored if not specified and using simulators,
but have to be accounted for if the plan is to run a quantum program on a real device. These
limitations have their roots mainly in quantum physics interactions and properties beyond the
scope of this article, but their efects and the limitations they create when writing quantum
algorithms are observable and measurable.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Quantum Computation Fundamentals</title>
      <p>In the realm of quantum computing, we have two ways of constructing (quantum) programs,
which will influence requirements analysis and are therefore briefly described in this section.</p>
      <p>Although equivalent to each other, these two ways use slightly diferent computational models
and manipulate diferent types of data. These data types are related to pure-state quantum
algorithms and mixed-state quantum algorithms. Both can describe the current states of any
quantum system, and the models can use circuits to represent the computation on the data.</p>
      <p>A pure quantum state is represented by a unit vector in a Hilbert space ℋ = ℋ2, where ℋ2
describes the Hilbert space of a 2-state particle, also known as a qubit and, ℋ2 is the n-times
tensor product of this 2-state Hilbert space. Using Dirac’s Bras and Kets notation, the observable
states of ℋ2 are |0⟩ and |1⟩ and a pure state one particle state is | ⟩ = 0 |0⟩ + 1 |1⟩, with  ∈ C
and ||0||2 + ||1||2 = 1, i.e., a linear combination of the states |0⟩ and |1⟩ with probability 1.
, i.e., a n-qubits pure state, is  = ∑︀2 =−10  |⟩. Quantum circuits can
A general element of ℋ2
represent any physical quantum system that consist of  quantum two-state particles, for some
, named the canonical way of expressing quantum computing, where the gates are unitary
linear operators. There are sets of universal unitary gates. The Tofolli and Hadamard gates
form a universal set since one can describe any unitary operator by a circuit containing only
occurrences of these gates.</p>
      <p>A mixed quantum state is a mixture of pure states. It is represented by {Ψ} = { |Ψ ⟩},
where |Ψ ⟩ are pure states and the ’s form a probability distribution. That is, one can represent
the corresponding quantum system in terms of the pure state |Ψ ⟩ with probability . This
representation is not unique. Diferent mixtures can describe the same physical system. The
use of density matrices has some advantages and, it is equivalent.</p>
      <p>Hence, we have Pure-state Quantum Computation (PsQC) and Mixed-state Quantum
Computation (MsQC), and circuits can represent both. Additionally, the former can have a high-level
representation in a Quantum Programming Language. While PsQC is gate based as unitary
linear operators, MsQC is gate base by density matrices. A density matrix can represent any linear
operator in a Hilbert space, which is a great advantage, as there is no need to orthonormalize
density matrices at each step.</p>
      <p>The representation of linear operators into density matrices is not injective, but it is surjective.
All density matrix describes the mixture of its eigenvectors, with the probabilities being the
corresponding eigenvalues. Note that diagonal density matrices correspond to probability
distributions over classical states. Hence, density matrices are the linear operators that will
describe quantum computing when dealing with data represented as mixed states.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Non-Functional Requirements in Quantum Software</title>
      <p>
        As a first step to discuss NFRs for quantum computing, we analyzed the possibility of adapting an
NFR model for embedded systems. Embedded systems have characteristics related to quantum
computing in the sense that the software is designed specifically for the exact hardware it will
be executed on. The Pecos Model [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] is a component based NFR model for embedded systems.
It is possible to draw parallels between the Pecos Model and hybrid classical-quantum systems,
where a classical environment interacts with a quantum device to perform specific computations
in a black-box manner. This model is composed of components, data ports and connectors. In
a hybrid classical-quantum system, the quantum processor unit and the classical processors
represent the components and the layers in-between represent the connectors. However, after
our analysis, we concluded that adapting the Pecos model to the quantum context would require
significant efort, and that the parallels are not suficient to justify doing so.
      </p>
      <p>Indeed, in the quantum context, the two ways of constructing quantum programs, PsQC or
MsQC, bring some relevant diferences into the requirement analysis. The MsQC model allows
measurements in/at intermediate parts of the quantum circuit. At the same time, the PsQC does
not enable any measurements at any point of the circuit but the terminal nodes. While this
diference afects functional requirements, it seems to be intrinsically linked to a characteristic
of the program in terms of its algorithms design (if in circuit shape or Quantum Programming
Language form), which makes a substantial diference also on non-functional requirements.</p>
      <p>
        States superposition and entanglement are the most cited and used features that show
advantages of quantum computation over classical computation. Grover quantum search, for
example, shows up quadratic speed up over classical search. The superposition of states is
mandatory to get Grover speed up over classical computing. The PsQC is the natural choice
for implementing Grover unstructured quantum search. The use of MsQC has to take into
account the entropy of the initial, of the mixed initial state. The literature has reported examples
that depending on the entropy of initial (mixed) state, Grover quantum algorithm performs
as bad as classical unstructured search, see [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. They point out to the need of using
entanglement to out-perform classical computation when implementing Grover in MsQC. We
have also to mention the need of entanglement to have more accuracy in the generalization of
Grover algorithm to more than one item existing in the quantum database [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Thus, we have
to include hardware’s ability to perform entanglement among the non-functional requirements.
      </p>
      <p>Another diference is that, in classical computation, the programming language is chosen for
an implementation mainly for its adequacy to whatever is being programmed. The most used
languages all have their known strengths and weaknesses, and there is a relative consensus on
which language should be used for what. Abstraction power suitability, eficiency, and many
other pragmatic features of the programming languages are mixed with market directions,
technologies preferences and availability considerations should be taken into account. This is
even a bit fuzzier on quantum computing. The few existing companies still compete for the
spotlight, advertising their own quantum programming language or development technology
as the best choice for the problem you have in hand. This choice is hard, indeed.</p>
      <p>Aware of these diferences, in this paper, as a first step, we propose a set of NFRs that reflect
quantum computing specific hardware-related constraints. These NFRs were identified based
on experiences implementing quantum algorithms in a set of academic projects. We classify
each NFR according to the ISO 25010 quality model.</p>
      <p>The first NFR we cover is relatively simple, but it is worthy of mention since there is usually
not a need for it to be considered in the classical context. The biggest quantum computer known
at the moment of the writing of this article has 72 qubits - reflecting the state-of-the-art. We
can imagine that when quantum processors become integrated into classical computers, the
small number of available qubits will be a real issue when considering the price factor - more
qubits will mean a more expensive device. If someone wants to reach the highest number of
devices in the early stages of quantum spreading, they will have to cater to this limitation by
writing programs that use a number of qubits within that limit. Thus, an essential generic
non-functional requirement that should be considered for the quantum computing context
is: NFR1 - the program should use a maximum of  qubits, where  is the number of
qubits available in the target quantum device. In terms of its classification in the ISO 25010
quality model, it classifies within the performance eficiency product quality characteristic. More
specifically, being related to its resource utilization subcharacteristic. It is noteworthy that this
requirement is a hard cutof — if the computer doesn’t have at least the necessary number of
qubits, you will not be able to run the quantum program.</p>
      <p>
        Another aspect of a quantum circuit is its depth. The depth is the maximum length of any
(directed) path from any input wire to any output wire[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Quantum devices need to maintain
quantum states stable throughout the whole process of the program execution. If a quantum
circuit is too deep, the device might not be able to maintain the necessary quantum state for
a suficient time frame, thus introducing errors caused by decoherence. Those errors become
an even more significant problem because it’s not trivial to pinpoint how deep a circuit can be
in a specific quantum device. The results might vary even in devices with the same amount
of qubits. Another issue is that even the mere act of detecting errors in quantum programs
is much more complex than on classical ones[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], and so is correcting them. Thus, another
important generic non-functional requirement is: NFR2 - the program should be designed
considering the maximum circuit depth so that the target device can maintain a stable
quantum state for the necessary period to execute the algorithm. If your circuit is too
deep, it will gradually decohere and eventually collapse into a classical state, losing quantum
behaviour. Regarding its classification in the ISO 25010 quality model, it afects the reliability
product quality characteristic, due to potential errors produced by decoherence. Unfortunately
there is currently no subcharacteristic this requirement could mapped against in the ISO 25010.
Nevertheless, it should be related to other non-functional requirements concerning the reliability
fault tolerance subcharacteristic, e.g., specifying the need for related error correction protocols.
      </p>
      <p>
        When talking about the complexity of a classical algorithm, we use the asymptotic complexity
and big O notation[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. In quantum algorithms, on the other hand, the complexity measure
usually used is the number of T gates present in the algorithm[
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. This measure has a similar
origin as the circuit depth issues, since T gates are the ones with greater implementation cost.
Therefore, increasing the number of T gates used also increases the overall energy necessary to
keep the quantum state stable, potentially inducing decoherence. Hence, another important
generic requirement is: NFR3 - the program should be designed considering the number
of T gates so that it does not exceed the limit of the target device. This requirements could
also be classified within the reliability product quality characteristic. As for NFR2, ignoring
it will increase the chance of decoherence and, consequently, errors. Thus, fault tolerance
mechanisms should be employed considering such chances.
      </p>
      <p>
        A problem often overlooked in algorithm design and implementation will arise when dealing
with real quantum devices: not all qubits are connected to each other. Figure 1 depicts the
connectivity map of a series of IBM quantum computers1. One can note that the number
of connections between qubits can be quite far from the maximum of ( − 1)/2 possible
connections. Since it is only possible to create two qubit gates between qubits that are connected,
this can be quite limiting, especially when working with quantum algorithms that use highly
entangled states with several qubits[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Thus, an additional generic non-functional requirement
that arises is: NFR4 - the program should be implemented minimizing the number of
gates between qubits that are not physically connected on the target device.
      </p>
      <p>
        In the Figure 1, using the Yorktown device as a reference, if the programmer wants to apply
a two qubit gate between qubits 0 and 3, such as a CNOT gate or SWAP gate, it would be
necessary to apply first a SWAP gate between qubit 2 and either 0 or 3, creating a connection
between 0 and 3. While this works in simple cases, this will still be a limiting factor when
writing more complex algorithms. Transpilers [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] can be used to circumvent this problem,
which will transform a generically programmed quantum circuit into an adapted quantum
circuit for the specific device. The drawback is that this is an automated process, and it tends to
create quantum circuits that are bigger than the optimal, which may imply in time behaviour
eficiency loss. Hence, this requirement can be related to the ISO 25010 performance eficiency
and reliability characteristics. Not minimizing the number of gates between qubits that are
not physically connected and using transpilers will increase circuit size, increasing resource
utilization and chances of errors due to decoherence.
      </p>
      <p>Physically constructing quantum gates can be a daunting task. Because of that, real quantum
devices usually only implement a few quantum gates that compose a universal set. Thus, we
consider the following generic non-functional requirement: NFR5 - the program should be
implemented minimizing the use of gates that are not available in the target quantum
device. In a similar manner as in the qubit connectivity mentioned in NFR4, a transpiler
can be used to transform the original quantum circuit with high-level multi-qubit gates to a
circuit composed exclusively of the available quantum gates, increasing the circuit depth and
possibly creating decoherence. Therefore, this requirement can also be related to the ISO 25010
performance eficiency and reliability characteristics.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Discussion on how to address the non-functional requirements</title>
      <p>
        The restrictions listed are admittedly low-level, as are the NFRs they create. Dealing directly
with them would be the same as accessing individual registers on a classic computer, which is not
something usually done by a classical developer[
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Even though this could be desirable in an
eventual scenario of extreme need for optimization for a specific and probably limited quantum
device, this approach is not practical when considering an average quantum programmer who,
for the most part, is not necessarily developing for any specific device. Naturally, when designing
a quantum algorithm, lowering qubit count, circuit depth, and gate count should always be one
of the objectives. Still, developers are typically used to do that as the general intention, not
considering the specific limits of quantum hardware. And later, when the algorithm is finished,
knowing which quantum device is suficient or ideal to run the program is not trivial. For
this reason, there is considerable research about high-level approaches to choosing the correct
device, optimizing depth and adapting the circuit.
      </p>
      <p>
        Quantum computers with qubits numbers in the 50-100 range are already a reality. So, instead
of making quantum algorithms with theoretical speedups but an unrealistically high number of
qubits and circuit depth, some researchers are focusing on these near-term quantum machines,
called Noisy Intermediate-Scale Quantum devices (NISQs). As the name goes, these devices
have a non-negligible amount of noise, relatively short decoherence times, and qubits in the
two digits range. Still, they have a pretty significant advantage: they already exist. For that
reason, close term quantum development will be focused in hybrid quantum-classical software,
where an application sends a specific task to an integrated quantum processor and receives an
output. The life cycle model as described by Zhao[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] is quite abstract and is more fitting to
be used as a guide for research in the area of QSE than as a manual for writing software for
NISQs. Weder et al.[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] proposed a life cycle model with a more practical approach, tackling
the dificulties a programmer face when trying to program quantum software, which includes
dealing with constraints related to our identified NFRs. The model has ten phases, but the ones
that are closely related to the requirements of this article are:
• Quantum Hardware Selection
• Readout-Error Mitigation Preparation
• Compilation and Hardware-dependent Optimization
      </p>
      <p>
        The authors also introduce the concept of quantum provenance [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] as the relevant data
that should be collected from a quantum computer and further analyzed to efectively select a
suitable quantum computer for the execution of a circuit or to assist in the process of quantum
compilation and optimization.
      </p>
      <p>
        The Quantum Hardware Selection phase comprises an analysis of the quantum circuit
and further selection of suitable hardware. This expresses well the intention behind this phase,
but the exact way you select the quantum hardware is not defined. Salm et al.[
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] have made an
initial draft on how to automate the selection of quantum devices, specifically for current day
NISQs. Given a chosen algorithm and a chosen input range, they describe the steps to generate
a first-order logic statement that will accurately define the requirements to run that algorithm
with that specific input range. The circuit representation of this algorithm is then transpiled for
possible hardware, and from the transpiled circuit, you can gather depth and qubit numbers
and check if the device is a good choice.
      </p>
      <p>
        Suchara et al. [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] have developed related work but without the emphasis on current quantum
computing, instead of having a more general approach. On the other hand, their framework,
the QuRE toolbox, is a bit more robust. It takes extra factors such as diferent potential error
correction algorithms to estimate qubit number, gate number, and execution time accurately.
These data could theoretically guide the selection of quantum devices and error correction
protocol. Since the focus of QuRE is to quickly compare the properties of large quantum
algorithms [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] that are still beyond our reality, it remains a primarily theoretical framework.
      </p>
      <p>
        Quantum Volume (QV) is a metric designed to represent the largest random circuit of equal
width and depth that a quantum computer successfully implements [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. QV is at a higher
abstraction level when compared to the NFRs defined in this paper, since it abstracts some
of those aspects in a single number metric. Another metric, devised by Sete et al. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], for
classifying quantum computers with a single number is the Total Quantum Factor (TQF). Both
these metrics mainly consider constraints related to the described requirements - number of
qubits, decoherence times and qubit connectivity, combined with other particular aspects (e.g.,
possible parallel operations for QV and longest gate execution time for TQF).
      </p>
      <p>
        Regarding Readout-Error Mitigation Preparation, a noiseless quantum computer is still
far from our reality. NISQs devices have a non-negligible amount of noise and relatively
short decoherence times [24]. A quantum computer can have diferent types of errors. One
stems from the fact that gates aren’t always perfectly executed down to the quantum level,
resulting in slight deviations. Several error-correction codes are attacking this issue [25][
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
Still, these techniques are based on redundancy and use extra qubits, called ancilla, so this
increase in qubit number has to be taken into account when applying one. Another type of
error are readout-errors that occur when the measurement is disturbed by some noise. There are
readout-errors protocols to reduce the influence of these errors [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. During the readout-error
mitigation preparation phase, one has to choose an error mitigation approach, which are based
on the unfolding problem, where the goal is to estimate the algorithm behaviour assuming a
variable could always be measured exactly and then comparing actual execution results with
the estimated ones [26]. Since the chosen error-correction model will have an impact on fidelity
and possibly on the number of qubits used, one may store it as part of quantum provenance
data [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
      </p>
      <p>Finally, the Compilation and Hardware-dependent Optimization phase is composed
of optimizations based on hardware characteristics and compilation to machine instructions.
This process is built into the diferent hardware-specific compilers available, but there are
hardware-independent compilers and transpilers. A compiler for a classical language consists of
a sequence of steps used to transform the source code into a suitable representation. Similarly,
quantum compilers are the ones responsible for transforming a program written in a high-level
quantum language, such as Q# or Cirq, into machine instructions that can be executed by a
quantum computer, considering the listed characteristics of the selected hardware.</p>
      <p>
        The first phase of the compilation goes from the high-level representation to a Quantum
Intermediate Representation (QIR) based on the quantum circuit model, which may represent
other forms of quantum computing besides circuit based, such as adiabatic computation[27].
Developing a widely adopted QIR is still being attempted by several researchers[28][29], with
even Microsoft recently releasing their own QIR. Still, the most relevant quantum computing
companies use a specific one for their language, such as OpenQASM[ 30] for IBM’s Qiskit. The
second phase of the compilation consists of going from the QIR to the low-level language
representing the machine instructions of the chosen hardware, such as QASM. In this step, we
can use any of the hardware-specific compilers like IBM or Rigetti[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] and be limited to their
hardware, or try to use a more generic compiler. Here is where many hardware-dependent
optimisations occur, considering the constraints listed in the requirements. Of the
non-hardwaredependent compilers, one that stands out is the |ket⟩[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. This hardware-independent compiler
focuses on NISQs devices and aims to maximise the overall fidelity of the computation when
executing algorithms that will be afected by noise. The t |ket⟩ achieved two remarkable feats.
The first is the fact that it is both languages agnostic and retargetable. It accepts several diferent
languages like Qiskit, QSAM, Quil, Quipper, ProjectQ and Cirq, covering a good part of the
widely used quantum programming languages. It also can be deployed on diferent hardware,
like Rigetti, Honeywell and Google. In a field where there still exists a feeling of "every man for
himself", and competing companies are constantly trying to outdo each other, having a compiler
with these characteristics is an advance towards a unification that will likely be beneficial for
the average quantum programmer. The second feat are the results: t|ket⟩ ofers significant
improvement in terms of gate count and circuit depth over other compilers when evaluated on
realistic quantum circuits and real quantum devices [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>Transpilers and compilers are relatively similar: they take source code and transform it into
a version in a diferent representation. The main diference is that the compiler converts the
code into a lower-level abstraction while the transpiler converts it into another representation
with the same level of abstraction, be it in the same or a diferent language. In the quantum
context, transpilation is the process of rewriting a given input circuit to match the topology of
a specific quantum device and/or to optimize the circuit for execution on present-day noisy
quantum systems [31]. Recently, several transpilers have been developed to increase accuracy
on NISQs, and since they’re less work-intensive than developing a compiler, smaller teams can
do valuable research. There is a promising result in a just-in-time transpiler [32], tested on IBM
quantum computers. The qubits on each quantum computer are periodically calibrated and
tested against reference values to check their fidelity levels, and this feedback is open to the
public. The just-in-time transpiler uses this data in real time to remap the circuit and avoid
using low fidelity qubits and had good results, showing that there is room for improvement on
calibrations and that they should be performed as much as possible. This transpiler focused
on optimization. On the other hand, we have works such as the SABRE [33]. The SABRE is an
algorithm designed to tackle the qubit mapping problem in NISQs. This problem is known to
be NP-complete [34], and mathematical solutions can get prohibitively time consuming as the
number of qubits increases. The SABRE combines a series of heuristics to avoid falling into the
drawbacks of previous works and ensure flexibility, scalability, controllability, and high-quality
initial mapping, with results up to exponential speedup on various benchmarks [33].</p>
      <p>
        A promising work that is going in the direction of unifying quantum computing - taking
of the developer the hassle of navigating all these diferent quantum programming languages,
frameworks and SDKs - is Q|Path⟩. The Q|Path⟩ is an all encompassing platform for quantum
applications life cycle management and development for quality quantum software. From the
creation of the quantum algorithm through its development, testing and implementation, to
its deployment and reuse[35]. It provides a wide array of tools to develop quantum software
and it also supports the execution in actual quantum devices in a transparent way regardless
of the platform where they are executed. The platform aims to abstract the process of dealing
with hardware-related constraints, specific framework issues, quantum data collection and
even connection between diferent quantum platforms in order to democratize the access to
quantum computing and allow the programmer to fully focus at solving the problem in hand.
It does so by providing tools with similar objectives as the ones we presented for the phases
of the quantum life cycle by Weder et al. [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], such as automating the process of choosing the
adequate device do execute a quantum program, collecting relevant data from the execution,
connecting classical and quantum parts to create hybrid programs and managing the hybrid
quantum-classical software production.
      </p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion and further considerations</title>
      <p>We have reviewed a few hardware-related constraints that exist when executing quantum
programs in real quantum devices, from which we derived a set of NFRs for such programs.
These NFRs are exceedingly low level to be treated directly by a regular programmer.</p>
      <p>
        Indeed, there is ongoing work on high level solutions to deal with hardware-related
constraints in a more automated manner, aiming near term devices instead of theoretical quantum
computers. These solutions are an integral part of quantum programs development - thinking
about individual connections of qubits shouldn’t be the norm. Therefore, these solutions should
be included in the QSE life cycle, and not only as a footnote in the classical implementation
phase. The model proposed by Weder et al.[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] is a great step in the direction of describing the
process of programming quantum software for NISQs, incorporating the described constraints
in the life cycle, releasing the burden of addressing the low level NFRs from the developer.
      </p>
      <p>Another relevant point to be made is that the current state of quantum computing
development, with competing companies developing overlapping products with the objective of
becoming the main player is a problem to be addressed, and tends to make things harder for
the average programmer. For that reason, projects such as t|ket⟩ and Q|Path⟩ are extremely
important, with the potential to take a good amount of hassle of the hands of the programmer,
favouring the overall development of quantum algorithms.
computing, in: 2016 IEEE Int. Conf. on Rebooting Computing (ICRC), 2016, pp. 1–6.
[24] J. Preskill, Quantum computing in the nisq era and beyond, Quantum 2 (2018) 79.
[25] M. D. Reed, L. DiCarlo, S. E. Nigg, L. Sun, L. Frunzio, S. M. Girvin, R. J. Schoelkopf,
Realization of three-qubit quantum error correction with superconducting circuits, Nature
482 (2012) 382–385.
[26] L. Brenner, R. Balasubramanian, C. Burgard, W. Verkerke, G. Cowan, P. Verschuuren,
V. Croft, Comparison of unfolding methods using roofitunfold, International Journal of
Modern Physics A 35 (2020) 2050145.
[27] K. M. Svore, A. V. Aho, A. W. Cross, I. Chuang, I. L. Markov, A layered software architecture
for quantum computing design tools, Computer 39 (2006) 74–83.
[28] D. Ittah, T. Häner, V. Kliuchnikov, T. Hoefler, Enabling dataflow optimization for quantum
programs, arXiv:2101.11030 (2021).
[29] K. Hietala, R. Rand, S.-H. Hung, X. Wu, M. Hicks, Verified optimization in a quantum
intermediate representation, arXiv:1904.06319 (2019).
[30] A. W. Cross, L. S. Bishop, J. A. Smolin, J. M. Gambetta, Open quantum assembly language,
arXiv:1707.03429 (2017).
[31] A. Cross, The IBM q experience and QISKit open-source quantum computing software, in:</p>
      <p>APS March Meeting Abstracts, volume 2018, 2018, pp. L58–003.
[32] E. Wilson, S. Singh, F. Mueller, Just-in-time quantum circuit transpilation reduces noise,
in: IEEE ICQCE), 2020, pp. 345–355.
[33] G. Li, Y. Ding, Y. Xie, Tackling the qubit mapping problem for nisq-era quantum devices,
in: Proceedings of the Twenty-Fourth International Conference on Architectural Support
for Programming Languages and Operating Systems, 2019, pp. 1001–1014.
[34] M. Y. Siraichi, V. F. d. Santos, S. Collange, F. M. Q. Pereira, Qubit allocation, in: Proceedings
of the 2018 International Symposium on Code Generation and Optimization, 2018, pp.
113–125.
[35] G. Peterssen, Advantages of agnostic development of quantum algorithms and apps for the
real world with qpath, 2021. URL:
https://www.quantumpath.es/2021/02/25/advantagesof-agnostic-development-of-quantum-algorithms-and-apps-for-the-real-world-withqpath/.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Piattini</surname>
          </string-name>
          , G. Peterssen,
          <string-name>
            <given-names>R.</given-names>
            <surname>Pérez-Castillo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L.</given-names>
            <surname>Hevia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Serrano</surname>
          </string-name>
          , G. Hernández,
          <string-name>
            <surname>I. G</surname>
          </string-name>
          . R. de Guzmán,
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Paradela</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Polo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Murina</surname>
          </string-name>
          , et al.,
          <article-title>The talavera manifesto for quantum software engineering and programming</article-title>
          .,
          <source>in: QANSWER</source>
          ,
          <year>2020</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>L.</given-names>
            <surname>Chung</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. C. S. do Prado</given-names>
            <surname>Leite</surname>
          </string-name>
          ,
          <article-title>On non-functional requirements in software engineering</article-title>
          , in: Conceptual modeling:
          <source>Foundations and applications</source>
          , Springer,
          <year>2009</year>
          , pp.
          <fpage>363</fpage>
          -
          <lpage>379</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>N. M. A.</given-names>
            <surname>Munassar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Govardhan</surname>
          </string-name>
          ,
          <article-title>A comparison between five models of software engineering</article-title>
          ,
          <source>IJCSI</source>
          <volume>7</volume>
          (
          <year>2010</year>
          )
          <fpage>94</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Kuhrmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Tell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hebig</surname>
          </string-name>
          , J. A.
          <string-name>
            <surname>-C. Klunder</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Munch</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          <string-name>
            <surname>Linssen</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Pfahl</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Felderer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Prause</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Macdonell</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Nakatumba-Nabende</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Rafo</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Beecham</surname>
            , E. Tuzun, G. Lopez,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Paez</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Fontdevila</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Licorish</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Kupper</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Ruhe</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Knauss</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          <string-name>
            <surname>Ozcan-Top</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Clarke</surname>
            ,
            <given-names>F. H.</given-names>
          </string-name>
          <string-name>
            <surname>Mc Cafery</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Genero</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Vizcaino</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Piattini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Kalinowski</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Conte</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Prikladnicki</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Krusche</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Coskuncay</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Scott</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Calefato</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Pimonova</surname>
            ,
            <given-names>R.-H.</given-names>
          </string-name>
          <string-name>
            <surname>Pfeifer</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          <string-name>
            <surname>Pagh Schultz</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Heldal</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Fazal-Baqaie</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Anslow</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Nayebi</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Sauer</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Winkler</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Bifl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Bastarrica</surname>
            ,
            <given-names>I. Richardson</given-names>
          </string-name>
          ,
          <article-title>What makes agile software development agile</article-title>
          ,
          <source>IEEE Transactions on Software Engineering</source>
          (
          <year>2021</year>
          )
          <fpage>1</fpage>
          -
          <lpage>1</lpage>
          . doi:
          <volume>10</volume>
          .1109/TSE.
          <year>2021</year>
          .
          <volume>3099532</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <article-title>Quantum software engineering: Landscapes and horizons</article-title>
          , arXiv:
          <year>2007</year>
          .
          <volume>07047</volume>
          (
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>P. E. Z.</given-names>
            <surname>Junior</surname>
          </string-name>
          , V. V. de Camargo,
          <article-title>A systematic mapping on quantum software development in the context of software engineering</article-title>
          , arXiv:
          <fpage>2106</fpage>
          .00926 (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S.</given-names>
            <surname>Wagner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Fernández</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Felderer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Vetrò</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kalinowski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Wieringa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Pfahl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Conte</surname>
          </string-name>
          , M.-
          <string-name>
            <given-names>T.</given-names>
            <surname>Christiansson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Greer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Lassenius</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Männistö</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Nayebi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Oivo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Penzenstadler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Prikladnicki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Ruhe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Schekelmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Sen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Spínola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Tuzcu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L. D. L.</given-names>
            <surname>Vara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Winkler</surname>
          </string-name>
          ,
          <article-title>Status quo in requirements engineering: A theory and a global family of surveys</article-title>
          ,
          <source>ACM Trans. Softw. Eng. Methodol</source>
          .
          <volume>28</volume>
          (
          <year>2019</year>
          ). URL: https: //doi.org/10.1145/3306607. doi:
          <volume>10</volume>
          .1145/3306607.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Sivarajah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Dilkes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Cowtan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Simmons</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Edgington</surname>
          </string-name>
          , R. Duncan, t| ket&gt;
          <article-title>: a retargetable compiler for nisq devices</article-title>
          ,
          <source>Quantum Science and Technology</source>
          <volume>6</volume>
          (
          <year>2020</year>
          )
          <fpage>014003</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>R.</given-names>
            <surname>Wuyts</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ducasse</surname>
          </string-name>
          ,
          <article-title>Non-functional requirements in a component model for embedded systems</article-title>
          , in: International workshop on specification and
          <article-title>verification of component-based systems</article-title>
          , OOPSLA,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Bose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Rallan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vedral</surname>
          </string-name>
          ,
          <article-title>Communication capacity of quantum computation</article-title>
          ,
          <source>Phys. Rev. Lett</source>
          .
          <volume>85</volume>
          (
          <year>2000</year>
          )
          <fpage>5448</fpage>
          -
          <lpage>5451</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>E.</given-names>
            <surname>Biham</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kenigsberg</surname>
          </string-name>
          ,
          <article-title>Grover's quantum search algorithm for an arbitrary initial mixed state</article-title>
          ,
          <source>Phys. Rev. A</source>
          <volume>66</volume>
          (
          <year>2002</year>
          )
          <fpage>062301</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>A. C.-C. Yao</surname>
          </string-name>
          ,
          <article-title>Quantum circuit complexity</article-title>
          ,
          <source>in: Proceedings of 1993 IEEE 34th Annual Foundations of Computer Science</source>
          , IEEE,
          <year>1993</year>
          , pp.
          <fpage>352</fpage>
          -
          <lpage>361</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>N. M.</given-names>
            <surname>Linke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gutierrez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. A.</given-names>
            <surname>Landsman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Figgatt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Debnath</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. R.</given-names>
            <surname>Brown</surname>
          </string-name>
          , C. Monroe,
          <article-title>Fault-tolerant quantum error detection</article-title>
          ,
          <source>Science advances 3</source>
          (
          <year>2017</year>
          )
          <article-title>e1701074</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>I.</given-names>
            <surname>Chivers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sleightholme</surname>
          </string-name>
          ,
          <article-title>An introduction to algorithms and the big o notation, in: Introduction to programming with Fortran</article-title>
          , Springer,
          <year>2015</year>
          , pp.
          <fpage>359</fpage>
          -
          <lpage>364</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>A.</given-names>
            <surname>Paler</surname>
          </string-name>
          , I. Polian,
          <string-name>
            <given-names>K.</given-names>
            <surname>Nemoto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. J.</given-names>
            <surname>Devitt</surname>
          </string-name>
          ,
          <article-title>Fault-tolerant, high-level quantum circuits: form, compilation and description</article-title>
          ,
          <source>Quantum Science and Technology</source>
          <volume>2</volume>
          (
          <year>2017</year>
          )
          <fpage>025003</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Lidar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. A.</given-names>
            <surname>Brun</surname>
          </string-name>
          , Quantum error correction, Cambridge university press,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>A. W.</given-names>
            <surname>Cross</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. S.</given-names>
            <surname>Bishop</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Sheldon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. D.</given-names>
            <surname>Nation</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Gambetta</surname>
          </string-name>
          ,
          <article-title>Validating quantum computers using randomized model circuits</article-title>
          ,
          <source>Physical Review A</source>
          <volume>100</volume>
          (
          <year>2019</year>
          )
          <fpage>032328</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>R.</given-names>
            <surname>Pérez-Castillo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Serrano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Piattini</surname>
          </string-name>
          ,
          <article-title>Software modernization to embrace quantum technology</article-title>
          ,
          <source>Advances in Engineering Software</source>
          <volume>151</volume>
          (
          <year>2021</year>
          )
          <fpage>102933</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>B.</given-names>
            <surname>Weder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Barzen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Leymann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Salm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Vietz</surname>
          </string-name>
          ,
          <article-title>The quantum software lifecycle</article-title>
          ,
          <source>in: Proc. ACM Int. Work. on Arch. and Paradigms for Eng. Quantum Soft</source>
          .,
          <year>2020</year>
          , pp.
          <fpage>2</fpage>
          -
          <lpage>9</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>B.</given-names>
            <surname>Weder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Barzen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Leymann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Salm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wild</surname>
          </string-name>
          ,
          <article-title>Qprov: A provenance system for quantum computing</article-title>
          ,
          <source>IET Quantum Communication</source>
          (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Salm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Barzen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Breitenbücher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Leymann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Weder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wild</surname>
          </string-name>
          ,
          <article-title>The nisq analyzer: Automating the selection of quantum computers for quantum algorithms</article-title>
          ,
          <source>in: Symposium and Summer School on Service-Oriented Computing</source>
          , Springer,
          <year>2020</year>
          , pp.
          <fpage>66</fpage>
          -
          <lpage>85</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>M.</given-names>
            <surname>Suchara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kubiatowicz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Faruque</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. T.</given-names>
            <surname>Chong</surname>
          </string-name>
          , C.-Y. Lai, G. Paz,
          <article-title>Qure: The quantum resource estimator toolbox</article-title>
          ,
          <source>in: IEEE 31st Int. Conf. on Comp. Design</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>419</fpage>
          -
          <lpage>426</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>E. A.</given-names>
            <surname>Sete</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W. J.</given-names>
            <surname>Zeng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. T.</given-names>
            <surname>Rigetti</surname>
          </string-name>
          ,
          <article-title>A functional architecture for scalable quantum</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>