<!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 />
    <article-meta>
      <title-group>
        <article-title>The Talavera Manifesto for Quantum Software Engineering and Programming</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mario Piattini</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Guido Peterssen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ricardo Pérez-Castillo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jose Luis Hevia</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Macario Polo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ezequiel Murina</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Luis Jiménez</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ramsés Gallego</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jordi Tura</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Frank Phillipson</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Juan M. Murillo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Claudio Andrés Paradela</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alarcos Research Group</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Juan Carlos Marqueño</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alhambra IT</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Manuel A Serrano</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Guillermo Hernández</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Quantum World Association</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>SciCom Research Group</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
          <xref ref-type="aff" rid="aff5">5</xref>
          <xref ref-type="aff" rid="aff6">6</xref>
        </contrib>
        <contrib contrib-type="editor">
          <string-name>Alfonso Niño</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Escuela Superior de Informática de Ciudad Real</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Facultad de Ciencias Sociales de Talavera de la Reina</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Ignacio García Rodríguez de Guzmán</institution>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Information Systems &amp; Technology Department</institution>
          ,
          <addr-line>UCLM</addr-line>
        </aff>
        <aff id="aff4">
          <label>4</label>
          <institution>Information Technology &amp; Systems Institute</institution>
        </aff>
        <aff id="aff5">
          <label>5</label>
          <institution>Moisés Rodríguez</institution>
        </aff>
        <aff id="aff6">
          <label>6</label>
          <institution>University of Extremadura</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>This paper presents the Talavera Manifesto for quantum software engineering and programming. This manifesto collects some principles and commitments about the quantum software engineering and programming field, as well as some calls for action. This is the result of the discussion and different viewpoints of academia and industry practitioners who joined at the first International Workshop on QuANtum SoftWare Engineering &amp; pRogramming (QANSWER).</p>
      </abstract>
      <kwd-group>
        <kwd>Quantum Software Engineering</kwd>
        <kwd>Quantum Computing</kwd>
        <kwd>Manifesto</kwd>
        <kwd>Talavera</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>At the beginning of the last century, the basis of a new physics theory, “quantum
mechanics” was established by many exceptional scientists (such as Planck, Einstein,
Bohr, Schrödinger, Born, Dirac, De Broglie, Heisenberg, Pauli, etc.); the theory
describes the behaviour of nature at subatomic levels (photons, electrons, etc.), and led to
the first quantum revolution that allowed researchers and engineers to apply the
physical laws that had been set forth in many cutting-edge technologies such as the transistor,
GPS, as well as solid-state lighting and lasers, among other advances.</p>
      <p>In 1982, Nobel laureate Richard Feynman asked: What kind of computer are we
going to use to simulate physics? This is how the “second quantum revolution” began,
and the idea for quantum computing was thus born. Quantum computers attempt to use
various “counterintuitive” principles such as superposition (objects can be in different
states at the same time) and entanglement (objects can be deeply connected without any
direct physical interaction) in the effort to provide faster computing speed. Apart from
quantum computers, the second quantum revolution includes other key technologies
like quantum internet, quantum clocks, quantum sensors, cryptography, etc.</p>
      <p>We can already use quantum computers and we expect, in the near future, to take
advantage of their huge computation capacity to solve problems which are considered
very difficult for today’s “classic” computers. This new computing paradigm has a
great deal of direct applications, and many other potential ones. For example,
applications include, but are not limited to:
• Privacy and cryptography: certification of randomness, authentication.
• Supply chain and logistics: optimization problems in procurement, production and
distribution, vehicle routing optimization, etc.
• Chemistry: simulations of complex molecules, discovery of new materials, advanced
molecular design, etc.
• Economics, and financial services: Portfolio risk optimization and fraud detection,
actual randomness for financial models, simulations and scenario analysis, etc.
• Energy and agriculture: production of ammonia, better distribution of resources,
asset degradation modelling, etc.
• Medicine and health: Protein folding and drug discovery, disease detection,
noninvasive and high-precision surgeries, targeted drugs design, tailored medicine,
improvement of the quality of life, prediction of therapeutic prescriptions, etc.
• Defence and national security programs.</p>
      <p>All the mentioned applications will not be accomplished with quantum computers
alone; these applications need quantum software. With the rise of the first quantum
computers, the initial programming languages and quantum algorithms came up with
promising results. Nevertheless, quantum software has not begun to be produced in a
large-scale, industrial way. We expect this industrialization of quantum software
production to come about in the next years.</p>
      <p>Actually, this kind of breakthrough has already occurred several times during the
