Denys Poshyvanyk

Maintaining and Evolving Mobile Apps

The mobile handset industry has been growing at an unprecedented rate. This global app economy that encompasses millions of apps and developers, supporting billions of devices and users, has been a tremendous success. Many of these mobile apps have features that rival their desktop counterparts and span several domain categories from games to medical apps. Yet, app developers and testers face new and emerging challenges such as rapid platform/library evolution resulting in API instability, platform fragmentation, continuous market pressure for frequent releases, energy consumption issues, and countless unstructured user reviews that need to be analyzed to find bugs and improve apps.

In this tutorial I will present specific solutions aimed at supporting key maintenance activities by mobile developers. First, I will overview a number of existing approaches for testing mobile apps, including our recent work on mining Android app usages for the purpose of generating actionable GUI-based execution scenarios on real devices. The approach aims at mining models capable of generating feasible and fully replayable scenarios reflecting either natural user behavior or uncommon usages (e.g., corner cases) for a given app. Second, I will present solutions for supporting bug reporting and crash discovery in mobile apps that rely upon program artifacts extracted through static and dynamic analyses. Third, I will talk about challenges and solutions for optimizing energy consumption in Android apps. Finally, I will highlight the opportunities that exist in this research area, in terms of open technical problems and the potential benefits of solving these problems.

Speaker's Bio
Denys Poshyvanyk is an Associate Professor in the Department of Computer Science at the College of William and Mary (W&M) in Virginia, USA where he leads SEMERU research group. His research interests are in the area of software engineering, evolution, maintenance and program comprehension. His recent research projects span topics such as large-scale repository mining, traceability, mobile app (Android) development and testing, performance testing, energy consumption, and code reuse.