MSc. CS, MRL, RLLab/MILA, McGill University

Detection of antipatterns in Mobile Architectures and resolving them

Hii everyone here. Today, I am going to write about the research project that I did at LATECE, UQAM during the summer of 2015. It was one of the most important experiences I have obtained so far in my life. Here I discuss why such a research is required to be done and its importance.

Mobiles have become an integral part of the lives of human beings. People from all the domains are now using mobiles on a regular basis. Also, there have emerged a myriad of mobile operating systems that have complemented the rise of the number of mobile users. Android, is eminent of all of such operating systems. According to an estimate, there are more than 1 billion Android users today, which accounts for more than 80 percent of the total mobile users. Furthermore, there are more than 1.6 million Android apps, as of July 2015, which is quite incredible per se. Additionally, hundreds of other Android apps are getting added to it every day. Nevertheless, the emergence of such copious number of Android apps has raised several scientific challenges related to Android as well.

Most of the times, lack of profound formal training of the Android app developers results in the non-compliance of the software-engineering guidelines by the apps. Furthermore, because the emergence of Android operating system and the number of apps in its store has been quite recent, there have not been any intensive research done on the

performance degradation of Android apps. While the former factor applies to many other domains as well and so has been deeply studied, the latter is yet to be explored and is graver than its former counterpart. The latter problem can be attributed to anti-patterns, as is explained below.

Like any other complex software system, the Android system has to evolve continuously, to fit new user requirements and new runtime contexts. The changes made to accommodate new user requirements, and runtime contexts may degrade the design and, consequently the Quality of Service(QoS) of these systems. This degradation results in the appearance of design defects, also known as anti-patterns. Anti-patterns are bad solutions to common design problems and correspond to defects related to the degradation of the architectural properties of the software. Moreover, anti-patterns resulting from these changes hinder the maintenance and evolution of software, not only contributing to the technical debts but also incurring additional cost to the project. Furthermore, the presence of anti-patterns inevitably leads to resource leaks(CPU, memory, battery, etc.), thus preventing the deployment of sustainable solutions.

The detection of such anti-patterns was the cornerstone of the research plan. Research on Anti-patterns on Android systems is still at its nascent stage. As a result, they are not even defined which further elicits more and more anti-patterns in the upcoming and updated apps. The detection and correction of these defects are thus critical activities to improve the current design of QoS of Android apps and hence its prospects in future.

The main objectives of the project included:

Using the data-mining techniques to mine the artifacts of the Android-apps.

Finding out and defining the kinds of anti-pattern in Android systems by examining the artifacts collected through data-mining.

Demonstrate how negatively an anti-pattern can affect the performance of the Android device.

Suggesting different possible solutions for each and every anti-pattern defined.

Demonstrating the performance-gain achieved after correcting the anti-patterns.

Using the state of the art visualization techniques to display the results of the analysis in an user-friendly manner.

Using the data collected techniques of Machine Learning, creating an module which can determine the odds of presence of antipatterns in any Android app without running any intensive examination