Techniques to Improve Software Development for Mobile Devices: Summary

Weeks 1-2

During the first few weeks of my project, I was primarily focused on research, rather than application.  I focused on the Android mobile phone and learned about software development on the Android operating system, common problems Android developers face, how the operating system functions, and development on mobile devices in general.  I found that one of the more interesting differences between normal software development, and development for mobile devices is that the developer must be conscientious of power consumption since mobile devices typically have issues with battery life.  The developer then has to find a balance between performance and efficient power consumption.  With this new motivation in mind, I began to focus my project with the goal of improving software development for mobile devices, specifically with regard to power consumption.

Weeks 3-5

At this stage during my research project, I began to look for a solution to the problems I found with software development on mobile devices.  The main issue for the Android device, appeared to be a lack of tools to allow developers to recognize inefficiencies in code that may cause high power consumption, resulting in poor battery life and disgruntled application users.  In order to improve this aspect of development, I determined the information regarding power consumption that developers might need such as CPU usage, screen brightness, and network traffic and planned a means for displaying this information in a manner in which developers could easily utilize this information to spot problems in their code and fix them.  This organized information, accompanied with time stamps, could be useful when properly analyzed by another piece of software.

Weeks 6-9

During the last few weeks of my research project, I set about implementing a tool that would provide developers with a means of analyzing device performance and power consumption, something that does not yet exist in a polished manner.  Initially, I developed some code that records a log file of the device’s performance and subsequent code being executed in real time.  This log file, containing all the necessary information a software developer would need to develop mobile software, is not very useful in its raw XML format.  Although it is organized and readable, it would be very tedious for a developer to read or sort through, which means an additional piece of software is needed to visually display the results.  Building off the Traviando (http://www.cs.wm.edu/~kemper/Traviando.html) research that my advisor, Dr. Peter Kemper, is involved in, I added code to this existing code base to allow the software to utilize the log file that my other piece of software creates, and visually display the information along with a trace view of all of the methods called in the application’s run in an easy to read manner for the developer.

Summary

To concisely summarize this research, I investigated software development techniques for mobile devices, specifically the Android phone, which is currently the most popular mobile operating system with about 40% of the current market share.  The main topics of investigation were interprocess communication (IPC), which is unique on the Android OS and far more technically to adequately describe in this summary, and power consumption on mobile devices, which ultimately became to primary focus.  After fully understanding the underlying architecture of the Android OS, as well as its IPC and methods of acquiring system data such as CPU, I developed a custom logger that logs the system data as well as a trace of the methods called during the application’s execution and stores the output into a log file on the phone’s internal SD card.  Using this data, and the existing visualization structure of Traviando, I was able to generate a modified visualization to display the collected data in a readable and sequential view.  Traviando itself, takes in specially formated XML files to generate a visualization, which the user can also interact with after generation.  I created a converter that would take my custom Android system log and trace files as input and output a Traviando formatted XML file that incorporated the additional system data I collected.  This visualization, although not fully polished or featured yet, has the potential to greatly aid Android developers with software development, specifically helping them recognize inefficiencies in code that may cause poor power consumption.

Techniques to Improve Software Development for Mobile Devices Abstract

In current society, smart-phones like iPhones and Android phones have become devices that people rely on in their daily lives.  Since programming these devices is a challenging engineering exercise, I propose to investigate techniques to make software development for smart-phones easier and more productive. The concrete concept that I envision is based on observations made during program execution. The collection of these technical observations and data, know as the program trace analysis, has the potential to provide immediate feedback to a programmer in program tests, especially if such observations are adequately and graphically visualized. I propose to elaborate upon this concept and to refine it to an extent such that I can do a proof-of-concept implementation. The concrete platform I will focus on is the common Google Android platform with Java as the primary programming language. The technical question that I am hoping to answer is: how can an automated trace analyzer help a programmer identify errors in Android programs? The insights I gain from this study will contribute to answering the more general question: by what means can we improve the quality of software for mobile phone applications?