首页 > 最新文献

软件产业与工程最新文献

英文 中文
Performing large-scale mining studies: from start to finish (tutorial) 执行大规模采矿研究:从头到尾(教程)
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3569448
Robert Dyer, Samuel W. Flint
Modern software engineering research often relies on mining open-source software repositories, to either provide motivation for their research problems and/or evaluation of the proposed approach. Mining ultra-large-scale software repositories is still a difficult task, requiring substantial expertise and access to significant hardware. Tools such as Boa can help researchers easily mine large numbers of open-source repositories. There has also recently been more of a push toward open science, with an emphasis on making replication packages available. Building such replication packages incurs additional workload for researchers. In this tutorial, we teach how to use the Boa infrastructure for mining software repository data. We leverage Boa’s VS Code IDE extension to help write and submit Boa queries, and also leverage Boa’s study template to show how researchers can more easily analyze the output from Boa and automatically produce a suitable replication package that is published on Zenodo.
现代软件工程研究经常依赖于挖掘开源软件存储库,为他们的研究问题和/或评估所提出的方法提供动力。挖掘超大型软件存储库仍然是一项艰巨的任务,需要大量的专业知识和重要的硬件。像Boa这样的工具可以帮助研究人员轻松地挖掘大量的开源存储库。最近也有更多的人在推动开放科学,重点是使复制包可用。构建这样的复制包会给研究人员带来额外的工作量。在本教程中,我们将介绍如何使用Boa基础设施来挖掘软件存储库数据。我们利用Boa的VS Code IDE扩展来帮助编写和提交Boa查询,并且还利用Boa的研究模板来展示研究人员如何更轻松地分析Boa的输出并自动生成在Zenodo上发布的合适的复制包。
{"title":"Performing large-scale mining studies: from start to finish (tutorial)","authors":"Robert Dyer, Samuel W. Flint","doi":"10.1145/3540250.3569448","DOIUrl":"https://doi.org/10.1145/3540250.3569448","url":null,"abstract":"Modern software engineering research often relies on mining open-source software repositories, to either provide motivation for their research problems and/or evaluation of the proposed approach. Mining ultra-large-scale software repositories is still a difficult task, requiring substantial expertise and access to significant hardware. Tools such as Boa can help researchers easily mine large numbers of open-source repositories. There has also recently been more of a push toward open science, with an emphasis on making replication packages available. Building such replication packages incurs additional workload for researchers. In this tutorial, we teach how to use the Boa infrastructure for mining software repository data. We leverage Boa’s VS Code IDE extension to help write and submit Boa queries, and also leverage Boa’s study template to show how researchers can more easily analyze the output from Boa and automatically produce a suitable replication package that is published on Zenodo.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"141 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84733290","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
This is your cue! assisting search behaviour with resource style properties 这是你的提示!使用资源样式属性协助搜索行为
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3558909
Deeksha M. Arya
When learning a software technology, programmers face a large variety of resources in different styles and catering to different requirements. Although search engines are helpful to filter relevant resources, programmers are still required to manually go through a number of resources before they find one pertinent to their needs. Prior work has largely concentrated on helping programmers find the precise location of relevant information within a resource. Our work focuses on helping programmers assess the pertinence of resources to differentiate between resources. We investigated how programmers find learning resources online via a diary and interview study, and observed that programmers use certain cues to determine whether to access a resource. Based on our findings, we investigate the extent to which we can support the cue-following process via a prototype tool. Our research supports programmers’ search behaviour for software technology learning resources to inform resource creators on important factors that programmers look for during their search.
在学习一种软件技术时,程序员要面对各种不同风格的资源,以满足不同的需求。尽管搜索引擎有助于过滤相关资源,但程序员仍然需要手动浏览大量资源,才能找到与他们的需求相关的资源。先前的工作主要集中在帮助程序员找到资源中相关信息的精确位置。我们的工作重点是帮助程序员评估资源的相关性,以区分不同的资源。我们通过日记和访谈研究调查了程序员如何在网上找到学习资源,并观察到程序员使用某些线索来决定是否访问资源。基于我们的发现,我们调查了我们可以通过原型工具支持线索跟踪过程的程度。我们的研究支持程序员对软件技术学习资源的搜索行为,以告知资源创建者程序员在搜索过程中寻找的重要因素。
{"title":"This is your cue! assisting search behaviour with resource style properties","authors":"Deeksha M. Arya","doi":"10.1145/3540250.3558909","DOIUrl":"https://doi.org/10.1145/3540250.3558909","url":null,"abstract":"When learning a software technology, programmers face a large variety of resources in different styles and catering to different requirements. Although search engines are helpful to filter relevant resources, programmers are still required to manually go through a number of resources before they find one pertinent to their needs. Prior work has largely concentrated on helping programmers find the precise location of relevant information within a resource. Our work focuses on helping programmers assess the pertinence of resources to differentiate between resources. We investigated how programmers find learning resources online via a diary and interview study, and observed that programmers use certain cues to determine whether to access a resource. Based on our findings, we investigate the extent to which we can support the cue-following process via a prototype tool. Our research supports programmers’ search behaviour for software technology learning resources to inform resource creators on important factors that programmers look for during their search.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"6 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84078013","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
An empirical study of log analysis at Microsoft 微软日志分析的实证研究
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3558963
Shilin He, Xu Zhang, Pinjia He, Yong Xu, Liqun Li, Yu Kang, Minghua Ma, Yining Wei, Yingnong Dang, S. Rajmohan, Qingwei Lin
Logs are crucial to the management and maintenance of software systems. In recent years, log analysis research has achieved notable progress on various topics such as log parsing and log-based anomaly detection. However, the real voices from front-line practitioners are seldom heard. For example, what are the pain points of log analysis in practice? In this work, we conduct a comprehensive survey study on log analysis at Microsoft. We collected feedback from 105 employees through a questionnaire of 13 questions and individual interviews with 12 employees. We summarize the format, scenario, method, tool, and pain points of log analysis. Additionally, by comparing the industrial practices with academic research, we discuss the gaps between academia and industry, and future opportunities on log analysis with four inspiring findings. Particularly, we observe a huge gap exists between log anomaly detection research and failure alerting practices regarding the goal, technique, efficiency, etc. Moreover, data-driven log parsing, which has been widely studied in recent research, can be alternatively achieved by simply logging template IDs during software development. We hope this paper could uncover the real needs of industrial practitioners and the unnoticed yet significant gap between industry and academia, and inspire interesting future directions that converge efforts from both sides.
日志对于软件系统的管理和维护至关重要。近年来,日志分析研究在日志解析、基于日志的异常检测等多个领域取得了显著进展。然而,来自一线从业者的真实声音却很少被听到。例如,在实践中日志分析的痛点是什么?在这项工作中,我们对微软公司的日志分析进行了全面的调查研究。我们通过13个问题的问卷调查和对12名员工的单独访谈,收集了105名员工的反馈。我们总结了日志分析的格式、场景、方法、工具和痛点。此外,通过比较工业实践和学术研究,我们讨论了学术界和工业界之间的差距,以及未来log分析的机会,并得出了四个鼓舞人心的发现。特别是在目标、技术、效率等方面,测井异常检测研究与故障预警实践存在着巨大的差距。此外,数据驱动的日志解析(在最近的研究中得到了广泛的研究)也可以通过在软件开发期间简单地记录模板id来实现。我们希望本文能够揭示行业从业者的真实需求,以及产学研之间未被注意到的重大差距,并激发双方共同努力的有趣未来方向。
{"title":"An empirical study of log analysis at Microsoft","authors":"Shilin He, Xu Zhang, Pinjia He, Yong Xu, Liqun Li, Yu Kang, Minghua Ma, Yining Wei, Yingnong Dang, S. Rajmohan, Qingwei Lin","doi":"10.1145/3540250.3558963","DOIUrl":"https://doi.org/10.1145/3540250.3558963","url":null,"abstract":"Logs are crucial to the management and maintenance of software systems. In recent years, log analysis research has achieved notable progress on various topics such as log parsing and log-based anomaly detection. However, the real voices from front-line practitioners are seldom heard. For example, what are the pain points of log analysis in practice? In this work, we conduct a comprehensive survey study on log analysis at Microsoft. We collected feedback from 105 employees through a questionnaire of 13 questions and individual interviews with 12 employees. We summarize the format, scenario, method, tool, and pain points of log analysis. Additionally, by comparing the industrial practices with academic research, we discuss the gaps between academia and industry, and future opportunities on log analysis with four inspiring findings. Particularly, we observe a huge gap exists between log anomaly detection research and failure alerting practices regarding the goal, technique, efficiency, etc. Moreover, data-driven log parsing, which has been widely studied in recent research, can be alternatively achieved by simply logging template IDs during software development. We hope this paper could uncover the real needs of industrial practitioners and the unnoticed yet significant gap between industry and academia, and inspire interesting future directions that converge efforts from both sides.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"13 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73281592","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Static executes-before analysis for event driven programs 静态执行-在分析事件驱动程序之前
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3549116
Rekha R. Pai, Abhishek Uppar, Akshatha Shenoy, Pranshul Kushwaha, D. D'Souza
The executes-before relation between tasks is fundamental in the analysis of Event Driven Programs with several downstream applications like race detection and identifying redundant synchronizations. We present a sound, efficient, and effective static analysis technique to compute executes-before pairs of tasks for a general class of event driven programs. The analysis is based on a small but comprehensive set of rules evaluated on a novel structure called the task post graph of a program. We show how to use the executes-before information to identify disjoint-blocks in event driven programs and further use them to improve the precision of data race detection for these programs. We have implemented our analysis in the Flowdroid framework in a tool called AndRacer and evaluated it on several Android apps, bringing out the scalability, recall, and improved precision of the analyses
任务之间的“先执行后执行”关系是分析带有几个下游应用程序(如竞争检测和识别冗余同步)的事件驱动程序的基础。我们提出了一种可靠、高效和有效的静态分析技术,用于计算一类事件驱动程序的前置执行任务对。分析是基于一套小而全面的规则,在一种称为程序任务岗位图的新结构上进行评估。我们将展示如何使用execute -before信息来识别事件驱动程序中的不连接块,并进一步使用它们来提高这些程序的数据争用检测的精度。我们已经在Flowdroid框架中的一个名为AndRacer的工具中实现了我们的分析,并在几个Android应用程序上进行了评估,带来了可扩展性,召回率和提高的分析精度
{"title":"Static executes-before analysis for event driven programs","authors":"Rekha R. Pai, Abhishek Uppar, Akshatha Shenoy, Pranshul Kushwaha, D. D'Souza","doi":"10.1145/3540250.3549116","DOIUrl":"https://doi.org/10.1145/3540250.3549116","url":null,"abstract":"The executes-before relation between tasks is fundamental in the analysis of Event Driven Programs with several downstream applications like race detection and identifying redundant synchronizations. We present a sound, efficient, and effective static analysis technique to compute executes-before pairs of tasks for a general class of event driven programs. The analysis is based on a small but comprehensive set of rules evaluated on a novel structure called the task post graph of a program. We show how to use the executes-before information to identify disjoint-blocks in event driven programs and further use them to improve the precision of data race detection for these programs. We have implemented our analysis in the Flowdroid framework in a tool called AndRacer and evaluated it on several Android apps, bringing out the scalability, recall, and improved precision of the analyses","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"47 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85596315","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
On the vulnerability proneness of multilingual code 多语言代码的脆弱性研究
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3549173
Wen Li, Li Li, Haipeng Cai
Software construction using multiple languages has long been a norm, yet it is still unclear if multilingual code construction has significant security implications and real security consequences. This paper aims to address this question with a large-scale study of popular multi-language projects on GitHub and their evolution histories, enabled by our novel techniques for multilingual code characterization. We found statistically significant associations between the proneness of multilingual code to vulnerabilities (in general and of specific categories) and its language selection. We also found this association is correlated with that of the language interfacing mechanism, not that of individual languages. We validated our statistical findings with in-depth case studies on actual vulnerabilities, explained via the mechanism and language selection. Our results call for immediate actions to assess and defend against multilingual vulnerabilities, for which we provide practical recommendations.
长期以来,使用多种语言构建软件一直是一种规范,然而,多语言代码构建是否具有重要的安全含义和真正的安全后果仍然不清楚。本文旨在通过对GitHub上流行的多语言项目及其演变历史的大规模研究来解决这个问题,并通过我们的多语言代码表征新技术实现。我们发现多语言代码的脆弱性(一般和特定类别)与其语言选择之间存在统计学上显著的关联。我们还发现,这种关联与语言接口机制相关,而不是与单个语言相关。我们通过对实际漏洞的深入案例研究验证了我们的统计结果,并通过机制和语言选择进行了解释。我们的研究结果要求立即采取行动,评估和防范多语言脆弱性,为此我们提供了切实可行的建议。
{"title":"On the vulnerability proneness of multilingual code","authors":"Wen Li, Li Li, Haipeng Cai","doi":"10.1145/3540250.3549173","DOIUrl":"https://doi.org/10.1145/3540250.3549173","url":null,"abstract":"Software construction using multiple languages has long been a norm, yet it is still unclear if multilingual code construction has significant security implications and real security consequences. This paper aims to address this question with a large-scale study of popular multi-language projects on GitHub and their evolution histories, enabled by our novel techniques for multilingual code characterization. We found statistically significant associations between the proneness of multilingual code to vulnerabilities (in general and of specific categories) and its language selection. We also found this association is correlated with that of the language interfacing mechanism, not that of individual languages. We validated our statistical findings with in-depth case studies on actual vulnerabilities, explained via the mechanism and language selection. Our results call for immediate actions to assess and defend against multilingual vulnerabilities, for which we provide practical recommendations.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"28 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77916464","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
SPINE: a scalable log parser with feedback guidance SPINE:带有反馈指导的可伸缩日志解析器
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3549176
Xuheng Wang, Xu Zhang, Liqun Li, Shilin He, Hongyu Zhang, Yudong Liu, Ling Zheng, Yu Kang, Qingwei Lin, Yingnong Dang, S. Rajmohan, Dongmei Zhang
Log parsing, which extracts log templates and parameters, is a critical prerequisite step for automated log analysis techniques. Though existing log parsers have achieved promising accuracy on public log datasets, they still face many challenges when applied in the industry. Through studying the characteristics of real-world log data and analyzing the limitations of existing log parsers, we identify two problems. Firstly, it is non-trivial to scale a log parser to a vast number of logs, especially in real-world scenarios where the log data is extremely imbalanced. Secondly, existing log parsers overlook the importance of user feedback, which is imperative for parser fine-tuning under the continuous evolution of log data. To overcome the challenges, we propose SPINE, which is a highly scalable log parser with user feedback guidance. Based on our log parser equipped with initial grouping and progressive clustering,we propose a novel log data scheduling algorithm to improve the efficiency of parallelization under the large-scale imbalanced log data. Besides, we introduce user feedback to make the parser fast adapt to the evolving logs. We evaluated SPINE on 16 public log datasets. SPINE achieves more than 0.90 parsing accuracy on average with the highest parsing efficiency, which outperforms the state-of-the-art log parsers. We also evaluated SPINE in the production environment of Microsoft, in which SPINE can parse 30million logs in less than 8 minutes under 16 executors, achieving near real-time performance. In addition, our evaluations show that SPINE can consistently achieve good accuracy under log evolution with a moderate number of user feedback.
日志解析提取日志模板和参数,是自动化日志分析技术的关键先决步骤。尽管现有的日志解析器已经在公共日志数据集上取得了很好的准确性,但在行业应用时仍然面临许多挑战。通过研究真实日志数据的特点和分析现有日志解析器的局限性,我们发现了两个问题。首先,将日志解析器扩展到大量日志是非常重要的,特别是在日志数据极度不平衡的实际场景中。其次,现有的日志解析器忽略了用户反馈的重要性,而用户反馈对于解析器在日志数据不断变化的情况下进行微调是必不可少的。为了克服这些挑战,我们提出了SPINE,它是一个具有用户反馈指导的高度可扩展的日志解析器。基于初始分组和渐进式聚类的日志解析器,提出了一种新的日志数据调度算法,以提高大规模不平衡日志数据下的并行化效率。此外,我们还引入了用户反馈,使解析器能够快速适应不断变化的日志。我们在16个公共日志数据集上评估了SPINE。SPINE平均解析精度超过0.90,解析效率最高,优于最先进的日志解析器。我们还在Microsoft的生产环境中评估了SPINE,在该环境中,SPINE可以在16个执行器下在不到8分钟的时间内解析3000万个日志,实现了接近实时的性能。此外,我们的评估表明,在日志演化和适度的用户反馈下,SPINE可以始终保持良好的准确性。
{"title":"SPINE: a scalable log parser with feedback guidance","authors":"Xuheng Wang, Xu Zhang, Liqun Li, Shilin He, Hongyu Zhang, Yudong Liu, Ling Zheng, Yu Kang, Qingwei Lin, Yingnong Dang, S. Rajmohan, Dongmei Zhang","doi":"10.1145/3540250.3549176","DOIUrl":"https://doi.org/10.1145/3540250.3549176","url":null,"abstract":"Log parsing, which extracts log templates and parameters, is a critical prerequisite step for automated log analysis techniques. Though existing log parsers have achieved promising accuracy on public log datasets, they still face many challenges when applied in the industry. Through studying the characteristics of real-world log data and analyzing the limitations of existing log parsers, we identify two problems. Firstly, it is non-trivial to scale a log parser to a vast number of logs, especially in real-world scenarios where the log data is extremely imbalanced. Secondly, existing log parsers overlook the importance of user feedback, which is imperative for parser fine-tuning under the continuous evolution of log data. To overcome the challenges, we propose SPINE, which is a highly scalable log parser with user feedback guidance. Based on our log parser equipped with initial grouping and progressive clustering,we propose a novel log data scheduling algorithm to improve the efficiency of parallelization under the large-scale imbalanced log data. Besides, we introduce user feedback to make the parser fast adapt to the evolving logs. We evaluated SPINE on 16 public log datasets. SPINE achieves more than 0.90 parsing accuracy on average with the highest parsing efficiency, which outperforms the state-of-the-art log parsers. We also evaluated SPINE in the production environment of Microsoft, in which SPINE can parse 30million logs in less than 8 minutes under 16 executors, achieving near real-time performance. In addition, our evaluations show that SPINE can consistently achieve good accuracy under log evolution with a moderate number of user feedback.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"129 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79187615","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 18
FastKLEE: faster symbolic execution via reducing redundant bound checking of type-safe pointers FastKLEE:通过减少对类型安全指针的冗余边界检查来加快符号执行
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3558919
Haoxin Tu, Lingxiao Jiang, Xuhua Ding, He Jiang
Symbolic execution (SE) has been widely adopted for automatic program analysis and software testing. Many SE engines (e.g., KLEE or Angr) need to interpret certain Intermediate Representations (IR) of code during execution, which may be slow and costly. Although a plurality of studies proposed to accelerate SE, few of them consider optimizing the internal interpretation operations. In this paper, we propose FastKLEE, a faster SE engine that aims to speed up execution via reducing redundant bound checking of type-safe pointers during IR code interpretation. Specifically, in FastKLEE, a type inference system is first leveraged to classify pointer types (i.e., safe or unsafe) for the most frequently interpreted read/write instructions. Then, a customized memory operation is designed to perform bound checking for only the unsafe pointers and omit redundant checking on safe pointers. We implement FastKLEE on top of the well-known SE engine KLEE and combined it with the notable type inference system CCured. Evaluation results demonstrate that FastKLEE is able to reduce by up to 9.1% (5.6% on average) as the state-of-the-art approach KLEE in terms of the time to explore the same number (i.e., 10k) of execution paths. FastKLEE is opensourced at https://github.com/haoxintu/FastKLEE. A video demo of FastKLEE is available at https://youtu.be/fjV_a3kt-mo.
符号执行在自动程序分析和软件测试中得到了广泛的应用。许多SE引擎(例如,KLEE或Angr)需要在执行期间解释代码的某些中间表示(IR),这可能很慢且代价高昂。虽然有许多研究提出要加快翻译速度,但很少有人考虑优化内部解释操作。在本文中,我们提出了FastKLEE,一个更快的SE引擎,旨在通过减少在IR代码解释期间对类型安全指针的冗余边界检查来加快执行速度。具体来说,在FastKLEE中,首先利用类型推断系统对最常被解释的读/写指令的指针类型(即安全或不安全)进行分类。然后,设计一个自定义内存操作,仅对不安全指针执行绑定检查,而忽略对安全指针的冗余检查。我们在著名的SE引擎KLEE的基础上实现了FastKLEE,并将其与著名的类型推理系统ccure相结合。评估结果表明,在探索相同数量(即10k)执行路径的时间方面,FastKLEE作为最先进的方法,能够减少高达9.1%(平均5.6%)。FastKLEE的开源地址是https://github.com/haoxintu/FastKLEE。FastKLEE的视频演示可以在https://youtu.be/fjV_a3kt-mo上找到。
{"title":"FastKLEE: faster symbolic execution via reducing redundant bound checking of type-safe pointers","authors":"Haoxin Tu, Lingxiao Jiang, Xuhua Ding, He Jiang","doi":"10.1145/3540250.3558919","DOIUrl":"https://doi.org/10.1145/3540250.3558919","url":null,"abstract":"Symbolic execution (SE) has been widely adopted for automatic program analysis and software testing. Many SE engines (e.g., KLEE or Angr) need to interpret certain Intermediate Representations (IR) of code during execution, which may be slow and costly. Although a plurality of studies proposed to accelerate SE, few of them consider optimizing the internal interpretation operations. In this paper, we propose FastKLEE, a faster SE engine that aims to speed up execution via reducing redundant bound checking of type-safe pointers during IR code interpretation. Specifically, in FastKLEE, a type inference system is first leveraged to classify pointer types (i.e., safe or unsafe) for the most frequently interpreted read/write instructions. Then, a customized memory operation is designed to perform bound checking for only the unsafe pointers and omit redundant checking on safe pointers. We implement FastKLEE on top of the well-known SE engine KLEE and combined it with the notable type inference system CCured. Evaluation results demonstrate that FastKLEE is able to reduce by up to 9.1% (5.6% on average) as the state-of-the-art approach KLEE in terms of the time to explore the same number (i.e., 10k) of execution paths. FastKLEE is opensourced at https://github.com/haoxintu/FastKLEE. A video demo of FastKLEE is available at https://youtu.be/fjV_a3kt-mo.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"3 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72833744","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
The evolution of type annotations in python: an empirical study python中类型注释的演变:一个实证研究
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3549114
L. Grazia, Michael Pradel
Type annotations and gradual type checkers attempt to reveal errors and facilitate maintenance in dynamically typed programming languages. Despite the availability of these features and tools, it is currently unclear how quickly developers are adopting them, what strategies they follow when doing so, and whether adding type annotations reveals more type errors. This paper presents the first large-scale empirical study of the evolution of type annotations and type errors in Python. The study is based on an analysis of 1,414,936 type annotation changes, which we extract from 1,123,393 commits among 9,655 projects. Our results show that (i) type annotations are getting more popular, and once added, often remain unchanged in the projects for a long time, (ii) projects follow three evolution patterns for type annotation usage -- regular annotation, type sprints, and occasional uses -- and that the used pattern correlates with the number of contributors, (iii) more type annotations help find more type errors (0.704 correlation), but nevertheless, many commits (78.3%) are committed despite having such errors. Our findings show that better developer training and automated techniques for adding type annotations are needed, as most code still remains unannotated, and they call for a better integration of gradual type checking into the development process.
在动态类型编程语言中,类型注释和渐进式类型检查器试图揭示错误并促进维护。尽管这些特性和工具是可用的,但目前还不清楚开发人员采用它们的速度有多快,采用时遵循什么策略,以及添加类型注释是否会暴露更多类型错误。本文首次对Python中类型注释和类型错误的演变进行了大规模的实证研究。该研究基于对1,414,936个类型注释更改的分析,这些更改来自9,655个项目中的1,123,393个提交。我们的结果表明:(i)类型注释越来越流行,一旦添加,通常在项目中保持很长一段时间不变;(ii)项目遵循三种类型注释使用的演变模式——常规注释、类型冲刺和偶尔使用——所使用的模式与贡献者的数量相关;(iii)更多的类型注释有助于发现更多的类型错误(相关性为0.704),但尽管有这些错误,仍然提交了许多(78.3%)。我们的研究结果表明,需要更好的开发人员培训和自动化技术来添加类型注释,因为大多数代码仍然没有注释,并且需要更好地将渐进式类型检查集成到开发过程中。
{"title":"The evolution of type annotations in python: an empirical study","authors":"L. Grazia, Michael Pradel","doi":"10.1145/3540250.3549114","DOIUrl":"https://doi.org/10.1145/3540250.3549114","url":null,"abstract":"Type annotations and gradual type checkers attempt to reveal errors and facilitate maintenance in dynamically typed programming languages. Despite the availability of these features and tools, it is currently unclear how quickly developers are adopting them, what strategies they follow when doing so, and whether adding type annotations reveals more type errors. This paper presents the first large-scale empirical study of the evolution of type annotations and type errors in Python. The study is based on an analysis of 1,414,936 type annotation changes, which we extract from 1,123,393 commits among 9,655 projects. Our results show that (i) type annotations are getting more popular, and once added, often remain unchanged in the projects for a long time, (ii) projects follow three evolution patterns for type annotation usage -- regular annotation, type sprints, and occasional uses -- and that the used pattern correlates with the number of contributors, (iii) more type annotations help find more type errors (0.704 correlation), but nevertheless, many commits (78.3%) are committed despite having such errors. Our findings show that better developer training and automated techniques for adding type annotations are needed, as most code still remains unannotated, and they call for a better integration of gradual type checking into the development process.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"143 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74034077","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
Effective and scalable fault injection using bug reports and generative language models 使用bug报告和生成语言模型的有效和可伸缩的故障注入
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3558907
Ahmed Khanfir
Previous research has shown that artificial faults can be useful in many software engineering tasks such as testing, fault-tolerance assessment, debugging, dependability evaluation, risk analysis, etc. However, such artificial-fault-based applications can be questioned or inaccurate when the considered faults misrepresent real bugs. Since typically, fault injection techniques (i.e. mutation testing) produce a large number of faults by altering ”blindly” the code in arbitrary locations, they are unlikely capable to produce few but relevant real-like faults. In our work, we tackle this challenge by guiding the injection towards resembling bugs that have been previously introduced by developers. For this purpose, we propose iBiR, the first fault injection approach that leverages information from bug reports to inject ”realistic” faults. iBiR injects faults on the locations that are more likely to be related to a given bug-report by applying appropriate inverted fix-patterns, which are manually or automatically crafted by automated-program-repair researchers. We assess our approach using bugs from the Defects4J dataset and show that iBiR outperforms significantly conventional mutation testing in terms of injecting faults that semantically resemble and couple with real ones, in the vast majority of the cases. Similarly, the faults produced by iBiR give significantly better fault-tolerance estimates than conventional mutation testing in around 80% of the cases.
以往的研究表明,人为故障在许多软件工程任务中都是有用的,如测试、容错评估、调试、可靠性评估、风险分析等。然而,当所考虑的错误错误地表示真正的错误时,这种基于人为错误的应用程序可能会受到质疑或不准确。由于典型的故障注入技术(即突变测试)通过在任意位置“盲目地”改变代码而产生大量故障,因此它们不太可能产生少量但相关的真实故障。在我们的工作中,我们通过引导注入类似于开发人员之前引入的错误来解决这一挑战。为此,我们提出了iBiR,这是第一种利用bug报告中的信息来注入“实际的”错误的错误注入方法。iBiR通过应用适当的反向修复模式(由自动程序修复研究人员手动或自动制作),将错误注入到更可能与给定错误报告相关的位置。我们使用来自缺陷4j数据集的错误来评估我们的方法,并显示在绝大多数情况下,iBiR在注入语义上与真实错误相似并耦合的错误方面明显优于传统的突变测试。同样,在大约80%的病例中,iBiR产生的错误比传统突变测试提供了更好的容错性估计。
{"title":"Effective and scalable fault injection using bug reports and generative language models","authors":"Ahmed Khanfir","doi":"10.1145/3540250.3558907","DOIUrl":"https://doi.org/10.1145/3540250.3558907","url":null,"abstract":"Previous research has shown that artificial faults can be useful in many software engineering tasks such as testing, fault-tolerance assessment, debugging, dependability evaluation, risk analysis, etc. However, such artificial-fault-based applications can be questioned or inaccurate when the considered faults misrepresent real bugs. Since typically, fault injection techniques (i.e. mutation testing) produce a large number of faults by altering ”blindly” the code in arbitrary locations, they are unlikely capable to produce few but relevant real-like faults. In our work, we tackle this challenge by guiding the injection towards resembling bugs that have been previously introduced by developers. For this purpose, we propose iBiR, the first fault injection approach that leverages information from bug reports to inject ”realistic” faults. iBiR injects faults on the locations that are more likely to be related to a given bug-report by applying appropriate inverted fix-patterns, which are manually or automatically crafted by automated-program-repair researchers. We assess our approach using bugs from the Defects4J dataset and show that iBiR outperforms significantly conventional mutation testing in terms of injecting faults that semantically resemble and couple with real ones, in the vast majority of the cases. Similarly, the faults produced by iBiR give significantly better fault-tolerance estimates than conventional mutation testing in around 80% of the cases.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"41 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74095164","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Do bugs lead to unnaturalness of source code? bug会导致源代码的不自然吗?
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3549149
Yanjie Jiang, Hui Liu, Yuxia Zhang, Weixing Ji, Hao Zhong, Lu Zhang
Texts in natural languages are highly repetitive and predictable because of the naturalness of natural languages. Recent research validated that source code in programming languages is also repetitive and predictable, and naturalness is an inherent property of source code. It was also reported that buggy code is significantly less natural than bug-free one, and bug fixing substantially improves the naturalness of the involved source code. In this paper, we revisit the naturalness of buggy code and investigate the effect of bug-fixing on the naturalness of source code. Different from the existing investigation, we leverage two large-scale and high-quality bug repositories where bug-irrelevant changes in bug-fixing commits have been explicitly excluded. Our evaluation results confirm that buggy lines are often less natural than bug-free ones. However, fixing bugs could not significantly improve the naturalness of involved code lines. Fixed lines on average are as unnatural as buggy ones. Consequently, bugs are not the root cause of the unnaturalness of source code, and it could be inaccurate to identify buggy code lines solely by the naturalness of source code. Our evaluation results suggest that the naturalness-based buggy line detection results in extremely low precision (less than one percentage).
由于自然语言的自然性,自然语言文本具有高度的重复性和可预测性。最近的研究证实,编程语言中的源代码也具有重复性和可预测性,而自然性是源代码的固有属性。还有报道称,有bug的代码明显不如没有bug的代码自然,而bug修复实质上提高了相关源代码的自然度。在本文中,我们重新审视了错误代码的自然性,并研究了错误修复对源代码自然性的影响。与现有的调查不同,我们利用了两个大规模和高质量的错误存储库,其中错误修复提交中与错误无关的更改已被明确排除在外。我们的评估结果证实,有bug的行通常不如没有bug的行自然。然而,修复bug并不能显著提高相关代码行的自然度。一般来说,固定线路和有bug的线路一样不自然。因此,bug并不是源代码不自然的根本原因,仅仅通过源代码的自然性来识别有bug的代码行可能是不准确的。我们的评估结果表明,基于自然度的错误线检测结果精度极低(不到一个百分比)。
{"title":"Do bugs lead to unnaturalness of source code?","authors":"Yanjie Jiang, Hui Liu, Yuxia Zhang, Weixing Ji, Hao Zhong, Lu Zhang","doi":"10.1145/3540250.3549149","DOIUrl":"https://doi.org/10.1145/3540250.3549149","url":null,"abstract":"Texts in natural languages are highly repetitive and predictable because of the naturalness of natural languages. Recent research validated that source code in programming languages is also repetitive and predictable, and naturalness is an inherent property of source code. It was also reported that buggy code is significantly less natural than bug-free one, and bug fixing substantially improves the naturalness of the involved source code. In this paper, we revisit the naturalness of buggy code and investigate the effect of bug-fixing on the naturalness of source code. Different from the existing investigation, we leverage two large-scale and high-quality bug repositories where bug-irrelevant changes in bug-fixing commits have been explicitly excluded. Our evaluation results confirm that buggy lines are often less natural than bug-free ones. However, fixing bugs could not significantly improve the naturalness of involved code lines. Fixed lines on average are as unnatural as buggy ones. Consequently, bugs are not the root cause of the unnaturalness of source code, and it could be inaccurate to identify buggy code lines solely by the naturalness of source code. Our evaluation results suggest that the naturalness-based buggy line detection results in extremely low precision (less than one percentage).","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"331 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77595836","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
期刊
软件产业与工程
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1