您所在的位置:e-works首页 > 工业自动化控制 > 嵌入式系统

基于构件体系架构的嵌入式系统研究

发表时间:2008-8-27 黄国华 来源:e-works
软件构件技术,可以高效、低成本地构筑嵌入式系统,满足当前的嵌入式的快速发展。在研究嵌入式系统构件体系架构的基础上,提出了嵌入式构件开发的集成框架并对其关键技术进行了分析。

[摘要]:软件构件技术,可以高效、低成本地构筑嵌入式系统,满足当前的嵌入式的快速发展。在研究嵌入式系统构件体系架构的基础上,提出了嵌入式构件开发的集成框架并对其关键技术进行了分析。

[Abstract]: Technology of software component can satisfy development of the modern embedded system with building embedded system effectively and low cost. The paper presents integration development framework of embedded software component and develops its key technology based on studying software architecture of embedded system.

嵌入式软件是嵌入式系统的灵魂,负责嵌入式系统全部资源的分配、调度和控制。嵌入式系统的发展重在嵌入式软件的发展。但是长期以来基于生命周期的软件开发技术本身的缺陷长期困扰着嵌入式软件开发人员,比如:整体开发周期长,模块化程度低,可复用性差,可移植性差,维护成本高等。因此,缩短软件开发周期、降低开发和维护成本、提高软件质量是嵌入式软件开发人员的迫切要求,也是嵌入式软件适应今天嵌入式技术飞速发展、应用领域急速扩大的要求。

软件复用正是提高软件质量和开发效率的有效方法,是当前软件开发研究的热点之一。软件复用主要是基于构件的开发(Component-Based Development,简称CBD)或基于构件的软件工程(Component-Based Software Engineering,简称CBSE)。在使用构件技术的组合软件工程中,好的构件体系架构是决定软件系统开发成败的关键。一个软件系统的体系结构定义了组成系统的构件与构件之间相互作用的关系。体系结构是系统实现的蓝图,为构件的集成组装提供基础和上下文。

1.构件体系架构研究

目前对构件体系架构的研究方兴未艾,人们对构件体系架构的认识也不尽统一。主要分为3种不同的体系结构类型:对象连接式体系架构( Object Connection Architecture),接口连接式体系架构(Interface Connection Architecture)和插头插座式体系架构(Plug and Socket Architecture),反映了人们对体系结构的不同认识以及它们在支持构件集成时的不同方式。

1.对象连接式体系架构

在这种类型的体系结构中,构件的接口只定义了其对外提供的服务,而没有定义构件对外要求的服务,其中以面向对象中的对象接口为典型代表,所以称这种类型的体系结构为对象连接式体系结构。这种接口定义的非对称性使得构件在集成时,构件对外要求的服务被隐藏在代码的实现细节中,即构件之间的连接关系无法直接在接口出定义,只能是从一个构件的实现到另一个构件接口。于是:

1)当一个构件接口发生改变时,必须检查系统中每个构件的实现细节,才能发现受此改变而影响到的构件;

2)即时符合相同接口的构件也不能相互替换,因为新构件未必保持旧构件对其他构件的使用关系

在这种类型的体系结构中,一个构件同其他构件的集成信息被固定在构件的实现中。构件难以适应环境的变化,因而难以复用。究其原因,对象接口对外隐藏了太多的有用信息,无法满足接口处集成的需求。

2.接口连接式体系架构

在这种类型的体系结构中,构件的接口不但定义了对外提供的功能,而且定义了其要求的外部功能,从而显示地表达了构件对环境的依赖,提高了构件接口规约的表达能力。构件的接口定义了所有对外交互的信息,构件在实现时不是直接使用其他构件提供的功能,而是使用它在接口处定义的对外要求的功能。构件之间的连接是在所要求的功能和所提供的功能之间进行匹配,因此,通过接口就可以定义系统中构件之间的所有连接。这样,就把上一种体系结构类型中构件之间的固定连接方式变成灵活的连接方式,降低了构件之间的依赖性,提高了构件的独立性和复用性。

3.插头插座式体系架构

在接口连接式体系结构中,接口定义满足通信完整性,可以较好地支持接口处的构件集成,但是当接口定义的功能数量很大时,带来了规模上的问题。在接口处标明构件要求的功能更是加剧了这种严峻的形势,而一个功能又往往同几个构件要求的功能连接起来,所以连接的数目也非常大。

插头插座式体系结构是接口连接式体系结构的一个特例,为了解决构件接口中的功能和接口连接的规模问题,考虑到构件之间的通信往往涉及到构件接口中功能的成组连接,并且在这组功能之间通常存在着一定的语义约束关系,例如使用顺序和数据流协议等,通过把这样的彼此间关系紧密的功能组织成组,并封装为服务,使得接口中直接保护的内容减少,降低了接口中功能的规模。只有在两个对偶的服务之间才可以连接,对偶的服务是指两个服务所包括的功能完全相同,但其中提供的功能和需要的功能恰好方向相反,这样就进一步降低了接口连接的规模,并且易于检查两个对偶的服务之间的连接的正确性。

从以上的讨论可以看出,第2种和第3种体系结构类型具有较好的性质,表现在构件集成时,不必关心内部的实现细节,而且支持构件在规约层次上的集成。

2.嵌入式系统集成框架

针对嵌入式系统领域,构件之间的大数据流和状态转变以及实时性特点,插头插座式的体系结构更适合嵌入式系统特点,因此本文提出了适合嵌入式系统的构件集成框架。如图1所示

首先通过编辑器进行源代码开发,定义系统中的构件模型及构件描述语言,然后将其通过构件库管理器存入构件库,并可在可复用构件库中查找符合要求的构件。最后,通过配置器把这些满足需求的构件组装起来,生成新的应用系统。

图1构件集成框架

从上述分析可以看出,构件系统,构件及接口描述和构件库是构件集成框架中的主要组成部分,也是嵌入式构件研究的主要内容。

3.关键技术分析

1)构件定义及其结构

构件中将构件定义为自包含的、可编程的、与语言无关的代码片段。它是由类组成的,和普通类不同的是构件对类进行了封装,并提供了一组接口,将实现与定义分离。构件与接口相互独立,是接口功能的具体实现者。构件之间通过接口通信,互相协作完成软件功能。而基于嵌入式系统的系统要求和通用构件模型的特点,将通用构件模型直接应用于嵌入式系统软件开发是不可能的,因此下面对嵌入式系统构件进行了形式化定义:

一个嵌入式系统构件X可表示成一个五元组<I(X),C(X),M(X),A(X),S(X)>,其中: I(X)是服务响应接口,C(X)为客户请求接口,M(X)={m1 ,m2 ,m3 …., mn }是所包含的子构件集合,A(X)是属性特征信息,S(X)表示状态行为。如图2所示。

图2 构件结构

一个构件可以支持多个不同的接口,这些接口刻画了构件对外提供的服务以及要求的环境服务,体现了该构件同环境的交互。构件接收到外部事件消息后,根据当前所处的具体状态,在构件内部进行状态变迁,实现对事件的响应。构件实现的功能属性以及描述属性、约束属性、配置属性和服务质量(QoS)属性等非功能属性。

本文为e-works原创投稿文章,未经e-works书面许可,任何人不得复制、转载、摘编等任何方式进行使用。如已是e-works授权合作伙伴,应在授权范围内使用。e-works内容合作伙伴申请热线:editor@e-works.net.cn tel:027-87592219/20/21。

责任编辑:王阳
2
;