普适计算的编程模式

摘要: 介绍在普适计算的编程中遇到的问题。从传统的编程模式讲起,介绍了几种当前流行的普适计算编程模式,并比较它们的优劣点。最后,对各种编程模式做了一个总结。

关键词:普适计算;编程模式

1、前言

导致普适计算编程困难的一个很重要的原因是执行中的程序的运行环境随着用户的不断移动而一直在变化,甚至特定地理位置中的环境变量也随着时间推移而不断的在变化。这导致包括软件应用和设备功能在内的服务不能保证可用性。这就需要程序行为要能够频繁的随着环境的变化而调整,以保证其可用性。这篇文章将讨论在普适计算中适用的编程方法。

2、普适计算在编程上遇到的挑战

普适计算给我们带来了对未来美好生活的向往,但是同时也让我们面对一些棘手的问题。其中一个非常显著的问题是,用户的移动性和各种新设备的不断出现导致程序的运行环境不断的在发生变化。这导致很难确定服务包括软件服务和硬件设施服务的可用性。快速变化的运行环境需要程序不断根据当前环境调整自身行为,是导致困难和挑战产生的主要原因。

总体说来,建立这样的应用需要两部分协调工作:环境信息的收集、管理和传送;应用程序运行逻辑。做这样的划分可以极大的减小开发者在收集信息花费的精力和提高程序的工作效率。

3、传统的编程模式

在讨论普适计算编程之前,先回顾一下普适计算出现之前的编程模式,从中得到一些启发。

在汇编语言编程中所有底层机器的细节都没有得到屏蔽,程序员不得不理解和操作各个CPU内部寄存器和标志位。在比较两个数的大小的时候,我们关心的是数据间的逻辑关系,而不是一次减法操作会影响到哪些标志位。

在C语言编程中,程序员从复杂的寄存器操作中解放出来,可以精力集中在关注数据间的关系。然后提出数据结构的概念,其主要思想有三个:

  1. 数据赋予其意义后它才有了生命;
  2. 数据可以而且经常需要按一定结构组织起来描述一个事物;
  3. 程序可以分解成数据和对数据的操作。

C语言被称为面向过程的编程语言,站在面向对象编程的对立面。但是事实上,我们在使用C语言的时候都是在做模块化的程序设计。把每个工作主题分成一个模块,并给模块外部提供接口和服务。对于模块的使用者来说,不需要知道模块内的工作细节。

在模块化程序设计中,每个模块维护自己内部的数据。内部数据不论是全局还是局部都不会对其它模块有影响。每个模块完成自己相对独立的功能,并给外部提供接口和服务。 当模块同时为几个对象提供服务时还可以为每个对象创建其私有数据。那么对象和私有数据难道只能出现在C++或Java等面向对象的编程语言里?实事上在模块化的编程中已经产生的了封装和对象的概念。面向过程的C语言也能够在一定程度上实现“对象化的编程”。

面向对象的程序设计是一种思想,而不仅仅局限在C++或者Java。一般面向对象的编程语言和面向过程的编程语言相比有下面几个优点:

  1. 对数据和操作的封装更为严密。
  2. 增加了继承、多态和重载的概念。

面向对象的程序设计集合了之前程序设计理论的很多优点。但是对面复杂多变的普适计算应用环境仍然不能满足需求。

传统编程模式应用在普适计算中表现出它的不足。主要是因为,程序运行方式要随着环境变化而变化。不论是面向对象还是面向过程,都要依靠条件跳转实现。如果条件跳转情况复杂程序就变得复杂,不能针对特定应用环境独立开发。程序员需要考虑复杂多变的应用环境,使得程序开发无法进行。而且一旦有任何新的环境变量或者需要支持新的设备还要重新编写程序。

4、普适计算的编程模式

由于传统编程模式无法解决在普适计算中的程序设计中的复杂性,一些适用于普适计算的编程模式被提出来。这些编程模式关注于解决在较高的抽象层次上支持动态的变化的运行环境。让程序员可以真正关注程序运行的逻辑。

4.1基于环境变量的编程

在这种开发模式中,开发者把环境变量的定义和特定环境下和程序行为拆分开来。程序员只开发特定环境下和程序,然后组装起来运行。 在基于环境变量的编程模式中,使用内容过滤操作来选择特定程序组件去执行,这个内容过滤操作是基于环境信息和用户需求的。内容过滤操有两个问题要解决:一是使用什么方式来选取程序组件;二是如何切换程序组件。在这种编程模式中,开发者需要知道资源的状态,这显得有些不切实际而且定义大量的不同环境变量下的程序使问题变得非常复杂。而且环境变量情况复杂,经常有未预计到的情况出现,程序员将疲于应付枯燥的环境变量。

4.2基于设备间的关系

这种编程模式试图从较高的抽象层考虑问题。程序运行的环境不断的在变化:不停的有用户迁移;在同一地理空间也因设备的加入和移出而发生变化;随着技术的提高空间中的设备能力也会得到提高。所以很明显我们需要管理好空间中普遍存在的资源。

我们把不同的资源对应更具体的应用。在传统的编程中,程序员被普适计算中复杂的情况过度限制了,导致他们不能清晰的表达他们的需求,他们经常疲于处理细节和同步问题而不知道如果没有这些问题他们到底需要的是什么。这种编程模式通过强调程序元素之间的关系来更好的适应环境的变化。一种应用环境对应着一系统组件的组合。环境的变化对应这种组合关系的变化。

这种模式把关系分为:对象关系、设备关系和抽象关系。

5总结和展望

这篇文章从不同的抽象层讨论了各种编程模式。最有生产效率的编程环境是那些允许你在不同层次上进行抽象的编程环境。程序设计最一般的最有效的模式就是让程序组件化,让各个开发人员关注特定的事物,而不是面对着整个复杂的系统束手无策。在组件化的设计中,让各个功能或设备独立又协调的工作在一起组成一个大的可伸缩的自动调整的系统,这就是普适计算要达到的目标。

6参考文献

[1] Qingsong Yao,  Shan Chang,  Yong Qi,  Li Ming. New Programming Model for Pervasive Computing .

[2] JuanF.Navas, Jean-PhilippeBabau, OlivierLobry. MinimalyetEffectiveReconfigurationInfrastructuresin Component-BasedEmbeddedSystems.

Leave a Reply