2.3 Middleware for mobile systems
With the fast development of mobile systems and the popularity of mobile applications, a new kind of middleware: the middleware for mobile systems is created. The middleware for mobile systems is very different from the middleware for distributed systems, and it presents new functionalities and characteristics. This is caused by mobility that brings opportunities of new applications as well as difficulties for developers. In order to understand the new requirements for the middleware, we will at first introduce mobile systems and highlight the extents to which they differ from distributed systems. We will also introduce mobile applications and the problems with mobile application development. Afterwards, we will explain the middleware for mobile systems, give a general framework for describing the middleware, and define the middleware.
2.3.1 Mobile systems
With the development and penetration of wireless communication technologies, distributed systems are evolving into mobile systems, which can be seen as a special kind of distributed system designed for mobile, wireless communication environments. Mobility results in a total meltdown [121] of the stability assumptions (e.g. network structure, network connection, power supply, CPU, etc.) associated with traditional distributed systems. This is mainly caused by the possibility of roaming(1) and unstable wireless connections. Mobile systems differentiate from distributed systems mainly in the following aspects:
Unfixed network structure The fixed network structure of distributed systems does not hold for mobile systems anymore. Roaming nodes build an unfixed network structure in mobile systems. The network topology and structure are changing correspondingly when the mobile devices move to other locations. The current existing wireless networks can be divided as nomadic networks and Mobile Ad-hoc NETworks (MANET), which are defined based on whether there exists fixed infrastructure support or not. A nomadic network utilizes the infrastructure as access points to establish connectivity. Examples of this kind of network are Telecom networks like GPRS/GSM/UMTS with base stations, Wireless LAN (WLAN) with access point support, etc. In contrast, an ad-hoc network does not have the infrastructure support. It uses direct neighbors as relays to connect to other nodes. The nomadic network has still a relative structured space where devices are allowed to move inside the scope of areas covered by access points. While the network structure of the MANET [114, 127] is completely unfixed, since the MANET allows unrestricted mobility of the terminals, as long as at least one terminal is within transmission range. Typical examples of the MANET are Wireless LAN without access point support, wireless PAN(Personal Access Network) including Bluetooth, IrDA, RFID.
Unstable network connection Wireless network connections are very unstable compared to fixed network connections. The wireless connection is highly variable in performance and reliability. The connection is rather intermittent. During roaming, devices can reach an area with no coverage or where the wireless signal is weak. The bandwidth may suddenly drop to zero and the connection may be lost. Besides, latencies in wireless networks are generally greater than in fixed networks, throughput will generally be lower and may vary unpredictably, and losses and errors are likely to be more frequent.
Resource-limited device Mobile devices vary from mobile PC, personal digital assistants, mobile phones, to smart cards, etc. For a given cost and level of technology, tradeoffs will be made between weight, power, size and computational resources such as processor speed, memory size, and disk capacity [123]. Although the capability and technologies of mobile devices are always in improvement, they will always be resource-limited relative to static devices.
Dynamic context Mobility defines a very dynamic execution environment. Context [121, 126, 154] represents the peculiar and novel aspect of mobile computing, to the point that some researchers characterize mobility as context-aware computing. There exist different definitions of context. For example, the researchers [125] define context to be the constantly changing execution environment, which includes
- Computing environment available processors, devices accessible for user input and display, network capacity, connectivity, and costs of computing.
- User environment location, collection of nearby people, and social situation.
- Physical environment lighting and noise level.
While some researchers [121] think that the context of a mobile unit is determined by its current location which, in turn, defines the environment where the computation associated with the unit is performed. The context may include resources, services, as well as other components of the system.
2.3.2 Mobile applications
Mobility brings great opportunities, and new types of mobile applications [143, 150] have emerged. It is a trend and of great business value to offer mobile applications to end-users. Here we introduce some important classes of mobile applications.
Nomadic applications In nomadic applications, mobile components make use of wireless networks connect to a fixed network infrastructure, such as the Internet, and they may suffer periods of disconnection while moving between points of connectivity. Such applications typically employ infrastructure networks like WLAN or GSM/GPRS networks.
Location-based services An important element of mobile computing lies in the device's interaction with location-based services [60]. That is, the ability to discover what services are available at a particular location and communicate with them. One popular example is the telecom GSM/GPRS location-based services, with which the users can get surrounding information based on the current location, such as traffic situation, close restaurants, gas stations, hospitals, ATMs, etc.
Context-aware applications One of the most important class of applications within mobile environments is context-aware applications [125, 126, 6], which operate in fluctuating environments and adapt themselves to provide the best level of service to the user. There exit different definitions of the context-aware applications [154, 125, 6], according to the degree of context-awareness presented to users (i.e., how much mobility should the users perceive), and who will activate the adaption, i.e., the predefined behavior in the application or the input from the user.
Mobile e-commerce Mobile e-commerce [143, 150] (also called mobile commerce or m-commerce) is defined as all activities related to a (potential) commercial transaction conducted through communications networks that interface with wireless (or mobile) devices. Mobile e-commerce has presented a wide range of interesting application types [60], which include reservation and ticketing systems that allow the user to book at nearby restaurants and taxi firms, and advertising applications allowing retailers to present their latest offers to customers close by. Automated tolling is another encouraging application area. For example, the ROBIN toll collection system uses the satellite-based GPS (Global Positioning System) to determine when a vehicle is on a toll road and charges the on-board device.
Collaborative applications Collaborative applications [95] mean that mobile nodes use the wireless network to interact with other mobile nodes that have come together at some common location. Although these applications may use infrastructure networks, they will often use ad-hoc networks to support communication without the need of a separate infrastructure. Consequently, this collaborative style of application allows loosely coupled components to communicate and collaborate in a spontaneous manner. The hot-pot available in airports and meeting centers are examples of such applications. This kind of application is also very useful in emergency or in military case. For instance, in war fields, or at the scene of accident, the people can connect and communicate each other without the infrastructure support.
2.3.3 Problems with mobile application development
From the preceding introduced different mobile applications we can see that the mobile applications have much more complicated requirements than distributed applications since they are placed in a dynamic changing environment. They need to provide much more services to end-users. For instance, they need to provide continuous connectivity service when the users are roaming (Nomadic Applications), they need to discover what services are available at a particular location and communicate with them (Location-based Services), or do transactions with them (Mobile E-commerce), they need to operate in fluctuating environments and adapt themselves to provide the best level of service to the user (Context-aware Applications), they need to discover the available peers and to interact with them (Collaborative Applications), etc.
Correspondingly, it is very difficult to develop dependable mobile applications. The application developers need to integrate the dynamic changing, heterogeneous components together in order to perform the required tasks. They need to manage the movement of components, unstable wireless network connection, changing context. etc. In addition, they need to deal with different end-user requirements and provide different services and functionalities. For instance, how to present the context and the level of context-awareness is a problem to face. Some end-users want to hide the mobility and have continuous service in the mobile environment. Some users want to be aware of the context information, and the required content of the context varies a lot, too.
2.3.4 Middleware for mobile systems
Obviously, the middleware for distributed systems can not simplify and help the development of mobile applications so much anymore, since it does not provide enough services to help the application developers be released from the complicated mobility scenarios. Accordingly, a type of new middleware-middleware for mobile systems has been created. The key to middleware for mobile systems is to provide support across the mobile application domains, help application developers overcome the complexity and problems of mobility, and enhance the dependability and usability of developed applications.
As the demand for rapid deployment of dependable new mobile applications increases, middleware is emerging as one of the most active areas of system research in mobility [121]. Many middleware platforms for mobile systems [29, 60, 55] have been created. This is partly because that middleware can take advantage of the deployed software infrastructure while providing clean high-level programming abstractions in languages already available today. And it is better than developing a specialized language, which requires too much investment and entail unacceptable risks. Middleware also hides the protocol layer but makes explicit the key concepts involved in the development of mobile applications, e.g., the management of location data, event notification, quality of service assessment, adaptability, etc.
As a quite new research area, there is no common agreement or understanding of the middleware for mobile systems. The middleware platforms [29, 60, 55] present a great diversity:
- they have distinct functionalities and provide various services to applications;
- they use very different design concepts and strategies;
- the aimed wireless network could be different (e.g. nomadic network or ad-hoc network);
- they exist because of mobility or in spite of mobility or both [102];
- the moving units can be logical or physical mobile or both [102];
- the definition of context and the level of context-awareness can be very different;
There exist some papers [29, 60, 55] that survey the middleware for mobile systems. However, they focus mainly on technical details and design strategies of the different middleware. What is missing is to apprehend the middleware from an abstract layer, which should abstract from particular product characteristics and provide a conceptual framework for understanding and comparing the different approaches. In order to fill in this blank, we will explore a framework for describing the middleware. We will abstract from specific implementation details and focus on the important and general aspects presented by the middleware.
We will start from exploring and comparing the aspects abstracted for the middleware for distributed systems. The four aspects (Table 2.1) given in Section 2.2: A1 component interoperability, A2 component behavior, A3 network communication and A4 distribution transparency are adapted to A1 component interoperability, A2 component interaction, A3 wireless network communication and A4 context awareness correspondingly in the mobile system (Table 2.1). Besides these four items, we will mention other two aspects, which are specific for mobile systems. They are A5 space definition and A6 dynamic change.
A1 Component interoperability One of the main requirement for middleware for mobile systems is still to integrate heterogeneous distributed components, and make the components a single interoperable coherent system. However, the roaming components and unstable wireless connection make the integration much more complicated. Components may come and leave rapidly, and services that are available when we disconnect from the network may not be there anymore when we reconnect. Location is no longer fixed and mobile nodes can roam to other places where new services are available in a new surrounding. Depending on where we are and if we are moving, bandwidth and quality of the network connection may vary greatly as well. The middleware needs to manage the roaming components, the unstable wireless connection, the dynamic context, etc.
Besides component interoperability, the middleware needs to provide other diverse functionalities to satisfy different application requirements. The middleware for mobile systems exists because of mobility or in spite of mobility or both. Some middleware hides the mobility completely from the application, and they provide continuous service when components roaming. Application components do not realize the wireless environment at all. While some middleware monitors the dynamic environment and reflects the context information to the applications.
Table 2.1 The framework for middleware: comparison between the middleware for distributed systems and the middleware for mobile systems
A2 Component interaction Managing component behaviors is still one important task of middleware for mobile systems. However, it focuses much more on component interaction than intra-component behavior. Component interaction covers component communication, collaboration, and coordination. In a mobile environment, component collaboration and coordination are very critical and dynamic. How [121] to discover who is around for interaction with other components in the dynamic environment is an important characteristic that differentiates among middleware that support mobility. Some researchers [120] argue that coordination is central to understanding mobility, and the key of the middleware is to define the coordination.
In a mobile setting, the components involved in an interaction change dynamically due to their migration or connectivity patterns. This results in dynamic reconfiguration among these components. While the static assumption of network structure, network connection and execution context in distributed systems makes the component interaction quite static. The components involved for interactions are generally fixed. Such fixed configurations will not change till a dynamic change happens. And the messages for communication are always supposed to be successfully transmitted by the network.
A3 Wireless network communication The middleware deals with unstable wireless connections. Some middleware explores asynchronous communication paradigms for wireless communication, since the characteristics of wireless communication media (e.g., low and variable bandwidth, frequent disconnections, etc.) favor a decoupled and opportunistic communication paradigm: decoupled in the sense that computation proceeds even in the presence of disconnections, and opportunistic as it exploits connectivity whenever it becomes available. In this case, the communication happens only when network connection is available, and the component computation proceeds even in presence of disconnections. Some middleware offers efficient and reliable communications over the unstable wireless network connections. Some middleware explores mechanisms that allows continuous execution of application components when disconnection happens.
A4 Context-awareness The middleware for mobile systems presents great diversity according to different application requirements. Some middleware still holds distribution transparency, and they provide interaction, network communication and location transparency to the application. Some middleware provide location related and context information to the applications. The definition of context and the level of context-awareness can be very different.
A5 Space definition The definition of space is a key factor when dealing with mobility, since the space decides the allowed roaming style of components, influences the interaction and communication models of components. Generally, the targeted wireless network of a middleware decides the definition of spaces. For example, the nomadic network has a structured space, which is divided into regular patches with a base station supporting the communication needs of the components in that special area. Roaming among cells entails special handover protocols, i.e., communication behavior is tied to space structure. In the case of ad-hoc networks, the space lacks structure but the distance metric is important because communication can take place only when components are within range.
A6 Dynamic change The stability assumptions in distributed systems make the software architecture static. Dynamic changes are generally only important for safety- and mission-critical systems, such as air traffic control or telephone switching systems, where shutting down and restarting the system incurs unacceptable delays and failures. On the contrary, dynamic change is a main characteristic of mobile systems.
The stability assumptions associated with traditional distributed computing is completely broken in mobile systems. When devices can move to different locations, their context may change, and that mobile hosts are resource limited. Wireless connections are very unstable. All these result in a very dynamic software architecture, where configurations and interactions have to be adapted to the changing context, relative location of components, and the network connection. Consequently, supporting for runtime modification is a key aspect of middleware for mobile systems.
Based on the understanding, we now define the middleware for mobile systems as:
Def. 2.2 Middleware for mobile systems is a middleware (see Def. 2.1) designed for mobile systems. It is a set of distributed software services that exists between network operating systems and mobile applications that use wireless networks. It adds mechanisms and services that are much more specialized than those provided by the operating system. It integrates heterogeneous mobile components, and makes the components a single interoperable coherent system. It has special consideration and treatment of locations, wireless network connections, and possibly context-related aspects.
Middleware is a relative concept, as it is closely related to distributed operating systems. Whether a given service is classified as middleware may change over time. A facility that is currently regarded as part of a middleware may become one part of operating system in the future, to simplify mobile system construction and to increase the commercial value of the operating system. For example, some researchers [153, 126] explore the operating system to support context-aware computing. In our context, we assume that the operating system provides simple communication means to connect to other computers, e.g., socket programming, and it does not provide further services to manage roaming components and wireless network connections.