What Skills do IT Companies look for in New Developers? A Study with Stack Overflow Jobs
背景:对于IT公司如何寻找空缺职位候选人的信息的需求越来越大。目的:本文通过分析20,000个工作机会的描述来调查IT公司更需要哪些硬技能和软技能。方法:我们应用开放式卡片排序来进行高层次的分析,哪些类型的硬技能更需要。此外,我们手动分析了最常提到的软技能。结果:程序设计语言是最需要的硬技能。沟通、协作和解决问题是最需要的软技能。结论:我们建议开发人员根据他们申请的职位来组织他们的简历。我们还强调了软技能的重要性,因为它们出现在许多工作机会中。
2020-11-04 cs.SE
Code2Que: A Tool for Improving Question Titles from Mined Code Snippets in Stack Overflow
Stack Overflow是软件开发人员使用的最受欢迎的技术问答网站之一。向Stack Overflow寻求帮助已经成为软件开发人员解决编程相关问题的日常工作的重要组成部分。尽管Stack Overflow社区提供了质量保证指南来帮助用户编写更好的问题,但我们观察到提交给Stack Overflow的大量问题质量低下。在本文中,我们介绍了一个新的基于Web的工具,Code2Que,它可以帮助开发人员在编写一个给定的代码片段更高质量的问题。Code2Que包括两个主要阶段:离线学习和在线推荐。在离线学习阶段,我们首先收集一组高质量的<code snippet,question>对作为训练样本。然后,我们通过深度序列到序列方法在这些训练样本上训练我们的模型,并通过注意力机制,复制机制和覆盖机制进行增强。在在线推荐阶段,对于给定的代码片段,我们使用离线训练模型来生成问题标题,以帮助经验不足的开发人员更有效地编写问题。同时,我们将给定的代码片段嵌入到向量中,并检索具有类似问题代码片段的相关问题。
2020-07-19 cs.SE
How Do I Refactor This? An Empirical Study on Refactoring Trends and Topics in Stack Overflow
作为软件维护和演化的重要组成部分,重构由开发人员执行,无论技术或领域如何,以提高系统的内部质量,并减少其技术债务。然而,选择合适的重构策略并不总是那么简单,这导致开发人员寻求帮助。虽然重构的研究已经很成熟,有几项研究在检测重构机会和建议适当的代码更改之间进行了改变,但对它们在实践中的采用知之甚少。分析开发人员的认知对于更好地理解开发人员认为代码中存在的问题以及他们如何处理这些问题至关重要。此外,需要通过提取更适合开发人员实际情况的常见重构意图,来弥合研究重构与实际应用之间的差距。在这项研究中,我们通过一系列定量和定性的实验,分析重构讨论堆栈溢出。我们的研究结果表明,堆栈溢出是由一组不同的开发人员用于重构援助的各种技术。我们的观察显示了开发人员在重构时通常需要帮助的五个方面--代码优化、工具和IDE、体系结构和设计模式、单元测试和数据库。我们设想我们的研究结果更好地桥接重构的传统(或学术)方面与其现实世界的适用性之间的支持,包括更好的工具支持。
2021-10-23 cs.SE
Interests, Difficulties, Sentiments, and Tool Usages of Concurrency Developers: A Large-Scale Study on Stack Overflow
上下文:软件开发人员越来越多地面临编写不仅并发而且正确的代码的挑战。目的:为了帮助这些开发人员,有必要了解他们感兴趣的并发主题,他们在这些主题中寻找问题答案的困难,他们对这些主题的情感,以及他们如何使用并发工具和技术来保证正确性。方法:我们对整个Stack Overflow进行了大规模的研究,以了解并发开发人员的兴趣,困难,情绪和工具使用情况。我们讨论了我们的研究结果的影响,并行软件开发的实践,研究和教育,并调查我们的研究结果与以前的工作结果的关系。结果如下:我们的研究发现如下:(1)并发开发人员提出的问题可以被分组到具有8个主要类别下的27个并发主题的层次结构中,(2)线程安全是最流行的并发主题之一,而客户端-服务器并发是最不流行的并发主题之一,(3)不可再现的行为是最困难的主题之一,而存储器一致性是最不困难的主题之一,(4)数据抓取是最积极的并发主题之一,而不可复制的行为是最消极的,(5)根本原因识别对于数据竞争工具的使用具有最多的问题,而替代使用具有最少的问题。结论:我们的研究结果不仅可以帮助并发开发人员,而且并发教育工作者和研究人员更好地决定在哪里集中精力,通过权衡一个并发主题对另一个。
2021-09-10 cs.SE
Investigating Software Developers' Challenges for Android Permissions in Stack Overflow
本研究通过分析 Stack Overflow 上 3,327 个 Android 权限相关问题,系统分类了开发者面临的文档、依赖、调试、概念理解及实现等挑战,揭示了文档不足与官方描述矛盾的问题,并呼吁改进文档与工具支持。
2023-10-31 cs.SE
Characterizing Architecture Related Posts and Their Usefulness in Stack Overflow
背景:Stack Overflow(SO)已经赢得了软件工程师的青睐(例如,建筑师)学习,实践和利用开发知识,如建筑知识(AK)。但是,作为一种高层次的、重要的发展知识,人们对SO中所传达的AK却知之甚少。目的:本研究旨在从SO用户的角度探讨SO帖子中AK的类别和特征以及它们的有用性。方法:我们进行了一项探索性研究,定性分析了统计上有代表性的样本968建筑相关职位(ARP)从SO。结果如下:主要调查结果如下:(1)体系结构相关问题可分为9个核心类别,其中“体系结构配置”是最常见的类别,其次是“体系结构决策”类别,以及(2)提供清晰描述以及体系结构图的体系结构相关问题增加了获得多个答案的可能性,而结构不良的体系结构问题往往只能获得一个答案。结论:我们的研究结果表明,未来的研究可以集中在启用自动化的方法和工具,可以促进搜索和(重新)使用AK SO。SO用户可以参考我们提出的指导方针来撰写与体系结构相关的问题,并有可能在SO中获得更多的响应。
2023-01-05 cs.SE
A Gold Standard for Emotion Annotation in Stack Overflow
软件开发人员在丰富的通信渠道生态系统中体验和分享各种各样的情感。在经验软件工程研究中出现的一个最近的趋势是利用对开发人员通信痕迹的情感分析。我们从Stack Overflow发布了一个包含4,800个问题、答案和评论的数据集,并手动注释了情绪。我们的数据集有助于建立一个共享的注释资源语料库,以支持软件开发中的情感意识研究。
2018-03-06 cs.SE
Recommending Code Improvements Based on Stack Overflow Answer Edits
背景:次优代码在软件系统中普遍存在。开发人员可能会由于许多原因编写低质量的代码,例如缺乏技术知识,缺乏经验,时间压力,管理决策,甚至不快乐。一旦次优代码在不知不觉中(或有意)集成到软件系统的代码库中,其积累可能会导致大量的维护成本和技术债务。Stack Overflow是一个程序员提问和分享代码片段的流行网站。Stack Overflow的众包和协作性质创造了大量的编程知识来源,可以用来帮助开发人员进行日常活动。目的:在本文中,我们提出了一个探索性的研究,以评估基于Stack Overflow答案的编辑推荐代码改进的有用性。方法:我们提出了Matcha,一个代码推荐工具,利用Stack Overflow代码片段与版本历史和代码克隆搜索技术来识别软件项目中的次优代码,并建议其优化版本。通过使用SOTorrent和GitHub数据集,我们将定性定量地研究\textsc{Matcha}向开发人员提供的建议的有用性,这些建议使用手动分类的建议和接受开源项目的拉式请求。
2022-04-14 cs.SE
What Challenges Do Developers Face in AI Agent Systems? An Empirical Study on Stack Overflow & GitHub Issues
Delft University of Technology(代尔夫特理工大学);JetBrains Research(JetBrains 研究院)
本研究通过分析Stack Overflow和GitHub问题,识别出人工智能代理系统开发中的五大主要挑战,包括环境管理、检索与记忆、协调控制、交互契约及运行时可靠性。
2026-01-23 cs.SE
What Do Developers Ask About ML Libraries? A Large-scale Study Using Stack Overflow
现代软件系统越来越多地将机器学习(ML)作为一个不可分割的组成部分。然而,我们还不了解软件开发人员在学习ML库并在其系统中使用它们时所面临的困难。为此,本文报告了对3,243篇与十个ML库(即Tensorflow、Keras、scikit-learn、Weka、Caffe、Theano、MLlib、Torch、Mahout和H2O)相关的高评价问答帖子的详细(手动)检查,这些帖子位于Stack Overflow(一个流行的在线技术问答论坛)上。我们将这些问题分为ML管道的七个典型阶段,以了解库和阶段之间的相关性。然后,我们研究的问题,并进行统计分析,以探索四个研究目标的答案(找到最困难的阶段,了解问题的性质,图书馆的性质和研究是否随着时间的推移保持一致的困难)。我们的研究结果表明,迫切需要在这一领域的软件工程(SE)的研究。静态分析和动态分析基本上都不存在,并且迫切需要帮助开发人员更早地发现错误。虽然已经有一些关于调试的早期研究,但还需要做更多的工作。API误用很普遍,迫切需要改进API设计。最后,有点令人惊讶的是,在提供更高级别的抽象和需要理解训练模型的行为之间的拔河是普遍的。
2019-06-27 cs.SE
I Know What You Are Searching For: Code Snippet Recommendation from Stack Overflow Posts
Stack Overflow已经被软件开发人员大量使用来寻找与编程相关的信息。越来越多的开发人员使用社区问答论坛(如Stack Overflow)来搜索如何完成特定编码任务的代码示例。这通常被认为比从源文档,教程或完整的工作示例中工作更有效。然而,由于这些在线问答论坛的复杂性以及它们包含的大量信息,开发人员可能会被大量的可用信息所淹没。这使得很难找到和/或甚至知道最相关的代码示例来满足他们的需求。为了缓解这个问题,在这项工作中,我们提出了一个查询驱动的代码推荐工具,名为Que 2Code,它可以从Stack Overflow帖子中识别用户查询的最佳代码片段。我们的方法有两个主要阶段:(i)语义等价的问题检索和(ii)最佳代码片段推荐。为了评估我们提出的模型的性能,我们进行了一个大规模的实验,以评估语义等价的问题检索任务和最佳代码片段推荐任务的有效性分别在Python和Java数据集堆栈溢出。我们还进行了一项人类研究,以衡量现实世界的开发人员如何看待我们的模型生成的结果。自动和人工评估结果都证明了我们模型的良好性能,我们已经发布了我们的代码和数据来帮助其他研究人员。
2022-10-28 cs.SE
How do developers discuss and support new programming languages in technical Q&A site? An empirical study of Go, Swift, and Rust in Stack Overflow
新的程序设计语言(例如,Swift、Go、Rust等)是为了给开发人员提供更好的机会,使软件开发变得健壮和容易。在早期阶段,程序设计语言可能会有资源限制,这会鼓励开发人员经常向活跃在QA站点(如Stack Overflow(SO))的经验丰富的同行寻求帮助。在这项研究中,我们正式研究了SO(2008)成立后引入的三种流行新语言的讨论,并在适当的时候将其与GitHub中的相关活动相匹配。为此,我们从SO中挖掘了4,17,82,536个问题和答案,从GitHub中挖掘了7,846个问题信息以及6,60,965个存储库信息。最初,与成熟语言相比,新语言的发展相对缓慢(例如,C、C++、Java)。本研究的预期成果是揭示开发人员使用这些语言所面临的困难和挑战,以便采取适当措施加快相关资源的生成。我们已经使用LDA方法对SO的问题和答案,以确定不同的主题的新语言。我们从SO中提取了新语言回答模式的几个特征,以研究它们的特点。这些属性被用来确定困难的主题。我们探讨了为这些语言做出贡献的开发人员的背景。我们通过结合Stack Overflow数据和GitHub的issues、repository、用户数据创建了一个模型。最后,我们使用该模型来确定影响语言进化的因素。我们相信,我们的研究结果可能会帮助这些语言的所有者/赞助商设计更好的功能和文档。它还将帮助软件开发人员或学生准备以知情的方式使用这些…
2021-05-04 cs.SE
Mining API Usage Scenarios from Stack Overflow
我们提出了一个框架,从堆栈溢出挖掘API使用场景。每个任务都由一个代码示例、任务描述和开发人员对代码示例的反应组成。首先,我们提出了一种算法,可以自动将论坛帖子中的代码示例链接到论坛帖子的文本内容中提到的API。其次,我们通过总结围绕代码示例的讨论来生成任务的自然语言描述。第三,我们自动关联开发人员的反应(即,积极和消极的意见),以提供有关代码质量的信息。我们使用三个基准评估算法。
2021-02-17 cs.SE
Unveiling Ruby: Insights from Stack Overflow and Developer Survey
本研究通过分析 Stack Overflow 上超 49.8 万个 Ruby 相关问题并调查 154 名开发者,构建了 35 个主题分类,揭示了 Ruby 开发者在 Web 开发、Gem 安装等方面的困难,并指出主观感知困难与客观指标存在偏差。
2025-04-25 cs.SE
Exploring Accessibility Trends and Challenges in Mobile App Development: A Study of Stack Overflow Questions
本文通过大规模实证分析 Stack Overflow 上的无障碍讨论,识别 Android 与 iOS 开发者在辅助技术、UI、TTS、手势和测试方面的趋势与挑战。
2024-09-14 cs.SE
DevOps and General Developers: Insights from Stack Overflow's 2023 Survey
University of Bahrain(巴林大学)
通过分析 Stack Overflow 2023 年调查数据,比较 DevOps 专家与普通开发者在工具、技术、方法论和人口统计上的差异,发现两者角色互补,工具偏好无显著差异。
2026-06-19 cs.SE
An Analysis of Python's Topics, Trends, and Technologies Through Mining Stack Overflow Discussions
Python是一种流行的、广泛使用的通用程序设计语言。尽管其社区不断增长,但研究人员并没有对Python的主题,趋势和技术进行太多分析,从而为开发人员提供有关Python社区趋势和主要问题的见解。在本文中,我们研究了开发人员在最受欢迎的Q\&A网站之一Stack Overflow上讨论的与这种语言相关的主要主题,以及通过挖掘2461876个帖子的时间趋势。为了对软件工程师更有用,我们研究了Python提供的替代常见程序设计语言(如Java)提供的流行技术的方法。我们的研究结果表明,关于Python标准功能,Web编程和科学编程的讨论。数学、数据科学、统计学、机器学习、自然语言处理(NLP)等领域的编程。是Python社区中最受欢迎的领域。与此同时,与科学编程相关的领域正越来越受到Python开发人员的关注。
2020-04-14 cs.SE
How is Software Reuse Discussed in Stack Overflow?
本文通过对 Stack Overflow 上 1,409 篇帖子的实证分析,揭示了开发者在软件复用中讨论的主要挑战、高频术语及常用设计模式,为制定促进复用的指导方针提供依据。
2023-11-01 cs.SE
StacerBot: A Stacktrace Search Engine for Stack Overflow
作为软件开发人员或研究人员,我们在尝试编写代码或安装软件包时经常会收到stacktrace错误消息。很多时候,这些错误消息非常晦涩和冗长;对我们来说没有多大意义。很有可能其他人也遇到了类似的问题,可能在各种在线开发者论坛上分享了类似的堆栈跟踪。然而,传统的google搜索或其他搜索引擎并不能很好地帮助找到具有类似堆栈跟踪的网页。为了解决这个问题,我们开发了一个Web界面;一个更好的搜索引擎:作为这个研究项目的成果,用户可以通过提交整个stacktrace错误消息来找到适当的堆栈溢出帖子。目前开发的解决方案可以使用300 GB RAM的服务器在50秒内为具有顶部匹配堆栈溢出帖子的实时并行用户查询提供服务。本研究全面概述了本研究中使用的NLP技术,并广泛概述了研究流程。这项研究中提到的综合结果,限制和计算开销可以被未来的研究人员和软件开发人员用来为相同的问题或类似的大规模文本匹配相关任务构建更好的解决方案。
2022-09-28 cs.SE
Empirical Investigation of Quantum Computing Toolchains and Algorithms : Mining Stack Overflow Repository
M3S Empirical Software Engineering Research Unit, University of Oulu(奥卢大学 M3S 实证软件工程研究单位)
本文通过分析1404个Stack Overflow帖子,探讨开发者在量子计算领域的讨论主题、工具和算法使用情况,揭示了混合量子-经典计算和量子电路实现的主导地位,以及Qiskit和Q-sharp的主导地位。
2026-04-16 cs.SE
SOTitle: A Transformer-based Post Title Generation Approach for Stack Overflow
在Stack Overflow上,开发人员不仅可以浏览问题帖子来解决他们的编程问题,还可以从问题帖子中获得专业知识,以帮助提高他们的编程技能。因此,提高Stack Overflow的问题帖质量,引起了研究者的广泛关注。一个简洁、准确的标题可以帮助开发者理解问题帖子的关键信息,从而提高帖子的质量。但是,由于缺乏与他们的问题相关的专业知识或开发人员的表达能力差,生成的标题质量不高。之前的一项研究旨在通过分析问题帖子中的代码片段来自动生成标题。然而,本研究忽略了相应问题描述中的有用信息。因此,我们提出了一种通过利用问题帖子中的代码片段和问题描述(即,多模式输入)。SOTitle遵循Transformer结构,通过多头注意力机制,可以有效捕捉长期依赖。为了验证SOTitle的有效性,我们从Stack Overflow中构建了一个大规模的高质量语料库,其中包括1,168,257个针对四种流行程序设计语言的高质量问题帖子。实验结果表明,SOTitle可以显着优于六个国家的最先进的基线在自动评价和人类评价。为了鼓励后续研究,我们公开了我们的语料库和方法
2022-02-20 cs.SE
Generating Question Titles for Stack Overflow from Mined Code Snippets
Stack Overflow已被软件开发人员大量使用,作为通过互联网从同行中寻求编程相关信息的流行方式。Stack Overflow社区建议用户在创建问题时提供相关代码片段,以帮助其他人更好地理解并提供帮助。以前的研究表明,这些问题中有相当一部分是低质量的,对Stack Overflow中的其他潜在专家没有吸引力。这些问得不好的问题不太可能得到有用的答案,并阻碍了整个知识生成和共享过程。考虑到在SO中引入低质量问题的原因之一是,许多开发人员可能无法澄清和总结他们所呈现的代码片段背后的关键问题,因为他们缺乏与问题相关的知识和术语,和/或他们的写作技巧很差,在这项研究中,我们提出了一种方法来帮助开发人员编写高-通过使用深度序列到序列学习方法为代码片段自动生成问题标题来生成高质量的问题。我们的方法是完全数据驱动的,并使用一个注意力机制来执行更好的内容选择,一个复制机制来处理罕见的单词问题和覆盖机制,以消除单词重复问题。我们在各种程序设计语言(例如,Python,Java,JavaScript,C#和SQL)和我们的实验结果表明,我们的方法显着优于几个国家的最先进的基线在自动和人工评估。我们已经发布了我们的代码和数据集,以方便其他研究人员验证他们的想法并激发后续工作。
2020-07-13 cs.SE
Optimising the Fit of Stack Overflow Code Snippets into Existing Code
软件开发人员经常在他们的项目中重用来自在线资源(如Stack Overflow)的代码。然而,搜索代码段并将其集成到现有源代码中的过程可能是乏味的。为了提高代码重用的效率和减少代码重用所花费的时间,我们提出了一个用于Eclipse IDE(集成开发环境)的自动化代码重用工具NLP 2TestableCode。NLP 2TestableCode不仅可以使用自然语言任务搜索Java代码段,还可以基于用户现有代码评估代码段,修改代码段以改进匹配并纠正错误,然后向用户呈现最佳代码段,所有这些都无需离开编辑器。NLP 2TestableCode还包括自动生成可定制测试用例并建议参数和返回类型的功能,以便进一步评估代码片段。在评估中,NLP 2TestableCode能够为82.9%的任务找到可编译的代码片段,为42.9%的任务找到可测试的代码片段。
2020-04-16 cs.SE
Deconstructing Sentimental Stack Overflow Posts Through Interviews: Exploring the Case of Software Testing
本研究以 Stack Overflow 上软件测试相关情绪化帖子为锚点,通过半结构化访谈和 STGT 重构用户经历,识别影响测试情绪的社会技术因素。
2023-04-22 cs.SE
Understanding Developer Pain Points in Federated Learning: Insights from Stack Overflow and GitHub
University of Saskatchewan(萨斯喀彻温大学)
研究通过分析Stack Overflow帖子和GitHub问题,利用主题建模等方法,刻画联邦学习开发者痛点,包括环境设置等多方面问题,并按问题意图分类,为框架设计者等提供建议,给出持续监测痛点及改进系统的可扩展方法。
2026-07-23 cs.AI cs.SE
Blockchain in the Eyes of Developers
区块链技术的普及在工业和学术领域都持续快速增长。大多数区块链研究都集中在区块链协议的安全性、可用性或效率的改进,或者区块链在金融、物联网或公共服务中的应用。然而,其中很少有人能够揭示一线开发者的担忧以及区块链在实践中的情况。在本文中,我们通过Stack Overflow帖子的案例研究来调查开发人员如何使用和讨论区块链。我们发现区块链在Stack Overflow中是一个相对较新的话题,但它正在变得越来越受欢迎。我们检测了开发人员在Stack Overflow中发布的13种问题,并确定了45个区块链相关实体(例如,框架、库或工具)来构建区块链应用程序。这些发现可能有助于区块链项目社区知道在哪里改进,并帮助新手知道从哪里开始。
2018-06-19 cs.CY cs.SE
PICASO: Enhancing API Recommendations with Relevant Stack Overflow Posts
虽然有选择可能是解放,太多的选择可能会导致次优的解决方案被选择。这在软件工程领域也不例外。如今,API已经成为使软件开发人员的生活更轻松的必要条件。API帮助开发人员更快、更高效地实现功能。然而,鉴于有大量的开源库可供选择,选择正确的API并不是一件简单的任务。以前的API推荐研究利用自然语言(查询)来识别哪个API适合给定的任务。然而,这些研究只考虑一个输入源,即,GitHub或Stack Overflow,独立。没有现有的方法可以利用Stack Overflow来帮助从GitHub获得的查询中生成更好的API序列建议。因此,在这项研究中,我们的目标是提供一个框架,可以通过利用Stack Overflow的信息来改善API序列推荐的结果。在这项工作中,我们提出了PICASO,它利用双编码器进行对比学习,并利用交叉编码器构建分类模型,以便在给定注释的情况下找到语义相似的Stack Overflow帖子(即,代码注释)。随后,PICASO使用Stack Overflow的标题作为查询扩展。PICASO然后使用扩展查询来微调CodeBERT,从而产生API序列生成模型。根据我们的实验,我们发现将堆栈溢出信息纳入CodeBERT将使API序列生成的BLEU-4评分的性能提高10.8%。
2023-03-22 cs.SE
Providing Real-time Assistance for Repairing Runtime Exceptions using Stack Overflow Posts
漏洞(RE)是代码开发过程中经常出现的一类重要的bug。传统的自动程序修复(APR)工具在这种“开发中”用例中的使用有限,因为它们需要一个测试套件作为修补Oracle。因此,开发人员通常倾向于手动解决他们在开发中的RE,通常通过参考技术论坛,如Stack Overflow(SO)。为了自动化这个手动过程,我们扩展了我们以前的工作,MAESTRO,为开发人员提供实时的【形】帮助,通过推荐一个相关的补丁建议SO帖子,并从这个帖子合成一个修复补丁来修复开发人员代码中的RE,来修复Java RE。MAESTRO利用了一个半自动地从SO帖子中挖掘的异常异常模式(REP)库,通过一个相对便宜的一次性增量过程。REP是触发给定RE的语句的抽象序列。REP用于索引SO帖子,检索与开发人员代码展示的RE实例最相关的帖子,然后调解从SO帖子中提取具体修复的过程,抽象出特定于帖子的细节,并将修复具体化到开发人员的错误代码。我们评估MAESTRO上公布的RE基准组成的78个实例。MAESTRO能够在27%的病例中在顶部位置生成正确的修复补片,在40%的病例中在前3位内生成正确的修复补片,并且在81%的病例中总体返回有用的伪影。此外,使用REP证明有助于MAESTRO的性能的各个方面,从排名和搜索SO职位合成补丁从一个给定的职位。特别是,45%的正确补丁生成的MAESTRO不能产生的基线技术不使用REP,即…
2022-02-09 cs.SE
Does This Apply to Me? An Empirical Study of Technical Context in Stack Overflow
Stack Overflow已经成为开发人员必不可少的技术资源。然而,考虑到Stack Overflow上的大量知识,找到与给定任务相关的正确信息仍然具有挑战性,特别是当开发人员正在寻找适用于其特定需求或技术堆栈的解决方案时。用技术背景清楚地标记答案,即,描述这一答案所需的技术和假设的信息可能是改进导航的一种方法。然而,没有资料说明这种背景多久被提到一次,以及它可能提供什么样的信息。在本文中,我们进行了一项实证研究,以了解技术上下文的发生在堆栈溢出的答案和评论,使用标签作为代理的技术上下文。我们特别关注额外的上下文,其中答案/评论提到了问题中尚未讨论的信息。我们的研究结果表明,我们研究的线程中有近一半包含至少一个额外的上下文。我们发现几乎50%的附加上下文是库/框架、程序设计语言、工具/应用程序、API或数据库。总的来说,我们的研究结果表明,使用额外的上下文作为导航线索的承诺。
2022-03-31 cs.SE
Interpreting Cloud Computer Vision Pain-Points: A Mining Study of Stack Overflow
Deakin University(迪肯大学);Monash University(莫纳什大学)
智能服务正变得越来越普遍;应用程序开发人员希望利用计算机视觉等领域的最新进展为用户提供新的服务和产品,大型技术公司通过RESTful API实现这一点。虽然这些API承诺易于集成按需机器智能,但它们当前的设计,文档和开发人员界面隐藏了许多底层机器学习技术。这样的API看起来和感觉像传统的API,但抽象出数据驱动的概率行为-开发人员以与其他传统云服务(如云存储)相同的方式处理这些API的含义是值得关注的。本研究的目的是确定开发人员在实现依赖于这些智能服务中最成熟的服务的系统时面临的各种痛点,特别是那些提供计算机视觉的系统。我们使用Stack Overflow来挖掘开发人员在使用计算机视觉服务时似乎面临的挫折的迹象,根据两个最近的分类分类法(文档相关和一般问题)对他们的问题进行分类。我们发现,与移动开发等成熟领域不同,开发人员提出的问题类型存在差异。这些都表明了对支持这种系统的底层技术的肤浅理解。我们讨论了这些发现的几个影响,通过学习分类的镜头,建议软件工程社区如何改进这些服务,并评论开发人员使用它们的性质。
2020-01-28 cs.AI cs.SE
Attribution Required: Stack Overflow Code Snippets in GitHub Projects
Stack Overflow(SO)是最大的开发者问答网站,提供了大量可复制的代码片段。使用这些片段会引起各种维护和法律问题。SO许可证需要署名,即,引用原始问题或答案,并要求派生作品采用兼容的许可证。虽然有一个激烈的辩论SO的许可证模型的代码片段和所需的归属,很少有人知道的程度,代码片段被复制从SO没有适当的归属。在本文中,我们提出了一项实证研究的研究设计和总结结果,分析了GitHub项目中SO代码片段的属性和非属性使用。平均而言,3.22%的被分析仓库和7.33%的流行仓库包含对SO的引用。此外,我们发现开发人员更愿意参考SO上的整个线程,而不是特定的答案。对于Java,至少有三分之二的复制片段没有属性。
2017-07-03 cs.SE
Usage and Attribution of Stack Overflow Code Snippets in GitHub Projects
Stack Overflow(SO)是最受软件开发人员欢迎的问答网站,提供了大量可复制的代码片段。使用这些片段会引起维护和法律问题。SO的许可证(CC BY-SA 3.0)需要署名,即,引用原始问题或答案,并要求派生作品采用兼容的许可证。虽然有一个激烈的辩论SO的许可证模型的代码片段和所需的归属,很少有人知道的程度,代码片段被复制从SO没有适当的归属。我们提出了一项大规模实证研究的结果,分析了公共GitHub(GH)项目中SO答案中非平凡Java代码片段的使用和属性。我们遵循三种不同的方法来对未归因使用的比例进行三角测量,并与软件开发人员进行了两次在线调查,以补充我们的结果。对于我们分析的不同项目集,包含引用SO的文件的项目比例在3.3%和11.9%之间变化。我们发现,在所有分析过的包含SO代码的存储库中,最多有1.8%的代码以与CC BY-SA 3.0兼容的方式使用。此外,我们估计,从SO复制的代码片段中,最多有四分之一是根据需要进行属性化的。在接受调查的开发人员中,近一半的人承认在没有署名的情况下从SO复制代码,约三分之二的人不知道SO代码片段的许可及其影响。
2018-09-21 cs.SE
Syntax and Stack Overflow: A methodology for extracting a corpus of syntax errors and fixes
在研究如何发现和修复语法错误时,一个问题是如何获得自然的和有代表性的语法错误示例。大多数语法错误数据集都不是免费的,开放的和公共的,或者它们是从新手程序员那里提取的,并不代表一般开发人员会犯的语法错误。所有技能水平的程序员都会在Stack Overflow上发布问题和答案,其中可能包含源代码片段以及相应的文本和标签。许多代码片段不进行解析,因此它们很适合形成语法错误和更正的语料库。我们的主要贡献是一种方法,用于提取自然的语法错误和相应的人工修复,以帮助语法错误的研究。Python抽象语法树解析器用于确定从SOTorrent数据集提取的代码块的初步错误和更正。我们通过在Python解释器中执行更正来进一步分析我们的代码。我们应用我们的方法生成了一个包含62,965个Python Stack Overflow代码片段的公共数据集,其中包含相应的标记、错误和堆栈跟踪。我们发现,Stack Overflow用户所犯的错误与学生开发人员或随机突变所犯的错误不匹配,这意味着该领域存在严重的代表性风险。最后,我们公开分享我们的数据集,以便未来的研究人员可以重用和扩展我们的语法错误和修复。
2019-07-17 cs.SE
Exploring Technical Debt in Security Questions on Stack Overflow
本研究挖掘Stack Overflow上11万余条安全相关问题,通过深度学习识别出4.5万余条安全相关技术债务问题,分析其 prevalence、标签分布与用户特征,发现开发者对安全领域技术债务存在认知缺口,为优化安全优先级、减少技术债务提供参考。
2023-07-21 cs.SE
Mobile App Security Trends and Topics: An Examination of Questions From Stack Overflow
该研究挖掘并定量、定性分析 Stack Overflow 上的移动应用安全问题,识别出七类主题,揭示开发者实际安全需求,为工具与资源开发提供依据。
2024-09-14 cs.CR cs.SE
A Hybrid LTR-based System via Social Context Embedding for Recommending Solutions of Software Bugs in Developer Communities
Ferhat Abbas University(费尔哈特·阿巴斯大学);College of Sciences(理学院)
本文提出基于社交上下文嵌入的混合LTR系统,通过挖掘Stack Overflow实现软件bug解决方案推荐,达到78%的准确率。
2026-03-07 cs.AI cs.SE
Recommending Stack Overflow Posts for Fixing Runtime Exceptions using Failure Scenario Matching
使用在线Q&A论坛(如Stack Overflow(SO))来指导解决程序错误以及其他开发问题,在现代软件开发实践中很常见。异常(RE)是SO上积极讨论的一类重要的bug。在这项工作中,我们提出了一种技术和原型工具,称为MAESTRO,可以自动推荐一个SO后,是最相关的开发人员的代码中给定的Java RE。MAESTRO将开发人员代码中的异常生成程序场景与SO帖子中讨论的场景进行比较,并返回最接近的匹配帖子。为了有效地提取和比较异常场景,MAESTRO首先使用帖子中的答案代码片段来暗示帖子的问题代码片段中的一个行子集负责异常,然后将这些行与开发人员的代码进行比较,以各自的抽象程序图(APG)表示。APG是一个简化和抽象的衍生抽象语法树,在这项工作中提出的,它允许一个有效的比较体现在高层次的程序结构的功能,同时丢弃许多低层次的语法或语义差异。我们评估MAESTRO的基准测试的Java RE的78个实例中提取的前500名Java项目在GitHub上,并表明,MAESTRO可以返回一个高度相关或有点相关的SO后对应的异常实例在71%的情况下,相比之下,相关的职位返回只有8% - 44%的情况下,由四个竞争对手的工具基于最先进的技术。我们还进行了用户体验研究MAESTRO与10个Java开发人员,其中参与者判断MAESTRO报告高度相关或有点相关的职位在80%的情况下。在某些情况下,该帖子…
2020-09-21 cs.SE
Challenges in Docker Development: A Large-scale Study Using Stack Overflow
Docker技术已经越来越多地被软件开发人员用于许多项目。这种日益增长的兴趣是由于Docker技术支持创建和构建容器的方便过程,促进开发人员和运营团队之间的密切合作,并实现持续的软件交付。作为一项快速发展的技术,确定最受欢迎的Docker相关主题以及开发人员面临的现有挑战和困难非常重要。本文介绍了一项大规模的实证研究,通过挖掘Stack Overflow(SoF)社区的帖子来确定从业者对Docker技术的看法。方法:基于一组相关标签和内容创建了113,922个与Docker相关的帖子的数据集。清理并准备数据集。主题建模使用潜在狄利克雷分配(LDA)进行,允许在域中的主导主题的识别。我们的研究结果表明,大多数开发人员使用SoF询问广泛的Docker主题,包括框架开发,应用程序部署,持续集成,Web服务器配置等等。我们确定开发人员讨论的30个主题可以分为13个主要类别。大多数帖子属于应用程序开发、配置和网络的类别。另一方面,我们发现,与其他主题相比,监控状态,传输数据和验证用户的帖子更受开发人员欢迎。具体而言,开发人员面临着网络浏览器问题、网络错误和存储管理方面的挑战。此外,在这方面缺乏专家。我们的研究结果将指导未来开发新工具和技术的工作,帮助社区集中精力并了解Docker主题的现有权衡。
2020-08-11 cs.IR cs.SE
Human Values Violations in Stack Overflow: An Exploratory Study
越来越多的软件密集型系统被指控违反或忽视人类价值观(例如,隐私、包容和社会责任),这给个人和社会带来了很大的困难。这种违规行为经常发生,因为这些系统的开发人员所采用的解决方案和决策与用户价值观不一致。Stack Overflow是开发人员中最受欢迎的QA网站,可以分享他们的问题,解决方案(例如,代码片段)和软件开发期间的决策。我们进行了一项探索性研究,以调查Stack Overflow帖子中违反人类价值观的情况。由于帖子下的评论经常被用来指出帖子可能存在的问题和弱点,我们分析了2000个Stack Overflow评论及其相应的帖子(1980个独特的问题或答案),以确定违反人类价值观的类型以及Stack Overflow用户对此类违反的反应。我们的研究发现,在2000条评论中,有315条包含了相关帖子(313个独特的帖子)违反人类价值观的担忧。利用Schwartz的基本人类价值理论作为最广泛使用的价值模型,我们表明,享乐主义和仁慈是最违反的价值类别。我们还发现Stack Overflow评论者对人类价值观侵犯的反应非常迅速,但大多数被指控违反人类价值观的帖子(76.35%)根本没有被否决。最后,我们发现,原来的海报很少通过编辑他们的帖子来回应潜在的人类价值观侵犯的担忧。与此同时,他们在自己的后续评论中回应这些评论时通常是接受的。
2022-03-20 cs.SE
Automated Query Reformulation for Efficient Search based on Query Logs From Stack Overflow
Nanjing University(南京大学);Monash University(莫纳什大学);University of Adelaide(阿德莱德大学);Nantong University(南通大学)
作为一个流行的编程问答网站,Stack Overflow是开发者的宝藏。然而,Stack Overflow上的大量问题和答案使得开发人员很难有效地找到他们正在寻找的信息。有两个差距导致搜索结果不佳:用户的意图和文本查询之间的差距,以及查询和帖子内容之间的语义差距。因此,开发人员必须不断地重新制定他们的查询,纠正拼写错误的单词,增加限制某些程序设计语言或平台等查询重新制定是繁琐的开发人员,特别是新手,我们提出了一个自动化的软件特定的查询重新制定方法的基础上深度学习。利用Stack Overflow提供的查询日志,我们构建了一个大规模的查询重构语料库,包括原始查询和相应的重构查询。我们的方法训练了一个Transformer模型,当给定用户的原始查询时,该模型可以自动生成候选重构查询。评估结果表明,我们的方法优于五个国家的最先进的基线,并实现了5.6%至33.5%的提升方面的$\mathit{ExactMatch}$和4.8%至14.4%的提升方面的$\mathit{GLEU}$。
2021-02-10 cs.AI cs.IR cs.SE
Predicting Usefulness of Code Review Comments using Textual Features and Developer Experience
虽然同行代码评审在商业和开源开发中被广泛采用,但现有的研究表明,这种代码评审通常包含大量无用的评审评论。不幸的是,到目前为止,还没有工具或技术可以提供自动支持,以改善这些无用的评论。在本文中,我们首先报告了一个有用和无用的评论之间的比较研究,我们对比他们之间的文本特征,和审稿人的经验。然后,根据研究结果,我们开发RevHelper,一个预测模型,可以帮助开发人员提高他们的代码审查意见,通过自动预测其有用性在审查提交。使用1,116条评论进行的比较研究表明,有用的评论与更改的代码共享更多的词汇,包含相关代码元素等突出项目,并且他们的评论者通常更有经验。使用1,482条评论的实验表明,我们的模型可以预测评论有用性,预测准确率为66%,这是很有前途的。使用案例研究的基线模型的三个变体的比较验证了我们的实证研究结果,并证明了我们的模型的潜力。
2018-07-12 cs.SE
Leveraging Unsupervised Learning to Summarize APIs Discussed in Stack Overflow
Carleton University(卡尔顿大学)
自动源代码摘要是一项任务,它生成有关方法和类的目的、用法和/或实现的摘要信息,以支持对这些代码实体的理解。针对代码摘要中的监督学习和无监督学习,已经提出了多种方法和技术,然而,它们大多集中于为一段代码生成摘要。此外,很少有作品利用非官方文档。本文提出了一种自动和新颖的方法来总结堆栈溢出中讨论的Android API方法,我们认为这是本研究中的非官方文档。我们的方法将API方法的名称作为输入,并基于该API方法的Stack Overflow讨论生成一个自然语言摘要。我们对16位Android开发人员进行了一项调查,以评估我们自动生成的摘要的质量,并将其与官方Android文档进行比较。我们的研究结果表明,虽然开发人员发现官方文档更有用的一般,生成的摘要也有竞争力,特别是提供实施细节,并可以用作指导开发人员在软件开发和维护任务的补充来源。
2021-11-27 cs.LG cs.SE
The Influence of Code Comments on the Perceived Helpfulness of Stack Overflow Posts
University of Innsbruck(因斯布鲁克大学);University of Bayreuth(拜罗伊特大学);Germany Aerospace Center (DLR)(德国航空航天中心);University of Cologne(科隆大学)
通过在线实验(n=91)研究代码注释如何影响 Stack Overflow 答案的感知有用性,发现块注释和行内注释均显著提高有用性,且新手认为块注释更有用,而答案位置和分数影响较小。
2026-06-16 cs.SE
Investigating Technology Usage Span by Analyzing Users' Q&A Traces in Stack Overflow
本文分析 Stack Overflow 约 9.7 万活跃用户 15 年间的 670 万条问答痕迹,识别高使用跨度与新兴技术,为技术选型和后续研究提供基准。
2023-12-05 cs.SE
Mining Architecture Tactics and Quality Attributes Knowledge in Stack Overflow
内容:架构策略(AT)是架构构建块,为解决质量属性(QA)问题提供通用架构解决方案。挖掘和分析QA-AT知识可以帮助软件架构社区更好地理解架构设计。然而,手动捕获和挖掘这些知识是劳动密集型和困难的。目的:使用堆栈溢出(SO)作为我们的源代码,我们的主要目标是有效地挖掘这些知识;并从相关讨论中了解开发人员如何使用AT来解决QA问题。方法:我们采用半自动的基于字典的挖掘方法来提取问答-AT职位在SO。通过挖掘出的QA-AT帖子,我们确定了AT和QA之间的关系。结果:我们的方法使我们能够有效地挖掘QA-AT知识,F值为0.865,性能为82.2%。使用这种挖掘方法,我们能够发现架构的QA和AT的同义词设计师使用,从中我们发现开发人员如何应用AT来解决质量要求。结论:我们在这项工作中做了两个贡献:第一,我们展示了一个半自动的方法来挖掘AT和QA从SO职位;第二,我们确定了鲜为人知的设计之间的关系QA和AT和分组的架构设计考虑,以帮助架构师做出架构策略设计决策。
2021-05-17 cs.SE
Cybersecurity Discussions in Stack Overflow: A Developer-Centred Analysis of Engagement and Self-Disclosure Behaviour
Stack Overflow(SO)是一个受开发人员欢迎的平台,寻求有关各种软件相关主题的建议,包括隐私和安全。就许多知识共享网站而言,标准化组织的价值在很大程度上取决于用户的参与,即他们是否愿意回答、评论或提出技术问题。尽管如此,其中许多问题(包括与网络安全相关的问题)仍然没有答案,使该网站的相关性和声誉受到质疑。因此,重要的是要了解用户参与隐私和安全讨论的情况,以促进参与并促进此类专业知识的交流。目的:基于先前的在线社交网络的研究结果,这项工作阐述了用户的参与和他们的隐私实践之间的相互作用。特别是,它分析了开发人员关于个人资料可见性的自我披露行为,以及他们参与与隐私和安全相关的讨论。方法:我们采用混合方法,(i)分析来自1239个网络安全标记问题的SO数据以及7048个用户简档,(ii)进行匿名在线调查(N=64)。结果:约33%的问题,我们检索没有答案,而超过50%的没有被接受的答案。我们观察到,“主动”用户倾向于在他们的个人资料中披露的信息明显少于“被动”和“不参与”的用户。然而,没有发现这些参与类别和隐私相关的结构,如感知控制或一般隐私问题之间的相关性。含义:这些发现有助于(i)更好地了解开发人员对隐私和安全主题的参与,以及(ii)制定战略,促进SO中网络安全专业知识的交流。
2022-07-04 cs.CR cs.HC cs.SE
Diverse Title Generation for Stack Overflow Posts with Multiple Sampling Enhanced Transformer
Wuhan University(武汉大学);Huazhong University of Science and Technology(华中科技大学);Wuhan University of Technology(武汉理工大学);Deakin University(迪肯大学);City University of Hong Kong(香港城市大学)
Stack Overflow是最受欢迎的编程社区之一,开发人员可以在这里为遇到的问题寻求帮助。然而,如果没有经验的开发人员不能清楚地描述他们的问题,他们很难引起足够的注意并得到预期的答案。我们提出了M $_3$ NSCT 5,一种新的方法来自动生成多个职位的标题从给定的代码片段。开发人员可以使用生成的标题来查找密切相关的帖子并完成其问题描述。M $_3$ NSCT 5采用CodeT5主干,这是一个预先训练的Transformer模型,具有出色的语言理解和生成能力。为了减轻歧义问题,相同的代码片段可以对齐不同的标题在不同的上下文,我们提出了最大边际多核抽样策略,以产生多个高质量和多样化的标题候选人在同一时间供开发人员选择。我们构建了一个包含890,000个问题帖子的大规模数据集,涵盖8种程序设计语言,以验证M $_3$ NSCT 5的有效性。BLEU和ROUGE指标的自动评估结果证明了M $_3$ NSCT 5优于六种最先进的基线模型。此外,具有值得信赖的结果的人类评估也证明了我们的方法在现实世界中应用的巨大潜力。
2022-08-24 cs.CL cs.SE
Towards Exploring the Code Reuse from Stack Overflow during Software Development
作为最知名的程序员问答网站之一,Stack Overflow(即,SO)每天为数万名开发者提供服务。以前的工作表明,许多开发人员在SO上重用代码片段,当他们找到一个答案(来自SO),功能上匹配他们在开发活动中遇到的编程问题。为了研究程序员在项目开发过程中如何重用SO上的代码,我们进行了全面的实证研究。首先,为了捕捉程序员的开发活动,我们从793个开源Java项目的提交中收集了342,148个修改过的代码片段,这些修改过的代码可以反映开发过程中遇到的编程问题。我们还从SO上的1,355,617个帖子中收集了代码片段。然后,我们使用CCBACK来检测提交的修改代码与SO的代码之间的代码克隆,并进一步分析程序员在开发过程中解决编程问题时的代码重用。我们统计了不同年份每个项目提交中修改后的代码片段的代码重用率,结果显示代码重用率平均为6.32%,最高为8.38%。项目提交中的代码复用率逐年上升,新成立项目的代码复用比例高于老项目。我们还发现有些项目重用了很多年前的代码片段。此外,我们发现,有经验的开发人员似乎更有可能重用SO上的知识。此外,我们发现,在bug相关的提交(6.67%)的代码重用率略高于在非bug相关的提交(6.59%)。此外,我们还发现,代码重用率(14.44%)在Java类文件中,经历了多次修改是两倍以上的整体代码重用率(6.32%)。
2022-04-27 cs.SE
Features that Predict the Acceptability of Java and JavaScript Answers on Stack Overflow
本研究针对Stack Overflow上Java与JavaScript标签下的24万余条帖子,用随机森林和神经网络模型识别出预测答案可接受性的核心特征,可为开发者搜索优质答案的工具开发提供支持。
2023-06-19 cs.SE
Negative Results of Image Processing for Identifying Duplicate Questions on Stack Overflow
本文探索了两种基于图像的方法来识别 Stack Overflow 上的重复问题,但实验表明效率提升平均仅约 1%,未能产生实质性影响,为后续研究提供了可复现的基线。
2024-07-08 cs.SE
An Exploration of npm Package Co-Usage Examples from Stack Overflow: A Case Study
使用第三方软件包已经成为当代软件开发中的一种常见做法。开发人员经常面临不同的挑战,包括选择正确的库,安装错误,差异,设置环境,以及在软件开发过程中构建失败。维护第三方软件包的风险是众所周知的,但不清楚来自Stack Overflow(SO)的信息如何有用。本文对SO中的npm共用现象进行了实证研究。从超过30,000个SO帖子中,我们提取了2,100个与npm相关的SO帖子,并将它们与217,934个npm库包进行了匹配。我们发现,流行的和高度使用的库并没有经常在SO中讨论。然而,我们可以看到,被接受的答案可能是有用的,因为我们相信使用示例和可执行命令可以被重用为工具支持。
2022-02-28 cs.SE
Evaluating Privacy Questions From Stack Overflow: Can ChatGPT Compete?
School of Computing and Information Science, University of Maine(缅因大学计算与信息科学学院)
本文分析 Stack Overflow 隐私问题类型,并比较已采纳回答与 ChatGPT 回答,发现 ChatGPT 在约 56% 的问题上正确性相近,其余情况略逊。
2023-06-19 cs.AI cs.CL cs.SE
Contextual Documentation Referencing on Stack Overflow
软件工程是知识密集型的,需要软件开发人员不断地搜索知识,通常是在社区问答平台上,如Stack Overflow。这种信息共享平台并不是孤立存在的,它们存在于更广泛的软件文档生态系统中的部分证据是论坛帖子中常见的指向其他文档资源的超链接。为了帮助改善Stack Overflow和其他文档资源之间的信息扩散,我们进行了一项研究,以回答在Stack Overflow线程中如何以及为什么引用文档的问题。我们对来自正则表达式和Android开发两个不同领域的759个链接进行了抽样和分类,以定性和定量地分析链接的上下文和目的,包括属性,意识和建议。我们发现,Stack Overflow上的链接有着广泛的不同用途,从引用链接到引用链接到复制到Stack Overflow的内容,到使用维基百科页面澄清概念的链接,再到推荐软件组件和背景阅读资源。这个目的谱有主要的推论,包括我们的观察,链接到文档资源是一个典型的技术领域的信息需求的反映。我们提供了一个框架和方法来分析Stack Overflow链接的上下文和目的,这是一个注释链接的公共数据集,并描述了关于Stack Overflow链接实践的五个主要观察结果。我们进一步指出了潜在的工具支持,以增强Stack Overflow和其他文档资源之间的信息扩散。
2020-03-16 cs.SE
Understanding the Challenges and Assisting Developers with Developing Spark Applications
为了更有效地处理数据,大数据框架为开发人员提供了数据抽象。然而,由于抽象,对于开发人员来说,理解和调试数据处理代码可能存在许多挑战。为了揭示使用大数据框架的挑战,我们首先在Stack Overflow上对1,000个Apache Spark相关问题进行了实证研究。我们发现,大多数挑战都与数据转换和API使用有关。为了解决这些挑战,我们设计了一种方法,帮助开发人员理解和调试Spark中的数据处理。我们的方法利用统计采样来最大限度地减少性能开销,并为链式方法管道的每个数据处理步骤提供中间信息和提示消息。我们的方法的初步评估表明,它具有较低的性能开销,我们收到良好的反馈,从开发人员。
2021-03-25 cs.SE