如今,越来越多的应用程序是开发用于在分布式分区技术,即DAPP上运行。 DAPP的业务逻辑通常在通过稳定性开发的智能合同中实现,该编程语言用于在不同区间平台上编写智能合同,包括流行的以太统计。在Ethereum中,在矿工机器上运行的智能合同对应于执行费补偿这种计算资源的执行费用。但是,智能合同的部署和执行成本取决于开发人员完成的实施选择。未申请的设计选择可能导致较高的煤气消耗量比必要的消耗更高。在本文中,我们(i)确定了一套影响智能合同部署和交易成本的19个稳定性味道,(ii)通过涉及34名参与者的调查评估这种嗅觉的相关性。在这些嗅觉之上,我们提出了Gasmet,这是一套统计评估智能合同的代码质量的指标。涉及2,186个智能合同的实验表明,拟议的指标具有与部署成本的直接关联。我们套件中的指标可用于更容易地识别需要优化的源代码段。
translated by 谷歌翻译
如今,由于最近在人工智能(AI)和机器学习(ML)中的近期突破,因此,智能系统和服务越来越受欢迎。然而,机器学习不仅满足软件工程,不仅具有有希望的潜力,而且还具有一些固有的挑战。尽管最近的一些研究努力,但我们仍然没有明确了解开发基于ML的申请和当前行业实践的挑战。此外,目前尚不清楚软件工程研究人员应将其努力集中起来,以更好地支持ML应用程序开发人员。在本文中,我们报告了一个旨在了解ML应用程序开发的挑战和最佳实践的调查。我们合成从80名从业者(以不同的技能,经验和应用领域)获得的结果为17个调查结果;概述ML应用程序开发的挑战和最佳实践。参与基于ML的软件系统发展的从业者可以利用总结最佳实践来提高其系统的质量。我们希望报告的挑战将通知研究界有关需要调查的主题,以改善工程过程和基于ML的申请的质量。
translated by 谷歌翻译
权力下放的金融(DECI)是一种由各种区块链的智能合同构建的金融产品和服务系统。在过去的一年里,DEFI获得了普及和市场资本化。但是,它也成为了与加密货币相关的犯罪的震中,特别是各种类型的证券违规行为。缺乏了解您在DECII中的客户需求使各国政府不确定如何处理此空间的违规程度。本研究旨在通过机器学习方法解决这一问题,以确定基于其令牌的智能合同代码潜在地侵犯证券违规的污染项目。我们更广泛地调整了检测特定类型的证券违规行为的特定类型,基于从Defi项目令牌的智能合同代码中提取的功能来构建随机林分类器。最终分类器实现99.1%F1分数。对于任何分类问题来说,这种高性能令人惊讶,但是,从进一步的特征级别,我们发现一个特征使得一个高度可检测的问题。我们的研究的另一个贡献是一个新的数据集,由(a)验证的地面真理数据集,用于证券违规涉及的令牌和(b)来自项目中的Predi Aggregator的一组有效令牌,在项目上进行了尽职调查。本文进一步讨论了检察官在执法努力中使用我们的模式,并将其潜在利用与更广泛的法律背景联系起来。
translated by 谷歌翻译
上下文:测试气味是开发测试用例时采用的亚最佳设计选择的症状。先前的研究证明了它们对测试代码可维护性和有效性的有害性。因此,研究人员一直在提出基于启发式的自动化技术来检测它们。但是,此类探测器的性能仍然有限,并且取决于要调整的阈值。目的:我们提出了基于机器学习来检测四种测试气味的新型测试气味检测方法的设计和实验。方法:我们计划开发最大的手动验证测试气味数据集。该数据集将被利用来训练六个机器学习者,并在跨项目内和跨项目内评估其功能。最后,我们计划将我们的方法与最新的基于启发式的技术进行比较。
translated by 谷歌翻译
深度学习(DL)框架现在被广泛使用,简化了复杂模型的创建以及它们对各种应用的集成甚至到非DL专家。但是,就像任何其他程序一样,他们容易发生错误。本文与命名静默错误的错误分类:它们会导致错误的行为,但它们不会导致系统崩溃或挂起,也不会向用户显示错误消息。这种错误在DL应用程序和框架中更危险,因为系统的“黑匣子”和系统的随机性质(最终用户无法理解模型如何做出决定)。本文介绍了Keras和Tensorflow Silent错误的第一个实证研究,以及它们对用户节目的影响。从Tensorflow Github存储库中提取与KERA相关的封闭问题。在我们收集的1,168个问题中,77个影响了影响用户程序的可重复静音错误。我们根据“用户程序的影响”和“发生问题”的“发生问题的组件”归类错误。然后,我们根据用户程序的影响,我们为每个问题派生威胁级别。为了评估所确定的类别和影响规模的相关性,我们使用103个DL开发人员进行了在线调查。参与者普遍同意DL库中静音错误的重大影响,并承认了我们的研究结果(即,沉默错误的类别和拟议的影响量表)。最后,利用我们的分析,我们提供了一套指导方针,以促进对DL框架中的这些错误的保护。
translated by 谷歌翻译
负责任的AI被广泛认为是我们时代最大的科学挑战之一,也是释放AI市场并增加采用率的关键。为了应对负责任的AI挑战,最近已经发布了许多AI伦理原则框架,AI系统应该符合这些框架。但是,没有进一步的最佳实践指导,从业者除了真实性之外没有什么。同样,在算法级别而不是系统级的算法上进行了重大努力,主要集中于数学无关的道德原则(例如隐私和公平)的一部分。然而,道德问题在开发生命周期的任何步骤中都可能发生,从而超过AI算法和模型以外的系统的许多AI,非AI和数据组件。为了从系统的角度操作负责任的AI,在本文中,我们采用了一种面向模式的方法,并根据系统的多媒体文献综述(MLR)的结果提出了负责任的AI模式目录。与其呆在道德原则层面或算法层面上,我们专注于AI系统利益相关者可以在实践中采取的模式,以确保开发的AI系统在整个治理和工程生命周期中负责。负责的AI模式编目将模式分为三组:多层次治理模式,可信赖的过程模式和负责任的逐设计产品模式。这些模式为利益相关者实施负责任的AI提供了系统性和可行的指导。
translated by 谷歌翻译
大型语言模型,例如OpenAI的法典和DeepMind的字母,可以生成代码来解决以自然语言表达的各种问题。这项技术已经在至少一项广泛使用的编程编辑器扩展程序中进行了商业化:Github Copilot。在本文中,我们探讨了具有大型语言模型(LLM辅助编程)的编程与程序员协助的先前概念化相似,并且与众不同。我们借鉴了公开可用的经验报告,有关LLM辅助编程以及先前的可用性和设计研究。我们发现,尽管LLM辅助编程通过搜索和重用分享了一些编译,配对编程和编程的属性,但技术可能性和实践经验都存在根本差异。因此,应该将LLM辅助编程视为具有自己独特的属性和挑战的新方法。最后,我们借鉴了用户研究的观察结果,在该观察中,非专家最终用户程序员使用LLM辅助工具来求解电子表格中的数据任务。我们讨论可能出现的问题,并在将大型语言模型应用于最终用户编程时,尤其是对于几乎没有编程专业知识的用户。
translated by 谷歌翻译
Machine Learning for Source Code (ML4Code) is an active research field in which extensive experimentation is needed to discover how to best use source code's richly structured information. With this in mind, we introduce JEMMA, an Extensible Java Dataset for ML4Code Applications, which is a large-scale, diverse, and high-quality dataset targeted at ML4Code. Our goal with JEMMA is to lower the barrier to entry in ML4Code by providing the building blocks to experiment with source code models and tasks. JEMMA comes with a considerable amount of pre-processed information such as metadata, representations (e.g., code tokens, ASTs, graphs), and several properties (e.g., metrics, static analysis results) for 50,000 Java projects from the 50KC dataset, with over 1.2 million classes and over 8 million methods. JEMMA is also extensible allowing users to add new properties and representations to the dataset, and evaluate tasks on them. Thus, JEMMA becomes a workbench that researchers can use to experiment with novel representations and tasks operating on source code. To demonstrate the utility of the dataset, we also report results from two empirical studies on our data, ultimately showing that significant work lies ahead in the design of context-aware source code models that can reason over a broader network of source code entities in a software project, the very task that JEMMA is designed to help with.
translated by 谷歌翻译
通过分析大量数据来提供决策支持,大数据正在改革许多工业域。大数据测试旨在确保大数据系统在维护数据的性能和质量时运行平稳且无错误。但是,由于数据的多样性和复杂性,测试大数据具有挑战性。虽然众多研究对大数据测试进行了综合审查,但解决了测试技术和挑战的综合性尚未混淆。因此,我们对大数据测试技术(2010年 - 2021年)进行了系统审查。本文通过突出显示每个处理阶段的技术来讨论测试数据的处理。此外,我们讨论了挑战和未来的方向。我们的发现表明,已经使用不同的功能,非功能性和组合(功能和非功能性)测试技术来解决与大数据相关的特定问题。同时,在MapReduce验证阶段,大多数测试挑战都面临。此外,组合测试技术是与其他技术相结合的应用技术之一(即随机测试,突变测试,输入空间分区和等价测试),以解决在大数据测试期间面临的各种功能故障挑战。
translated by 谷歌翻译
自主机器人结合了各种技能,形成越来越复杂的行为,称为任务。尽管这些技能通常以相对较低的抽象级别进行编程,但它们的协调是建筑分离的,并且经常以高级语言或框架表达。几十年来,州机器一直是首选的语言,但是最近,行为树的语言在机器人主义者中引起了人们的关注。行为树最初是为计算机游戏设计的,用于建模自主参与者,提供了基于树木的可扩展的使命表示,并受到支持支持模块化设计和代码的重复使用。但是,尽管使用了该语言的几种实现,但对现实世界中的用法和范围知之甚少。行为树提供的概念与传统语言(例如州机器)有何关系?应用程序中如何使用行为树和状态机概念?我们介绍了对行为树中关键语言概念的研究及其在现实世界机器人应用中的使用。我们识别行为树语言,并将其语义与机器人技术中最著名的行为建模语言进行比较。我们为使用这些语言的机器人应用程序挖掘开源存储库并分析此用法。我们发现两种行为建模语言在语言设计及其在开源项目中的用法之间的相似性方面,以满足机器人域的需求。我们为现实世界行为模型的数据集提供了贡献,希望激发社区使用和进一步开发这种语言,相关的工具和分析技术。
translated by 谷歌翻译
推荐系统已广泛应用于不同的应用领域,包括能量保存,电子商务,医疗保健,社交媒体等。此类应用需要分析和挖掘大量各种类型的用户数据,包括人口统计,偏好,社会互动等,以便开发准确和精确的推荐系统。此类数据集通常包括敏感信息,但大多数推荐系统专注于模型的准确性和忽略与安全性和用户隐私相关的问题。尽管使用不同的风险减少技术克服这些问题,但它们都没有完全成功,确保了对用户的私人信息的密码安全和保护。为了弥合这一差距,区块链技术作为推动推荐系统中的安全和隐私保存的有希望的策略,不仅是因为其安全性和隐私性突出特征,而且由于其恢复力,适应性,容错和信任特性。本文介绍了涵盖挑战,开放问题和解决方案的基于区块链的推荐系统的整体综述。因此,引入了精心设计的分类,以描述安全和隐私挑战,概述现有框架并在使用区块链之前讨论其应用程序和利益,以指示未来的研究机会。
translated by 谷歌翻译
自动程序合成是软件工程中的持久梦想。最近,Open AI和Microsoft提出了一种有希望的深度学习(DL)解决方案,称为Copilot,作为工业产品。尽管一些研究评估了副驾驶解决方案的正确性并报告其问题,但需要进行更多的经验评估,以了解开发人员如何有效地受益。在本文中,我们研究了两项不同的编程任务中副标士的功能:(1)为基本算法问题生成(和复制)正确,有效的解决方案,(2)将副副副总裁与人类程序员的建议解决方案与一组人的建议解决方案进行比较编程任务。对于前者,我们评估副铜在解决计算机科学中选定的基本问题(例如对基本数据结构的基本问题)中的性能和功能。在后者中,使用人提供的解决方案的编程问题数据集。结果表明,Copilot能够为几乎所有基本算法问题提供解决方案,但是,某些解决方案是越野车且不可复制的。此外,Copilot在组合多种方法来生成解决方案方面存在一些困难。将副驾驶员与人类进行比较,我们的结果表明,人类溶液的正确比率大于副本的正确比率,​​而副铜产生的越野车解决方案需要更少的努力来维修。尽管本研究和以前的研究中的强调,副柯洛特(Copilot)作为开发人员特别是在高级编程任务中的助手表现出局限性,但它可以为基本编程任务生成初步解决方案。
translated by 谷歌翻译
拉力请求是当今协作软件开发和代码审核过程的关键部分。但是,当审阅者或作者不积极参与拉动请求时,拉动请求也可以减慢软件开发过程。在这项工作中,我们设计了一项端到端服务,以提醒作者或审阅者与他们的逾期拉动请求互动,以加速逾期拉动请求。首先,我们根据努力估算和机器学习使用模型来预测给定拉的请求的完成时间。其次,我们使用活动检测来滤除可能逾期的拉请请求,但仍在采取足够的动作。最后,我们使用演员身份证来了解拉动请求的阻止者是谁,并推动适当的演员(作者或审稿人)。轻推的主要新颖性是它成功地减少了拉动请求解决时间,同时确保开发人员认为发送的通知在成千上万的存储库中是有用的。在Microsoft使用的147个存储库的随机试验中,Nudge能够将拉的请求分辨率时间减少60%,而与Nudge未发送通知的逾期拉动请求相比,该请求的8,500次拉。此外,收到推动通知的开发人员将这些通知的73%置于正面。我们观察到在Microsoft的8,000个存储库中扩展Nudge的部署时,我们观察到了类似的结果,在整整一年中,Nudge发送了210,000个通知。这表明了Nudge可以扩展到数千个存储库的能力。最后,我们对选择通知的定性分析指示了未来研究的领域,例如在拉动请求和开发人员的可用性中考虑依赖性。
translated by 谷歌翻译
在过去几年中,自动化机器学习(AUTOML)工具的普及有所增加。机器学习(ML)从业人员使用自动工具来自动化和优化功能工程,模型培训和超参数优化的过程。最近的工作对从业人员使用汽车工具的经验进行了定性研究,并根据其性能和提供的功能比较了不同的汽车工具,但是现有的工作都没有研究在大规模实际项目中使用Automl工具的实践。因此,我们进行了一项实证研究,以了解ML从业者如何在其项目中使用汽车工具。为此,我们在GitHub上托管的大量开源项目存储库中研究了最常用的十大汽车工具及其各自的用法。我们研究的结果表明1)ML从业人员主要使用哪种汽车工具,以及2)使用这些汽车工具的存储库的特征。此外,我们确定了使用Automl工具的目的(例如,模型参数采样,搜索空间管理,模型评估/错误分析,数据/功能转换和数据标记)以及ML管道的阶段(例如功能工程)使用工具。最后,我们报告在同一源代码文件中使用Automl工具的频率。我们希望我们的结果可以帮助ML从业人员了解不同的汽车工具及其使用情况,以便他们可以为其目的选择正确的工具。此外,Automl工具开发人员可以从我们的发现中受益,以深入了解其工具的用法并改善其工具以更好地适合用户的用法和需求。
translated by 谷歌翻译
软件测试可能是一个漫长且昂贵的过程,尤其是如果无法测试的软件进行测试。重构技术可以通过改善影响可检验性的软件指标来增强可检验性。在构建回归模型学习如何将计算的源代码计算指标与其可检验性相关联的指标时,确定了指标。我们确定了15个软件指标,在解释我们的可检测性预测模型的同时,高度影响可检验性。我们使用42个Java类的实验表明,除了改善其他一些质量属性外,改善这15个指标的重构平均可以提高可测试性15.57%。我们的可测试性预测模型经过训练,可以映射源代码指标,以测试有效性和效率,作为可测试软件的两种重要成分。随着测试套件获得的覆盖范围的增加,测试有效性会提高。另一方面,随着测试套件的大小增加,测试效率会降低。本文提供了一个数学模型,以根据测试套件的大小和覆盖范围来计算类可检验性。我们使用此数学模型来计算可测试性作为我们可检测性预测模型的目标。数学模型要求执行正在测试的类以计算测试覆盖范围,而我们的回归模型在静态上测量了测试性。在测试性方面的测试结果预测应在测试之前,以避免不必要的成本。我们的可测试性预测模型已在23,886个Java类和262个软件指标上进行了培训和测试。学习的模型以R2为0.68,平均平方误差为0.03,可预测可验证性。
translated by 谷歌翻译
在各个域中应用机器学习(ML)的快速升级导致更多关注ML组件的质量。然后,旨在提高ML组件质量并安全地将其集成到基于ML的系统中的技术和工具的增长。尽管这些工具中的大多数都使用Bugs的生命周期,但没有标准的错误来评估其性能,比较它们并讨论其优势和弱点。在这项研究中,我们首先研究了基于ML的系统中错误的可重复性和可验证性,并显示了每个错误的最重要因素。然后,我们探索在基于ML的软件系统中生成错误基准的挑战,并提供一个错误基准缺陷4ML,该缺陷4ML满足标准基准的所有标准,即相关性,可重复性,公平性,可验证性和可用性。该故障负载基准测试包含ML开发人员在GitHub和堆栈溢出上报告的113个错误,使用两个最受欢迎的ML框架:TensorFlow和Keras。缺陷4ML还解决了基于ML的软件系统软件可靠性工程的重要挑战,例如:1)框架的快速变化,通过为不同版本的框架提供各种错误,2)代码便携性,通过在不同的ML框架中提供相似的错误,3 )错误可重复性,通过提供有关所需依赖关系和数据的完整信息,以及4)通过介绍指向错误的起源的链接来提供有关所需依赖性和数据的完整信息。基于ML的系统从业人员和研究人员可以评估其测试工具和技术的缺陷4ML。
translated by 谷歌翻译
深度学习(DL)越来越多地应用于各种域。从传统系统到DL系统的编程范式转移在工程DL系统中造成独特的挑战。性能是DL系统中的挑战之一,性能错误(PBS)可能导致严重后果,例如资源消耗过多和财务损失。虽然DL系统中的错误已被广泛调查,但DL系统中的PBS几乎没有探讨。为了弥合这一差距,我们展示了第一个综合研究,以表征症状,根本原因和引入和引入PBS在Tensorflow和Cheras中的DL系统中的阶段,共收集来自225个Sackoverflow Post的238个PBS。我们的调查结果阐明了对开发高性能DL系统的影响,以及DL系统中的PBS检测和定位PBS。我们还在DL系统中建立了56个PBS的第一个基准,并评估了解决它们的现有方法的能力。此外,我们开发了一个静态检查器DeadPerf来检测三种类型的PBS,并在130个GitHub项目中识别488个新PBS.62和18分别被开发人员确认和修复。
translated by 谷歌翻译
在设计基于AI的系统中,有蓬勃发展的兴趣,以帮助人类设计计算系统,包括自动生成计算机代码的工具。这些最值得注意的是,以第一个自我描述的“Ai对程序员”,GitHub Copilot,一种在开源GitHub代码上培训的语言模型。但是,代码通常包含错误 - 因此,鉴于Copilot处理的大量未曝避代码,肯定是语言模型将从可利用的错误代码中学到。这提出了对Copilot代码捐助的安全的担忧。在这项工作中,我们系统地调查了可能导致Github CopIlot推荐不安全代码的普遍存在和条件。为了执行此分析,我们提示CopIlot在与高风险CWE相关的方案中生成代码(例如,从吉利的“前25名”列表中的方案)。我们探索了三个不同代码生成轴上的Copilot的表现 - 检查它如何表现为特定的弱点多样性,提示的多样性以及域的多样性。总共生产89个不同的Copilot方案,以完成,生产1,689个计划。其中,我们发现大约40%的脆弱。
translated by 谷歌翻译
即使机器学习算法已经在数据科学中发挥了重要作用,但许多当前方法对输入数据提出了不现实的假设。由于不兼容的数据格式,或数据集中的异质,分层或完全缺少的数据片段,因此很难应用此类方法。作为解决方案,我们提出了一个用于样本表示,模型定义和培训的多功能,统一的框架,称为“ Hmill”。我们深入审查框架构建和扩展的机器学习的多个范围范式。从理论上讲,为HMILL的关键组件的设计合理,我们将通用近似定理的扩展显示到框架中实现的模型所实现的所有功能的集合。本文还包含有关我们实施中技术和绩效改进的详细讨论,该讨论将在MIT许可下发布供下载。该框架的主要资产是其灵活性,它可以通过相同的工具对不同的现实世界数据源进行建模。除了单独观察到每个对象的一组属性的标准设置外,我们解释了如何在框架中实现表示整个对象系统的图表中的消息推断。为了支持我们的主张,我们使用框架解决了网络安全域的三个不同问题。第一种用例涉及来自原始网络观察结果的IoT设备识别。在第二个问题中,我们研究了如何使用以有向图表示的操作系统的快照可以对恶意二进制文件进行分类。最后提供的示例是通过网络中实体之间建模域黑名单扩展的任务。在所有三个问题中,基于建议的框架的解决方案可实现与专业方法相当的性能。
translated by 谷歌翻译
预测过程分析已成为组织的基本援助,从而为其流程提供在线运营支持。但是,需要向流程利益相关者提供解释为什么预测给定流程执行以某种方式行事的原因。否则,他们将不太可能相信预测性监测技术,从而采用它。本文提出了一个预测分析框架,该框架还具有基于Shapley值的游戏理论的解释功能。该框架已在IBM Process采矿套件中实施,并为业务用户商业化。该框架已在现实生活事件数据上进行了测试,以评估预测的质量和相应的评估。特别是,已经执行了用户评估,以了解系统提供的解释是否可以使流程利益相关者可理解。
translated by 谷歌翻译