| January 29, 2009 11:00 PM PST | |
Establish the scope of the effort to create a mobilized version of an existing application. A number of capabilities are required to support an environment in which computing devices are mobile. Some of these capabilities are specific to an environment designed for mobility, while others may already be built into the application (though they may require modification for use in a mobilized context).
Analyze the need for increased capabilities in the mobilized application (relative to the non-mobilized version) in terms of resource management, context management, encoding, and view consistency. As appropriate, you should also consider durable storage, reliable messaging, policy, and security.
Capabilities that may need to be developed to enable a mobile environment include the following:
- Resource management: A resource such as power or bandwidth or storage space are consumables that exist in finite amounts. Resource management should allow monitoring of such attributes, such as the amount or the rate of consumption, and it should support notifications based on user-defined thresholds.
- Context management: The context of an application is the data and state that represent current conditions of the external environment, such as location, proximity, and the device being used. Context management should allow monitoring of attributes, such as current location or device type, and it should provide notification of a change in context.
- Encoding: Encoding involves the modification of data and protocol streams to meet the requirements of the current context and available resources. Examples of encoding are transcoding, privacy (encryption), and compression.
- View consistency: View consistency provides a consistent, reconcilable view of data and state that is shared among intermittently connected systems using emulation, pre-fetch, and reconciliation. Emulation allows the user to work without being concerned about whether the application is working with local or remote data or whether the data is a replicate copy with pending updates or not. Pre-fetch manages the caching of data. Reconciliation ensures that offline modifications to shared data are correctly applied to all copies.
- Durable storage: A durable-storage capability allows for persistent, writeable, durable storage of structured and unstructured data. Some capabilities use durable storage to maintain configuration and static data, while others, such as reliable messaging and view consistency, use it for data storage.
- Reliable messaging: A reliable messaging capability provides the ability to define and control the semantics of message delivery, such as whether the type of delivery is asynchronous, out of order, or once-only. An implementation of this capability should provide guaranteed and reliable transmission and receipt of arbitrary messages. It should be independent of message source and target, message format, and underlying transports and networks. It is important that the reliable-messaging provider use an interoperable format and protocol for exchanging messages.
- Policy: Policy provides a common location to collect, correlate, and react or adapt to information and events provided by the other capabilities. It receives events from the other capabilities and evaluates them against a set of stored rules. If an event tests true, an action associated with the condition is invoked. These sets of events, conditions, and actions are commonly known as event-condition-action (ECA) rules. The policy implementation should provide the ability to define and store ECA rule-based policies, and it should be able to interact with other capabilities, both when receiving events and when invoking methods.
- Security: To avoid serious consequences from malicious attackers, poorly designed applications, and inadvertent user errors, the following security measures need to be taken: Systems and users should be authenticated; authenticated systems, users, and actions should be authorized; and actions and interactions should be audited.
Intel® Mobile Applications Architecture Guide
For more complete information about compiler optimizations, see our Optimization Notice.

