Assisting Developers and Users in Developing and Choosing Efficient Mobile Device Apps

Les applications pour appareils mobiles jouent, de nos jours, un role important dans nos vies. Meme si la consommation energetique affecte la duree de vie de la batterie des appareils mobiles et limite l’utilisation des appareils, nous les utilisons presque partout, tout le temps et pour presque tout. Avec la croissance exponentielle du marche des applications pour appareils mobiles, les developpeurs ont ete temoins d’un changement radical dans le paysage du developpement du logiciel. Les applications mobiles presentent de nouveaux defis dans la conception et l’implantation logicielle dus aux contraintes des ressources internes (tel que la batterie, le CPU et la memoire) et externes (l’utilisation de donnes). Donc, les exigences traditionnelles non-fonctionnelles, tels que la fonctionnalite et la maintenabilite, ont ete eclipsees par la performance. Les chercheurs etudient activement le role des pratiques de codage sur la consommation energetique. Cependant, le CPU, la memoire et les utilisations du reseau sont aussi des mesures importantes pour la performance. Meme si le materiel informatique des appareils mobiles s’est beaucoup ameliore dans les dernieres annees, des nouveaux utilisateurs arrivent, possedant des appareils bas de gamme avec acces limite aux donnees. Les developpeurs doivent donc gerer les ressources attentivement car les nouveaux marches possedent une part importante des nouveaux utilisateurs qui se connectent en ligne pour la premiere fois. La performance des applications pour les appareils mobiles est donc un sujet tres important. Des etudes recentes suggerent que les ingenieurs logiciels peuvent aider a reduire la consommation energetique en tenant compte des impacts de leurs decisions de conception et d’implantation sur l’energie. Mais les decisions des developpeurs ont un impact aussi sur le CPU, la memoire et l’usage du reseau. Les developpeurs doivent aussi prendre en consideration la performance au moment d’evoluer le design de l’application des appareils mobiles. Le probleme est que les developpeurs n’ont pas de soutien pour comprendre l’impact de leurs decisions sur la performance de leurs apps. Ce probleme est aussi vrai pour les utilisateurs d’appareils mobiles qui installent des apps en ignorant s’il existe des alternatives plus efficaces. Dans cette dissertation, nous aidons les developpeurs et les utilisateurs a connaitre d’avantage l’impact de leurs decisions sur la performance des applications qu’ils developpent et qu’ils consomment. Nous voulons aider les developpeurs et les utilisateurs a developper et choisir des applications performantes. Nous fournissons des observations, des techniques et des lignes directrices qui aiderons les developpeurs a prendre des decisions informees pour ameliorer la performance de leurs applications. Nous proposons aussi une approche qui peut servir de complement aux marches des applications pour appareils mobiles pour qu’ils puissent aider les developpeurs et les utilisateurs a chercher des applications efficientes. Notre contribution est un pas precieux vers l’ingenierie de logiciels performants pour les applications des appareils mobiles et un avantage pour les utilisateurs d’appareils mobiles qui veulent utiliser des applications performantes. ----------ABSTRACT: Mobile device applications (apps) play nowadays a central role in our life. Although energy consumption affects battery life of mobile devices and limits device use, we use them almost anywhere, all the time, and for almost everything. With the exponential growth of the market of mobile device apps in recent years, developers have witnessed a radical change in the landscape of software development. Mobile apps introduce new challenges in software design and implementation due to the constraints of internal resources (such as battery, CPU, and memory), as well as external resources (as data usage). Thus, traditional non-functional requirements, such as functionality and maintainability, have been overshadowed by performance. Researchers are actively investigating the role of coding practices on energy consumption. However, CPU, memory, and network usages are also important performance metrics. Although the hardware of mobile devices has considerably improved in recent years, emerging market users own low-devices and have limited access to data connection. Therefore, developers should manage resources mindfully because emerging markets own a significant share of the new users coming on-line for the first time. Thus, the performance of mobile device apps is a very important topic. Recent studies suggest that software engineers can help reduce energy consumption by considering the energy impacts of their design and implementation decisions. But developers’decisions also have an impact on CPU, memory, and network usages. So that, developers must take into account performance when evolving the design of mobile device apps. The problem is that mobile device app developers have no support to understand the impact of their decisions on their apps performance. This problem is also true for mobile device users who install apps ignoring if there exist more efficient alternatives. In this dissertation we help developers and users to know more about the impact of their decisions on the performance of apps they develop and consume, respectively. Thus, we want to assist developers and users in developing and choosing, respectively, efficient mobile device apps. We provide observations, techniques, and guidelines to help developers make informed decisions to improve the performance of their apps. We also propose an approach to complement mobile device app marketplaces to assist developers and users to search for efficient apps. Our contribution is a valuable step towards efficient software engineering for mobile device apps and a benefit for mobile device users who want to use efficient apps.