1. the complete title of one (or more) paper(s) published in the open literature describing the work that the author claims describes a human-competitive result; Repairing Crashes in Android Apps 2. the name, complete physical mailing address, e-mail address, and phone number of EACH author of EACH paper(s); Shin Hwei Tan Room 907, Building A7, iPark, No.1001 Xueyuan Road, Nanshan, Shenzhen, Guangdong, 518055 China shinhwei@hotmail.com (+86)18813869816 Zhen Dong 13 Computing Drive 117417 Singapore zhen.dong@comp.nus.edu.sg (+65) 65166559 Xiang Gao 13 Computing Drive 117417 Singapore gaoxiang@comp.nus.edu.sg (+65) 65166559 Abhik Roychoudhury 13 Computing Drive 117417 Singapore abhik@comp.nus.edu.sg (+65) 65168939 3. the name of the corresponding author (i.e., the author to whom notices will be sent concerning the competition); Shin Hwei Tan 4. the abstract of the paper(s); Android apps are omnipresent, and frequently suffer from crashes --- leading to poor user experience and economic loss. Past work focused on automated test generation to detect crashes in Android apps. However, automated repair of crashes has not been studied. In this paper, we propose the first approach to automatically repair Android apps, specifically we propose a technique for fixing crashes in Android apps. Unlike most test-based repair approaches, we do not need a test-suite; instead a single failing test is meticulously analyzed for crash locations and reasons behind these crashes. Our approach hinges on a careful empirical study which seeks to establish common root-causes for crashes in Android apps, and then distills the remedy of these root-causes in the form of eight generic transformation operators. These operators are applied using a search-based repair framework embodied in our repair tool Droix. We also prepare a benchmark DroixBench capturing reproducible crashes in Android apps. Our evaluation of Droix on DroixBench reveals that the automatically produced patches are often syntactically identical to the human patch, and on some rare occasion even better than the human patch (in terms of avoiding regressions). These results confirm our intuition that our proposed transformations form a sufficient set of operators to patch crashes in Android. 5. a list containing one or more of the eight letters (A, B, C, D, E, F, G, or H) that correspond to the criteria (see above) that the author claims that the work satisfies; The work satisfies the following criteria: (A) The result was patented as an invention in the past, is an improvement over a patented invention, or would qualify today as a patentable new invention. (D) The result is publishable in its own right as a new scientific result independent of the fact that the result was mechanically created. (E) The result is equal to or better than the most recent human-created solution to a long-standing problem for which there has been a succession of increasingly better human-created solutions. 6. a statement stating why the result satisfies the criteria that the contestant claims (see examples of statements of human-competitiveness as a guide to aid in constructing this part of the submission); (A) We propose the first repair approach that could automatically fix crashes in a buggy Android application package (APK) using only a single test input. All other existing approaches requires either many test cases for guiding the search or the source code to be available. This work is a collaboration between National University of Singapore and Singapore Telecommunications Limited (Singtel) [1]. The work is currently in progress for a patent filing. According to the prior art search conducted by our patent attorney, no previous invention offers the same features as our approach. This demonstrates the novelty of our invention and its potential commercial value. (D) Our approach augments a given UI test with code-level and test-level properties for ranking generated patches. Different from existing works that rely on the quality of test suite, our approach leverages properties enforced at different levels and our fitness function aims to minimize the violations of these properties. The enforcement of properties rather than validation using test cases is an important improvement that allows us to generate human-competitive patches. (E) With the increasing popularity of smartphones, mobile apps have become indispensable. In Google Play, there are over 3.5 millions apps available for download in December 2017 [2]. Android app maintenance is a long-standing problem that have significant impact on both app users and app developers. A recent survey revealed that most of the respondents have experienced a problem when using a mobile application, with 62% of them reported a crash, freeze or error [3]. Frequent crashes of an app will lead to negative user experience and may eventually cause users to uninstall the app. Our approach, Droix solves this problem by automatically repairing crashes in Android apps. In our experiment, we compare the quality of the patches that are automatically generated by our approach against the patches issued by the human developer. Our results show that Droix could generate fixes for 62.5% of all evaluated apps. For the remaining cases where Droix fails to generate a patch, our manual analysis reveals that all of these defects are difficult to fix because all the corresponding human patches require at least 10 lines of edits. However, our manual analysis of the generated patches show that 53% of Droix’s generated patches are of comparable quality to human patches. On top of that, there is one crash where Droix’s generated patch is better than the patch issued by human developer (in terms of avoiding regression witnessed by a held-out test case). 7. a full citation of the paper (that is, author names; publication date; name of journal, conference, technical report, thesis, book, or book chapter; name of editors, if applicable, of the journal or edited book; publisher name; publisher city; page numbers, if applicable); title={Repairing Crashes in Android Apps}, author={Tan, Shin Hwei and Dong, Zhen and Gao, Xiang and Roychoudhury, Abhik}, booktitle={Software Engineering (ICSE), 2018 ACM/IEEE 40th International Conference on}, pages={187-198}, year={2018}, organization={IEEE} 8. a statement either that "any prize money, if any, is to be divided equally among the co-authors" OR a specific percentage breakdown as to how the prize money, if any, is to be divided among the co-authors; Any prize money, if any, is to be awarded to Shin Hwei Tan. 9. a statement stating why the authors expect that their entry would be the "best," and Genetic algorithm and evolutionary strategies have demonstrated prior success in automatically fixing software errors. With the reliance on well-designed test suite and the availability of source code, previous works are limited to fixing programs written by experienced programmers who are advanced computer users. To the best of our knowledge, our work takes the first step in bringing automatic program repair to regular users who utilizes mobile apps for their daily tasks. By recording a sequence of clicks/touches that lead to crashes in an Android app, a regular user who have zero knowledge of app development could invoke our repair system to fix his or her buggy app. We believe that our work advances the current state-of-the-art techniques in automated bug-fixing. For the first time, the result shows that our approach based on evolution strategy could generate patches that are not only of comparable quality to human patches, but could also outperform human patches. To ensure fair comparison between our repair system and the human repair, we faithfully replicated the settings described in the bug report [4]. Specifically, our repair system searches for the patches using the same test input in the bug report for the crash in the Transistor app. We objectively judge the quality of the patches based on their behavior on the additional test input included in later commits. Given the same test input, the back button in the human patched app no longer functions correctly, whereas in the app fixed using Droix, we could use the back button to close the app gracefully. This case clearly illustrates the human-competitiveness of our repair system. From the technical perspective, our empirical study reveals that more than 30% of crashes in Android apps occurs due to inappropriate activity/fragment lifecycle management and improper handling of resources. Hence, we propose eight lifecycle-aware mutation operators and integrate these operators into the evolutionary strategy search algorithm. Apart from using the fixed app directly, human developers could also make use of the output of the search algorithm to understand the potential violations to the activity/fragment lifecycle management rules. Before presenting at the venue in which the paper is accepted (International Conference on Software Engineering), we have presented our work in Dagstuhl Seminar on Genetic Improvement of Software where we received positive feedback from experts in GI. Moreover, our work also attracted attention and funding from the largest mobile network operators in Singapore, Singtel. This illustrates that the impact of our work is not limited to academic research, but could also fuels industry innovation. 10. An indication of the general type of genetic or evolutionary computation used, such as GA (genetic algorithms), GP (genetic programming), ES (evolution strategies), EP (evolutionary programming), LCS (learning classifier systems), GE (grammatical evolution), GEP (gene expression programming), DE (differential evolution), etc. ES (evolution strategies) 11. The date of publication of each paper. If the date of publication is not on or before the deadline for submission, but instead, the paper has been unconditionally accepted for publication and is “in press” by the deadline for this competition, the entry must include a copy of the documentation establishing that the paper meets the "in press" requirement. 27 May 2018 References: [1] https://nus-singtel.nus.edu.sg/ [2] https://www.statista.com/statistics/266210/number-of-available-applications-in-the-google-play-store/ [3] https://goo.gl/puYdkG [4] https://github.com/y20k/transistor/issues/21