- Potential interaction with other applications — Most embedded devices only have factory-installed software, but mobile devices may have numerous applications from varied sources with the possibility of interactions among them.
- Sensor handling — Most smartphones include an accelerometer that responds to device movement, a touch screen that responds to gestures, real and/or virtual keyboards, GPS, a microphone usable by applications other than voice call, camera and multiple networking protocols.
- Native and hybrid (mobile web) applications — Most embedded devices use only software installed directly on the device, but mobile devices often include applications that invoke service over the telephone network or the Internet via a web browser and affect data and displays on the device.
- Families of hardware and software platforms — Most embedded devices execute code that is custom-built for the properties of that device, but mobile devices may have to support apps that were written for other varied devices supporting the OS and for different versions of the OS. E.g., an Android developer has to decide whether to build one app or multiple versions to run on a broad range of Android devices and OS releases.
- Security — Mobile platforms are open, allowing the installation of new malware apps that can affect the overall operations of the device.
- User interface — A mobile app must share common elements of the user interface with other apps and must adhere to externally developed user interface guidelines, many of which are implemented in the SDK that is part of the platform.
- Complexity of testing — Native applications can be tested in a traditional manner or via a PC-based emulator. Mobile web apps have to deal with additional issues associated with transmission through gateways and the telephone network.
- Power consumption — Many aspects of an app affect its use of the device's power, thus, affecting the battery lifetime. Dedicated devices can be optimized for maximum battery life, but mobile apps may make extensive use of battery-draining resources.
What's Different?
Mobile apps introduce considerations that a programmer does not have to deal with on desktop/laptop applications.- Varied network speed — The wireless network that a mobile device connects to will be of varying characteristics as the device moves (even when it doesn't move — due to increased usage, added interference etc). Many cellular network technologies will fall back to earlier technologies with less capacity.
- Network failure — The lack of a viable data network is more likely for mobile devices because there are places where the network is unavailable. The application either needs to have an offline mode or gracefully fail based on the absence of network connection.
- Varying platform performance — Ideally, an app is available on as many devices as possible, which implies supporting different devices, and usually, different platforms. E.g., an app may be designed to run on Android v7.0 but devices that run Android v7.0 may have a different CPU, different amount of memory, different hardware architectures or different OS release. Moreover, given that users are able to run multiple apps at the same time, the processing resources may be further tapped and less predictable. Because the Android OS is an open source, device manufacturers can modify it to better use their device, introducing more variation for app developers.
- Varying screen size and resolution — Ignoring this may make a great app on one device appear chunky on another.
- Difficult to test apps fully — Given the possible variation on devices, it is difficult to test all the current devices, let alone the new ones.
The User Interface
Using a mobile device is different from using a desktop or laptop computer. Gestures, sensors and location data may be used in games and traditional computers, but they play a dominant role in many mobile apps. The smaller display and different styles of user interaction have a major impact on the interaction design for a mobile app, which in turn, influences the app development.The mobile user interface paradigm is based around widgets, touch, physical motion and keyboards rather than WIMP (Windows, icons, menus, pointers). Other context dependencies may also play a role in the user experience, including such aspects as physical location, proximity to other mobile devices and the activation of device features.
Interface design is of critical importance when dealing with limited screen space. Mobile users often seek to quickly complete a simple task and cannot take advantage of the full range of functionality provided by a traditional Web application. The interface design must highlight the most commonly used functions and make the most effective use of the screen, including the user input and the associated motion and location information.
Testing and Maintenance
Testing is an important component of software development and it is made more complex given the diversity of mobile platforms. Consider testing for Android devices. It's insufficient to test an Android app on an emulator; it must be tested across many different Android devices running different versions of the OS on various telecom networks. Integrated testing suites would help to simplify the testing process.Application maintenance is non-trivial due to the rapidly changing world of mobile platforms. While early-adopter consumers are willing to update their devices and apps, most enterprise users are less likely to do so, especially when their companies have policies discouraging them from doing so.
Source
- A.I. Wasserman, "Software Engineering Issues for Mobile Application Development", Proc. of the FSE/SDP workshop on Future of Software Engineering Research, Santa Fe, USA, November 7 - 8, 2010
- K.W. Tracy, "Mobile Application Development Experiences on Apple’s iOS and Android OS", IEEE Potentials, Volume 31, Issue 4, July-Aug. 2012
No comments:
Post a Comment