Abstract

摘要:随着量子计算的进步,量子软件对于探索量子计算系统的全部潜力变得至关重要。 近年来,量子软件工程(QSE)成为一个新兴领域,受到越来越多的关注。 然而,目前尚不清楚软件工程界面临的量子计算挑战和机遇是什么。 这项工作旨在了解开发人员感知到的与 QSE 相关的挑战。 我们在 Stack Exchange 论坛上进行实证研究,开发人员发布 QSE 相关问题和答案以及 Github 问题报告,开发人员在实际量子计算项目中提出 QSE 相关问题。 基于 Stack Overflow 上现有的问题类型分类,我们首先对 Stack Exchange 论坛上提出的 QSE 相关问题的类型进行定性分析。 然后,我们使用自动主题建模来发现与 QSE 相关的 Stack Exchange 帖子和 GitHub 问题报告中的主题。 我们的研究突出了 QSE 与传统软件工程不同的一些特别具有挑战性的领域,例如解释量子计算代码背后的理论,解释量子程序输出,弥合量子计算和经典计算之间的知识鸿沟,以及它们的 相关的机会。
索引词——量子计算、量子软件工程、主题建模、堆栈交换、问题报告。

I. INTRODUCTION

在过去的几十年里,量子计算取得了稳定而显着的进展[1]-[3]。 例如,IBM Quantum [4] 现在支持开发人员使用其编程框架开发量子应用程序,并在其基于云的量子计算机上执行它们。 基于叠加(量子物体可以同时处于不同状态)[5]和纠缠(量子物体可以在没有直接物理相互作用的情况下深度连接)[6]的量子力学原理,量子计算机有望进行革命性的计算 对当今经典计算机的改进 [7]。 特别是,量子计算有望帮助解决当今经典计算机难以解决的计算问题,包括密码学、化学、金融服务、医学和国家安全方面的问题[8]。

量子计算的成功离不开量子软件。 自第一台量子计算机以来,已经开发了几种量子编程语言(例如,QCL [9])和开发工具(例如,Qiskit [10]。大型软件公司,如 Google [11]、IBM [4] 和 Microsoft [12] 已经开发了他们的量子软件开发技术。量子软件开发人员也取得了一些初步的成功将量子软件应用于某些计算领域(例如机器学习 [13]、优化 [14]、密码学 [15] 和化学 [16])。 但是,仍然缺乏大规模的量子软件。 就像开发大型传统软件需要软件工程一样,已经提出了量子软件工程(QSE)的概念来支持和指导大规模工业级量子软件应用程序的开发。 这个概念最近得到了越来越多的关注[3]、[8]、[17]。 QSE 旨在应用或调整现有的软件工程流程、方法、技术、实践和原则来开发量子软件应用程序,或创建新的应用程序 [8]。 开创性的工作揭示了 QSE 的新方向,例如量子软件过程和方法 [18]、量子软件建模 [19] 以及量子混合系统的设计 [20]。 与此同时,我们观察到 Stack Overflow 等技术问答论坛上与量子软件开发相关的讨论呈指数级增长(例如,从 2010 年的 8 个增加到 2020 年的 1434 个)。 我们还注意到越来越多的量子软件项目托管在 GitHub 上,开发人员使用问题报告来跟踪他们的开发和问题修复过程。 此类技术问答和问题报告可能会传达开发人员在开发量子软件应用程序时面临的挑战。

在本文中,我们旨在了解量子软件开发人员所面临的挑战,并为未来的 QSE 研究和实践寻找机会。 特别是,我们检查了开发人员提出 QSE 相关问题的技术问答论坛,以及开发人员提出 QSE 相关问题的 GitHub 问题报告。 我们应用一系列启发式方法来搜索和过滤与 QSE 相关的问答帖子,以及搜索和过滤与量子软件相关的 GitHub 项目。 我们总共提取和分析了与 QSE 相关的 3,117 个问答帖子和 43,979 个 Github 问题。 我们结合手动分析和自动主题建模来检查这些问答帖子和 Github 问题,以了解开发人员面临的 QSE 挑战。 特别是,我们的研究旨在回答以下三个研究问题(RQ):

RQ1:技术论坛上会问哪些类型的 QSE 问题? 为了了解开发人员在技术论坛上提出问题的意图以及他们正在寻找的信息类型,我们手动检查了具有统计代表性的问题样本。 我们从之前扩展了之前的分类工作 [21] 发现了九类问题。 我们的研究结果强调了未来需要努力支持开发人员的量子程序开发,特别是开发学习资源、帮助开发人员修复错误以及解释量子计算代码背后的理论。

RQ2:技术论坛上提出了哪些 QSE 主题? QSE 相关的帖子可能反映了开发人员在学习或开发量子程序时面临的挑战。 为了了解他们面临的挑战,我们使用主题模型来提取他们帖子中的语义主题。 我们衍生出九个主题,包括传统软件工程主题(例如,环境管理和依赖管理)和 QSE 特定主题(例如,量子执行结果和量子与经典计算)。 我们强调了 QSE 的一些特别具有挑战性的领域,例如解释量子程序输出、理解量子算法复杂性以及弥合量子计算和经典计算之间的知识鸿沟。

RQ3:技术论坛上提出了哪些 QSE 主题? QSE 相关的帖子可能反映了开发人员在学习或开发量子程序时面临的挑战。 为了了解他们面临的挑战,我们使用主题模型来提取他们帖子中的语义主题。 我们衍生出九个主题,包括传统软件工程主题(例如,环境管理和依赖管理)和 QSE 特定主题(例如,量子执行结果和量子与经典计算)。 我们强调了 QSE 的一些特别具有挑战性的领域,例如解释量子程序输出、理解量子算法复杂性以及弥合量子计算和经典计算之间的知识鸿沟。

本文结构。 本文的其余部分安排如下。 在第二节中,我们讨论了量子软件工程和相关工作的背景。 然后,在第三节中,我们描述了我们研究的设计。 在第四节中,我们介绍了我们的结果。 第五节讨论了对我们研究结果有效性的威胁。 最后,第六节总结了论文。

文章地址:https://ieeexplore.ieee.org/document/9609196