The goal of the internship is to design and implement self-healing techniques for Event-Driven frameworks. Given an Android app, we want to automatically synthesize a new version of the app that avoids protocol violations—for example removing particular interleavings of events.
Developing reliable Android applications is difficult and error-prone. Developers struggle to write the asynchronous code executed when receiving an event (e.g. touching the screen of the device). A challenge for the developers is to think about what happens when the application runs with different orders of events. In an
The goal of the internship is to design and implement “self-healing” techniques for Event-Driven frameworks. Given an Android app, we want to automatically synthesize a new version of the app that avoids protocol violations—for example removing particular interleavings of events. While similar approaches exist for data-race errors [1, 7], no techniques exist to tackle protocol violations for event-driven frameworks.
The main objective of the internship is to define the self-healing problem and the synthesis algorithm, implement the algorithm (including the instrumentation of existing Android applications), and evaluate their efficacy and performance on real Android apps. The approach will rely on previous works on Android framework models [6, 5], static analysis techniques (e.g., [2, 4]), and component-based design for Java .
The internship can take place either in the Cosynus research team of the Computer Science Laboratory of the École Polytechnique (LIX), or in the Spirals team at INRIA Lille — Nord Europe. In both cases, it will be jointly supervised by Sergio Mover (from LIX) and Simon Bliudze (from Inria).
Additional information & applying
For additional information, send an email to Sergio Mover and Simon Bliudze. Apply by sending your curriculum vitae and a motivation letter to the same addresses.
- Christoffer Quist Adamsen, Anders Møller, Rezwana Karim, Manu Sridharan, Frank Tip, and Koushik Sen. Repairing event race errors by controlling nondeterminism. In Proceedings of the 39th International Conference on Software Engineering, pages 289–299. IEEE Press, 2017
- Sam Blackshear, Bor-Yuh Evan Chang, and Manu Sridharan. Selective control-flow abstraction via jumping. ACM SIGPLAN Notices, 50(10):163–182, 2015.
- Simon Bliudze, Anastasia Mavridou, Radoslaw Szymanek, and Alina Zolotukhina. Exogenous coordination of concurrent software components with JavaBIP. Softw., Pract. Exper., 47(11):1801–1836, 2017.
- Roberto Cavada, Alessandro Cimatti, Michele Dorigatti, Alberto Griggio, Alessandro Mariotti, Andrea Micheli, Sergio Mover, Marco Roveri, and Stefano Tonetta. The nuXmv symbolic model checker. In Computer Aided Verification, pages 334–342, 2014.
- Shawn Meier, Aleksandar Chakarov, Maxwell Russek, Sergio Mover, and Bor-Yuh Evan Chang. Abstracting event-driven systems with
lifestaterules. CoRR, abs/1701.00161, 2017.
- Arjun Radhakrishna, Nicholas V. Lewchenko, Shawn Meier, Sergio Mover, Krishna Chaitanya Sripada, Damien Zufferey, Bor-Yuh Evan Chang, and Pavol Cerný. Droidstar: callback typestates for Android classes. In Proceedings of the 40th International Conference on Software Engineering, ICSE 2018, Gothenburg, Sweden, May 27 – June 03, 2018, pages 1160–1170, 2018.
- Guy Martin Tchamgoue, Kyong Hoon Kim, and Yong-Kee Jun.
Eventhealer: Bypassing data races in event-driven programs. Journal of Systems and Software, 118:208–220, 2016.