An Assessment of Design and Implementation Trade-Offs and Their Impact on Mobile Applications

When building an application for a mobile platform, there are many aspects to consider; portability, speed, and the user interface are just a few. Because there are several mobile devices that are capable of running custom applications and the costs associated with software development continue to increase, software portability is often a desired attribute of mobile applications. In addition, mobile devices are typically constrained with respect to memory and processor performance. Unfortunately, the effect of design and implementation decisions relative to these limitations will often conflict with the portability and usability of the software. If an application is easy to move from one device to another, the application is considered portable and less time is needed to create releases for new devices as well as maintaining updates for all devices. However, the design and implementation requirements associated with portability often create conflicts with other desirable attributes of the application. Mobile devices tend to have limited computing power and memory relative to a conventional desktop, which requires developers to become more conscious of the processing and memory efficiency of their application. While limited memory and processing power can be viewed as similar problems between many of the mobile platforms, the user interface creates a new problem for developers. Whereas desktop environments generally have the same de facto layout, user interfaces for mobile devices vary significantly and impose additional constraints on software design and implementation Leveraging from recent experience developing a commercial prototype of a language translation application, this paper will explore options the developer has to choose from in terms of programming languages and user interface design. The choice of implementation language can affect the way the application looks and performs. For instance, a Java application can be run under several different virtual machines, each making its own options and styles available to the developer. Although there is not one perfect design, techniques exist that make the development of a mobile application more efficient.