history of software engineering. First, and most notably, with the diffusion of
thirdgeneration languages such as COBOL in the 70s, which resulted in structured analysis,
design and programming. Then came the advent of relational database management
systems in the 80s, which led to Entity-Relationship (ER) analysis and design. Another
example is object orientation, emerging in the 90s and leading to object-oriented
analysis, design and patterns, which in turn were the seeds for the later model-driven
architecture. Most recently, we can point to DevOps, born late on in the first decade of the
21st century, a methodology which has made continuous integration and continuous
delivery a must today.</p>
      <p>We believe Quantum Software Engineering (QSE) is a necessary contribution to the
success of quantum computing. IEEE defines Software Engineering as the application
of a systematic, disciplined, quantifiable approach to the development, operation, and
maintenance of software, as well as to the study of these approaches; that is, the
application of engineering to software. We feel that the time has come to take care of
producing quantum software by applying knowledge and lessons learned from the software
engineering field. This implies to apply or adapt the existing software engineering
processes, methods, techniques, practices and principles for the development of quantum
software (or it may imply creating new ones).</p>
      <p>We recognize that there is a rapidly-increasing awareness of the need for quantum
computing applications, and there is a great desire to produce quantum software in an
industrial, controlled manner. However, this is ineffective unless we come to
understand how software engineering can help.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Principles and commitments</title>
      <p>We propose the following initial set of principles and commitments:
• QSE is agnostic regarding quantum programming languages and technologies.</p>
      <p>QSE serves to deliver quantum software with processes and methods that are
understandable, controllable and repeatable by broad communities.
• QSE embraces the coexistence of classical and quantum computing, and
advocates the use of reengineering techniques to integrate new quantum algorithms with
the existing classical information systems. Reverse engineering techniques are also
needed to parse and abstract quantum program information that is to be integrated
into classical programs.
• QSE supports the management of quantum software development projects,
delivering quantum software that fulfils the initial business goal and requirements,
while at the same time ensuring that quality, time, and cost constraints are being
properly observed. Methodologies for developing quantum programs must be
created or adapted from the existing ones. Effort estimation methods for quantum
software development need to be provided as well.
• QSE considers the evolution of quantum software. Quantum software should be
maintained and evolved from inception to removal. Quantum software evolution
must be handled throughout the whole quantum software lifecycle.
• QSE aims at delivering quantum programs with desirable zero defects. It is in
charge of defining and applying testing and debugging techniques to quantum
programs in such a way that most defects can be detected and solved before the program
is released.
• QSE assures the quality of quantum software. Quality management for both
process and product are essential if quantum software with expected quality levels is to
be produced. Since we cannot improve what we cannot measure, new metrics for
quantum programs and quantum processes have to be developed.
• QSE promotes quantum software reuse. QSE can help development teams to
share, index, and find quantum software that can be reused. The study of design and
architectural patterns for quantum programs must be addressed. It is also necessary
to facilitate technical communication, and work on creating libraries of reference
examples and application demonstrations.
• QSE addresses security and privacy by design. Quantum information systems
must be secure and guarantee the privacy of data and of users. QSE offsets out to
consider security and privacy from the initial phases of quantum software
development, i.e., by design.
• QSE covers the governance and management of software. Managers should be
aware of the particular processes, organizational structures, principles, policies and
frameworks, information, culture, ethics and behaviour, people, skills and
competences, as well as the services, infrastructure and applications that are associated with
quantum software and that are (or should be) provided by organizations.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Call to Action</title>
      <p>Each of the following stakeholders can do something right now to get started.
• Software practitioners: Try to identify the effects of your quantum projects on
technical, economic and organizational contexts. Start asking questions about how to
incorporate the principles and commitments into daily practice. Think about the
social and individual dimensions. Talk about these issues with your colleagues.
• Researchers: Identify research questions in your field that can help us to better
understand quantum software engineering. Discuss these with your peers, and think
about how your experience in software engineering research could be transferred to
the quantum software research field.
• Educators: Integrate quantum software engineering in curricula within the existing
software engineering degrees and/or courses in this or other disciplines, and clearly
specify which competences and skills are required for future quantum software
engineers.
• Government and funding bodies: Analyse the commitments provided and consider
quantum software engineering in research/industrial strategical plans. Provide
adequate funding programs to support such plans, and contribute with dissemination of
information about these plans.
• Quantum technology vendors: Be actively aware of the latest trends in quantum
software engineering, and try to make every effort for the commitments mentioned
to be fulfilled.
• Professional associations: Revise practice, attempting to incorporate principles;
acknowledge explicitly the need to consider quantum software engineering as part
of professional practice.
• Customers: Put your concerns on the table. Ask about these in the next project.
• Users: Demand that the software you use embraces all the principles mentioned.</p>
    </sec>
  </body>
  <back>
    <ref-list />
  </back>
</article>