机器编程(MP)是确定性和概率计算交集的新兴领域,其目的是协助软件和硬件工程师等应用程序。除强大的计算资源外,MP系统通常依靠大量的开源代码来学习有关代码和编程的有趣属性MP系统要么不考虑代码存储库的质量,要么使用非典型质量措施,而不是软件工程社区中通常使用的质量措施。因此,需要研究代码存储库质量对这些系统性能的影响。在这篇初步论文中,我们评估了不同质量存储库对候选MP系统性能的影响。为了实现这一目标,我们开发了一个名为Gitrank的框架,以利用有关该主题的现有研究来对开源存储库进行对质量,可维护性和受欢迎程度的排名。然后,我们应用Gitrank评估候选MP系统使用的质量度量与我们的框架使用的质量度量之间的相关性。我们的初步结果揭示了Gitrank中使用的质量度量与ControlFlag的性能之间的某些相关性,这表明Gitrank中使用的某些措施适用于ControlFlag。但这也提出了有关MP系统中使用的代码存储库正确质量措施的问题。我们认为,我们的发现还会对影响MP系统性能的代码质量度量产生有趣的见解。
translated by 谷歌翻译
只要可以预见的是测试代码的固有特征,可以大大降低测试的高成本。本文提供了一种机器学习模型,以预测测试可以在多大程度上覆盖一个名为Coverabeality的新指标。预测模型由四个回归模型的集合组成。学习样本由特征向量组成,其中特征是为类计算的源代码指标。样品由针对其相应类计算的覆盖率值标记。我们提供了一个数学模型,以评估每个班级自动生成的测试套件的尺寸和覆盖范围的测试效果。我们通过引入一种新方法来根据现有源代码指标来定义子计量数来扩展功能空间的大小。使用功能重要性分析在学习的预测模型上,我们按照对测试效果的影响顺序对源代码指标进行排序。结果,我们发现类别严格的循环复杂性是最有影响力的源代码度量。我们对包含大约23,000个类的大型Java项目的预测模型进行的实验表明,平均绝对误差(MAE)为0.032,平均平方误差(MSE)为0.004,R2得分为0.855。与最先进的覆盖范围预测模型相比,我们的模型分别提高了MAE,MSE和R2得分5.78%,2.84%和20.71%。
translated by 谷歌翻译
机器学习(ML)研究出版物通常在GitHub上提供开源实现,使他们的受众可以复制,验证甚至扩展机器学习算法,数据集和元数据。但是,到目前为止,关于此类ML研究存储库的协作活动程度知之甚少,特别是(1)此类存储库从叉子获得贡献的程度,(2)此类贡献的性质(即类型,变化),以及(3)变更的性质,这些变化未归还给叉子,这可能代表了错过的机会。在本文中,我们对1,346毫升研究存储库及其67,369叉进行了验证,无论是定量还是定性(通过Hindle等人的构建代码更改的开创性分类法)。我们发现,尽管ML研究存储库是大量分叉的,但只有9%的叉子对叉子存储库进行了修改。后者的42%发送给家长存储库的更改,其中一半(52%)被父家存储库接受。我们对539个贡献的定性分析和378个本地(仅叉)变化,扩展了Hindle等人的分类法,其中一个与ML(数据)相关的新顶级变更类别和15个新的子类别,包括9个ML--特定的(输入数据,输出数据,程序数据,共享,变更评估,参数调整,性能,预处理,模型培训)。虽然没有由叉子造成的更改主要是涉及域特定于域的定制和本地实验(例如,参数调整),但原点ML存储库确实错过了不可忽视的15.4%文档更改的13.6%的功能更改,而功能更改的13.6%和11.4%的错误修复更改。本文中的发现将对从业者,研究人员,工具匠和教育者有用。
translated by 谷歌翻译
软件测试可能是一个漫长且昂贵的过程,尤其是如果无法测试的软件进行测试。重构技术可以通过改善影响可检验性的软件指标来增强可检验性。在构建回归模型学习如何将计算的源代码计算指标与其可检验性相关联的指标时,确定了指标。我们确定了15个软件指标,在解释我们的可检测性预测模型的同时,高度影响可检验性。我们使用42个Java类的实验表明,除了改善其他一些质量属性外,改善这15个指标的重构平均可以提高可测试性15.57%。我们的可测试性预测模型经过训练,可以映射源代码指标,以测试有效性和效率,作为可测试软件的两种重要成分。随着测试套件获得的覆盖范围的增加,测试有效性会提高。另一方面,随着测试套件的大小增加,测试效率会降低。本文提供了一个数学模型,以根据测试套件的大小和覆盖范围来计算类可检验性。我们使用此数学模型来计算可测试性作为我们可检测性预测模型的目标。数学模型要求执行正在测试的类以计算测试覆盖范围,而我们的回归模型在静态上测量了测试性。在测试性方面的测试结果预测应在测试之前,以避免不必要的成本。我们的可测试性预测模型已在23,886个Java类和262个软件指标上进行了培训和测试。学习的模型以R2为0.68,平均平方误差为0.03,可预测可验证性。
translated by 谷歌翻译
评论是源代码的重要组成部分,是文档的主要来源。这引起了人们对使用大量注释的兴趣训练或评估消耗或生产它们的工具,例如生成甲骨文,甚至是从注释中生成代码,或自动生成代码摘要。这项工作大部分对评论的结构和质量做出了强烈的假设,例如假设它们主要由适当的英语句子组成。但是,我们对这些用例的现有评论的实际质量知之甚少。评论通常包含在其他类型的文本中看不到的独特结构和元素,并且从中过滤或提取信息需要额外的谨慎。本文探讨了来自GitHub的840个最受欢迎的开源项目和Srilab数据集的8422个项目的Python评论的内容和质量,并且Na \“ Ive vs.深入过滤的影响都可以使用现有注释来用于使用现有注释。培训和评估产生评论的系统。
translated by 谷歌翻译
在设计基于AI的系统中,有蓬勃发展的兴趣,以帮助人类设计计算系统,包括自动生成计算机代码的工具。这些最值得注意的是,以第一个自我描述的“Ai对程序员”,GitHub Copilot,一种在开源GitHub代码上培训的语言模型。但是,代码通常包含错误 - 因此,鉴于Copilot处理的大量未曝避代码,肯定是语言模型将从可利用的错误代码中学到。这提出了对Copilot代码捐助的安全的担忧。在这项工作中,我们系统地调查了可能导致Github CopIlot推荐不安全代码的普遍存在和条件。为了执行此分析,我们提示CopIlot在与高风险CWE相关的方案中生成代码(例如,从吉利的“前25名”列表中的方案)。我们探索了三个不同代码生成轴上的Copilot的表现 - 检查它如何表现为特定的弱点多样性,提示的多样性以及域的多样性。总共生产89个不同的Copilot方案,以完成,生产1,689个计划。其中,我们发现大约40%的脆弱。
translated by 谷歌翻译
随着研究人员和从业人员将机器学习应用于越来越多的软件工程问题,他们使用的方法变得更加复杂。许多现代方法都以抽象语法树(AST)或其扩展形式使用内部代码结构:基于路径的表示,复杂的图将AST与其他边缘结合在一起。即使可以使用不同的解析器来从代码中提取AST的过程,但选择解析器对最终模型质量的影响仍然没有研究。此外,研究人员经常省略提取特定代码表示的确切细节。在这项工作中,我们在方法名称预测任务中评估了两个模型,即Code2Seq和Treelstm,由八个不同的解析器用于Java语言。为了将数据制备的过程与不同的解析器统一,我们开发了SuperParser,这是基于Pathminer的多语言解析器 - 不合Snostic库。 SuperParser促进了适用于培训和评估ML模型的数据集的端到端创建,这些模型与源代码中的结构信息合作。我们的结果表明,不同解析器建造的树木的结构和内容各不相同。然后,我们分析这种多样性如何影响模型的质量,并表明两种模型最不合适的解析器之间的质量差距非常重要。最后,我们讨论了解析器的其他功能,研究人员和从业人员在选择解析器时应考虑这些特征,以及对模型质量的影响。 SuperParser代码可在https://doi.org/10.5281/zenodo.6366591上公开获得。我们还发布了Java-Norm,即我们用于评估模型的数据集:https://doi.org/10.5281/zenodo.6366599。
translated by 谷歌翻译
大型语言模型,例如OpenAI的法典和DeepMind的字母,可以生成代码来解决以自然语言表达的各种问题。这项技术已经在至少一项广泛使用的编程编辑器扩展程序中进行了商业化:Github Copilot。在本文中,我们探讨了具有大型语言模型(LLM辅助编程)的编程与程序员协助的先前概念化相似,并且与众不同。我们借鉴了公开可用的经验报告,有关LLM辅助编程以及先前的可用性和设计研究。我们发现,尽管LLM辅助编程通过搜索和重用分享了一些编译,配对编程和编程的属性,但技术可能性和实践经验都存在根本差异。因此,应该将LLM辅助编程视为具有自己独特的属性和挑战的新方法。最后,我们借鉴了用户研究的观察结果,在该观察中,非专家最终用户程序员使用LLM辅助工具来求解电子表格中的数据任务。我们讨论可能出现的问题,并在将大型语言模型应用于最终用户编程时,尤其是对于几乎没有编程专业知识的用户。
translated by 谷歌翻译
开源代码被认为是现代软件开发中的常见实践。但是,重复使用其他代码使坏演员可以访问广泛的开发商社区,因此依靠它的产品。这些攻击被归类为供应链攻击。近年来,越来越多的供应链攻击在软件开发过程中利用开源的供水,转移下载和安装程序,无论是自动或手册。多年来,已经发明了许多用于检测脆弱包装的方法。但是,在软件包中检测恶意代码并不常见。这些检测方法可以广泛地分为使用(动态)并且不使用(静态)代码执行的分析。在这里,我们使用变压器(MSDT)算法介绍了恶意源代码检测。 MSDT是一种基于深度学习方法的新型静态分析,该方法检测到现实世界中的代码注入案例到源代码软件包。在这项研究中,我们使用了具有超过600,000个不同功能的MSDT和一个数据集来嵌入各种功能,并将群集算法应用于生成的向量,从而通过检测异常值来检测恶意功能。我们通过进行广泛的实验来评估MSDT的性能,并证明我们的算法能够检测到具有precision@k值最高为0.909的恶意代码的功能。
translated by 谷歌翻译
Labeling a module defective or non-defective is an expensive task. Hence, there are often limits on how much-labeled data is available for training. Semi-supervised classifiers use far fewer labels for training models, but there are numerous semi-supervised methods, including self-labeling, co-training, maximal-margin, and graph-based methods, to name a few. Only a handful of these methods have been tested in SE for (e.g.) predicting defects and even that, those tests have been on just a handful of projects. This paper takes a wide range of 55 semi-supervised learners and applies these to over 714 projects. We find that semi-supervised "co-training methods" work significantly better than other approaches. However, co-training needs to be used with caution since the specific choice of co-training methods needs to be carefully selected based on a user's specific goals. Also, we warn that a commonly-used co-training method ("multi-view"-- where different learners get different sets of columns) does not improve predictions (while adding too much to the run time costs 11 hours vs. 1.8 hours). Those cautions stated, we find using these "co-trainers," we can label just 2.5% of data, then make predictions that are competitive to those using 100% of the data. It is an open question worthy of future work to test if these reductions can be seen in other areas of software analytics. All the codes used and datasets analyzed during the current study are available in the https://GitHub.com/Suvodeep90/Semi_Supervised_Methods.
translated by 谷歌翻译
自动程序合成是软件工程中的持久梦想。最近,Open AI和Microsoft提出了一种有希望的深度学习(DL)解决方案,称为Copilot,作为工业产品。尽管一些研究评估了副驾驶解决方案的正确性并报告其问题,但需要进行更多的经验评估,以了解开发人员如何有效地受益。在本文中,我们研究了两项不同的编程任务中副标士的功能:(1)为基本算法问题生成(和复制)正确,有效的解决方案,(2)将副副副总裁与人类程序员的建议解决方案与一组人的建议解决方案进行比较编程任务。对于前者,我们评估副铜在解决计算机科学中选定的基本问题(例如对基本数据结构的基本问题)中的性能和功能。在后者中,使用人提供的解决方案的编程问题数据集。结果表明,Copilot能够为几乎所有基本算法问题提供解决方案,但是,某些解决方案是越野车且不可复制的。此外,Copilot在组合多种方法来生成解决方案方面存在一些困难。将副驾驶员与人类进行比较,我们的结果表明,人类溶液的正确比率大于副本的正确比率,​​而副铜产生的越野车解决方案需要更少的努力来维修。尽管本研究和以前的研究中的强调,副柯洛特(Copilot)作为开发人员特别是在高级编程任务中的助手表现出局限性,但它可以为基本编程任务生成初步解决方案。
translated by 谷歌翻译
软件开发人员将源代码内的日志记录嵌入为现代软件开发中的命令占空税,因为日志文件是跟踪运行时系统问题和故障排除系统管理任务所必需的。但是,当前的日志记录过程主要是手动,因此,日志语句的适当放置和内容仍然是挑战。为了克服这些挑战,旨在自动化日志放置并预测其内容的方法,即“来到哪里以及登录的地方”,具有很高的兴趣。因此,我们专注于通过利用源代码克隆和自然语言处理(NLP)来预测日志语句的位置(即,其中)和描述(即,什么),因为这些方法为日志预测提供了额外的上下文和优点。具体而言,我们指导我们的研究三项研究问题(RQS):( RQ1)如何利用代码片段,即代码克隆,用于日志语句预测如何? (RQ2)如何扩展方法以自动执行日志语句的描述? (RQ3)所提出的方法是如何有效的日志位置和描述预测?为了追求我们的RQ,我们对七个开源Java项目进行了实验研究。我们介绍了更新和改进的日志感知代码克隆检测方法,以预测日志记录语句(RQ1)的位置。然后,我们纳入自然语言处理(NLP)和深度学习方法,以自动化日志语句的描述预测(RQ2)。我们的分析表明,我们的混合NLP和Code-CC'd检测方法(NLP CC'd)优于常规克隆探测器,平均地查找日志声明位置,并在Bleu和Rouge分数上实现了40.86%的性能,以预测伐木的描述与先前研究(RQ3)相比的陈述。
translated by 谷歌翻译
源代码对于研究人员重现方法并复制人工智能(AI)论文的结果至关重要。一些组织和研究人员手动收集具有可用源代码的AI论文,以对AI社区做出贡献。但是,手动收集是一项劳动密集型且耗时的任务。为了解决此问题,我们提出了一种方法,可以自动识别具有可用源代码的论文并提取其源代码存储库URL。通过这种方法,我们发现,从2010年到2019年发布的10个最高AI会议的常规论文中有20.5%被确定为具有可用源代码的论文,并且这些源代码存储库中有8.1%不再可访问。我们还创建了XMU NLP Lab ReadMe数据集,这是用于源代码文档研究的标记已读数文件的最大数据集。通过此数据集,我们发现了很多读书文件没有提供的安装说明或使用教程。此外,对AI会议论文的源代码的一般图片进行了大规模的综合统计分析。提出的解决方案还可以超越AI会议论文,以分析来自期刊和会议的其他科学论文,以阐明更多领域。
translated by 谷歌翻译
Software-related platforms have enabled their users to collaboratively label software entities with topics. Tagging software repositories with relevant topics can be exploited for facilitating various downstream tasks. For instance, a correct and complete set of topics assigned to a repository can increase its visibility. Consequently, this improves the outcome of tasks such as browsing, searching, navigation, and organization of repositories. Unfortunately, assigned topics are usually highly noisy, and some repositories do not have well-assigned topics. Thus, there have been efforts on recommending topics for software projects, however, the semantic relationships among these topics have not been exploited so far. We propose two recommender models for tagging software projects that incorporate the semantic relationship among topics. Our approach has two main phases; (1) we first take a collaborative approach to curate a dataset of quality topics specifically for the domain of software engineering and development. We also enrich this data with the semantic relationships among these topics and encapsulate them in a knowledge graph we call SED-KGraph. Then, (2) we build two recommender systems; The first one operates only based on the list of original topics assigned to a repository and the relationships specified in our knowledge graph. The second predictive model, however, assumes there are no topics available for a repository, hence it proceeds to predict the relevant topics based on both textual information of a software project and SED-KGraph. We built SED-KGraph in a crowd-sourced project with 170 contributors from both academia and industry. The experiment results indicate that our solutions outperform baselines that neglect the semantic relationships among topics by at least 25% and 23% in terms of ASR and MAP metrics.
translated by 谷歌翻译
Recent years have seen a proliferation of research on adversarial machine learning. Numerous papers demonstrate powerful algorithmic attacks against a wide variety of machine learning (ML) models, and numerous other papers propose defenses that can withstand most attacks. However, abundant real-world evidence suggests that actual attackers use simple tactics to subvert ML-driven systems, and as a result security practitioners have not prioritized adversarial ML defenses. Motivated by the apparent gap between researchers and practitioners, this position paper aims to bridge the two domains. We first present three real-world case studies from which we can glean practical insights unknown or neglected in research. Next we analyze all adversarial ML papers recently published in top security conferences, highlighting positive trends and blind spots. Finally, we state positions on precise and cost-driven threat modeling, collaboration between industry and academia, and reproducible research. We believe that our positions, if adopted, will increase the real-world impact of future endeavours in adversarial ML, bringing both researchers and practitioners closer to their shared goal of improving the security of ML systems.
translated by 谷歌翻译
GitHub是Internet上最大的开源软件主机。这个大型,可自由访问的数据库吸引了从业人员和研究人员的注意。但是,随着Github的增长的继续,越来越难以导航遍布广泛领域的大量存储库。过去的工作表明,考虑到应用程序域对于预测存储库的普及以及有关项目质量的推理的任务至关重要。在这项工作中,我们建立在先前注释的5,000个GitHub存储库的数据集上,以设计自动分类器,以通过其应用程序域对存储库进行分类。分类器使用最先进的自然语言处理技术和机器学习,根据五个应用程序域从多个数据源和目录存储库中学习。我们用(1)自动分类器贡献,该分类器可以将流行的存储库分配给每个应用程序域,至少具有70%的精度,(2)对该方法在不流行的存储库中的性能进行调查,以及(3)这种方法对这种方法的实际应用程序,用于回答软件工程实践的采用如何在应用程序域之间有何不同。我们的工作旨在帮助GitHub社区确定感兴趣的存储库,并为未来的工作开放有希望的途径,以调查来自不同应用领域的存储库之间的差异。
translated by 谷歌翻译
The number of scientific publications continues to rise exponentially, especially in Computer Science (CS). However, current solutions to analyze those publications restrict access behind a paywall, offer no features for visual analysis, limit access to their data, only focus on niches or sub-fields, and/or are not flexible and modular enough to be transferred to other datasets. In this thesis, we conduct a scientometric analysis to uncover the implicit patterns hidden in CS metadata and to determine the state of CS research. Specifically, we investigate trends of the quantity, impact, and topics for authors, venues, document types (conferences vs. journals), and fields of study (compared to, e.g., medicine). To achieve this we introduce the CS-Insights system, an interactive web application to analyze CS publications with various dashboards, filters, and visualizations. The data underlying this system is the DBLP Discovery Dataset (D3), which contains metadata from 5 million CS publications. Both D3 and CS-Insights are open-access, and CS-Insights can be easily adapted to other datasets in the future. The most interesting findings of our scientometric analysis include that i) there has been a stark increase in publications, authors, and venues in the last two decades, ii) many authors only recently joined the field, iii) the most cited authors and venues focus on computer vision and pattern recognition, while the most productive prefer engineering-related topics, iv) the preference of researchers to publish in conferences over journals dwindles, v) on average, journal articles receive twice as many citations compared to conference papers, but the contrast is much smaller for the most cited conferences and journals, and vi) journals also get more citations in all other investigated fields of study, while only CS and engineering publish more in conferences than journals.
translated by 谷歌翻译
Recent advances in deep learning (dl) have led to the release of several dl software libraries such as pytorch, Caffe, and TensorFlow, in order to assist machine learning (ml) practitioners in developing and deploying state-of-the-art deep neural networks (DNN), but they are not able to properly cope with limitations in the dl libraries such as testing or data processing. In this paper, we present a qualitative and quantitative analysis of the most frequent dl libraries combination, the distribution of dl library dependencies across the ml workflow, and formulate a set of recommendations to (i) hardware builders for more optimized accelerators and (ii) library builder for more refined future releases. Our study is based on 1,484 open-source dl projects with 46,110 contributors selected based on their reputation. First, we found an increasing trend in the usage of deep learning libraries. Second, we highlight several usage patterns of deep learning libraries. In addition, we identify dependencies between dl libraries and the most frequent combination where we discover that pytorch and Scikit-learn and, Keras and TensorFlow are the most frequent combination in 18% and 14% of the projects. The developer uses two or three dl libraries in the same projects and tends to use different multiple dl libraries in both the same function and the same files. The developer shows patterns in using various deep-learning libraries and prefers simple functions with fewer arguments and straightforward goals. Finally, we present the implications of our findings for researchers, library maintainers, and hardware vendors.
translated by 谷歌翻译
越来越多的工作已经认识到利用机器学习(ML)进步的重要性,以满足提取访问控制属性,策略挖掘,策略验证,访问决策等有效自动化的需求。在这项工作中,我们调查和总结了各种ML解决不同访问控制问题的方法。我们提出了ML模型在访问控制域中应用的新分类学。我们重点介绍当前的局限性和公开挑战,例如缺乏公共现实世界数据集,基于ML的访问控制系统的管理,了解黑盒ML模型的决策等,并列举未来的研究方向。
translated by 谷歌翻译
该软件随着先进技术和方法论的发明而迅速变化。响应不断变化的业务需求而快速,成功升级软件的能力比以往任何时候都重要。对于软件产品的长期管理,测量软件可维护性至关重要。通过提供软件可维护性的准确预测,将软计算技术用于软件可维护性预测,在软件维护过程中表现出了巨大的希望。为了更好地了解软计算技术在软件可维护性预测中的作用,我们旨在为软件可维护性预测提供对软计算技术的系统文献综述。首先,我们提供了软件可维护性的详细概述。之后,我们探讨了软件可维护性的基本原理以及采用软计算方法来预测软件可维护性的原因。后来,我们检查了软件可维护预测过程中采用的软计算方法。此外,我们讨论了与使用软计算技术预测软件可维护性相关的困难和潜在解决方案。最后,我们以一些有希望的未来方向来结束审查,以推动这一有前途的领域的进一步研究创新和发展。
translated by 谷歌翻译