Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Mobile Computing:
Mobile computing is a form of humancomputer interaction where a computer is expected to be transported during normal usage. Mobile computing has three aspects: mobile communication, mobile hardware, and mobile software. The first aspect addresses communication issues in ad-hoc and infrastructure networks as well as communication properties, protocols, data formats and concrete technologies. The second aspect focuses on the hardware, i.e. mobile devices or device components. The third aspect deals with the characteristics and requirements of mobile applications.
Adaptation: 1. Introduction
Mobile computing is characterized by a mobile device with computing capabilities operating in a wireless environment. This scenario inserts constraints not present in traditional fixed systems. Mobile devices have power restrictions and their computing capabilities are more restricted when compared to fixed devices. Also, wireless communication brings higher transmission error rates and lower and highly variable bandwidth. In order to offer acceptable services in this environment, mobile devices must provide some mechanisms to manage the environment modifications and to react to those changes. This problem can be mainly solved through adaptation. Adaptation in mobile computing means the ability an application or algorithm has to output different valid results, depending on the characteristics of the environment where the mobile device is located. This is not common in fixed systems, where the conditions are practically stable. In mobile systems, however, the environment is highly variable, which leads to this solution. There is no best strategy for adaptation. In each case, a specific strategy will fit better. This non-existence of a best strategy makes the task of defining an adaptation architecture troublesome. However, through the study of some target applications, it is possible to identify aspects that can be adapted that are more common to those applications and, thus, to define a basic adaptation architecture.
2. Architecture Specification
An adaptation architecture consists of a mobile middleware system. It provides high level services to the applications, hiding the complexities of the system from them. An application running in a mobile device may request for its location, for instance, without the knowledge of which mechanism will be used to gather the location data. When defining an adaptation architecture, prior to specifying the functionalities it will provide, it must be specified whether it is designed for a specific application or not, and the aspects it will focus.
3.1. Adaptation Architecture The different types of devices, network connection, and execution context of mobile systems when compared to fixed ones insert many constraints in the mobile environment not present in the fixed one. Due to those constraints, when defining an adaptation architecture in mobile computing, various aspects should be observed: data, security, quality of service, available resources, costs, performance, and broadcast and multicast issues. It is also important to consider whether or not the adaptation architecture is addressed to a specific application. Architectures addressed to specific applications often achieve better results, since the target application is known, and the designer may focus on its main characteristics and propose the best adaptation techniques for that application. However, those adaptation architectures can only be used for that target application. Other applications running upon this architecture will not benefit from it. Generic architectures, on the other hand, do not address a target application. Instead, some general adaptation techniques are implemented. When an application is running upon a generic architecture, it will benefit only from the adaptation techniques that can be applied to it. Since these techniques were not designed specifically for this application, they often will not achieve the best possible adaptation level. However, they will be able to achieve good adaptation levels with many applications. There is a trade off between generic and specific adaptation architectures. The most generic the architecture is, the most applications it can run. On the other hand, the most specific it is, the better results can be achieved for that specific application. 3.2. Architecture Specification There are various aspects that can be adapted in a multimedia environment. Depending on the application being adapted, the importance of some aspects, such as synchronization and delay, can be greater or lesser. When specifying a generic adaptation architecture, it is important to define first the target applications for this architecture. Once this is done, it is possible to identify which adaptation techniques can be applied to those applications, and then to define the functionalities the architecture will provide. 3.2.1. Target Applications Handheld devices computing capabilities have been growing. Some of them already have colored screens. It is already possible to access the Internet through them. Moreover, new transmission technologies providing higher bandwidth have been developed, and some of them, such as UMTS and Wi-Fi, are already in use. When defining target applications for an adaptation architecture, these facts must be considered. Video on demand is a target application for this work. Users will be able to watch music and news clips, or even movies in their handheld devices. In video on demand, the aspects to be adapted are the video and the audio. Synchronization between the video and the audio is an important issue. In addition, the delay must be constant.
A target application similar to video on demand is video conference. Instead of making a phone conference with only voice, users will be able to see each other while talking. The aspects to be adapted in this case are the same of video on demand. However, in this case, the delay must be minimum. Another target application is audio on demand. Users could listen to Internet radio stations live, or even request songs to listen from audio on demand servers. In this case, the aspect to be adapted is the own audio. Again, there may be a delay, but it must be constant. A last target application for this work is some common Internet services, such as e-mail, ftp, or the world wide web (www). Users will eventually access the Internet for checking their e-mails, reading the news, downloading files, or visiting web pages. Each one of these services have different characteristics that must be addressed. E-mails and ftp files can be compressed. In www pages, images can be adapted, and texts compressed. There is no need for synchronization between them, and the delay may be variable. 3.2.2. Adaptation Techniques There are many techniques to adapt each one of the aspects described previously. The best ones to be used depend on the users handheld devices, and the level of adaptation required. Video may be adapted in various ways. First of all, it can be colored or in gray scale. Another aspect that can be adapted in a video flow is the quality of the video. Some frames may be discarded. Also, its resolution may be set lower. On the other hand, it is not possible to discard packets while leading with audio. Broken audio is hard to understand. In this case, the aspects to be adapted are the quality of the audio and its sample rate. Images have a different approach to be adapted. The delay here is not an issue. Nevertheless, customers would not like to wait minutes for an image to load (unless they really want that image in its higher resolution). The adaptation for images can be done in three ways: reduce the number of colors, reduce the sample of the image, or reduce its quality. A last approach that can be used to decrease the amount of data to be sent over the wireless link is compressing texts before sending them. HTTP has an extensive header, which can also be compressed. Although compression is not considered an adaptation technique, it may be useful sometimes. 3.2.3. Functionalities and Services Once the target applications and the adaptation techniques for those applications are defined, it is possible to specify the functionalities the adaptation architecture will provide: image resolution modification, image number of colors decrease, video packets discard, video resolution modification, video quality modification, video conversion to black and white, audio sample ratio modification, audio quality reduction, text compression, and HTTP header compression. The adaptation architecture also provides some services to the applications: gather data location, increase or decrease quality an application quality level, increase or decrease an application priority, and enable or disable the security tools provided by the architecture.
Mobile Agents:
A software agent is an intelligent program that acts as a users personal assistant. Software agents endowed with the property of mobility are called mobile agents. Mobile agents perform a users task by migrating and executing on several hosts connected to the network. Software agents have the following properties, which distinguish them from other programs: Intelligence: Software agents employ techniques from the field of artificial intelligence, which empower them with a fair degree of intelligence and common sense. For example, the travel agent program should realize that people generally do not prefer travelling by flights that depart or arrive at the airport late in the night and the agent should avoid booking tickets on such flights. The travel agent program should be smart enough to bargain and arrange the trip so that the overall expenditure for the trip is as low as possible without compromising on the users preferences. Autonomy: The agents themselves decide the sequence of actions to be performed to achieve the users task. This autonomy enables agents to operate without requiring human intervention. Once the specifications are given to the travel agent, it should be able to proceed on its own to arrange the trip for the user without requiring the user to constantly monitor the agent. Responsiveness: Agents perceive their environment (which may be the Internet, a collection of other agents, etc.) and respond in a timely fashion to changes that occur in it. At the same time,
agents should not simply act in response to their environment, they should be able to exhibit opportunistic, goal-oriented behaviour and take the initiative when appropriate. Communicative Ability: Software agents should provide a user friendly interface so that the user can easily interact with the agent. Agents are social entities and often communicate and collaborate with one another in order to complete their tasks. For example, the travel agent program of one user must be able to communicate with other travel agents to find out about hotels which customers disliked and avoid such hotels. Adaptability: Agents learn about the users behavior and adapt themselves to suit the user. Consider a search agent that retrieves information for the user from the Internet. The search agent should be able to learn about the type of information the user is interested in and adapt itself to deliver only the relevant information to the user. Software agents can be classified as static agents and mobile agents. Static agents achieve their goal by executing on a single machine. On the other hand, mobile agents migrate from one computer to another in the network and execute on several machines. Mobility increases the functionality of the mobile agent and allows the mobile agent to perform tasks beyond the scope of static agents. For example, a travel agent program may visit several hosts such as an airline reservation system, a hotel resources host, etc. in order to achieve its function. This eliminates the need to have all the relevant databases on one host. This article gives the architecture of mobile agents and tradeoffs involved in using them.
6. After execution, Host Machine B and C send the mobile agent received by them back to the Home Machine. 7. The Home Machine retracts the agents and the data brought by the agents is analyzed. The agents are then disposed. From this we observe that a mobile agent experiences the following events in its life cycle: Creation: a brand new agent is born and its state is initialized. Dispatch: an agent travels to a new host. Cloning: a twin agent is born and the current state of the original is duplicated in the clone.
Figure 1. The life cycle of a mobile agent. Deactivation: an agent is put to sleep and its state is stored on a disk of the host. Activation: a deactivated agent is brought back to life and its state is restored from disk.
Retraction: an agent is brought back from a remote host along with its state to the home machine. Disposal: an agent is terminated and its state is lost forever.
mobile agent code can encapsulate the protocol. When a protocol is upgraded, only the mobile agent has to be altered. Asynchronous and Autonomous Execution Mobile agents operate asynchronously. Once a mobile agent is dispatched from the home machine, the home machine can disconnect from the network. The mobile agent executes autonomously without the intervention of the home machine. The home machine can reconnect at a later time and collect the agent.
Fault Tolerance
Mobile agents react dynamically and autonomously to the changes in their environment, which makes them robust, and fault tolerant. They have the ability to distribute themselves in the network in such a way as to maintain the optimal configuration for solving the particular problem. If a host is being shut down, all agents executing on that machine will be warned and Mobile agents react dynamically and autonomously to the changes in their environment, which makes them robust, and fault tolerant, given time to dispatch themselves and continue their operation on another host in the network.
Source: IDC
Windows CE:
Windows CE (now officially known as Windows Embedded Compact and previously also known as Windows Embedded CE and sometimes abbreviated WinCE) is an operating system developed by Microsoft for embedded systems. Windows CE is a distinct operating system and kernel, rather than a trimmed-down version of desktop Windows. It is not to be confused with Windows XP Embedded which is NT-based. Microsoft licenses Windows CE to OEMs and device makers. The OEMs and device makers can modify and create their own user interfaces and experiences, while Windows CE provides the technical foundation to do so. The current version of Windows Embedded Compact supports Intel x86 and compatibles, MIPS, and ARM processors.
general public. However, a number of core components that do not need adaptation to specific hardware environments (other than the CPU family) are still distributed in binary only form.
Symbian:
Symbian is an operating system (OS) and software platform designed for smartphones and currently maintained by Nokia. The Symbian platform is the successor to Symbian OS and Nokia Series 60; unlike Symbian OS, which needed an additional user interface system, Symbian includes a user interface component based on S60 5th Edition. The latest version, Symbian^3, was officially released in Q4 2010, first used in the Nokia N8. Symbian OS was originally developed by Symbian Ltd. It is a descendant of Psion's EPOC and runs exclusively on ARM processors, although an unreleased x86 port existed. Devices based on Symbian accounted for 43.5% of worldwide smartphone market share in 2010 Q2. Some estimates indicate that the cumulative number of mobile devices shipped with the Symbian OS up to the end of Q2 2010 is 385 million.
Browser:
Symbian^3 and earlier have a native WebKit based browser; indeed, Symbian was the first mobile platform to make use of WebKit (in June 2005).
Application development
From 2010, Symbian switched to using standard C++ with Qt as the SDK, which can be used with either Qt Creator or Carbide. Qt supports the older Symbian S60 3rd and 5th editions, as well as the new Symbian platform. It also supports Maemo and MeeGo, Windows, Linux and Mac OS X.Alternative application development can be done using Python (see Python for S60), Adobe Flash or Java ME. Symbian OS previously used a Symbian specific C++ version along with Carbide.c++ integrated development environment (IDE) as the native application development environment. Web Runtime (WRT) is a portable application framework that allows creating widgets on the S60 Platform; it is an extension to the S60 WebKit based browser that allows launching multiple browser instances as separate JavaScript applications.
Architecture:
Technology domains and packages Symbian's design is subdivided into technology domains, each of which comprises a number of software packages. Each technology domain has its own roadmap, and the Symbian Foundation has a team of technology managers who manage these technology domain roadmaps. Every package is allocated to exactly one technology domain, based on the general functional area to which the package contributes and by which it may be influenced. By grouping related packages by themes, the Symbian Foundation hopes to encourage a strong community to form around them and to generate discussion and review. The Symbian System Model illustrates the scope of each of the technology domains across the platform packages. Packages are owned and maintained by a package owner, a named individual from an organization member of the Symbian Foundation, who accepts code contributions from the wider Symbian community and is responsible for package. Symbian kernel The Symbian kernel (EKA2) supports sufficiently-fast real-time response to build a single-core phone around itthat is, a phone in which a single processor core executes both the user applications and the signalling stack.[37] The real-time kernel has a microkernel architecture containing only the minimum, most basic primitives and functionality, for maximum robustness, availability and responsiveness. It has been termed a nanokernel, because it needs an extended kernel to implement any other abstractions. It contains a scheduler, memory management and device drivers, with networking, telephony and file system support services in the OS Services Layer or the Base Services Layer. The inclusion of device drivers means the kernel is not a true microkernel.
Design Symbian features pre-emptive multitasking and memory protection, like other operating systems (especially those created for use on desktop computers). EPOC's approach to multitasking was inspired by VMS and is based on asynchronous server-based events. Symbian OS was created with three systems design principles in mind: 1. the integrity and security of user data is paramount 2. user time must not be wasted 3. all resources are scarce To best follow these principles, Symbian uses a microkernel, has a request-and-callback approach to services, and maintains separation between user interface and engine. The OS is optimised for low-power battery-based devices and for ROM-based systems (e.g. features like XIP and re-entrancy in shared libraries). Applications, and the OS itself, follow an objectoriented design: Model-view-controller (MVC). Later OS iterations diluted this approach in response to market demands, notably with the introduction of a real-time kernel and a platform security model in versions 8 and 9. There is a strong emphasis on conserving resources which is exemplified by Symbian-specific programming idioms like descriptors and a cleanup stack. Similar methods exist to conserve disk space, though disks on Symbian devices are usually flash memory. Further, all Symbian programming is event-based, and the central processing unit (CPU) is switched into a low power mode when applications are not directly dealing with an event. This is done via a programming idiom called active objects. Similarly the Symbian approach to threads and processes is driven by reducing overheads. Operating system The All over Model contains the following layers, from top to bottom:
Java ME
OS Services Layer
o o o o
generic OS services communications services multimedia and graphics services connectivity services
The Base Services Layer is the lowest level reachable by user-side operations; it includes the File Server and User Library, a Plug-In Framework which manages all plug-ins, Store, Central Repository, DBMS and cryptographic services. It also includes the Text Window Server and the Text Shell: the two basic services from which a completely functional port can be created without the need for any higher layer services. Symbian has a microkernel architecture, which means that the minimum necessary is within the kernel to maximise robustness, availability and responsiveness. It contains a scheduler, memory management and device drivers, but other services like networking, telephony and filesystem support are placed in the OS Services Layer or the Base Services Layer. The inclusion of device drivers means the kernel is not a true microkernel. The EKA2 real-time kernel, which has been termed a nanokernel, contains only the most basic primitives and requires an extended kernel to implement any other abstractions. Symbian is designed to emphasise compatibility with other devices, especially removable media file systems. Early development of EPOC led to adopting FAT as the internal file system, and this remains, but an object-oriented persistence model was placed over the underlying FAT to provide a POSIX-style interface and a streaming model. The internal data formats rely on using the same APIs that create the data to run all file manipulations. This has resulted in datadependence and associated difficulties with changes and data migration. There is a large networking and communication subsystem, which has three main servers called: ETEL (EPOC telephony), ESOCK (EPOC sockets) and C32 (responsible for serial communication). Each of these has a plug-in scheme. For example, ESOCK allows different ".PRT" protocol modules to implement various networking protocol schemes. The subsystem also contains code that supports short-range communication links, such as Bluetooth, IrDA and USB. There is also a large volume of user interface (UI) Code. Only the base classes and substructure were contained in Symbian OS, while most of the actual user interfaces were maintained by third parties. This is no longer the case. The three major UIs S60, UIQ and MOAP were contributed to Symbian in 2009. Symbian also contains graphics, text layout and font rendering libraries. All native Symbian C++ applications are built up from three framework classes defined by the application architecture: an application class, a document class and an application user interface class. These classes create the fundamental application behaviour. The remaining needed functions, the application view, data model and data interface, are created independently and interact solely through their APIs with the other classes. Many other things do not yet fit into this model for example, SyncML, Java ME providing another set of APIs on top of most of the OS and multimedia. Many of these are frameworks, and vendors are expected to supply plug-ins to these frameworks from third parties (for example,
Helix Player for multimedia codecs). This has the advantage that the APIs to such areas of functionality are the same on many phone models, and that vendors get a lot of flexibility. But it means that phone vendors needed to do a great deal of integration work to make a Symbian OS phone. Symbian includes a reference user-interface called "TechView." It provides a basis for starting customisation and is the environment in which much Symbian test and example code runs. It is very similar to the user interface from the Psion Series 5 personal organiser and is not used for any production phone user interface.
J2ME:
Java Platform, Micro Edition, or Java ME, is a Java platform designed for embedded systems (mobile devices are one kind of such systems) . Target devices range from industrial controls to mobile phones (especially feature phones) and set-top boxes. Java ME was formerly known as Java 2 Platform, Micro Edition (J2ME). Java ME was designed by Sun Microsystems, now a subsidiary of Oracle Corporation; the platform replaced a similar technology, PersonalJava. Originally developed under the Java Community Process as JSR 68, the different flavors of Java ME have evolved in separate JSRs. Sun provides a reference implementation of the specification, but has tended not to provide free binary implementations of its Java ME runtime environment for mobile devices, rather relying on third parties to provide their own. As of 22 December 2006, the Java ME source code is licensed under the GNU General Public License, and is released under the project name phoneME. As of 2008, all Java ME platforms are currently restricted to JRE 1.3 features and use that version of the class file format (internally known as version 47.0). Should Oracle ever declare a new round of Java ME configuration versions that support the later class file formats and language features, such as those corresponding JRE 1.5 or 1.6 (notably, generics), it will entail extra work on the part of all platform vendors to update their JREs. Java ME devices implement a profile. The most common of these are the Mobile Information Device Profile aimed at mobile devices, such as cell phones, and the Personal Profile aimed at consumer products and embedded devices like set-top boxes and PDAs. Profiles are subsets of configurations, of which there are currently two: the Connected Limited Device Configuration (CLDC) and the Connected Device Configuration (CDC). There are more than 2.1 billion Java ME enabled mobile phones and PDAs, but it is becoming old technology as it is not used on any of today's newest mobile platforms (eg iPhone, Android, Windows Phone 7, MeeGo, BlackBerry's new QNX).
The Connected Limited Device Configuration (CLDC) contains a strict subset of the Java-class libraries, and is the minimum amount needed for a Java virtual machine to operate. CLDC is basically used for classifying myriad devices into a fixed configuration. A configuration provides the most basic set of libraries and virtual-machine features that must be present in each implementation of a J2ME environment. When coupled with one or more profiles, the Connected Limited Device Configuration gives developers a solid Java platform for creating applications for consumer and embedded devices.
Foundation Profile
The Foundation Profile is a Java ME Connected Device Configuration (CDC) profile. This profile is intended to be used by devices requiring a complete implementation of the Java virtual machine up to and including the entire Java Platform, Standard Edition API. Typical
implementations will use some subset of that API set depending on the additional profiles supported. This document describes the facilities that the Foundation Profile provides to the device and other profiles that use it. This specification was developed under the Java Community Process.
Pocket PC:
According to Microsoft, the Pocket PC is "a handheld device that enables users to store and retrieve e-mail, contacts, appointments, tasks, play multimedia files, games, exchange text messages with Windows Live Messenger (formerly known as MSN Messenger), browse the Web, and more." (src: microsoft buyersguide)[dead link] From a technical standpoint, "Pocket PC" is a Microsoft specification that sets various hardware and software requirements for mobile devices bearing the "Pocket PC" label. For instance, any device which is to be classified as a Pocket PC must:
Run Microsoft's Windows Mobile, PocketPC edition Come bundled with a specific suite of applications in ROM Note: the name Windows Mobile includes both the Windows CE operating system and a suite of basic applications along with a specified user interface Include a touchscreen Include a directional pad or touchpad Include a set of hardware application buttons Be based on an ARM version 4 compatible CPU, Intel XScale CPU, MIPS CPU or SH3 CPU. (As of the Pocket PC 2002 specification, ARM-based CPUs are required.)
to develop applications without needing to code for system interface or understand wireless applications.