The mobile computing landscape is characterized by extreme heterogeneity. According to Facebook, the mobile version of their application is accessed from more than 2,500 varieties of mobile devices. Modern smartphones and tablets differ in terms of their respective hardware setups (e.g., screens, sensors, processors, memories, batteries, etc.), platforms (e.g., Android, iOS), versions, etc. Furthermore, mobile devices access the Web via mobile networks with dissimilar characteristics such as latency, bandwidth, and packet loss rates (e.g., 3G, 4G, Wi-Fi, etc.). It is the confluence of these differences that causes the heterogeneity challenge in mobile computing.
Addressing the heterogeneity challenge entails engineering mobile applications that can be used seamlessly on any device. As is commonly the case, addressing a challenge of this magnitude requires satisfying several constraints, only a subset of which can be satisfied at the same time. Specifically, the engineering process is subject to the following constraints: (1) maximize utility: provide the required functionality in as user-friendly fashion as possible; this is commonly achieved by supporting a native look-and-feel on every platform and properly leveraging a given device’s hardware capacities (e.g., screen resolution, touch interface, sensors, etc.); (2) minimize energy consumption: as the energy demands of mobile applications continue to outstrip the battery capacities of modern devices, mobile applications should be engineered with energy efficiency in mind; (3) minimize software development and maintenance costs: software development is costly and software maintenance is even more so.
The software maintenance and evolution constraint is particularly hard to satisfy in mobile computing. Mobile applications designed yesterday will have to run on mobile devices to be designed tomorrow. Mobile devices are evolving rapidly, with each new device featuring new hardware capabilities. Mobile software must keep up with the device evolution to provide quality user experience while keeping the energy consumption in check. Perfective maintenance, which codifies a set of activities aimed at optimizing applications for different objectives, is particularly hard hit by the heterogeneity challenge.
When planning their next mobile application, enterprises have no choice but to carefully select which two of the three constraints (utility, energy efficiency, development costs) they want to satisfy and plan their software development processes accordingly.