Towards a Programming Model for Ubiquitous Computing

Towards a Programming Model for Ubiquitous Computing

Jorge Barbosa, Fabiane Dillenburg, Alex Garzão, Gustavo Lermen, Cristiano Costa
DOI: 10.4018/978-1-60960-042-6.ch040
OnDemand:
(Individual Chapters)
Available
$37.50
No Current Special Offers
TOTAL SAVINGS: $37.50

Abstract

Mobile computing is been driven by the proliferation of portable devices and wireless communication. Potentially, in the mobile computing scenario, the users can move in different environments and the applications can automatically explore their surroundings. This kind of context-aware application is emerging, but is not yet widely disseminated. Based on perceived context, the application can modify its behavior. This process, in which software modifies itself according to sensed data, is named Adaptation. This constitutes the core of Ubiquitous Computing. The ubiquitous computing scenario brings many new problems such as coping with the limited processing power of mobile devices, frequent disconnections, the migration of code and tasks between heterogeneous devices, and others. Current practical approaches to the ubiquitous computing problem usually rely upon traditional computing paradigms conceived back when distributed applications where not a concern. Holoparadigm (in short Holo) was proposed as a model to support the development of distributed systems. Based on Holo concepts, a new programming language called HoloLanguage (in short, HoloL) was created. In this chapter, we propose the use of Holo for developing and executing ubiquitous applications. We explore the HoloL for ubiquitous programming and propose a full platform to develop and execute Holo programs. The language supports mobility, adaptation, and context awareness. The execution environment is based on a virtual machine that implements the concepts proposed by Holo. The environment supports distribution and strong code mobility.
Chapter Preview
Top

Background

Holoparadigm is based on an abstraction called being, which is used to support mobility. There are two kinds of beings: elementary being, which is an atomic being, without composition levels, and composed being, which is a being composed by other beings. An elementary being is organized in three parts: interface, behavior, and history. The interface describes the possible interactions between beings. The behavior contains actions, which implement the being’s functionality. The history is a shared tuple space in a being. A composed being (Figure 1a) has the same organization of an elementary one, but may also contain other beings (which are named component beings). Each being has its own encapsulated history.

Figure 1.

Being organization

978-1-60960-042-6.ch040.f01

Key Terms in this Chapter

Holo Compiler (in short, HoloC): The compiler used to convert programs developed using Hololanguage to byte codes to be executed in the HoloVM.

Hololanguage (in short, HoloL): The programming language created to support the concepts proposed by the Holoparadigm.

Holoparadigm (in short, Holo): Programming model initially proposed for traditional distributed systems, but which has several concepts that can be used to create ubiquitous systems.

Programming Model: It is a set of concepts used to create software, which are mainly used to guide the development of programming languages.

Holo Virtual Machine (in short, HoloVM): The virtual machine proposed to support the execution of programs created using the Hololanguage.

Distributed HoloTree (in short, DHoloTree): HoloTree distributed in two or more HoloVMs, which can be in different computers.

Holo Naming System (in short, HNS): System used to manage the distributed execution of programs created in the Hololanguage. HNS uses a DHoloTree to map the programming entities in several HoloVMs.

HoloGo: System used to provide strong code mobility to programs based on Holo bytecode.

HoloTree: Hierarchical data structured used to manage the execution of programs developed using the Hololanguage. The HoloTree is created inside of HoloVM during a program execution.

Ubiquitous Computing: Mark Weiser described computer ubiquity as the idea of integrating computers seamlessly, invisibly enhancing the real word. Ubiquitous Computing is an emergent computing paradigm where the user’s applications are available in a suitable adapted form, wherever they go and however they move.

Complete Chapter List

Search this Book:
Reset