软件错误预测预测是一个活跃的研究领域,许多因素影响了预测性能。但是,除了一项初始工作外,尚未研究学习方法(即,用于培训和预测目标变量的数据的细节)对预测性能的影响。本文探讨了两种学习方法的影响,即Useallpredictall和usePredictPost,对软件错误预测预测的性能,包括释放内部和跨释放。经验结果基于从十二个开源项目的64个版本中提取的数据。结果表明,学习方法对分类表现有实质性的,通常未被承认的影响。具体而言,使用USEALLPREDICTALL导致的性能要比使用释放和跨释放的UsePrepredictPost学习方法要好得多。此外,本文发现,对于释放内部预测,分类性能的这种差异是由于两种学习方法中的类不平衡级别引起的。解决课堂失衡时,消除了学习方法之间的性能差异。我们的发现暗示,应始终明确识别学习方法及其对软件缺陷预订预测的影响。本文最后讨论了我们的研究和实践结果的潜在后果。
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 谷歌翻译
在研究人员急于跨所有可用数据或尝试复杂的方法之前,可能是首先检查更简单的替代方案。具体而言,如果历史数据在某些小区域中具有最多的信息,那么也许从该地区学习的模型就足够了,这是项目的其余部分。为支持这一索赔,我们提供了一个案例研究,其中包含240个GitHub项目,在那里我们发现这些项目中的信息“被聚集”朝向项目的最早部分。从前150个提交的缺陷预测模型也有效,或者比最先进的替代品更好。只使用这个早期生命周期数据,我们可以非常快速地构建模型,很早就在软件项目生命周期中。此外,使用这种方法,我们已经显示了一个简单的模型(只有两个功能)概括为数百个软件项目。基于这种经验,我们怀疑概括软件工程缺陷预测模型的事先工作可能有不必要的复杂化本身简单的过程。此外,在从相对无关的区域中得出的结论以来,需要重新讨论焦点生命周期数据的事先工作。 Replication注意:我们所有的数据和脚本都在https://github.com/snaraya7/simplify-software-analytics上线
translated by 谷歌翻译
上下文:测试气味是开发测试用例时采用的亚最佳设计选择的症状。先前的研究证明了它们对测试代码可维护性和有效性的有害性。因此,研究人员一直在提出基于启发式的自动化技术来检测它们。但是,此类探测器的性能仍然有限,并且取决于要调整的阈值。目的:我们提出了基于机器学习来检测四种测试气味的新型测试气味检测方法的设计和实验。方法:我们计划开发最大的手动验证测试气味数据集。该数据集将被利用来训练六个机器学习者,并在跨项目内和跨项目内评估其功能。最后,我们计划将我们的方法与最新的基于启发式的技术进行比较。
translated by 谷歌翻译
软件测试可能是一个漫长且昂贵的过程,尤其是如果无法测试的软件进行测试。重构技术可以通过改善影响可检验性的软件指标来增强可检验性。在构建回归模型学习如何将计算的源代码计算指标与其可检验性相关联的指标时,确定了指标。我们确定了15个软件指标,在解释我们的可检测性预测模型的同时,高度影响可检验性。我们使用42个Java类的实验表明,除了改善其他一些质量属性外,改善这15个指标的重构平均可以提高可测试性15.57%。我们的可测试性预测模型经过训练,可以映射源代码指标,以测试有效性和效率,作为可测试软件的两种重要成分。随着测试套件获得的覆盖范围的增加,测试有效性会提高。另一方面,随着测试套件的大小增加,测试效率会降低。本文提供了一个数学模型,以根据测试套件的大小和覆盖范围来计算类可检验性。我们使用此数学模型来计算可测试性作为我们可检测性预测模型的目标。数学模型要求执行正在测试的类以计算测试覆盖范围,而我们的回归模型在静态上测量了测试性。在测试性方面的测试结果预测应在测试之前,以避免不必要的成本。我们的可测试性预测模型已在23,886个Java类和262个软件指标上进行了培训和测试。学习的模型以R2为0.68,平均平方误差为0.03,可预测可验证性。
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 谷歌翻译
错误报告是软件开发中的常见文物。它们作为用户与开发人员通信有关使用发布版本的软件程序时遇到的问题的主频道。然而,在对问题的描述中,用户可以故意或不揭示漏洞。在典型的维护方案中,在准备纠正补丁时,开发团队优先考虑此类安全相关错误报告。然而,当安全相关性没有立即表达(例如,通过标签)或通过TRIAJIG团队迅速识别时,开放的安全相关错误报告可能成为攻击者可以利用以执行零日攻击的敏感信息的关键泄漏。为了支持Trizing Bug报告中的从业者,研究社区提出了检测安全相关错误报告的许多方法。近年来,报告了基于机器学习的这方面的方法,具有很有希望的表现。我们的工作侧重于这些方法,并重新审视其积木,为目前的成就提供全面的观点。为此,我们建立了一个大型实验数据集,并在特征集和学习算法中进行了广泛的实验。最终,我们的研究突出了不同的方法配置,从而产生最好的执行分类器。
translated by 谷歌翻译
在过去的二十年中,几个机器学习(ML)库已自由使用。许多研究都使用此类图书馆对预测软件工程(SE)任务进行实证研究。但是,使用一个库在另一个库上使用的差异被忽略了,隐含地假设使用这些库中的任何一个都会为用户提供相同或非常相似的结果。本文旨在提高人们对使用不同ML库进行软件开发工作估算(见)时所产生的差异的认识,这是研究最广泛的SE预测任务之一。为此,我们研究了3个最受欢迎的ML开源库(即不同语言)(即Scikit-Learn,Caret和Weka)提供的4个确定性机器学习者。我们进行了一项彻底的实证研究,比较了机器学习者在5个最常见的数据集上的性能,请参见方案(即,盒子内ML和TUNED-ML)以及深入的分析其API的文档和代码。我们的研究结果表明,在总共研究的105例病例中,这3个文库提供的预测平均为95%。在大多数情况下,这些差异明显很大,并且误容最多。每个项目3,000小时。此外,我们的API分析表明,这些库为用户提供了可以操纵参数的不同级别的控制,并且总体上缺乏清晰度和一致性,这可能会误导用户。我们的发现强调,ML库是参观研究的重要设计选择,这可能会导致性能差异。但是,这种差异不足。最后,我们通过强调开放式挑战,对图书馆的开发商以及使用它们的研究人员和从业者提出建议。
translated by 谷歌翻译
Automatically generated static code warnings suffer from a large number of false alarms. Hence, developers only take action on a small percent of those warnings. To better predict which static code warnings should not be ignored, we suggest that analysts need to look deeper into their algorithms to find choices that better improve the particulars of their specific problem. Specifically, we show here that effective predictors of such warnings can be created by methods that locally adjust the decision boundary (between actionable warnings and others). These methods yield a new high water-mark for recognizing actionable static code warnings. For eight open-source Java projects (cassandra, jmeter, commons, lucene-solr, maven, ant, tomcat, derby) we achieve perfect test results on 4/8 datasets and, overall, a median AUC (area under the true negatives, true positives curve) of 92%.
translated by 谷歌翻译
In the last decade, several studies have explored automated techniques to estimate the effort of agile software development. We perform a close replication and extension of a seminal work proposing the use of Deep Learning for Agile Effort Estimation (namely Deep-SE), which has set the state-of-the-art since. Specifically, we replicate three of the original research questions aiming at investigating the effectiveness of Deep-SE for both within-project and cross-project effort estimation. We benchmark Deep-SE against three baselines (i.e., Random, Mean and Median effort estimators) and a previously proposed method to estimate agile software project development effort (dubbed TF/IDF-SVM), as done in the original study. To this end, we use the data from the original study and an additional dataset of 31,960 issues mined from TAWOS, as using more data allows us to strengthen the confidence in the results, and to further mitigate external validity threats. The results of our replication show that Deep-SE outperforms the Median baseline estimator and TF/IDF-SVM in only very few cases with statistical significance (8/42 and 9/32 cases, respectively), thus confounding previous findings on the efficacy of Deep-SE. The two additional RQs revealed that neither augmenting the training set nor pre-training Deep-SE play lead to an improvement of its accuracy and convergence speed. These results suggest that using semantic similarity is not enough to differentiate user stories with respect to their story points; thus, future work has yet to explore and find new techniques and features that obtain accurate agile software development estimates.
translated by 谷歌翻译
GitHub是Internet上最大的开源软件主机。这个大型,可自由访问的数据库吸引了从业人员和研究人员的注意。但是,随着Github的增长的继续,越来越难以导航遍布广泛领域的大量存储库。过去的工作表明,考虑到应用程序域对于预测存储库的普及以及有关项目质量的推理的任务至关重要。在这项工作中,我们建立在先前注释的5,000个GitHub存储库的数据集上,以设计自动分类器,以通过其应用程序域对存储库进行分类。分类器使用最先进的自然语言处理技术和机器学习,根据五个应用程序域从多个数据源和目录存储库中学习。我们用(1)自动分类器贡献,该分类器可以将流行的存储库分配给每个应用程序域,至少具有70%的精度,(2)对该方法在不流行的存储库中的性能进行调查,以及(3)这种方法对这种方法的实际应用程序,用于回答软件工程实践的采用如何在应用程序域之间有何不同。我们的工作旨在帮助GitHub社区确定感兴趣的存储库,并为未来的工作开放有希望的途径,以调查来自不同应用领域的存储库之间的差异。
translated by 谷歌翻译
该项目的目的是收集和分析有关关注Microsoft Windows恶意软件的已发布结果的可比性和现实生活的数据,更具体地说是数据集大小和测试数据集不平衡对测量检测器性能的影响。一些研究人员使用较小的数据集,如果数据集大小对性能产生重大影响,则可以比较已发布的结果。研究人员还倾向于使用平衡的数据集和准确性作为测试的指标。前者并不是现实的真实代表,在这种现实中,良性样本明显超过了恶意软件,而后者的方法对于不平衡问题而言是有问题的。该项目确定了两个关键目标,以了解数据集大小是否与测量的探测器性能相关,以防止有意义地比较已发布的结果,并了解是否可以在现实世界中的部署中表现良好设想。该研究的结果表明,数据集的大小确实与测量的检测器性能相关,以防止有意义地比较已发表的结果,并且不了解训练集大小准确性曲线的性质,用于在哪种方法“更好”的方法之间得出已发表的结果结论。不应仅根据准确分数制作。结果还表明,高精度得分不一定会转化为高现实世界的性能。
translated by 谷歌翻译
目的:我们研究使用机器学习(ML)模型的可解释的累入预测,并在预测能力,稀疏性和公平性方面分析性能。与以前的作品不同,本研究列举了输出概率而不是二进制预测的可解释模型,并使用定量公平定义来评估模型。本研究还研究了模型是否可以横跨地理位置概括。方法:我们在佛罗里达州和肯塔基州的两个不同的刑事核查数据集上生成了黑盒和可解释的ML模型。我们将这些模型的预测性能和公平与目前用于司法系统中使用的两种方法进行了比较,以预测审前常规率:Arnold PSA和Compas。我们评估了所有模型的预测性能,可以在两次跨越两次预测六种不同类型犯罪的模型。结果:几种可解释的ML模型可以预测常规和黑盒ML模型,比Compas或Arnold PSA更准确。这些模型在实践中可能有用。类似于Arnold PSA,这些可解释模型中的一些可以作为一个简单的表格写入。其他可以使用一组可视化显示。我们的地理分析表明ML模型应分开培训,以便单独的位置并随时间更新。我们还为可​​解释模型提供了公平分析。结论:可解释的机器学习模型可以在预测准确性和公平性方面表现,也可以表现,也可以表现,也可以执行不可解释的方法和目前使用的风险评估尺度。机器学习模型对于单独培训,可以更准确地进行不同的位置,并保持最新。
translated by 谷歌翻译
机器学习(ML)应用程序的数据量不断增长。不仅是观察的数量,特别是测量变量的数量(特征)增加了持续的数字化。选择最适合预测建模的功能是ML在商业和研究中取得成功的重要杠杆。特征选择方法(FSM)独立于某种ML算法 - 所谓的过滤方法 - 已毫无意义地建议,但研究人员和定量建模的指导很少,以选择典型ML问题的适当方法。本次审查在特征选择基准上综合了大量文献,并评估了58种方法在广泛使用的R环境中的性能。对于具体的指导,我们考虑了四种典型的数据集方案,这些情况挑战ML模型(嘈杂,冗余,不平衡数据和具有比观察特征更多的案例)。绘制早期基准的经验,该基准测试较少的FSMS,我们根据四个标准进行比较方法的性能(预测性能,所选的相关功能数,功能集和运行时的稳定性)。我们发现依赖于随机森林方法的方法,双输入对称相关滤波器(浪费)和联合杂质滤波器(Jim)是给定的数据集方案的良好性候选方法。
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 谷歌翻译
在这项工作中,我们审查并评估了一个具有公开可用和广泛使用的数据集的深度学习知识追踪(DLKT)模型,以及学习编程的新型学生数据集。评估的DLKT模型已重新实现,用于评估先前报告的结果的可重复性和可复制性。我们测试在与模型的主要架构上独立于模型的比较模型中找到的不同输入和输出层变化,以及在某些研究中隐含地和明确地使用的不同最大尝试计数选项。几个指标用于反映评估知识追踪模型的质量。评估的知识追踪模型包括Vanilla-DKT,两个长短期内存深度知识跟踪(LSTM-DKT)变体,两个动态键值存储器网络(DKVMN)变体,以及自我细致的知识跟踪(SAKT)。我们评估Logistic回归,贝叶斯知识跟踪(BKT)和简单的非学习模型作为基准。我们的结果表明,DLKT模型一般优于非DLKT模型,DLKT模型之间的相对差异是微妙的,并且在数据集之间经常变化。我们的研究结果还表明,通常的纯模型,例如平均预测,比更复杂的知识追踪模型更好地表现出更好的性能,尤其是在准确性方面。此外,我们的公制和封路数据分析显示,用于选择最佳模型的度量标准对模型的性能有明显的影响,并且该度量选择可以影响模型排名。我们还研究了输入和输出层变化的影响,过滤出长期尝试序列,以及随机性和硬件等非模型属性。最后,我们讨论模型性能可重量和相关问题。我们的模型实现,评估代码和数据作为本工作的一部分发布。
translated by 谷歌翻译
深学习方法,已经在诸如图像分类和自然语言处理领域中的成功应用,最近被应用到源代码分析过,由于免费提供源代码(例如,从开源软件库)的巨大数额。在这项工作中,我们阐述在国家的最先进的方法来使用有关其句法结构信息的源代码表示,我们适应它代表源的变化(即,提交)。我们使用这种表示安全相关的分类提交。因为我们的方法是使用迁移学习(也就是我们训练的一个“借口任务”是可用的丰富的标签数据的网络,然后我们使用这样的网络提交分类的目标任务,为此,少标记实例可用)我们研究了前培训使用两种不同的借口任务与随机初始化模型的网络的影响。我们的研究结果表明,通过利用代码语法跑赢基于令牌的表示得到的结构信息表示。此外,具有非常大的数据集上的松散的相关任务借口训练前时所获得的性能度量($> 10 ^ 6个$样品)上的更小的数据集训练前当超过($> 10 ^ 4 $样品)但对于一个借口任务更密切相关的目标任务。
translated by 谷歌翻译
缺陷预测是最受欢迎的研究主题之一,因为它有可能最大程度地减少软件质量保证工作。现有方法已经从复杂性和开发者指标等各个角度检查了缺陷预测。但是,这些都没有考虑用于缺陷预测的编程样式。本文旨在分析风格指标对项目内部和交叉对象缺陷预测的影响。为了预测,使用了4种广泛使用的机器学习算法,即幼稚的贝叶斯,支持向量机,决策树和逻辑回归。该实验是在5个流行的开源项目的14个版本上进行的。检查F1,精度和召回以评估结果。结果表明,风格指标是缺陷的良好预测指标。
translated by 谷歌翻译
随着软件量表和复杂性的快速增长,将大量错误报告提交到错误跟踪系统中。为了加快缺陷维修的速度,需要对这些报告进行准确的分类,以便可以将其发送给适当的开发人员。但是,现有的分类方法仅使用错误报告的文本信息,从而导致其性能较低。为了解决上述问题,本文提出了一种用于错误报告的新自动分类方法。创新是,当对错误报告进行分类时,除了使用报告的文本信息外,还考虑了报告的意图(即建议或解释),从而提高了分类的性能。首先,我们从四个生态系统(Apache,Eclipse,Gentoo,Mozilla)收集错误报告,并手动注释它们以构建实验数据集。然后,我们使用自然语言处理技术来预处理数据。在此基础上,BERT和TF-IDF用于提取意图的功能和多个文本信息。最后,这些功能用于训练分类器。对五个分类器(包括k-nearest邻居,天真的贝叶斯,逻辑回归,支持向量机和随机森林)的实验结果表明,我们提出的方法可实现更好的性能,其F量度从87.3%达到95.5%。
translated by 谷歌翻译
Deep learning (DL) models of code have recently reported great progress for vulnerability detection. In some cases, DL-based models have outperformed static analysis tools. Although many great models have been proposed, we do not yet have a good understanding of these models. This limits the further advancement of model robustness, debugging, and deployment for the vulnerability detection. In this paper, we surveyed and reproduced 9 state-of-the-art (SOTA) deep learning models on 2 widely used vulnerability detection datasets: Devign and MSR. We investigated 6 research questions in three areas, namely model capabilities, training data, and model interpretation. We experimentally demonstrated the variability between different runs of a model and the low agreement among different models' outputs. We investigated models trained for specific types of vulnerabilities compared to a model that is trained on all the vulnerabilities at once. We explored the types of programs DL may consider "hard" to handle. We investigated the relations of training data sizes and training data composition with model performance. Finally, we studied model interpretations and analyzed important features that the models used to make predictions. We believe that our findings can help better understand model results, provide guidance on preparing training data, and improve the robustness of the models. All of our datasets, code, and results are available at https://figshare.com/s/284abfba67dba448fdc2.
translated by 谷歌翻译