Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00064
Austin Mordahl
Variability in C software is a useful tool, but critical bugs that only exist in certain configurations are easily missed by conventional debugging techniques. Even with a small number of features, the configuration space of configurable software is too large to analyze exhaustively. Variability-aware static analysis for bug detection is being developed, but remains at too early a stage to be fully usable in real-world C programs. In this work, we present a methodology of finding variability bugs by combining variability-oblivious bug detectors, static analysis of build processes, and dynamic feature interaction inference. We further present an empirical study in which we test our methodology on two highly configurable C programs. We found our methodology to be effective, finding 88 true bugs between the two programs, of which 64 were variability bugs.
{"title":"Toward Detection and Characterization of Variability Bugs in Configurable C Software: An Empirical Study","authors":"Austin Mordahl","doi":"10.1109/ICSE-Companion.2019.00064","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00064","url":null,"abstract":"Variability in C software is a useful tool, but critical bugs that only exist in certain configurations are easily missed by conventional debugging techniques. Even with a small number of features, the configuration space of configurable software is too large to analyze exhaustively. Variability-aware static analysis for bug detection is being developed, but remains at too early a stage to be fully usable in real-world C programs. In this work, we present a methodology of finding variability bugs by combining variability-oblivious bug detectors, static analysis of build processes, and dynamic feature interaction inference. We further present an empirical study in which we test our methodology on two highly configurable C programs. We found our methodology to be effective, finding 88 true bugs between the two programs, of which 64 were variability bugs.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114311862","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}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00117
Fengmin Zhu, Fei He, Q. Yu
Recently, structured merge has shown its advantage in improving the merge precision over conventional line-based, unstructured merge. A typical structured merge algorithm consists of matching and amalgamation on abstract syntax trees. Existing tree matching techniques aim to figure out optimal matches by maximizing the number of matched nodes. From real-world codebases, however, we find that many of the reported conflicts are unnecessary. We propose a new objective function for defining a proper tree matching, with which the overall conflicting rate can be greatly reduced. We conducted experiments on 3,687 merge scenarios extracted from 18 open-source projects. Results show significant merge precision enhancement of our approach.
{"title":"Enhancing Precision of Structured Merge by Proper Tree Matching","authors":"Fengmin Zhu, Fei He, Q. Yu","doi":"10.1109/ICSE-Companion.2019.00117","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00117","url":null,"abstract":"Recently, structured merge has shown its advantage in improving the merge precision over conventional line-based, unstructured merge. A typical structured merge algorithm consists of matching and amalgamation on abstract syntax trees. Existing tree matching techniques aim to figure out optimal matches by maximizing the number of matched nodes. From real-world codebases, however, we find that many of the reported conflicts are unnecessary. We propose a new objective function for defining a proper tree matching, with which the overall conflicting rate can be greatly reduced. We conducted experiments on 3,687 merge scenarios extracted from 18 open-source projects. Results show significant merge precision enhancement of our approach.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115716686","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}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00085
Kaushik Madala
With an increase in the automation of cyber-physical systems (e.g., automated vehicles and robots), quality problems such as off-nominal behaviors (ONBs) have also increased. While there are techniques that can find ONBs at the requirements engineering stage as it reduces the cost of addressing defects early in development, they do not meet the current industrial needs and often ignore functional safety. These techniques suffer from limitations such as scalability, need for significant human effort and inability to detect overlooked or unknown ONBs. To address these limitations we need a technique that analyzes requirements with respect to functional safety, but with less human effort. To achieve this, we propose our artificial intelligence-based model-driven methodology that provides a means to find ONBs during requirements engineering with minimal human effort. Our methodology utilizes existing approaches such as causal component model (CCM) and systems theoretic process analysis (STPA). We describe the details of each step of our approach and how our approach would support finding ONBs. Using our research and the results of our studies, we intend to provide empirical evidence that considering ONBs during requirements engineering stage and analyzing requirements with respect to functional safety can help create more robust designs and higher-quality products.
{"title":"An Artificial Intelligence-Based Model-Driven Approach for Exposing Off-Nominal Behaviors","authors":"Kaushik Madala","doi":"10.1109/ICSE-Companion.2019.00085","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00085","url":null,"abstract":"With an increase in the automation of cyber-physical systems (e.g., automated vehicles and robots), quality problems such as off-nominal behaviors (ONBs) have also increased. While there are techniques that can find ONBs at the requirements engineering stage as it reduces the cost of addressing defects early in development, they do not meet the current industrial needs and often ignore functional safety. These techniques suffer from limitations such as scalability, need for significant human effort and inability to detect overlooked or unknown ONBs. To address these limitations we need a technique that analyzes requirements with respect to functional safety, but with less human effort. To achieve this, we propose our artificial intelligence-based model-driven methodology that provides a means to find ONBs during requirements engineering with minimal human effort. Our methodology utilizes existing approaches such as causal component model (CCM) and systems theoretic process analysis (STPA). We describe the details of each step of our approach and how our approach would support finding ONBs. Using our research and the results of our studies, we intend to provide empirical evidence that considering ONBs during requirements engineering stage and analyzing requirements with respect to functional safety can help create more robust designs and higher-quality products.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115811186","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}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00121
A. Mesbah, A. Rice, E. Aftandilian, Emily Johnston, Nick Glorioso
Resolving a build failure consumes developer time both in finding a suitable resolution and in rerunning the build. Our goal is to develop automated repair tools that can automatically resolve build errors and therefore improve developer productivity. We collected data on the resolution of Java build failures to discover how long developers spend resolving different kinds of diagnostics at Google. We found that the diagnostic reporting an unresolved symbol consumes 47% of the total time spent resolving broken builds. We found that choice of tool has a significant impact: 26% of command line builds fail whereas only 3% of IDE builds fail. However, the set of most costly diagnostic kinds remains the same for both. We trained a Neural Machine Translation model on the Abstract Syntax Tree changes made when resolving an unresolved symbol failure. This generates a correct fix with a true positive rate of 50%.
{"title":"Analyzing and Repairing Compilation Errors","authors":"A. Mesbah, A. Rice, E. Aftandilian, Emily Johnston, Nick Glorioso","doi":"10.1109/ICSE-Companion.2019.00121","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00121","url":null,"abstract":"Resolving a build failure consumes developer time both in finding a suitable resolution and in rerunning the build. Our goal is to develop automated repair tools that can automatically resolve build errors and therefore improve developer productivity. We collected data on the resolution of Java build failures to discover how long developers spend resolving different kinds of diagnostics at Google. We found that the diagnostic reporting an unresolved symbol consumes 47% of the total time spent resolving broken builds. We found that choice of tool has a significant impact: 26% of command line builds fail whereas only 3% of IDE builds fail. However, the set of most costly diagnostic kinds remains the same for both. We trained a Neural Machine Translation model on the Abstract Syntax Tree changes made when resolving an unresolved symbol failure. This generates a correct fix with a true positive rate of 50%.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"75 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127070518","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}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00060
Xiaofei Ge
GUI design is crucial to mobile apps. In the early stages of mobile app development, having access to visually similar apps can help designers and programmers gain inspiration for revising their designs or even reuse existing GUI code. We propose an intuitive sketch modelling language to draw GUI sketches, and a deep learning based method to search for visually similar apps according to the sketches. Preliminary results show the potential of our approach.
{"title":"Android GUI Search Using Hand-Drawn Sketches","authors":"Xiaofei Ge","doi":"10.1109/ICSE-Companion.2019.00060","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00060","url":null,"abstract":"GUI design is crucial to mobile apps. In the early stages of mobile app development, having access to visually similar apps can help designers and programmers gain inspiration for revising their designs or even reuse existing GUI code. We propose an intuitive sketch modelling language to draw GUI sketches, and a deep learning based method to search for visually similar apps according to the sketches. Preliminary results show the potential of our approach.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"190 6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131683316","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}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00039
M. Nassif, Christoph Treude, M. Robillard
Witt is a tool that systematically and automatically categorizes software technologies using original information extraction algorithms applied to Stack Overflow and Wikipedia. Witt takes as input a term, such as "django", and returns one or more categories that describe it (e.g., "framework"), along with attributes that further qualify it (e.g., "web-application"). Our comparative evaluation of Witt against six independent taxonomy tools showed that, when applied to software terms, Witt has better coverage than alternative solutions, without a corresponding degradation in the number of spurious results. The information extracted by Witt is available through the Witt Web Application, which allows users to query and explore Witt's categorization of software technologies by both obtaining the category for a term, and all the terms in a given category. On-line Portal: https://cs.mcgill.ca/~swevo/witt-web Video: https://www.youtube.com/watch?v=tPsp1M4Ua3w
Witt是一个系统自动分类软件技术的工具,使用应用于Stack Overflow和Wikipedia的原始信息提取算法。Witt输入一个词,比如“django”,然后返回一个或多个描述它的类别(比如“框架”),以及进一步限定它的属性(比如“web-application”)。我们对Witt与六个独立分类工具的比较评估表明,当应用于软件术语时,Witt比替代解决方案具有更好的覆盖率,而没有相应的虚假结果数量下降。Witt提取的信息可通过Witt Web Application获得,该应用程序允许用户通过获取术语的类别和给定类别中的所有术语来查询和探索Witt对软件技术的分类。在线门户:https://cs.mcgill.ca/~swevo/witt-web视频:https://www.youtube.com/watch?v=tPsp1M4Ua3w
{"title":"Witt: Querying Technology Terms Based on Automated Classification","authors":"M. Nassif, Christoph Treude, M. Robillard","doi":"10.1109/ICSE-Companion.2019.00039","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00039","url":null,"abstract":"Witt is a tool that systematically and automatically categorizes software technologies using original information extraction algorithms applied to Stack Overflow and Wikipedia. Witt takes as input a term, such as \"django\", and returns one or more categories that describe it (e.g., \"framework\"), along with attributes that further qualify it (e.g., \"web-application\"). Our comparative evaluation of Witt against six independent taxonomy tools showed that, when applied to software terms, Witt has better coverage than alternative solutions, without a corresponding degradation in the number of spurious results. The information extracted by Witt is available through the Witt Web Application, which allows users to query and explore Witt's categorization of software technologies by both obtaining the category for a term, and all the terms in a given category. On-line Portal: https://cs.mcgill.ca/~swevo/witt-web Video: https://www.youtube.com/watch?v=tPsp1M4Ua3w","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"253 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134091512","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}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00068
Zhiyu Fan
With the rapidly growing scale of modern software, the reliability of software systems has become essential. To ease the developers' pressure of writing unit tests manually, test generation tools such as EvoSuite and Randoop were proposed. Although these approaches have been shown to be able to automatically generate tests for achieving high coverage, the generated tests may be ineffective in detecting real faults. Particularly, these automatically generated tests may suffer from several problems (we call them problematic tests): (1) incorrect oracle. (2) unexpected exception/error. (3) flaky test. We present a comprehensive study of EvoSuite in Defects4j, and performed a detailed analysis of the reasons behind these automatically generated problematic tests. Our analysis identifies 528 problematic tests: 208 (39.4%) of them are caused by incorrect oracle, 319 (60.4%) are caused by unexpected exception/error, and one flaky test.
{"title":"A Systematic Evaluation of Problematic Tests Generated by EvoSuite","authors":"Zhiyu Fan","doi":"10.1109/ICSE-Companion.2019.00068","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00068","url":null,"abstract":"With the rapidly growing scale of modern software, the reliability of software systems has become essential. To ease the developers' pressure of writing unit tests manually, test generation tools such as EvoSuite and Randoop were proposed. Although these approaches have been shown to be able to automatically generate tests for achieving high coverage, the generated tests may be ineffective in detecting real faults. Particularly, these automatically generated tests may suffer from several problems (we call them problematic tests): (1) incorrect oracle. (2) unexpected exception/error. (3) flaky test. We present a comprehensive study of EvoSuite in Defects4j, and performed a detailed analysis of the reasons behind these automatically generated problematic tests. Our analysis identifies 528 problematic tests: 208 (39.4%) of them are caused by incorrect oracle, 319 (60.4%) are caused by unexpected exception/error, and one flaky test.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134374615","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}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00093
Thomas Bach, Ralf Pannemans, J. Häussler, A. Andrzejak
Compared to system tests, unit tests execute faster and allow more precise fault localisation. Hence, it can be beneficial to automatically extract unit tests and displace associated system tests. However, the extraction process may encounter challenges such as the identification of relevant test objectives, scalability issues, and future maintainability of serialized state. % To address these challenges, we exploit time travel debugging for efficient and accurate reconstruction of object states and use differential analysis of code coverage data. This allows us to extract code-only unit tests with a feasible overhead. The extracted unit tests mimic relevant parts of the system tests and, by displacing the latter in early testing stages, save resources. Our preliminary evaluation indicates large potentials for test cost reduction and high practical acceptance.
{"title":"Dynamic Unit Test Extraction Via Time Travel Debugging for Test Cost Reduction","authors":"Thomas Bach, Ralf Pannemans, J. Häussler, A. Andrzejak","doi":"10.1109/ICSE-Companion.2019.00093","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00093","url":null,"abstract":"Compared to system tests, unit tests execute faster and allow more precise fault localisation. Hence, it can be beneficial to automatically extract unit tests and displace associated system tests. However, the extraction process may encounter challenges such as the identification of relevant test objectives, scalability issues, and future maintainability of serialized state. % To address these challenges, we exploit time travel debugging for efficient and accurate reconstruction of object states and use differential analysis of code coverage data. This allows us to extract code-only unit tests with a feasible overhead. The extracted unit tests mimic relevant parts of the system tests and, by displacing the latter in early testing stages, save resources. Our preliminary evaluation indicates large potentials for test cost reduction and high practical acceptance.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133992535","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}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00074
Giovanni Viviani
A software system's design determines many of its properties. An understanding of design is needed to maintain system properties as changes to the system are made. When developers lose track of the overall design, the system may not conform to its intended properties. I hypothesize that it is possible to solve the problems of design evaporation and erosion by recovering design information from written developer discussions and by leveraging the recovered information to help developers make better decisions. As part of investigating this hypothesis, I have built an automated classifier that is able to locate design information in discussions, at the paragraph level, by learning from manual annotations of discussions extracted from open source pull requests. I next plan to extract and represent the design information from the identified paragraphs and to show the usefulness of the information by creating tools to help notify developers of design information relevant to a task at hand.
{"title":"Finding and Using Design Information in Discussions","authors":"Giovanni Viviani","doi":"10.1109/ICSE-Companion.2019.00074","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00074","url":null,"abstract":"A software system's design determines many of its properties. An understanding of design is needed to maintain system properties as changes to the system are made. When developers lose track of the overall design, the system may not conform to its intended properties. I hypothesize that it is possible to solve the problems of design evaporation and erosion by recovering design information from written developer discussions and by leveraging the recovered information to help developers make better decisions. As part of investigating this hypothesis, I have built an automated classifier that is able to locate design information in discussions, at the paragraph level, by learning from manual annotations of discussions extracted from open source pull requests. I next plan to extract and represent the design information from the identified paragraphs and to show the usefulness of the information by creating tools to help notify developers of design information relevant to a task at hand.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"46 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114454216","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}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00031
Tri Huynh, Alessio Gambi, G. Fraser
Autonomous driving carries the promise to drastically reduce car accidents, but recently reported fatal crashes involving self-driving cars suggest that the self-driving car software should be tested more thoroughly. For addressing this need, we introduce AC3R (Automatic Crash Constructor from Crash Report) which elaborates police reports to automatically recreate car crashes in a simulated environment that can be used for testing self-driving car software in critical situations. AC3R enables developers to quickly generate relevant test cases from the massive historical dataset of recorded car crashes. We demonstrate how AC3R can generate simulations of different car crashes and report the findings of a large user study which concluded that AC3R simulations are accurate. A video illustrating AC3R in action is available at: https://youtu.be/V708fDG_ux8
{"title":"AC3R: Automatically Reconstructing Car Crashes from Police Reports","authors":"Tri Huynh, Alessio Gambi, G. Fraser","doi":"10.1109/ICSE-Companion.2019.00031","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00031","url":null,"abstract":"Autonomous driving carries the promise to drastically reduce car accidents, but recently reported fatal crashes involving self-driving cars suggest that the self-driving car software should be tested more thoroughly. For addressing this need, we introduce AC3R (Automatic Crash Constructor from Crash Report) which elaborates police reports to automatically recreate car crashes in a simulated environment that can be used for testing self-driving car software in critical situations. AC3R enables developers to quickly generate relevant test cases from the massive historical dataset of recorded car crashes. We demonstrate how AC3R can generate simulations of different car crashes and report the findings of a large user study which concluded that AC3R simulations are accurate. A video illustrating AC3R in action is available at: https://youtu.be/V708fDG_ux8","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117031192","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}