基于软件总线的TinyOS集成开发环境研究与设计

时间:2022-05-05 08:07:49

基于软件总线的TinyOS集成开发环境研究与设计

摘要:集成开发环境是支持无线传感器网络应用系统开发的重要系统软件,如何设计一个具备良好扩展性的开发环境, 对开发环境能灵活地可配置、可裁剪。针对传统结构化的IDE系统不宜动态修改,运行时不可以动态配置以及集成性较差的不足,该文提出了一种基于软总线的集成开发环境(TosIDE),并引入TosIDE构件集成机制及通信机制对传统无线传感器网络IDE存在的扩展性弱、模块间通信问题进行了有效地解决。

关键词:集成开发环境;软件总线;构件;无线传感器网络;TinyOS

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)11-20374-03

1 引言

TinyOS是由UCBerkeley分校的研究人员针对无线传感器网络资源有限,通信响应要求及时的特点而设计的一种嵌入式操作系统。由于TinyOS为非商业的操作系统,未提供开发环境。如何构造一集成开发环境,既满足不同开发阶段及不同领域开发者的需求,又兼顾未来新的开发方法的需要,一直是值得关心的问题。目前出现了许多基于TinyOS的开发平台,但这些开发平台存在的主要问题是:结构化的体系结构,运行时不可以动态配置模块,扩展性及集成性不强。在认真研究当前的基于无线传感器网络开发平台的优缺点后,本文提出了基于软件总线的传感器网络集成开发环境TosIDE,该平台采用“软总线+软构件”的体系结构,满足特定功能模块在开发环境中灵活安装,卸载和替换,具备良好的扩展性。

2 传统IDE结构及其存在的问题

目前无线传感器网络应用系统的IDE结构可以分为两种[1,2]:

(1)单块式(Monolithic)结构:该结构开发平台一般由一个功能模块集组成,一个模块可能由多个过程组成,任一过程可以调用其它过程,这样模块间的交互关系是网状关系,关系复杂,扩展这类开发平台比较困难,修改一个过程或模块可能会导致多个相关的过程或模块发生错误(如图1所示)。

(2)层次(layered)式结构:该结构将开发平台划分为若干模块,然后将它们按层组织起来。每个模块提供一组其他模块可以调用的功能,并且任何一层的代码只能调用较低层的的功能。层次化结构有助于组织开发平台的开发过程,减少诊断和修改错误的工作。一个完整的层的功能实现可以整个被代替,而不会影响系统其他部分。层次化方法的不足是每一层都有明确的功能,对某一层的功能上的较大改变会对与其直接关联的上下层产生很大的影响,因此难以实现对开发平台的裁剪。针对以上传统开发方式的不足,本集成开发环境采用基于构件的软总线开发方法(如图2所示)。

3 软件总线定义及数学描述

从软件体系结构的角度看,软件总线作为一种连接件(Connector) ,为构件提供了通信、协作和便利的服务,实现了构件集成设施和构件逻辑处理功能的分离,将构件集成设施从以前的隐式方式改为显式方式,是用于构件集成的结构性软件部件[5]。

从一般性的角度出发,我们首先给出软总线的数学描述,对于软件总线的软件体系架构,有如下数学描述[3]:

定义1:软件总线架构TBA = {C,I,M,S,R},其中C是系统的构件集,I是软件总线接口集,S是系统的状态空间集,M是软件总线方法集,软件总线的方法是系统状态改变的触发源m = ( si sj ) , R 是约束规则。

定义2:软件构件C={(ti,ai,s)|s=aiti},其中t是工具构件,a 是构件适配器。

定义3:软件总线接口I={m ∈M|Selector (m,Qi)} ,其中Selector(m,Qi) 是选择函数,函数接收方法集中的方法,返回满足条件为Qi 的接口I中的方法。

以上为软件总线的基本数学描述定义。在此基础上,人们进一步将软件总线结构建立在软件重用的思想上,形成一种“软总线+软构件”的体系结构。图3为一种“软总线+软构件”结构示意图,各个构件通过与软总线相连组成一个实现某种功能的复合构件。

在此种结构中,构件之间不再直接连接,而是以软总线作为连接件,集成为一个整体,各构件之间的交互通过总线间接连接,大大降低构件的耦合度,各构件在接口不变的情况下可独立修改,有利于各构件的并行开发[4]。

4 基于软总线的IDE体系结构

TosIDE的结构如图4所示:

根据子系统、适配器及软件总线在消息传递过程中所出的位置和功能,TosIDE的体系结构分为三层:最上一层为构件应用层,软件总线为该层提供接口,欲加入总线的子系统需符合接口规范(软件总线接口定义),才能加入集成开发环境中;应用层的构件由负责实现项目开发的各功能子系统组成,为开发直接使用的应用模块。中间一层为总线适配层,负责应用层的构件与总线系统的连接,实时响应总线和构件的消息发送请求,并适配彼此之间传递的消息格式,使消息符合接收方的格式要求;最底层为通信层,该层负责构件的注册、注销以及构件之间的数据通信,并且屏蔽具体数据通信的细节,对外提供统一的数据通信接口。

