首页 > 最新文献

软件产业与工程最新文献

英文 中文
Asynchronous technical interviews: reducing the effect of supervised think-aloud on communication ability 异步技术面试:减少监督下的大声思考对沟通能力的影响
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3549168
Mahnaz Behroozi, Chris Parnin, Chris Brown
Software engineers often face a critical test before landing a job—passing a technical interview. During these sessions, candidates must write code while thinking aloud as they work toward a solution to a problem under the watchful eye of an interviewer. While thinking aloud during technical interviews gives interviewers a picture of candidates’ problem-solving ability, surprisingly, these types of interviews often prevent candidates from communicating their thought process effectively. To understand if poor performance related to interviewer presence can be reduced while preserving communication and technical skills, we introduce asynchronous technical interviews—where candidates submit recordings of think-aloud and coding. We compare this approach to traditional whiteboard interviews and find that, by eliminating interviewer supervision, asynchronicity significantly improved the clarity of think-aloud via increased informativeness and reduced stress. Moreover, we discovered asynchronous technical interviews preserved, and in some cases even enhanced, technical problem-solving strategies and code quality. This work offers insight into asynchronous technical interviews as a design for supporting communication during interviews, and discusses trade-offs and guidelines for implementing this approach in software engineering hiring practices.
软件工程师在找到一份工作之前通常要面临一项关键的测试——通过技术面试。在这些环节中,应试者必须一边写代码,一边在面试官的注视下思考问题的解决方案。虽然在技术面试中大声思考可以让面试官了解候选人解决问题的能力,但令人惊讶的是,这些类型的面试往往会阻止候选人有效地交流他们的思维过程。为了了解是否可以在保留沟通和技术技能的同时减少与面试官在场有关的不良表现,我们引入了异步技术面试——候选人提交了思考和编码的录音。我们将这种方法与传统的白板面试进行了比较,发现通过消除面试官的监督,异步性通过增加信息量和减少压力,显著提高了大声思考的清晰度。此外,我们发现异步技术访谈保留了,在某些情况下甚至增强了技术问题解决策略和代码质量。这项工作提供了异步技术面试作为一种支持面试期间沟通的设计的洞察力,并讨论了在软件工程招聘实践中实现这种方法的权衡和指导方针。
{"title":"Asynchronous technical interviews: reducing the effect of supervised think-aloud on communication ability","authors":"Mahnaz Behroozi, Chris Parnin, Chris Brown","doi":"10.1145/3540250.3549168","DOIUrl":"https://doi.org/10.1145/3540250.3549168","url":null,"abstract":"Software engineers often face a critical test before landing a job—passing a technical interview. During these sessions, candidates must write code while thinking aloud as they work toward a solution to a problem under the watchful eye of an interviewer. While thinking aloud during technical interviews gives interviewers a picture of candidates’ problem-solving ability, surprisingly, these types of interviews often prevent candidates from communicating their thought process effectively. To understand if poor performance related to interviewer presence can be reduced while preserving communication and technical skills, we introduce asynchronous technical interviews—where candidates submit recordings of think-aloud and coding. We compare this approach to traditional whiteboard interviews and find that, by eliminating interviewer supervision, asynchronicity significantly improved the clarity of think-aloud via increased informativeness and reduced stress. Moreover, we discovered asynchronous technical interviews preserved, and in some cases even enhanced, technical problem-solving strategies and code quality. This work offers insight into asynchronous technical interviews as a design for supporting communication during interviews, and discusses trade-offs and guidelines for implementing this approach in software engineering hiring practices.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"40 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84225166","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
Are elevator software robust against uncertainties? results and experiences from an industrial case study 电梯软件对不确定性是否稳健?一个工业案例研究的结果和经验
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3558955
Liping Han, T. Yue, Sajid Ali, Aitor Arrieta, Maite Arratibel
Industrial elevator systems are complex Cyber-Physical Systems operating in uncertain environments and experiencing uncertain passenger behaviors, hardware delays, and software errors. Identifying, understanding, and classifying such uncertainties are essential to enable system designers to reason about uncertainties and subsequently develop solutions for empowering elevator systems to deal with uncertainties systematically. To this end, we present a method, called RuCynefin, based on the Cynefin framework to classify uncertainties in industrial elevator systems from our industrial partner (Orona, Spain), results of which can then be used for assessing their robustness. RuCynefin is equipped with a novel classification algorithm to identify the Cynefin contexts for a variety of uncertainties in industrial elevator systems, and a novel metric for measuring the robustness using the uncertainty classification. We evaluated RuCynefin with an industrial case study of 90 dispatchers from Orona to assess their robustness against uncertainties. Results show that RuCynefin could effectively identify several situations for which certain dispatchers were not robust. Specifically, 93% of such versions showed some degree of low robustness against uncertainties. We also provide insights on the potential practical usages of RuCynefin, which are useful for practitioners in this field.
工业电梯系统是复杂的信息物理系统,在不确定的环境中运行,经历不确定的乘客行为、硬件延迟和软件错误。识别、理解和分类这些不确定性对于系统设计者推理不确定性并随后开发解决方案以使电梯系统系统地处理不确定性至关重要。为此,我们提出了一种基于Cynefin框架的方法,称为RuCynefin,用于对来自我们的工业合作伙伴(西班牙Orona)的工业电梯系统中的不确定性进行分类,其结果可用于评估其稳健性。RuCynefin采用了一种新的分类算法来识别工业电梯系统中各种不确定性的Cynefin上下文,并采用一种新的度量方法来测量不确定性分类的鲁棒性。我们用来自Orona的90个调度员的工业案例研究来评估RuCynefin,以评估其对不确定性的稳健性。结果表明,RuCynefin可以有效地识别某些调度员不鲁棒的几种情况。具体而言,93%的此类版本对不确定性的鲁棒性表现出一定程度的低。我们还提供了RuCynefin潜在实际用途的见解,这对该领域的从业者很有用。
{"title":"Are elevator software robust against uncertainties? results and experiences from an industrial case study","authors":"Liping Han, T. Yue, Sajid Ali, Aitor Arrieta, Maite Arratibel","doi":"10.1145/3540250.3558955","DOIUrl":"https://doi.org/10.1145/3540250.3558955","url":null,"abstract":"Industrial elevator systems are complex Cyber-Physical Systems operating in uncertain environments and experiencing uncertain passenger behaviors, hardware delays, and software errors. Identifying, understanding, and classifying such uncertainties are essential to enable system designers to reason about uncertainties and subsequently develop solutions for empowering elevator systems to deal with uncertainties systematically. To this end, we present a method, called RuCynefin, based on the Cynefin framework to classify uncertainties in industrial elevator systems from our industrial partner (Orona, Spain), results of which can then be used for assessing their robustness. RuCynefin is equipped with a novel classification algorithm to identify the Cynefin contexts for a variety of uncertainties in industrial elevator systems, and a novel metric for measuring the robustness using the uncertainty classification. We evaluated RuCynefin with an industrial case study of 90 dispatchers from Orona to assess their robustness against uncertainties. Results show that RuCynefin could effectively identify several situations for which certain dispatchers were not robust. Specifically, 93% of such versions showed some degree of low robustness against uncertainties. We also provide insights on the potential practical usages of RuCynefin, which are useful for practitioners in this field.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"7 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83974428","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}
引用次数: 9
Sentiment in software engineering: detection and application 软件工程中的情感:检测与应用
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3558908
Nathan Cassee
In software engineering the role of human aspects is an important one, especially as developers indicate that they experience a wide range of emotions while developing software. Within software engineering researchers have sought to understand the role emotions and sentiment play in the development of software by studying issues, pull-requests and commit messages. To detect sentiment, automated tools are used, and in this doctoral thesis we plan to study the use of these sentiment analysis tools, their applications, best practices for their usage and the effect of non-natural language on their performance. In addition to studying the application of sentiment analysis tools, we also aim to study self-admitted technical debt and bots in software engineering, to understand why developers express sentiment and what they signal when they express sentiment. Through studying both the application of sentiment analysis tools and the role of sentiment in software engineering, we hope to provide practical recommendations for both researchers and developers.
在软件工程中,人的方面是一个重要的角色,特别是当开发人员表示他们在开发软件时经历了广泛的情感时。在软件工程领域,研究人员试图通过研究问题、拉取请求和提交消息来理解情感和情感在软件开发中的作用。为了检测情感,使用了自动化工具,在这篇博士论文中,我们计划研究这些情感分析工具的使用、它们的应用、它们的使用最佳实践以及非自然语言对它们性能的影响。除了研究情感分析工具的应用之外,我们还旨在研究软件工程中自我承认的技术债务和机器人,以了解开发人员为什么表达情感以及他们表达情感时发出的信号。通过研究情感分析工具的应用和情感在软件工程中的作用,我们希望为研究人员和开发人员提供实用的建议。
{"title":"Sentiment in software engineering: detection and application","authors":"Nathan Cassee","doi":"10.1145/3540250.3558908","DOIUrl":"https://doi.org/10.1145/3540250.3558908","url":null,"abstract":"In software engineering the role of human aspects is an important one, especially as developers indicate that they experience a wide range of emotions while developing software. Within software engineering researchers have sought to understand the role emotions and sentiment play in the development of software by studying issues, pull-requests and commit messages. To detect sentiment, automated tools are used, and in this doctoral thesis we plan to study the use of these sentiment analysis tools, their applications, best practices for their usage and the effect of non-natural language on their performance. In addition to studying the application of sentiment analysis tools, we also aim to study self-admitted technical debt and bots in software engineering, to understand why developers express sentiment and what they signal when they express sentiment. Through studying both the application of sentiment analysis tools and the role of sentiment in software engineering, we hope to provide practical recommendations for both researchers and developers.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"39 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82236657","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
RESTInfer: automated inferring parameter constraints from natural language RESTful API descriptions RESTInfer:从自然语言RESTful API描述中自动推断参数约束
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3559078
Yi Liu
RESTful APIs have been applied to provide cloud services by various notable companies. The quality assurance of RESTful API is critical. Several automatic RESTful API testing techniques have been proposed to tame this issue. By analyzing crashes caused by each test case, developers can find potential bugs in cloud services. However, it is difficult for automated tools to generate feasible parameters under complicating constraints randomly. Fortunately, RESTful API descriptions can be used to infer possible parameter constraints. Given parameter constraints, automated tools can further improve the efficiency of testing. In this paper, we propose RESTInfer, a two-phase approach to infer parameter constraints by natural language processing. The preliminary evaluation result shows that RESTInfer can achieve a high code coverage and bug finding.
RESTful api已经被许多著名的公司应用于提供云服务。RESTful API的质量保证至关重要。为了解决这个问题,已经提出了几种自动RESTful API测试技术。通过分析每个测试用例导致的崩溃,开发人员可以发现云服务中的潜在错误。然而,自动化工具很难在复杂的约束条件下随机生成可行参数。幸运的是,RESTful API描述可以用来推断可能的参数约束。给定参数约束,自动化工具可以进一步提高测试的效率。在本文中,我们提出了RESTInfer,这是一种通过自然语言处理推断参数约束的两阶段方法。初步的评估结果表明RESTInfer可以达到较高的代码覆盖率和bug发现率。
{"title":"RESTInfer: automated inferring parameter constraints from natural language RESTful API descriptions","authors":"Yi Liu","doi":"10.1145/3540250.3559078","DOIUrl":"https://doi.org/10.1145/3540250.3559078","url":null,"abstract":"RESTful APIs have been applied to provide cloud services by various notable companies. The quality assurance of RESTful API is critical. Several automatic RESTful API testing techniques have been proposed to tame this issue. By analyzing crashes caused by each test case, developers can find potential bugs in cloud services. However, it is difficult for automated tools to generate feasible parameters under complicating constraints randomly. Fortunately, RESTful API descriptions can be used to infer possible parameter constraints. Given parameter constraints, automated tools can further improve the efficiency of testing. In this paper, we propose RESTInfer, a two-phase approach to infer parameter constraints by natural language processing. The preliminary evaluation result shows that RESTInfer can achieve a high code coverage and bug finding.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"11 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78266957","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
Sometimes you have to treat the symptoms: tackling model drift in an industrial clone-and-own software product line 有时您必须处理症状:处理工业克隆和自有软件产品线中的模型漂移
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3558960
Christof Tinnes, Wolfgang Rössler, U. Hohenstein, Torsten Kühn, A. Biesdorf, S. Apel
Many industrial software product lines use a clone-and-own approach for reuse among software products. As a result, the different products in the product line may drift apart, which implies increased efforts for tasks such as change propagation, domain analysis, and quality assurance. While many solutions have been proposed in the literature, these are often difficult to apply in a real-world setting. We study this drift of products in a concrete large-scale industrial model-driven clone-and-own software product line in the railway domain at our industry partner. For this purpose, we conducted interviews and a survey, and we investigated the models in the model history of this project. We found that increased efforts are mainly caused by large model differences and increased communication efforts. We argue that, in the short-term, treating the symptoms (i.e., handling large model differences) can help to keep efforts for software product-line engineering acceptable — instead of employing sophisticated variability management. To treat the symptoms, we employ a solution based on semantic-lifting to simplify model differences. Using the interviews and the survey, we evaluate the feasibility of variability management approaches and the semantic-lifting approach in the context of this project.
许多工业软件产品线使用克隆并拥有的方法来实现软件产品之间的重用。因此,产品线中的不同产品可能会渐行渐远,这意味着增加了诸如变更传播、领域分析和质量保证等任务的工作量。虽然文献中提出了许多解决方案,但这些解决方案通常难以在现实环境中应用。我们在我们的行业合作伙伴铁路领域的一个具体的大型工业模型驱动的克隆和拥有软件产品线中研究了这种产品漂移。为此,我们进行了访谈和调查,并对该项目的模型历史中的模型进行了调查。我们发现增加的工作量主要是由于模型差异大和沟通工作量增加造成的。我们认为,在短期内,处理症状(例如,处理大的模型差异)可以帮助保持软件产品线工程的可接受性——而不是采用复杂的可变性管理。为了治疗这些症状,我们采用了一种基于语义提升的解决方案来简化模型差异。通过访谈和调查,我们评估了在本项目背景下可变性管理方法和语义提升方法的可行性。
{"title":"Sometimes you have to treat the symptoms: tackling model drift in an industrial clone-and-own software product line","authors":"Christof Tinnes, Wolfgang Rössler, U. Hohenstein, Torsten Kühn, A. Biesdorf, S. Apel","doi":"10.1145/3540250.3558960","DOIUrl":"https://doi.org/10.1145/3540250.3558960","url":null,"abstract":"Many industrial software product lines use a clone-and-own approach for reuse among software products. As a result, the different products in the product line may drift apart, which implies increased efforts for tasks such as change propagation, domain analysis, and quality assurance. While many solutions have been proposed in the literature, these are often difficult to apply in a real-world setting. We study this drift of products in a concrete large-scale industrial model-driven clone-and-own software product line in the railway domain at our industry partner. For this purpose, we conducted interviews and a survey, and we investigated the models in the model history of this project. We found that increased efforts are mainly caused by large model differences and increased communication efforts. We argue that, in the short-term, treating the symptoms (i.e., handling large model differences) can help to keep efforts for software product-line engineering acceptable — instead of employing sophisticated variability management. To treat the symptoms, we employ a solution based on semantic-lifting to simplify model differences. Using the interviews and the survey, we evaluate the feasibility of variability management approaches and the semantic-lifting approach in the context of this project.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"55 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80308372","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
RegMiner: mining replicable regression dataset from code repositories RegMiner:从代码库中挖掘可复制的回归数据集
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3558929
Xuezhi Song, Yun Lin, Yijian Wu, Yifan Zhang, Siang Hwee Ng, Xin Peng, J. Dong, Hong Mei
In this work, we introduce a tool, RegMiner, to automate the process of collecting replicable regression bugs from a set of Git repositories. In the code commit history, RegMiner searches for regressions where a test can pass a regression-fixing commit, fail a regressioninducing commit, and pass a previous working commit again. Technically, RegMiner (1) identifies potential regression-fixing commits from the code evolution history, (2) migrates the test and its code dependencies in the commit over the history, and (3) minimizes the compilation overhead during the regression search. Our experients show that RegMiner can successfully collect 1035 regressions over 147 projects in 8 weeks, creating the largest replicable regression dataset within the shortest period, to the best of our knowledge. In addition, our experiments further show that (1) RegMiner can construct the regression dataset with very high precision and acceptable recall, and (2) the constructed regression dataset is of high authenticity and diversity. The source code of RegMiner is available at https://github.com/SongXueZhi/RegMiner, the mined regression dataset is available at https://regminer.github.io/, and the demonstration video is available at https://youtu.be/yzcM9Y4unok.
在本文中,我们介绍了一个工具RegMiner,它可以自动从一组Git存储库中收集可复制的回归错误。在代码提交历史中,RegMiner搜索回归,其中测试可以通过修复回归的提交,导致回归的提交失败,并再次通过先前的工作提交。从技术上来说,RegMiner(1)从代码演化历史中识别潜在的修复回归的提交,(2)在历史上迁移提交中的测试及其代码依赖,以及(3)在回归搜索期间最小化编译开销。我们的实验表明,RegMiner可以在8周内成功收集147个项目的1035个回归,据我们所知,在最短的时间内创建了最大的可复制回归数据集。此外,我们的实验进一步表明:(1)RegMiner可以构建具有非常高的精度和可接受的召回率的回归数据集;(2)构建的回归数据集具有很高的真实性和多样性。RegMiner的源代码可在https://github.com/SongXueZhi/RegMiner上获得,挖掘的回归数据集可在https://regminer.github.io/上获得,演示视频可在https://youtu.be/yzcM9Y4unok上获得。
{"title":"RegMiner: mining replicable regression dataset from code repositories","authors":"Xuezhi Song, Yun Lin, Yijian Wu, Yifan Zhang, Siang Hwee Ng, Xin Peng, J. Dong, Hong Mei","doi":"10.1145/3540250.3558929","DOIUrl":"https://doi.org/10.1145/3540250.3558929","url":null,"abstract":"In this work, we introduce a tool, RegMiner, to automate the process of collecting replicable regression bugs from a set of Git repositories. In the code commit history, RegMiner searches for regressions where a test can pass a regression-fixing commit, fail a regressioninducing commit, and pass a previous working commit again. Technically, RegMiner (1) identifies potential regression-fixing commits from the code evolution history, (2) migrates the test and its code dependencies in the commit over the history, and (3) minimizes the compilation overhead during the regression search. Our experients show that RegMiner can successfully collect 1035 regressions over 147 projects in 8 weeks, creating the largest replicable regression dataset within the shortest period, to the best of our knowledge. In addition, our experiments further show that (1) RegMiner can construct the regression dataset with very high precision and acceptable recall, and (2) the constructed regression dataset is of high authenticity and diversity. The source code of RegMiner is available at https://github.com/SongXueZhi/RegMiner, the mined regression dataset is available at https://regminer.github.io/, and the demonstration video is available at https://youtu.be/yzcM9Y4unok.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"47 12","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72480740","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
Code, quality, and process metrics in graduated and retired ASFI projects 毕业和退休ASFI项目中的代码、质量和过程度量
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3549132
Stefan Stanciulescu, Likang Yin, V. Filkov
Recent work on open source sustainability shows that successful trajectories of projects in the Apache Software Foundation Incubator (ASFI) can be predicted early on, using a set of socio-technical measures. Because OSS projects are socio-technical systems centered around code artifacts, we hypothesize that sustainable projects may exhibit different code and process patterns than unsustainable ones, and that those patterns can grow more apparent as projects evolve over time. Here we studied the code and coding processes of over 200 ASFI projects, and found that ASFI graduated projects have different patterns of code quality and complexity than retired ones. Likewise for the coding processes – e.g., feature commits or bug-fixing commits are correlated with project graduation success. We find that minor contributors and major contributors (who contribute <5%, respectively >=95% commits) associate with graduation outcomes, implying that having also developers who contribute fewer commits are important for a project’s success. This study provides evidence that OSS projects, especially nascent ones, can benefit from introspection and instrumentation using multidimensional modeling of the whole system, including code, processes, and code quality measures, and how they are interconnected over time.
最近关于开源可持续性的工作表明,Apache软件基金会孵化器(ASFI)中项目的成功轨迹可以使用一组社会技术措施在早期进行预测。因为OSS项目是以代码工件为中心的社会技术系统,我们假设可持续的项目可能表现出与不可持续的项目不同的代码和过程模式,并且随着项目的发展,这些模式可以变得更加明显。在这里,我们研究了200多个ASFI项目的代码和编码过程,发现ASFI毕业项目的代码质量和复杂性与退役项目有不同的模式。编码过程也是如此——例如,特性提交或bug修复提交与项目成功毕业相关。我们发现次要贡献者和主要贡献者(贡献=95%的提交)与毕业结果有关,这意味着拥有贡献较少提交的开发人员对项目的成功很重要。这项研究提供了证据,证明OSS项目,特别是新生的项目,可以从使用整个系统的多维建模的自省和工具中获益,包括代码、过程和代码质量度量,以及它们如何随时间相互连接。
{"title":"Code, quality, and process metrics in graduated and retired ASFI projects","authors":"Stefan Stanciulescu, Likang Yin, V. Filkov","doi":"10.1145/3540250.3549132","DOIUrl":"https://doi.org/10.1145/3540250.3549132","url":null,"abstract":"Recent work on open source sustainability shows that successful trajectories of projects in the Apache Software Foundation Incubator (ASFI) can be predicted early on, using a set of socio-technical measures. Because OSS projects are socio-technical systems centered around code artifacts, we hypothesize that sustainable projects may exhibit different code and process patterns than unsustainable ones, and that those patterns can grow more apparent as projects evolve over time. Here we studied the code and coding processes of over 200 ASFI projects, and found that ASFI graduated projects have different patterns of code quality and complexity than retired ones. Likewise for the coding processes – e.g., feature commits or bug-fixing commits are correlated with project graduation success. We find that minor contributors and major contributors (who contribute <5%, respectively >=95% commits) associate with graduation outcomes, implying that having also developers who contribute fewer commits are important for a project’s success. This study provides evidence that OSS projects, especially nascent ones, can benefit from introspection and instrumentation using multidimensional modeling of the whole system, including code, processes, and code quality measures, and how they are interconnected over time.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"14 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73842940","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}
引用次数: 5
DynaPyt: a dynamic analysis framework for Python DynaPyt: Python的动态分析框架
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3549126
A. Eghbali, Michael Pradel
Python is a widely used programming language that powers important application domains such as machine learning, data analysis, and web applications. For many programs in these domains it is consequential to analyze aspects like security and performance, and with Python’s dynamic nature, it is crucial to be able to dynamically analyze Python programs. However, existing tools and frameworks do not provide the means to implement dynamic analyses easily and practitioners resort to implementing an ad-hoc dynamic analysis for their own use case. This work presents DynaPyt, the first general-purpose framework for heavy-weight dynamic analysis of Python programs. Compared to existing tools for other programming languages, our framework provides a wider range of analysis hooks arranged in a hierarchical structure, which allows developers to concisely implement analyses. DynaPyt features selective instrumentation and execution modification as well. We evaluate our framework on test suites of 9 popular open-source Python projects, 1,268,545 lines of code in total, and show that it, by and large, preserves the semantics of the original execution. The running time of DynaPyt is between 1.2x and 16x times the original execution time, which is in line with similar frameworks designed for other languages, and 5.6%–88.6% faster than analyses using a built-in tracing API offered by Python. We also implement multiple analyses, show the simplicity of implementing them and some potential use cases of DynaPyt. Among the analyses implemented are: an analysis to detect a memory blow up in Pytorch programs, a taint analysis to detect SQL injections, and an analysis to warn about a runtime performance anti-pattern.
Python是一种广泛使用的编程语言,支持重要的应用领域,如机器学习、数据分析和web应用程序。对于这些领域中的许多程序来说,分析安全性和性能等方面是重要的,并且由于Python的动态特性,能够动态分析Python程序是至关重要的。然而,现有的工具和框架并不能很容易地提供实现动态分析的方法,从业者只能为他们自己的用例实现特别的动态分析。本文介绍了DynaPyt,第一个用于Python程序的重量级动态分析的通用框架。与其他编程语言的现有工具相比,我们的框架以分层结构提供了更广泛的分析钩子,这允许开发人员简明地实现分析。DynaPyt还具有选择性插装和执行修改功能。我们在9个流行的开源Python项目(总共1,268,545行代码)的测试套件上评估了我们的框架,并表明它基本上保留了原始执行的语义。DynaPyt的运行时间是原始执行时间的1.2倍到16倍,与为其他语言设计的类似框架一致,比使用Python提供的内置跟踪API进行分析快5.6%到88.6%。我们还实现了多个分析,展示了实现它们的简单性以及DynaPyt的一些潜在用例。实现的分析包括:检测Pytorch程序中内存爆炸的分析,检测SQL注入的污染分析,以及对运行时性能反模式发出警告的分析。
{"title":"DynaPyt: a dynamic analysis framework for Python","authors":"A. Eghbali, Michael Pradel","doi":"10.1145/3540250.3549126","DOIUrl":"https://doi.org/10.1145/3540250.3549126","url":null,"abstract":"Python is a widely used programming language that powers important application domains such as machine learning, data analysis, and web applications. For many programs in these domains it is consequential to analyze aspects like security and performance, and with Python’s dynamic nature, it is crucial to be able to dynamically analyze Python programs. However, existing tools and frameworks do not provide the means to implement dynamic analyses easily and practitioners resort to implementing an ad-hoc dynamic analysis for their own use case. This work presents DynaPyt, the first general-purpose framework for heavy-weight dynamic analysis of Python programs. Compared to existing tools for other programming languages, our framework provides a wider range of analysis hooks arranged in a hierarchical structure, which allows developers to concisely implement analyses. DynaPyt features selective instrumentation and execution modification as well. We evaluate our framework on test suites of 9 popular open-source Python projects, 1,268,545 lines of code in total, and show that it, by and large, preserves the semantics of the original execution. The running time of DynaPyt is between 1.2x and 16x times the original execution time, which is in line with similar frameworks designed for other languages, and 5.6%–88.6% faster than analyses using a built-in tracing API offered by Python. We also implement multiple analyses, show the simplicity of implementing them and some potential use cases of DynaPyt. Among the analyses implemented are: an analysis to detect a memory blow up in Pytorch programs, a taint analysis to detect SQL injections, and an analysis to warn about a runtime performance anti-pattern.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"49 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80950064","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
Automatically deriving JavaScript static analyzers from specifications using Meta-level static analysis 使用元级静态分析从规范中自动派生JavaScript静态分析器
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3549097
Jihyeok Park, Seungmin An, Sukyoung Ryu
JavaScript is one of the most dominant programming languages. However, despite its popularity, it is a challenging task to correctly understand the behaviors of JavaScript programs because of their highly dynamic nature. Researchers have developed various static analyzers that strive to conform to ECMA-262, the standard specification of JavaScript. Unfortunately, all the existing JavaScript static analyzers require manual updates for new language features. This problem has become more critical since 2015 because the JavaScript language itself rapidly evolves with a yearly release cadence and open development process. In this paper, we present JSAVER, the first tool that automatically derives JavaScript static analyzers from language specifications. The main idea of our approach is to extract a definitional interpreter from ECMA-262 and perform a meta-level static analysis with the extracted interpreter. A meta-level static analysis is a novel technique that indirectly analyzes programs by analyzing a definitional interpreter with the programs. We also describe how to indirectly configure abstract domains and analysis sensitivities in a meta-level static analysis. For evaluation, we derived a static analyzer from the latest ECMA-262 (ES12, 2021) using JSAVER. The derived analyzer soundly analyzed all applicable 18,556 official conformance tests with 99.0% of precision in 590 ms on average. In addition, we demonstrate the configurability and adaptability of JSAVER with several case studies.
JavaScript是最主要的编程语言之一。然而,尽管它很流行,但正确理解JavaScript程序的行为是一项具有挑战性的任务,因为它们具有高度动态性。研究人员已经开发了各种各样的静态分析器,力求符合ECMA-262 (JavaScript的标准规范)。不幸的是,所有现有的JavaScript静态分析器都需要手动更新新的语言特性。自2015年以来,这个问题变得更加严重,因为JavaScript语言本身随着每年的发布节奏和开放的开发过程而迅速发展。在本文中,我们介绍了JSAVER,这是第一个从语言规范中自动派生JavaScript静态分析器的工具。我们方法的主要思想是从ECMA-262中提取一个定义解释器,并使用提取的解释器执行元级静态分析。元级静态分析是一种通过与程序一起分析定义解释器来间接分析程序的新技术。我们还描述了如何在元级静态分析中间接配置抽象域和分析灵敏度。为了进行评估,我们使用JSAVER从最新的ECMA-262 (ES12, 2021)中获得了一个静态分析器。导出的分析仪在平均590 ms内以99.0%的精度可靠地分析了所有适用的18556个官方一致性测试。此外,我们通过几个案例研究演示了JSAVER的可配置性和适应性。
{"title":"Automatically deriving JavaScript static analyzers from specifications using Meta-level static analysis","authors":"Jihyeok Park, Seungmin An, Sukyoung Ryu","doi":"10.1145/3540250.3549097","DOIUrl":"https://doi.org/10.1145/3540250.3549097","url":null,"abstract":"JavaScript is one of the most dominant programming languages. However, despite its popularity, it is a challenging task to correctly understand the behaviors of JavaScript programs because of their highly dynamic nature. Researchers have developed various static analyzers that strive to conform to ECMA-262, the standard specification of JavaScript. Unfortunately, all the existing JavaScript static analyzers require manual updates for new language features. This problem has become more critical since 2015 because the JavaScript language itself rapidly evolves with a yearly release cadence and open development process. In this paper, we present JSAVER, the first tool that automatically derives JavaScript static analyzers from language specifications. The main idea of our approach is to extract a definitional interpreter from ECMA-262 and perform a meta-level static analysis with the extracted interpreter. A meta-level static analysis is a novel technique that indirectly analyzes programs by analyzing a definitional interpreter with the programs. We also describe how to indirectly configure abstract domains and analysis sensitivities in a meta-level static analysis. For evaluation, we derived a static analyzer from the latest ECMA-262 (ES12, 2021) using JSAVER. The derived analyzer soundly analyzed all applicable 18,556 official conformance tests with 99.0% of precision in 590 ms on average. In addition, we demonstrate the configurability and adaptability of JSAVER with several case studies.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"8 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87569201","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
Understanding why we cannot model how long a code review will take: an industrial case study 理解为什么我们不能对代码审查所需的时间建模:一个工业案例研究
Pub Date : 2022-11-07 DOI: 10.1145/3540250.3558945
Lawrence Chen, Peter C. Rigby, Nachiappan Nagappan
Code review is an effective practice for finding defects, but because it is manually intensive it can slow down the continuous integration of changes. Our goal was to understand the factors that influenced the time a change, ie a diff at Meta, would spend in review. A developer survey showed that diff reviews start to feel slow after they have been waiting for around 24 hour review. We built a review time predictor model to identify potential factors that may be causing reviews to take longer, which we could use to predict when would be the best time to nudge reviewers or to identify diff-related factors that we may need to address. The strongest feature of the time spent in review model we built was the day of the week because diffs submitted near the weekend may have to wait for Monday for review. After removing time on weekends, the remaining features, including size of diff and the number of meetings the reviewers have did not provide substantial predictive power, thereby not being able to predict how long a code review would take. We contributed to the effort to reduce stale diffs by suggesting that diffs be nudged near the start of the workday and that diffs published near the weekend be nudged sooner on Friday to avoid waiting the entire weekend. We use a nudging threshold rather than a model because we showed that TimeInReview cannot be accurately modelled. The NudgeBot has been rolled to over 30k developers at Meta.
代码审查是一种发现缺陷的有效实践,但是因为它是人工密集型的,它会减慢变更的持续集成。我们的目标是了解影响变更(即Meta的差异)在审查中花费的时间的因素。一项开发者调查显示,在等待了大约24小时的审查后,diff审查开始感到缓慢。我们建立了一个评审时间预测模型来识别可能导致评审花费更长时间的潜在因素,我们可以用它来预测何时是推动评审人员的最佳时间,或者识别我们可能需要处理的不同相关因素。在我们构建的评审模型中所花费时间的最大特征是一周中的某一天,因为在周末附近提交的差异可能要等到周一才能进行评审。在去掉周末的时间后,剩下的特性,包括差异的大小和审稿人的会议次数,并没有提供实质性的预测能力,因此无法预测代码审查需要多长时间。我们通过建议在工作日开始时发布差异,以及在周末发布的差异在周五早些时候发布,以避免等待整个周末,从而为减少陈旧的差异做出了贡献。我们使用轻推阈值而不是模型,因为我们证明了TimeInReview不能被精确地建模。在Meta上,NudgeBot已经被3万多名开发者使用。
{"title":"Understanding why we cannot model how long a code review will take: an industrial case study","authors":"Lawrence Chen, Peter C. Rigby, Nachiappan Nagappan","doi":"10.1145/3540250.3558945","DOIUrl":"https://doi.org/10.1145/3540250.3558945","url":null,"abstract":"Code review is an effective practice for finding defects, but because it is manually intensive it can slow down the continuous integration of changes. Our goal was to understand the factors that influenced the time a change, ie a diff at Meta, would spend in review. A developer survey showed that diff reviews start to feel slow after they have been waiting for around 24 hour review. We built a review time predictor model to identify potential factors that may be causing reviews to take longer, which we could use to predict when would be the best time to nudge reviewers or to identify diff-related factors that we may need to address. The strongest feature of the time spent in review model we built was the day of the week because diffs submitted near the weekend may have to wait for Monday for review. After removing time on weekends, the remaining features, including size of diff and the number of meetings the reviewers have did not provide substantial predictive power, thereby not being able to predict how long a code review would take. We contributed to the effort to reduce stale diffs by suggesting that diffs be nudged near the start of the workday and that diffs published near the weekend be nudged sooner on Friday to avoid waiting the entire weekend. We use a nudging threshold rather than a model because we showed that TimeInReview cannot be accurately modelled. The NudgeBot has been rolled to over 30k developers at Meta.","PeriodicalId":68155,"journal":{"name":"软件产业与工程","volume":"42 1 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2022-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77937848","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}
引用次数: 3
期刊
软件产业与工程
全部 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