Executable Modeling with UML. A Vision or a Nightmare?
极限编程(Extreme Programming)是最突出的新的轻量级(或敏捷)方法,旨在对比当前的重量级和部分重载的面向对象方法。它关注软件技术的核心问题。它的原则之一是不依赖于图表来记录系统。在本文中,我们研究了什么属性的建模语言,如UML必须有有效地支持极限编程方法。特别是,我们将讨论如何这样一个图形程序设计语言必须看起来像取代文本程序设计语言和这样的方法可能带来的好处和问题。
2014-09-22 cs.SE
BiLO-CPDP: Bi-Level Programming for Automated Model Discovery in Cross-Project Defect Prediction
跨项目缺陷预测(CPDP)通过将迁移学习器与分类器相结合,从类似项目中借用数据,已经成为在目标项目的可用数据不足时预测软件缺陷的一种有前途的方法。然而,开发这样的模型是具有挑战性的,因为很难确定迁移学习器和分类器的正确组合以及它们的最佳超参数设置。在本文中,我们提出了一个工具,dubbedBiLO-CPDP,这是第一次制定的自动CPDP模型发现从双层编程的角度来看。特别地,双层编程以分层方式用两个嵌套层进行优化。具体来说,上层优化例程旨在搜索迁移学习器和分类器的正确组合,而嵌套的下层优化例程旨在优化相应的超参数设置。为了评估BiLO-CPDP,我们在20个项目上进行了实验,将其与现有的21种CPDP技术进行比较,以及其单级优化变体和Auto-Sklearn,一个最先进的自动化机器学习工具。实证结果表明,BiLO-CPDP在70%的项目上的预测性能优于所有其他21种现有的CPDP技术,同时在所有情况下都压倒性地优于Auto-Sklearn及其单级优化变体。此外,BiLO-CPDP中独特的双层形式化还允许将更多的预算分配给上层,这显着提高了性能。
2020-08-31 cs.SE
An Exploratory Study on the Predominant Programming Paradigms in Python Code
Python是一种多范式程序设计语言,完全支持面向对象(OO)编程。该语言允许以非过程的命令式方式编写代码,使用过程,使用类或函数式风格。到目前为止,还没有人研究过在Python代码和项目中占主导地位的范式(如果有的话)。在这项工作中,我们首先定义了一种将Python文件分类为主要范式的技术。然后,我们自动化我们的方法,并根据人类的判断进行评估,显示出超过80%的一致性。然后,我们分析了超过10万个开源Python项目,自动分类每个源文件,并调查范式分布。结果表明Python开发人员倾向于非常青睐OO特性。我们还观察到一个正相关的OO和程序范式和项目的大小。尽管很少有文件或项目主要是功能性的,但我们仍然发现了许多功能性功能的使用。
2022-09-05 cs.SE
Can Microtask Programming Work in Industry?
IT服务公司软件开发项目的一个关键问题是在正确的时间找到正确的人。通过使任务分配给人们更加流畅,在公司内部使用众包方法为这一挑战提供了一个潜在的解决方案。在公司内部,由于多个系统开发项目是分开进行的,在一个项目上有空闲时间的开发人员可能会利用这段时间来为其他项目做贡献。在本文中,我们报告了一个案例研究中的应用众包在一个大型电信公司的工业Web应用系统开发项目。开发人员使用系统规范,这些规范被组织成一组微任务,提供一组简短而独立的描述。当其他项目的人群工作者有空闲时间时,他们会获取并完成微任务。我们的研究结果提供了初步的证据,微任务编程在增加公司内部团队分配的流动性的潜在价值。该项目的人群贡献者能够在不到2小时的时间内加入并为新项目做出贡献。入职后,人群工作人员一起成功地实现了一个只包含少量缺陷的小程序。从项目参与者那里收集的访谈和调查数据显示,人群工作者报告说,他们认为入职成本会降低,并且没有遇到面对面沟通减少的问题,但在动机方面遇到了挑战。
2020-09-11 cs.SE
Dependency-Aware Release Planning for Software Projects using Fuzzy Graphs and Integer Programming
软件发布计划(SRP)是在遵守预算的情况下,为软件找到具有最高价值的需求子集。然而,需求的价值可能在不同程度上取决于选择或忽略其他需求。然而,现有的SRP模型要么完全忽略了价值相关的依赖关系,要么忽略了这些依赖关系的优势,即使他们考虑到了这些优势。本文提出了一种考虑软件需求间正、负相关依赖强度差异的软件发布规划模型。为了捕捉与值相关依赖的强度相关的不精确性,我们利用了模糊图的代数结构。我们进一步,贡献了一个可扩展的技术,自动识别的价值相关的依赖关系的基础上,用户偏好的软件需求。通过仿真验证了工作的有效性。
2020-03-03 cs.SE
Multi-Programming-Language Commits in OSS: An Empirical Study on Apache Projects
Spark等现代软件系统通常使用多种程序设计语言(PL)编写。除了从代码重用中受益外,这些系统还可以利用特定PL来实现某些功能,以满足各种质量需求,并提高开发效率。在这种情况下,对这样的系统的改变可能需要修改在不同PL中写入的源文件。我们在版本控制系统中定义了多编程语言提交(MPLC)(例如,Git)作为提交,该提交涉及在两个或更多PL中写入的修改的源文件。据我们所知,在软件开发中的MPLCs现象还没有被探索过。鉴于多层次可编程逻辑控制器对开发难度和软件质量的潜在影响,我们进行了一项实证研究,以了解多层次可编程逻辑控制器的状态,其变化的复杂性,以及它们对问题的开放时间和源文件在现实生活中的软件项目的错误倾向的影响。通过对20个非平凡Apache项目205,994次提交中的MPLCs进行研究,我们发现:(1)所有项目中9%的提交是MPLCs,并且80%的项目中MPLCs的比例处于相对稳定的水平;(2)所有项目中超过90%的MPLCs涉及两个PL编写的源文件;(3)在所有项目中,多媒体可编程逻辑控制器的变更复杂度明显高于非多媒体可编程逻辑控制器;(4)在80%的项目中,多媒体可编程逻辑控制器中修复的问题比非多媒体可编程逻辑控制器中修复的问题需要更长的时间来解决;以及(5)在多媒体可编程逻辑控制器中修改过的源文件往往比从未在多媒体可编程逻辑控制器中修改过的源文件更容易出现错误。这些发现为…
2021-03-22 cs.SE
Adoption and Evolution of Code Style and Best Programming Practices in Open-Source Projects
University of Auckland(奥克兰大学)
本文研究了开源项目中代码风格和最佳实践的采用与演变,发现常见违规情况并提出改进方向。
2026-01-14 cs.SE
An Exploratory Study on Just-in-Time Multi-Programming-Language Bug Prediction
本研究针对多编程语言系统缺陷预测缺失的问题,选取指标构建即时多编程语言缺陷预测模型,验证了随机森林的适用性、核心指标的作用及跨项目预测的可行性。
2024-07-15 cs.SE
ProjectEval: A Benchmark for Programming Agents Automated Evaluation on Project-Level Code Generation
Harbin Institute of Technology(哈尔滨工业大学);Pengcheng Laboratory(鹏城实验室)
本文提出ProjectEval基准,通过模拟用户交互和代码相似度指标自动评估LLM智能体的项目级代码生成能力,并揭示系统性工程代码、整体理解与综合分析能力是实现实际项目的关键。
2025-05-31 cs.CL cs.SE
Exploring Multi-Programming-Language Commits and Their Impacts on Software Quality: An Empirical Study on Apache Projects
本研究通过对18个Apache项目的197,566次提交进行实证分析,发现多编程语言提交(MPLCs)显著增加开发复杂度、延长问题解决时间并引入更多缺陷,从而降低软件质量。
2023-11-12 cs.SE
Predicting long time contributors with knowledge units of programming languages: an empirical study
本研究提出基于Java编程语言知识单元(KUs)的KULTC模型,用于早期预测长期贡献者,结合BAOLTC特征后AUC提升16.5%,显著优于现有方法。
2024-05-22 cs.SE
Dependency-Aware Software Requirements Selection using Fuzzy Graphs and Integer Programming
软件需求选择的目标是在满足项目约束条件的前提下,找到一个最优的需求子集。但是需求的值可能取决于最优子集中其他需求的存在或不存在。然而,这种价值取向是不精确的,难以捕捉。在本文中,我们提出了一种基于整数规划和模糊图的方法来考虑值的依赖性和它们的不精确性在软件需求选择。所提出的方法,称为依赖性感知软件需求选择(DARS),由三个部分组成:(i)用于从用户偏好识别值依赖性的自动化技术,(ii)基于模糊图的建模技术,其允许捕获值依赖性的不精确性,以及(iii)一种考虑用户偏好和从这些偏好中识别的价值依赖性以降低软件项目中价值损失的风险的线性规划(ILP)模型。我们的工作是通过研究一个现实世界的软件项目进行验证。结果表明,我们提出的方法减少了软件项目中的价值损失,并可扩展到大的需求集。
2020-03-11 cs.SE
Will humans even write code in 2040 and what would that mean for extreme heterogeneity in computing?
编程趋势表明,软件开发将在未来发生根本性的变化:机器学习、人工智能、自然语言处理和代码生成技术的结合将以这样一种方式改进,即到2040年,机器而不是人类将编写大部分自己的代码。这给科学研究带来了许多有趣的挑战,特别是当机器生成代码运行的硬件变得非常异构时。事实上,极端的异质性可能会推动这项技术的创造,因为它将使人类能够有效而轻松地应对对不同设备进行编程的困难。
2017-12-19 cs.CY cs.SE
The most frequent programming mistakes that cause software vulnerabilities
所有计算机程序都有缺陷,其中一些缺陷可被利用来获得对计算机系统的未经授权的访问。我们对影响三个广泛使用的开源软件项目的公开报告的漏洞进行了实地研究。本文重点介绍了研究中收集的实地数据的主要观察结果和结论。
2019-12-03 cs.SE
A Study of Bug Resolution Characteristics in Popular Programming Languages
本文介绍了一项大规模的研究,调查了用不同程序设计语言编写的流行Github项目中的错误解决特征。我们探索相关性,但当然不能推断因果关系。具体来说,我们分析了来自大约7000万个源代码行的错误解决数据,这些数据来自600个GitHub项目的300万次提交,主要是用10种程序设计语言编写的。我们发现明显的错误解决时间和补丁(修复)大小的显着变化。虽然从这种大规模的实证研究结果的解释是固有的困难,我们认为,中位数的差异是足够大,值得进一步调查,复制,重新分析和后续研究。例如,在我们的语料库中,Ruby的明显bug解决时间(从引发到解决的时间)中位数是Go的4倍,Java的2.5倍。我们还发现,对于强类型和静态类型的程序,补丁往往会触及更多的文件。然而,我们也发现了一个较低的解决bug的解决时间的证据提交到静态类型语言构建的项目。这些发现,如果在随后的后续研究中重复,可能会进一步揭示关于静态类型重要性的争论。
2020-01-04 cs.SE
Making Lab Sessions Mandatory -- On Student Work Distribution in a Gamified Project Course on Market-Driven Software Engineering
学生团队工作分配不公平是项目学习中的一个常见问题。一个促成因素是学生是不同技能的开发人员。在工程和业务方面相互交织的小组工作课程中,我们设计了一种干预措施来帮助新手程序员,即,我们引入了强制性的编程实验课。然而,干预措施并没有影响工作分配,这表明需要做更多的工作来平衡工作量。与我们的目标相反,这种干预在有经验的学生中非常受欢迎,但在编程能力差的学生中不受欢迎。
2020-05-27 cs.SE
Beyond the Code: A Multi-Modal Assessment Strategy for Fostering Professional Competencies via Introductory Programming Projects
Technical University of Munich(慕尼黑工业大学)
本文通过项目式学习框架开发2D迷宫跑游戏,提出四维评估模型提升编程基础和沟通能力,为现代软件工程教育提供可扩展的课程改革方案。
2026-03-19 cs.CY cs.SE
Code Collaborate: Dissecting Team Dynamics in First-Semester Programming Students
该研究结合版本控制、问卷与绩效数据分析第一学期学生开发2D游戏项目的团队动态,揭示贡献感知、团队构成、参与度与学术诚信对协作和成绩的影响。
2024-10-28 cs.SE
Using Multi Expression Programming in Software Effort Estimation
估算软件系统的工作量是软件工程中的一个重要课题,可靠而准确地对软件进行估算是软件开发阶段的重要组成部分。许多研究人员利用不同的方法和技术来寻找解决这个问题的方法,这些技术包括COCOMO,SEER-SEM,SLIM等。最近,人工智能技术被用来解决这些问题,不同的研究已经发布的技术,如神经网络NN,遗传算法GA,和遗传编程GP集中。这项工作使用了GP的线性变体之一,即:多表达式编程(MEP),旨在找到最佳估计软件工作量的方程。基准数据集(基于以前的项目)用于学习和测试。结果与GP使用不同的适应度函数得到的结果进行比较。结果表明,MEP是更好地发现有效的功能,估计约6个数据集,每个数据集包括几个项目。
2018-04-30 cs.SE
Renaissance of Literate Programming in the Era of LLMs: Enhancing LLM-Based Code Generation in Large-Scale Projects
University of Illinois Chicago(伊利诺伊大学芝加哥分校);Stony Brook University(石溪大学);Rutgers University(罗格斯大学);John Hopkins University(约翰霍普金斯大学);The Chinese University of Hong Kong, Shenzhen(香港中文大学(深圳));Dali University(大理大学)
本研究提出可互操作文学编程(ILP)概念,结合文学编程原则与提示工程方法,增强LLM在大型项目中的代码生成能力,并在RepoBench基准上验证其优势。
2024-12-25 cs.LG cs.SE
On the Bug-proneness of Structures Inspired by Functional Programming in JavaScript Projects
受函数式编程启发的语言构造已经进入了大多数主流程序设计语言。许多研究人员和开发人员认为,这些结构导致程序更简洁,可重用,更容易理解。然而,很少有研究调查在主流程序设计语言中使用它们的影响。本文量化了JavaScript中与函数式编程相关的四个概念:递归、不变性、惰性求值和函数作为值。我们专注于JavaScript程序,因为这些概念中的一些在语言中的可用性,因为它的灵感来自函数式程序设计语言,以及它的流行。我们挖掘了91个GitHub存储库(2200多万个),其中大部分是用JavaScript编写的(超过50%的代码),从静态和时间角度衡量这些概念的使用情况。我们还测量了错误修复提交删除这些概念的可能性(这将暗示错误倾向)以及它们与代码注释的存在(这将暗示代码难以理解)的关联。我们发现,这些概念被广泛使用(每46.65个,43.59%的人)。此外,高阶函数、不变性和惰性求值相关结构的使用在这些年来一直在增长,而递归、回调和承诺的使用却在减少。我们还发现统计证据表明,除了与不变性相关的结构之外,删除这些结构在bug修复提交中比在其他提交中更不常见。此外,它们的存在与评论大小无关。我们的研究结果表明,函数式编程的概念是很重要的开发人员使用多范式语言,他们的使用不会使程序更难理解。
2022-06-17 cs.PL cs.SE
Analyzing programming languages by community characteristics on Github and StackOverflow
选择程序设计语言是一个非常重要的决定,因为它不仅影响软件的性能和可维护性,而且还决定了可用的人才库和社区支持。为了更好地理解做出这样的决定所涉及的权衡,我们通过在线协作平台定义和计算程序设计语言的流行度、需求、可用性和社区参与度。我们使用来自Github和StackOverflow的数据进行分析,这是两个最受欢迎的编程社区。我们从Github获得与项目,语言和开发人员参与相关的数据,并从StackOverflow获得编程问题和答案以及语言标签。我们分别为两个数据源计算指标,然后将指标结合起来,为最流行的程序设计语言提供一个全面而强大的社区。
2020-06-02 cs.SE
Constructing Temporal Networks of OSS Programming Language Ecosystems
该研究利用 World Of Code 为十个编程语言生态系统构建含 30 个历史快照的作者—项目协作时序网络,并公开图数据与可扩展分析流水线。
2023-04-21 cs.SE cs.SI
General-Purpose Visual Language and Information System with Case-Studies in Developing Business Applications
学习计算机编程一直是一个挑战。自上世纪六十年代以来,许多研究人员开发了可视化程序设计语言(VPL)来帮助这方面的工作。在这篇论文中,十个VPL是专门选择,研究,实验,并评估。总共使用了15个指标来评估这些工具。然后进行了比较、分类和差距分析。一个通用的VPL和指南,以帮助新手程序员选择正确的工具的要求列表,最后PWCT(编程无编码技术,一种新颖的通用可视化程序设计语言)的开发和介绍。PWCT是作为Sourceforge项目推出的,目前该语言的下载量超过230,000次,样本,教程和电影的下载量超过19,500,000次。许多商业应用程序和项目都是使用PWCT开发的,我们还使用PWCT开发了Supernova程序设计语言和Ring程序设计语言,以证明它可以用于高级和大型项目。开发人员的反馈和研究结果表明,PWCT是一种非常有吸引力、有竞争力和强大的语言。
2020-11-10 cs.CY cs.PL cs.SE
LangChoiceBench: Measuring and Explaining Programming-Language Choice in LLMs
King’s College London(伦敦国王学院);MATS Research(MATS研究院)
本研究推出LangChoiceBench基准,评估25种LLMs的代码语言选择,发现其普遍过度选择Python、一致性低,小开放模型偏好更强,还揭示了模型的虚假证据等失败模式。
2026-08-07 cs.CL cs.SE
Automated Computer Program Evaluation and Projects -- Our Experiences
本文总结六年教学实践,介绍通过 CodeRunner 集成 LMS 以及 Git(GitHub)实现编程练习、项目提交与代码自动评估的方法,并分享工具定制与有效学习的经验。
2024-04-06 cs.PL cs.SE
Building A Proof-Oriented Programmer That Is 64% Better Than GPT-4o Under Data Scarcity
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);University of Chicago(芝加哥大学);Shanghai Jiaotong University(上海交通大学)
针对现有语言模型在数据稀缺下面向证明编程的不足,提出首个面向项目级面向证明编程生成与修复的合成数据增强方法,所训练的14B参数模型PoPilot在相关任务上比GPT-4o优秀64%,并能显著提升GPT-4o的修复性能。
2025-04-13 cs.CL cs.PL cs.SE
Software Engineering Educational Experience in Building an Intelligent Tutoring System
针对计算机教育中编程入门与软件工程课程面临的师生比高、反馈不及时等挑战,本文介绍了一门新颖的SE课程,通过逐年构建并部署智能辅导系统(ITS),为学生提供自动化实时反馈,并总结了其架构、教学理念与经验。
2024-12-18 cs.CY cs.SE