这种体系结构具有以下几个主要的特点:

(1)层次性,整个系统的体系结构逻辑上分为三层,层次清晰,结构简单。

(2)可扩展性强,使用统一的接口规范,提高了系统的可扩展性及可配置性。

(3)开放式的结构,系统在提供不同功能的构件供用户选择的同时,也允许用户或第三方开发构件,并可以比较方便地增加到系统当中。

从无线传感器网络软件开发的不同阶段及功能,把TosIDE分成功能相对独立且结构简单的多个软件模块DD项目管理、组件管理、代码编辑、版本控制、组件视图连接、交叉编译调试等,并封装为构件,然后通过(Agent)连接到软件总线上,形成一个功能完整,支持整个软件开发阶段的集成开发环境。的主要功能是负责将软总线的服务请求转发给构件,负责构件与总线间的消息格式转换。

5 集成开发环境关键技术

软件开发的目标就是将用户的需求转化为软件产品,其中很重要的一个过程就是将用户需求分解为一个个相互关联的模块(构件)[8] 。构件集成的开发环境有两个很重要的问题需要解决: ①模块之间的接口定义及其集成; ②模块之间的通信。

5.1 构件集成机制

TosIDE集成开发环境支持用户根据特定需要开发构件加入到系统中。由于用户自行开发的构件类型千差万别,存在不同的开发方法;具有不兼容性,因此必须引入完善的构件集成机制来协调这些工具高效地支持整个软件开发过程。

对于构件的集成通常有四种方式:数据交换、公共工具访问、公共数据管理和全集成方式[1,6]。综合考虑以上四种集成方式各自的特点,TosIDE采用公共工具访问方式,用户在一致的界面下以相同的方式调用众多不同的工具,各个构件之间的数据交换使用点到点的交换方式,通过翻译程序(即总线)作中介进行数据格式转换(如图5所示)。由于传感器网络软件的开发常常划分为多个明确的开发阶段,不同阶段的功能模块间往往是串行工作方式,一个功能模块的输出往往是另一个功能模块的输入,因此,使用基于点到点交换方式的公共工具访问集成方式比较符合集成开发环境开发过程中的串行工作方式。

5.2 构件之间的通信机制

在该集成开发环境中,构件可动态配置且不同类型的构件可集成到系统中,构件之间通信的高效性成为一个不容忽视的问题。在TosIDE中,各功能模块之间通过工具总线进行双向的消息传递。消息是一个用于构件与软总线之间信息交换的数据包,通常包含消息头和消息体。消息头中定义了一系列的约定属性,比如同步/异步,控制/数据,校验信息等等;消息体即为欲交换的数据。消息可以处理同步和异步系统调度。

整个系统消息传递机制可描述如下:

(1)构件发出消息,总线查询对应的,若无则通知组件重发或者处理异常;

(2)如果消息有效,则消息进入总线消息队列中,根据消息头信息,总线可能需要将消息拆分,并根据订阅信息将相关消息送往各个订阅的构件,如果没有构件订阅该种消息,向发出消息的构件送回异常;

(3)在收到系统总线的服务调用后,判断构件有效性,有效则向构件请求服务调用,否则向发出消息的构件送回异常;

(4)构件在收到发来的服务调用请求后,响应并直接和发送消息的构件通信;

(5)系统中各个,根据需要轮询系统消息队列,如果得到新的消息则将消息取出,过滤掉不需要的消息,转换为组件能够处理的消息,并根据时序重新组织消息提供给组件;

6 结束语

本文是基于无线传感器网路操作系统TinyOS的集成开发环境的研究与设计。针对集成开发环境将各功能模块集成为一个整体的特性,采用“软总线+软构件”的体系结构,这种体系结构具备可扩展性、可维护性、可复用性。

参考文献:

[1] Kurt C. Wallnau.Peter H.Feiler.Tool Integration and environment Architecture.Technical report of SEI,Carnegie Melton University,1994.

[2] Paul F.Zarrella.CASE Tool Integration and Standardization.Technical report of SEI Carnegie Mellon University.l994.

[3] 蔡勇,桑楠,熊光泽.一种基于工具总线的CASE集成模型[J].计算机应用,2002.

[4] 杨芙清,梅宏,李克勤.软件复用与软件构件技术[J].电子学报,1999, 2(27):68-75.

[5] 郭兵,熊光泽,沈艳,等.工具总线模型研究[J].计算机应用,2003,23(5):1-3.

[6] Reiss S. Connecting tools using message passing in the field environment. IEEE Software,1990,7(4):57-66.

[7] David Gay,Phil Levis,David Culler.Software Design Patterns for TinyOS.LCTES'05,Chicago,Illinois,USA,June 15-17,2005.

[8] 罗昔军,马征.定制软件开发平台的研究与设计[J].计算技术与自动化,2006,25(2):108-110.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:基于Huffman编码的压缩技术的Java实现 下一篇:基于标定物的相机标定及三维重建