如今,诸如Java或C++这样的高级编程语言可以实现众多异构操作系统的程序代码的编译和执行。这些目标系统包括PC机、移动设备和嵌入式控制器。模型驱动开发(MDD)方法详细阐述了高级编程语言的主要思想,从而将问题从实施细则中抽象出来。为了解决非标准化的软件制造所带来的问题,我们利用功能模型来生成代码,而不是为不同的平台分别编写代码。
模型驱动开发(MDD)方法依靠系统功能模型的准确描述和特定平台代码的生成。MDD方法之后,一种最著名的方法是由对象管理组织(OMG)于2001年引入的模型驱动架构(MDA)[9]。MDA定义了关注点分离,利用分离模型来描述系统能、技术和执行的关注点。
功能模型指的是平台独立模型(PIM)[26],它描述了系统的抽象功能,而特定平台模型(PSM)则描述了技术关注点,如图14.3所示。MDA提出了一种软件开发方法,这种方法不再直接为每一个不同的平台编写代码,而是通过把抽象功能模型的解释与变换和程序代码生成相结合来实现软件开发。平台被定义为专用硬件(例如,NI1722智能摄像机,CrossbowMote)或者运行在目标硬件(例如,TinyOS或者NI Lab View实时模块[10])上的软件框架。目标平台定义了执行生成代码的目标位置。
图14.3 MDA的三级架构
图14.3显示了一个实例构架图,图中定义了干扰检测中摄像机和温湿度传感器之间的依赖性。为了创建和修改实例,我们必须知道可用传感器之间的依赖性。除此之外,管理系统中的数据流也很重要。数据流的硬件独立模型说明了如何由选举算法生成干扰决策。图14.4所示为基于Eclipse的工程环境,它允许用户为特定的实例来定义数据流模型。图14.4的实例模型,来自五个摄像机的数据都被合并到评估输入数据的表决器中,表决算法将判定输入数据是否为干扰。基于MDA(模型驱动构件)方法的平台独立模型无需考虑不同的摄像机硬件,实现了对复杂实例的简单建模。图14.4中的五个摄像机可以使用完全不同的硬件实现。
(www.xing528.com)
图14.4 硬件独立的数据流模型进行干扰判决的例子
由于复杂的系统中存在着众多不同的数据源,因此需要将可用数据进一步分类。这里我们参考Baldauf[42]和Strang[512]所做的研究,他们提出了一个一致情景模型来对数据源进行分类。参考文献[42]和[512]综述了各种情景模型,覆盖从简单的基于关键值对的模型到复杂的本体模型。
参考文献[513]中所描述的作为CoO1本体的一部分的Aspect-scale-context(ASC)信息,和参考文献[42]中所列出的内容基元属性是灵活通用建立描述低层内容(比如,原始传感器数据)的情景模型的基础。但是这样的模型并不有利于系统实体(硬件组件,单个元件等)的详细描述。数据的每一个实测样本都是某一特定方面(例如,位置、温度、速度)的实例。
根据选定的数据源和它的硬件能力,我们依据特定的尺度进行数据样本的解释。尺度表示给定数据样本的元信息,它定义样本的单位和语义。另外它也提供了在某一方面不同尺度之间的转换方法。例如,它能用于将几何信息(如,WGS-84坐标)转换成象征性的位置信息(如123室)或对不同的温度单位进行转换(如,摄氏和华氏)。如今,不同供应商提供的硬件传感器所发送的感知数据的单位、时标和形式是不同的,因此,为了解决不断增加的传感器数据的异构性问题,我们提出了硬件独立数据流模型的方法。上面概述的PIM(平台独立模型)借助实例描述了一种应用,抽象模型通过模型转换后可以适用于一种特定的平台。所谓的平台相关模型(PSM)将用于生成特定的平台代码。MDA(模型驱动架构)方法详述了PIM中的系统功能、平台依赖的输入数据以及PSM中的传感器硬件(例如,智能摄像机)的功能。PIM利用所有实施细节,从总体上对系统和它的组成部分(约束、需求、处理单元)的功能进行了描述,但其遗漏了特定平台的相关信息。在转换阶段,PSM用于决定应用程序的各部分在特定的硬件平台上如何分布以及应该生成哪种特定的平台代码。然后在网络间不同的目标平台上配置执行平台的相关代码。特定的平台代码的变换过程使得整个系统与特定的需求相适应。因此,特定的平台代码可以被优化,并完全符合实际需求(与客户的自定义代码方式非常相似)。
这种方法与分布式数据库系统的通用方法全然相反,如TinyDB[348]和Akdere等学者的项目[9],其中一个特殊的查询接口提供了类SQL标记符的声明式查询。例如,由于费用问题,通用方法并不总是应用在对性能和时间要求严格的应用场景中。
本章通过实例研究,论证了取决于关注点分离的MDA方法,它简化了视觉传感器网络的开发和管理,尤其适用于复杂的和对时间要求严格的应用场景。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。