0 引言
嵌入式技术已在人们生活中得到广泛应用,移动计算更是给人们的生活带来了极大的方便,由移动计算技术推动发展的新的数据库技术让人耳目一新。如嵌入式移动数据库就是随着各种移动设备、智能计算设备、嵌入式设备的发展而迅速发展起来。分析当前存在的各种嵌入式移动数据库系统的体系结构,我们考虑采用一种总体上采用组件方式设计、组件内部采用模块化方式设计的嵌入式移动数据库。
1 基本概念
模块化设计(Block-based design)就是指程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。模块化设计的基本思想是为了减少模块与模块之间的关联性,模块之间的逻辑结构相对独立,无函数的交叉调用,数据传递由全局变量完成。模块化设计的核心是模块的独立性,主要包括功能独立性和结构独立性,这使得软件开发的分工易于实现。
软件组件的概念产生于软件复用,近几年随着对组件技术的认识不断深入,出现了若干新的组件定义。其中比较有代表性的有对象管理小组(Object Management Group, OMG)的“建模语言规范”中对组件的定义如下:系统中一种物理的、可代替的部件、它封装了实现并提供了一系列可用的接口。一个组件代表一个系统中实现的物理部分,包括软件代码(源代码,二进制代码,可执行代码)或者一些类似内容,如脚本或者命令文件。
2 基于组件的EMDBS 的体系结构
目前已出现的商业EMDBS 产品基本上都是采用一种封闭式的体系结构,并都有各自的特性。他们支持不同的操作系统平台,具有不同的内存管理需求,提供不同类型的接口给用户访问数据库中的数据,并且它们都是一种封闭、稳定的数据库产品,一旦发布,数据库的功能就已经确定下来。很少考虑数据库的非功能特性。为了降低数据库开发成本,减少开发时间、同时随着时间的变迁不断完善数据库的各项功能,这样传统的数据库的体系结构就很难完成各项新功能。因此我们考虑设计一种新的体系结构——总体上基于组件、组件内部模块化的EMDBS 的体系结构。这些组件可以随时添加、删除和重新配置新功能,它将提供数据库原来没有的功能,同时又不影响原来的功能。
考虑到基于组件软件开发各个方面的好处,我们把这种总体上基于组件、组件内部模块化的EMDBS 的体系结构设计成3 层体系结构[2][4][7]。如图1 所示。
第一层是数据库基本功能提供层,它提供包含数据对象的定义、格式、存储以及如何检索这些对象的基本数据库功能。本层隐藏了与硬件部分相关用户的细节,同时这一层自身也会被作为组件的一部分。这一次通过接口向上一层和下一层提供相应的服务,保证在添加时提供一种验证机制,在删除时不影响系统的基本功能。
第二层是组件接口层。它是多种功能组件的大集合,构成了一个组件库,库中的组件提供一种特定的服务或者服务集。它向数据库基本功能提供层发送请求,获得来自数据库的请求结果,同时向上层的基于组件的应用程序和组件配置层提供相应的服务。比如客户的应用有可能不需要使用数据库提供的现有功能或者需要修改已有的数据库服务功能以满足特殊的使用目的,在这种情况下,可以通过向数据库中提供新的组件以完成任务,从而达到简化设计的目的。
第三层是组件配置层,它提供一种供新组件顺利地移植到数据库中的机制。这一层的部分工作就是提供用户接口。通过用户接口可以了解到各个组件的属性及其提供的服务。同时,该用户接口也允许组件拥有者选择新的组件属性和服务映射到已经存在的功能上。一旦组件拥有者完成了这个映射过程,那么配置层产生的胶合代码将确保对数据库中的新组件提供支持,同时这些胶合代码信息都会被保存在数据库之中。在生成组件胶合代码之前,用户接口会提供验证机制以弄清楚该组件能否被融入到系统中,同时用户接口将会生成一个报告,用以说明兼容性上的细节,也会视具体情况做些配置上的修改以便使该组件适用于本数据库。
3 基于组件的EMDBS 的开发过程
基于组件的EMDBS 的开发过程可以有以下7 个步骤:需求分析和开发平台选择、基于组件EMDBS 体系结构设计、组件实现、组件集成、集成测试、系统测试、系统发布。如图2 所示[1]。
第一阶段是需求分析和开发平台选择,通过分析确定功能性需求和非功能性需求。确定哪些功能由硬件来实现,哪些功能由软件来实现,同时结合相应领域的知识选择开发工具和规划各个部分实现的功能。
第二阶段是基于组件EMDBS 体系结构设计,在前面分析的基础上进行相应的硬件体系结构和软件体系结构的设计。硬件体系结构的设计采用组件技术的思想,设计和开发硬件的基础组件,或者有相应的工程师选择现成的硬组件。而软件体系结构的开发通过选择支持组件的嵌入式操作系统、确定系统级的扩展服务组件、确定应用级的领域通用组件和专用组件,同时确定各个组件之间的关系。
第三阶段是组件实现和组件集成。它首先明确组件的定义、组件的描述技术和规范、组件的裁剪,其次验证组件特性和生成相应的技术文档,让所有的组件通过标准端口在统一调度程序下实现交互,完成系统预定的功能,集成系统的所有组件(有些组件可以在组件库中提取,其余的组件由相应的开发小组完成),最后及时地把新开发的组件放入到组件库中以备将来使用。
第四阶段是测试和系统发布,测试包括集成测试和系统测试两部分。它把整个系统的组件、调试程序以及硬件的开发平台集成在一起,进行整体测试,最终形成产品进行发行使用。
4 基于组件的EMDBS 的设计
基于组件的嵌入式移动数据库系统将会使用大量组件,我们通过组件容器来搭建创建者和使用者之间的桥梁。并且在组件容器的上配置上组件*器,用来监测组件的添加、删除、修改和替换等操作,同时它会启用组件的规范验证机制来测试和验证状态发生变化的组件是否能够按照要求工作,胶合组件中的胶合代码信息也会被更新,系统还会通知其它与此组件相关联的组件,告诉它们发生的变化,以适应新的系统状态。
通过对嵌入式移动数据库系统和嵌入式移动数据库组件环境的分析和设计,我们设计了以组件容器为核心,由日志组件、事务处理组件、SQL 解析组件、访问控制组件和其他功能组件组成的嵌入式移动数据库系统。如图3 所示[2][5]。
通过图3 设计的嵌入式移动数据库系统,第一,方便用户掌握和学习,又方便为基于组件技术开发软件提供统一标准;第二,组件容器提供了一些扩展接口,方便第三方开发的组件的使用;第三,方便组件的更新、删除、替换等操作,如对某些组件不想要可以进行上面的操作;最后,为了系统的安全和节能起见,可以为系统增加新的功能,如增加“来电防火墙”组件,节能保护组件等。
5 基于组件的EMDBS 的实现
SkyEye 是一个开源软件项目,它是一个指令级的模拟器,可以模拟多种嵌入式开发板,能够支持多种CPU 指令集。在SkyEye 上运行的操作系统根本意识不到它是在一个模拟的环境中运行,开发人员还可以通过SkyEye 调试操作系统和系统软件。SkyEye 模拟器即可以运行于Linux 环境下,又可以在Windows 下进行模拟运行。限于文章篇幅原因,关于SkyEye模拟器Cywgin 和MingW 安装过程就省略不谈。
本文采用Visual C++6.0 进行编程开发,通过MingW 或者Cywgin 在Windows 下模拟运行,并以PHILIPS LPC2xxxx 为开发测试板,运行的结果如图4 所示。
在嵌入式环境下使用交叉编译工具编译和链接测试程序代码,同样把生成的可执行文件链接加入到SkyEye 测试环境中去,运行该测试程序,输入数据,就可以通过查询得到所需要的数据。通过测试数据,验证了利用组件技术的思想设计嵌入式移动数据库的可行性。
6 结束语
基于组件的软件开发是当前的一个研究热点。目前由于基于组件技术开发嵌入式移动数据库系统的标准还没有形成,因为这即要考虑组件的属性获取、组件认证、属性预测等方面,又要考虑具有公共接口的组件技术,通过调整和配置这些组件达到特定应用领域的需要,同时又要考虑一些非功能特性。本文总体上采用基于组件的组件复用技术,在组件内部采用模块化思想设计组件,从而设计了一个可供嵌入式移动数据库使用的框架模型,并设计了基于该框架的组件,通过测试数据,验证了利用组件技术的思想设计嵌入式移动数据库的可行性。从而达到早日提供基于组件的开发标准,以此达到构造灵活、高效、方便的嵌入式移动数据库。
本文的创新点:软件工程的思想贯穿于嵌入式移动数据库系统设计的整个过程,本文中的嵌入式移动数据库系统开发中总体上采用分层和组件技术的思想,组件内部采用模块化的思想,方便系统快捷、高效、灵活地开发。