




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于e t l o t o s 的嵌入软构件组装研究 计算机软件与理论专业硕士研究生夏苑 指导教题张力群教授 摘要 嵌入式系统已其有相当长的历史,最初在军攀、航空航天、工业过程控制铿鞭域。从 2 0 墩纪9 0 年代中瘊期开始,计冀辘产业藏p c 辞 来到了鞋普及计算( p e r v a s i v e c o m p u t i n g ) 和嵌入式系统为戴要代表的后p c 时代。 基于构件的嵌入式软 牛开发方法是一种把践入式软构件组装成新系统的开发方法。嵌入 式软构件煎鳃装授术是基于梅伟的嵌入式软辞开教的核心技术。也是本文的主襄研究内容。 因为嵌入式系统经常是一些商舞全关键性系婉,例如,军事拙制、航天航空、医疗设备 等等,所以在基于构 牛的嵌入式软箨开发过程的系统分辑和设计盼段,我们经常使用形式化 方法来对嵌入式系统进行建模和验谨,毽在底层翰俘组装实现时却丢弃了这荦孛澎式纯穰蘩, 遮就存在着形式化语言的高层抽藩描述与嵌入软构件底层组装实现之间的脱节问题。 为了嘏决这个闷题。本文提墩了一静嵌入软掏粤 = 的组装算法,并按照组装算法初步开 发了一个嵌入软构俘维装二 具的舔型。首先本文撬出了一种彤式纯体系结构语誉e t - l o t o s 描述的嵌入式软件的构件和构絮模型;基于这种横型,提出了7 种嵌入软构件的组装关系( 顺 序缀装、选择组装、势 亍组装、巾辑组装、挂起恢复组装、重复缀装、连接传缎装) :然岳 对斑于7 种组装荧系提出了7 静缀装连接模板;谈籍提出了嵌入软构件组装时 奄伟的菲功能 属性度量公式;最后提出了一种嵌入软构件的组装算法。 本文提出的嵌入软掏 孚组装算法,能瓣决形式纯语言的赢艨抽象描述与嵌入软掏 孛底 屡缀装实现之间的脱节问题;初步开发的嵌入软构件组装工具的艨型使嵌入软构件组装自 动化的实现成为可能。 关键词:e t - l o t o s 嵌入较棱终组装缀装算法缀装工具 r e s e a r c hf o rt h ee t - l o t o s b a s e d e m b e d d e ds o f t w a r ec o m p o n e n t c o m p o s i t i o n m a j o r :c o m p u t e r s o f t w a r ea n dt h e o r y s p e c i a l i t y :s o r w a r ee n g i n e e r i n g s u p e r v i s o r :p r o f e s s o rw e i q u nz h a n g a u t h o r :y u a nx i a ( $ 2 0 0 3 7 0 8 ) a b s t r a c t e m b e d d e ds t e mh a sal o n gh i s t o r y o r i g i n a l l yi tw a sa p p l i e di nm i l i t a r y , a e m s 眦i n d u s t r y , i n d u s t r yp r o c e 8 sc o n t r o l l i n g ,e t c ;a tp r e s e n ti t sa p p l i c a t i o ni s s oa b r o a di nd a i l yl i f et h a tt h e p o s t - p ca g e ,r e p r e s e n t e db yp e r v a s i v ec o m p u t i n ga n de m b e d d e ds y s t e m ,h a sc o m es i n c et h el a t e 9 扩i n2 驴c e n t u r y d e v e l o p m e n to fc o m p o n e n t - b a s e de m b e d d e ds o f t w a r em e a n sc o m p o s i t i n go fe m b e d d e d s o f t w a r ec o m p o n e n t si n t on e ws y s t e m t h et e c h n i q u e so fc o m p o s i t i o na r et h ec o r ei nd e v e l o p m e n t o fc o m p o n e n t - b a s e de m b e d d e ds o f t w a r ea sw e l la st h em a i nt o p i ci nt h i st h e s i s e m b e d d e ds y s t e mi su s u a l l yu s e di nt h ef i e l d so fv i t a li m p o r t a n c ec l o s e l yr e l a t e dw i t hs a f e t y s u c ha sm i l i t a r yc o n t r o l l i n g ,a e r o s p a c ei n d u s t r y , m e d i c a le q u i p m e n t ,e r e t h e r e f o r e ,i ti sv e r y e s s e n t i a lt om a k ed e s c r i p t i o na n dv e r i f i c a t i o nf o rt h es y s t e mw i t hf o r m a lm e t h o d si nm o d e l i n gt h e e m b e d d e ds y s t e m h o w e v e r , m e t h o d si n s t e a do ff o r m a lm e t h o d sa l eu s e dt oc o n t i n u ef o r c o m p o n e n tc o m p o s i t i o n t h a t sw h yt h e r ee x i s t sn od i r e c tr e l a t i o nb e t w e e nh i g h l e v e la b s t r a c t i o n o fs 笋t e md e s c r i b e db yf o r m a ll a n g u a g ea n dp r a c t i c eo fc o m p o n e n tc o m p o s i t i o ni n p r e s e n t r e s e a r c h i no r d e rt os o l v et h i sp r o b l e m ,t h e s i sp r o p o s e sac o m p o s i t i o na l g o r i t h mf o re m b e d d e d s o f t w a r ec o m p o n e n t sa n dd e v e l o p saf r a m eo fe m b e d d e ds o f 两a r ec o m p o n e n t sc o m p o s i t i o nt o o l s b a s e do nt h i sa l g o r i t h m g r o u n d e do nt h em o d e lo fe m b e d d e ds o f t w a r ec o m p o n e n ta n ds o f t w a r e a r c h i t e c t u r e ( s a ) d e s c r i b e db yt h ee t - l o t o s ( af o r m a l s o f t w a r ea r c h i t e c t u r ed e s c r i p t i o n l a n g u a g e ) ,t h i sp a p c rd i s c u s s e sb o t hc o m p o n e n tc o m p o s i t i o na n dt h eu o n f u n c t i o n a lr e q u i r e m e n t s , a n dt h e np r o p o s e st e m p l a t e so ft h ec o m p o s i t i o nc o n n e c t i o na n d & na l g o r i t h mf o rc o m p o s i t i o n t h u st h ec o m p o n e n tc o m p o s i t i o na n dh i g l l l e v e la b s t r a c ta r er e l a t e da n da u t o m a t i o no fe m b e d d e d s o f t w a r ec o m p o n e n tc o m p o s i t i o nc a nb ea d v a n c e db yt h ec o m p o s i t i o nm e t h o dp r o p o s e db yt h i s t h e s i s , i l k e yw o r d s :e t - l o t o s ,e m b e d d e d s o f t w a r e c o m p o n e n t sc o m p o s i t i o n , c o m p o s i t i o na l g o r i t h m ,c o m p o s i t i o nt o o l s 独创性声明 y 9 0 2 3 4 3 学位论文题目:垒整! e 型继厶叁麴笪丝茎塑鲎2 本人声明所呈交的学位论文是本人在导师指导下进行的研究_ l 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文巾不包含其他人已经发表或撰写过的研究成果,也0 i 包含 为获得两南大学或其他教育机构的学位或证书而使用过的材料。与我 一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示谢意。 学位论文作者:珏钷签字日期:2 加j 年j 月日 学位论文版权使用授权书 本学位论文作者完全了解西南大学有关保留、使用学位论文的规 定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允 许论文被查阅和借阅。本人授权西南大学研究生院可以将学位论文的 全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫 描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书,本论文:固不保密, 口保密期限至年月止) 。 学位论文作者签名:复芤导师签名: 签字日期:如6 年,月f 日签字日期 学位论文作者毕业后去向: 工作单位:亟自焘耋垃蓝也电话:( 型2 趣墨丝生 通讯地址:面自盘茧碰鹾_ 邮编: 生塑2 撼于e t l o t o s 的嵌入软构件纽装研究 第一章绪论 随着计算机应用日益普及和深化,计算机软件的数量以惊人的速度急剧膨 胀,且规模十分庞大。由于微电子学技术的进步,计算机硬件性能价格比大幅 上涨,而且质量稳步提高;与此同时,计算机软件成本却在逐年上升,质量没有 可靠的保证,软件丌发的生产率也远远跟不上普及计算机应用的要求。软件已经 成为限制计算机系统发展的关键因素。在计算机系统发展的早期时代所形成的一 些错误概念和做法,已经严重地阻碍了计算机软件的开发,这就是”软件危机”。 为了研究解决软件危机的方法,软件工程这门学科应运而生了。 我们将软件以嵌入式应用和非嵌入式应用分为嵌入式软件和通用软件西类。 通用软件存在于通用计算机中,其典型产品为p c ;嵌入式软件存在于嵌入 式计算机中,以嵌入式系统的形态隐藏在各种装置、产品和系统中。 嵌入式系统已经具有相当长的历史,最初是在军事、航空航天、工业过程控 制等领域。由于以计算机技术、芯片技术、和软件技术为核心的嵌入式技术取得 了迅猛发展,不仅渗透到社会、经济、军事、交通和通信等相关行业,也深入到 了家电、娱乐、艺术、社会文化等各个领域,使得计算机产业从p c 时代来到了 以普及计算( p e r v a s i v ec o m p u t i n g ) 平d 嵌入式系统为重要代表的后p c 时代。嵌入式 技术已经成为了一个研究热点( 参考文献 2 9 1 ) 。 1 1 嵌入式系统 嵌入式系统( e m b e d d e ds y s t e m ) ,是指以应用为中心,以计算机技术为基础,软 硬件可裁减,适应应用环境的专用计算机系统,一般具有实时性,专用性和资源严 格有限性等特点。为了突出大多数嵌入式系统的“实时”反应的特性,又称其为嵌 入式实时系统一r t e 系统( r e a l t i m ee m b e d d e ds y s t e m ) 。 嵌入式系统在于结合微处理器或微控制器的系统电路与其专属的软件,来达 到系统操作效率成本的最高比。 嵌入式系统分为硬件和软件两部分,其中硬件的设计包括单片机控制电路的 设计、网络功能设计、无线通信设计及使用接口等:嵌入式软件为信息、通信网 络和消费性电子等产品系统中的必备软件,专司硬件产品的驱动、控制处理和基 本接口功能,以提升硬件产品的价值,为该硬件产品不可或缺的重要成份,它常 以韧件形式,如控制器和驱动程序等方式呈现。 基于e t - l o t o s 的嵌入j j = 构件组装研究 现在的嵌入式系统,将朝向软硬系统整合,s o c 设计,应用程序开发以及内 容服务这几个方面来发展: ( 1 ) 系统:嵌入式操作系统( r t o s ) 与p c 操作系统比较,嵌入式操作系统并未要求全能,但必须能够依据系统 设计规格,有效率地发挥出硬件的运算能力,使得产品达到效率价格比的优化, 大多数系统会要求全自动完成所设置的工作,例如工厂或是银行的系统:除了原 本在嵌入式领域耕耘己久的v x w o r k ,q n x ,n u c l e u s 等等之外新兴的主要竞争产品 包括p a l m o s ,w i n d o w sc e ,l i n u x 等,其中e m b e d d e dl i n u x 操作系统免费授权的 特性,己为数问国际大厂采用,例如i b m 和s o n y 。 ( 2 ) 整合式芯片:s o c 嵌入式产品所需要的处理器及芯片组较p c 要求体积小、散热佳、省电,因 此多采用高整合度的s o c ( s y s t e mo nc h i p ) 为其处理器核心,为了尽快缩小制 程技术进步与设计生产力问的差距,并加速s o c 的实现,s i p ( s i l i c o ni n t e l l e c t u a l p o r p e r l y ) 的重复使用( r e u s e ) 成为各方瞩目的焦点。 ( 3 ) 应用软件 嵌入式软件可区分为用户端的应用软件及服务器端的整合软件,服务器端的 软件可能以l i n u x 或是w i n d o w 为核心,并搭配各种数据库系统:用户端由于各 种产品种类繁多,可开发出的软件也相对增加,例如p a l m 号称有上万种应用软 件可以使用。除了原本各种平台专属的应用软件之外,现在更有利用j a v a 跨平 台程序开发的软件加入这个阵容,软件的种类变得更多。 ( 4 ) 服务 由于许多嵌入式产品要能随身携带或走入家居生活,故其要求轻薄短小、造 型及颜色必须个人化、输入必须自然化、输出必须多媒体化才能吸引消费者:另 一方面由于嵌入式产品与网络结合,所以网络服务提供者或电子商务业者极易结 合,也就是嵌入式产品链上网络的入门网站及其内容( h t m l x m l ) 可能由厂 商负责提供,象是日本n i t d o c o m o 所发展的i m o d e 服务就是一个最好的例子。 总之,在现今硬件技术大幅进步的情况下,软件部分反而有着极大的成长空 间,软件的发展技术成为嵌入式系统中最重要的一环。在软件组件方面,强调的 是系统整合和友善的用户界面,而随着网络和无线通信的到来,软件组件的发展 反而更为重要,我们可以看出未来的软件发展,将逐渐由现行的简易视窗与低速 的通信朝向高带宽通信与多样化的用户界面。 基于e t - l or o s 的嵌入欤 4 件纽装研究 1 2 嵌入式软件开发方法学 嵌入式软件方法学是一般软件设汁方法学的延伸,它基本一- 是通过在一般软 件方法学中引入嵌入式软件的特性( 实时性、并发性等) 而得到。嵌入式应用的 迅速增长要求有更先进的软件开发方法来满足市场的需求。 综观嵌入式软件方法学的发展历程,走过了从结构化方法、面向对象方法 ( o o s e ) 、基于构件方法( c b s e ) 这三大阶段,经历了单任务系统到多任务系统 的转变( 参考文献f 3 2 1 ) 。 1 ,2 1 结构化设计方法 结构化设计方法是目前嵌入式软件最成熟、使用最广泛的设计方法,它又分 成两大类:单任务的结构化设计方法和多任务的结构化设计方法。 ( i ) 单任务的结构化设计方法 嵌入式软件在逻辑上可以抽象成一个不断处理外部事件的过程,单任务的结 构化设计方法的主要思想就是按照结构化的设计原则分别设计好各个事件的处 理模块,然后在一个主循环中依次循环调用这些模块。这种设计方法具有软件结 构简单、运行效率高、占用资源少和可以不需要o s 支持等优点,但是它也有吼 下的缺点: 事件处理之间无优先级并且不可抢占,当一个紧迫事件来临时,如果处理 陵事件的模块刚被调用,则必须要等到下一次循环才能被调用处理; 事件处理模块之间的互斥和同步原语操作需要用户自己束编程实现。单任 务的结构化设计方法比较适合于很简单的嵌入式系统,这些系统的硬件资源非常 紧张,并且处理的事件比较单一,如简单的单片机控制系统;另外在一些处理的 事件比较单一并且要求高速的场合也可以使用,例如数字信号处理( d s p ) 。 单任务的结构化嵌入式软件体系框架如下: w h i l e ( 继续运行) 调用事件处理模块l ; 调用事件处理模块2 : ) 牡于e b l o q o s 的嵌入戟佝件组然_ _ i j l 究 ( 2 ) 多任务的结构化设计方法 多任务的结构化设计方法的基本思想仍然是先划分模块,然后进行模块综 合,与单任务的结构化设计方法不同之处在于这些并发模块并不是被综合在一个 主循环中,而是被综合分配到多个任务中,在多任务运行时环境( r t o s ) 协调 下执行。 与单任务的结构化设计方法比较起来,任务之间可以按照优先级进行抢占, 在设计时把紧急事件的处理模块分配到高优先级的任务中,这样紧急事件就可以 随时得到优先处理;另外事件处理模块之问的通信、互斥和同步通过任务通信模 块和任务同步模块来完成,这些通信模块和同步模块抽象了所有嵌入式软件的共 同特点,在所有嵌入式软件中都可以使用,并且它们在实时操作系统( r t o s ) 提供的通信原语、同步互斥原语基础上来实现,这样减轻了应用程序开发人员的 负担,使应用开发人员专注于与应用本身相关的设计。当然,多任务的结构化设 计方法对系统硬件资源的要求比单任务的结构化设计方法高一些,并且需要 r t o s 的支持,因此在一些硬件资源很紧张的嵌入式系统中无法使用。 1 2 2 面向对象的设计方法( o o s e ) 结构化的软件设计方法虽然获得了很大的成功,但是设计出来的软件在扩展 性、维护性等方面却不能尽如人意,主要原因在于结构化的设计方法将数据和在 数据上的操作分离开束,封装性和信息隐藏性不好。面向对象( 0 0 ) 设计方法 将数据与数据上的操作封装在对象这个实体中,对象外界不能直接对对象内部进 行访问和操作,只能通过消息的方式间接访问对象。0 0 方法符合人们的思考方 式,并使问题空间和解空问的描述相一致,各个对象之间不需要了解对方内部细 节,并且提供了继承、多态、重载等方式来提高软件的重用性;另外,在0 0 设 计方法中可以采用面向对象的应用程序框架的方式来捕捉大规模应用的设计模 式,提高了软件体系结构的重用性。因此,0 0 设计方法能够使软件开发人员理 解和管理更大更复杂的软件,提高软件的扩展性、维护性和重用性。 面向对象的嵌入式软件设计方法包括面向对象的系统建模、面向对象的系统 设计、对象的详细设计这几个典型步骤。为了将而向对象设计方法应用到嵌入式 软件设计中,在对象中明确引入了并行特性,从而有了并行对象和被动对象的概 念。另一种面向对象的嵌入式软件设计自适应通信环境a c e ( a d a p t i v e c o m m u n i c a t i o n e n v i r o m e n t ) 框架,使用主动对象( a c t i v eo b j e c t ) 或反应式对象 基于e t - l o t o s 的嵌入软构什1 1 装研究 ( r e a c t i v eo b j e c t ) 来为对象引入并行特性。同样,将面向对象设计方法应用到 嵌入式软件设计中的另一种方式是在对鲰的方法中引入实时特性,建立实时对象 的概念。 面向对象的嵌入式软件设计方法能够充分利用面向对象的优点,并且能够利 用许多的形式化语言和辅助工具来协助软件开发,使嵌入式软件的开发效率、扩 展性、维护性和重用性都有很大的提高。嵌入式软件的面向对象设计与普通软件 的面向对象设计并没有本质的不同,主要差异是在对象中引入了嵌入式软件的特 征( 并行性、实时性、可靠性等) 。很明显,面向对象的嵌入式软件设计方法一 般需要面向对象的编程语言( 例如c + + ) 的支持。但是,面向对象的编程语言 占用内存空间比面向过程的编程语言要多,运行效率也比不上后者。在现有的 r t o s 上实现面向对象的嵌入式软件设计,一般采用如图l 所示的模型。r t o s 的对象化封装层将r t o s 的a p i 封装成对象的类( 如c 抖类) ,面向对象的运行 支撑层在对象化封装层基础上,将应用中共性的东西抽象出来形成对象的类和面 向对象的应用程序框架( 例如上文中的a c e 框架及其包含的主动对象、反应式 对象等) 并为对象框架的运行提供支撑,应用层则在面向对象的运行支撑层提供 的框架和类以及r t o s 对象化封装层提供的类的基础上进行构建。引入的面向对 象的运行支撑层和r t o s 对象化封装层进一步加大了内存空间的占用,降低了运 行效率;另外面向对象的运行支撑层如何抽象出应用中共性的对象和框架非常关 键,甚至影响到面向对象的嵌入式软件设计方法的成败,而这问题目前还是一个 开放的问题。但是不管如何,面向对象的嵌入式软件没计方法是设计大型复杂嵌 入式软件的有效途径。 应爿j 层 面向对象的运行支撑层 r t o s 对象化封装层 i 订o s 幽1 面向对象的嵌入式软件体系框架 箍十e t - i o t o s 的嵌八较构件i :【i 浆 i j f 究 1 2 3 基于c b s e 的设计方法 近年来,软件生产线的概念被人们提了“5 来,其晟终日的就是希望软件象硬 件一样进行生产。构件化的软件开发主要通过提高软件的重用性来提高软件开发 效率,同时它强调软件体系结构的重要性,认为应该在软件体系结构层次上对软 件进行设计和维护,即所谓“粗粒度”软件设计。构件最重要的特点是其独立性、 重用性和具有层次的抽象性,重用性强调构件的目的是为了软件的重用性,独立 性则强调构件达到该目的手段,即通过其功能和实现的独立性从而使它能够在很 多的环境中被使用,具有层次的抽象性表明构件的广泛适用性,从整个软件系统 到具体的每个细小的功能块都可以使用构件概念来描述和设计。 用基于构件的软件方法来构造嵌入式软件是一种新的尝试,它能将基于构件 的软件开发的诸多优点( 如:改进软件质量、缩短上市时间、解决日益增长的软 件复杂性) 带入嵌入式软件开发中。特别是对于嵌入式实时软件,涉及到大量和 时间相关的算法,如果把它们构件化,并按照特定的模式和框架在软件开发中重 用它们,其意义不言而喻。而且,基于构件进行软件开发,还有利于嵌入式软件 开发的自动化。 构件化软件设计的研究内容可以分成领域工程和应用工程两部分。领域工程 的主要任务是获取构件,存在大量可复用的构件是有效地使用构件进行应用软件 设计的前提,而领域工程是获取构件、构架的主要途径。领域是一组具有相似或 相近软件需求的应用系统所覆盖的功能区域,领域工程是为一组相似或相近系统 的应用工程建立基本能力和必备基础的过程。领域工程过程划分为领域分析、领 域设计、领域实现等多个活动。应用工程的主要任务是构件复用,利用领域工程 结果进行软件系统的丌发,与普通的软件开发过程类似,应用工程也可以划分为 分析( 需求获取) 、设计、实现等阶段。不同的是,本过程中的每一阶段皆可以 从构件库中获得可复用的领域工程结果,并将其作为本阶段集成与:7 t 发的基础。 领域工程研究的核心是构件模型和软件体系结构( 软件一构架) 这两个相 互关联的问题,不同的构件只能在相应的软件构架中使用,就象计算机硬件上不 同总线的扩展卡只能插在相应的扩展总线上,因此基于构件的应用软件设计也可 以认为是基于体系结构( 构架) 的软件设计,也有人称之为基于“构件一构架” 的应用软件设训。目前针对构件和构架的研究包括:提出各种“构件一构架” 模型、提出各种形式化的描述方法和可重用构件的产生等。在构件和构架模型中, 把构件与连接件相区别是一个非常重要的思想,这种思想把构件的功能与构件间 的交互分离,这种分离提高了构件的独立性和重用性,因为构件在_ 二产时不需要 基于e t - l o t o s 的嵌入软构件组装研究 考虑其使用环境( 与其它构件的交互) 。同时在大型分布式复杂软件中引入了具 有更高抽象层次的a g e n t 概念,利用a g e n t 来实现软件的高抽象层次的构件和连 接件,能够在不同层次上清晰描述和实现构件化的软件体系结构一一在此把这些 构件构架模型称为高级构件构架模型,而且也有了一些针对基础构件和构 架模型的业界标准提供给用户直接使用。 构件库管理为应用工程重用已有的构件提供支持,随着构件化的软件设计逐 渐成为主流,能够重用的构件必然越来越多,用户花在查找适合自己需要的构件 上的成本也必然在整个软件开发过程中占据越来越大的比例,所以构件库的管理 也开始受到研究者的注意。 可重用构件和构架的获取也是学术界和工业界关注的问题之一,因为只有构 件库中有丰富的构件才能提供给用户使用。如何充实构件库( 可重用构件和构架 的获取) 成了实践者的一个紧迫问题。获取可重用构件有两种途径:第一种方法 就是按照构件一构架模型来从头生产可重用的构件和构架,为以后的应用开发服 务;第二种方法就是从传统的软件中提取出可重用的构件和构架。很显然,第二 种方法更具有吸引力,因为它尽可能减小重复开发。从传统的软件中提取出可重 用的构件和构架可以看成软件反向工程的一部分。 应用工程解决的核心问题是如何利用领域工程的构件和构架,进行应用程序 的生成,这个过程也称之为基于构件的软件开发过程,它可以分成三步:构件的 抽取、构件的组合、构件的适应性修改。构件的组合就是指把各个构件( 包括连 接件) 组装起来形成应用系统的过程,该过程也可以称为基于构件的软件设计过 程。基于构件的应用软件设计是一个自底向上和白顶向下相结合的设计过程。这 个过程的关键是如何把一个应用系统的需求进行分解,使其尽量能够通过用己存 在的构件组合来完成,构架模型( 软件体系结构) 为这个分解过程提供了指导方 向。构件的适应性修改也是相当重要的,因为许多年来,我们已经积累了大量的 软件制品,可以把它们进行适应性修改使之构件化加入到构件库中,从而适合在 构件化软件设计中使用。目前有关这方面的研究不是非常系统,也没有提出一个 普遍化的方法来进行这项工作。 基于构件的嵌入式软件开发可以分为以下几步:嵌入软构件获取、嵌入软 构件库建设、嵌入软构件检索、嵌入软构件组装、集成测试与系统发布、嵌入软 构件库维护。 ( 1 ) 嵌入软构件获取 目前,有多种途径获取嵌入软构件: 1 ) 从现有的嵌入软构件中获得符合要求的构件,直接使用或做适应性修改, 基十e i l i 0 1 o s 的嵌入软构件纽装t o i 矩 得到可复用的嵌入软构件; 2 ) 通过遗产工程,将具有潜在复用价值的嵌入软构件提取出来,得到可复 用的嵌入软构件: 3 ) 从构件市场上购买现成的商业构件,即c 0 7 r s 构件: 4 ) 开发新的、符合要求的嵌入软构件。 在进行以上决策时,必须考虑不同方式获取构件的一次性成本和以后的 维护成本。 ( 2 ) 嵌入软构件库建设 以上方式获取的嵌入软构件都放入嵌入软构件库中。由于构件存储了构 件自身的描述信息、构件信息发布的接口描述以及信息发布所遵循的数据格 式等,同时构件库提供构件管理接口,所以,根据系统需求和构件规约,开 发人员可以用多种检索方法( 如刻面、枚举、属性值、关键字和正文检索等) , 搜索得到匹配的标准嵌入软构件集。 ( 3 ) 嵌入软构件检索 通常,通过检索构件库得到的匹配构件可能不止一个,可能是多个,那 么需要确定构件的性质,包括构件的功能和构件的接口,以及构件的可靠性、 可预测性、可用性等质量因素,在某些情况下,可能是一些非技术因素( 如 构件成熟度) 也需要考虑。然后,从多个候选的构件的中选择最合适的,选 耿的准则是系统体系结构和构件规约,以及用户对该构件的了解、使用情况 等。 ( 4 ) 嵌入软构件组装 嵌入软构件组装是嵌入式构件技术研究的核心。构件从生产、流通到应 用的各个环节中,如何将构件组装成应用系统是每个环节都必须考虑的核心 问题。 ( 5 ) 集成测试与系统发布 经过组装之后的嵌入式软件还要进行和硬件关联的集成测试以及适应性 修改后才能进行系统发布,提交给用户。 ( 6 ) 嵌入软构件库维护 嵌入软构件处于不断的更新和修改之中,怎样对嵌入软构件库进行维护 以及采用什么样的方法来描述构件模型,使之更容易维护也是研究的热门问 题之一。 总之,嵌入式软件的设计将逐渐从“数据结构+ 算法”的模式转变到基于 构件和体系结构等高层次的设计模式,软件重用也逐渐从思想、模式、源代码级 摧十e t - l o t o s 的嵌 转。! 伴纰袈圳宄 别扩展n - - 进制代码级别;目前结构化没计方法仍然占主流,面向对象设计方法 已经比较成熟,并大量应用在设计的早期阶段( 系统建模阶段、体系结构设计 阶段) ,基于构件的软件设计方法仍然有待完善;除了对软件的实时性可能有影 响外,基于构件的软件设计方法能够完美地满足嵌入式软件所有其它的特性( 如 定制、剪裁、动态演变等) 。 随着嵌入式系统的硬件发展以及基于构件的软件设计方法自身的不断完 善,基于构件的软件设计方法将是未来发展方向,是现在的一个前沿研究领域。 群于e i 二l o t o s 的嵌入软构件组装研究 第二章构件组装技术 基于构件刃:发( c b d ) 或基于构件的软件工程( c b s e ) 是一种软件开发新 方法,它是在一定构件模型支持下,复用构件库中的一个或多个构件或者并发地 开发构件,通过组合手段高效率、高质量地构造应用软件系统的过程( 参考文献 1 】1 ) 。 构件的组装技术是基于构件的软件开发的核心技术。 2 1通用构件组装技术 基于c b s e 的嵌入式开发是把通用的构件开发( c b d ) 延伸到嵌入式中的结 果。在研究嵌入式软构件组装之前我们先来了解一下通用构件的组装技术。 2 1 1 构件的定义 构件是一个封装的、规范的、可重用的软件模块,是组织系统的基本单位。 构件结构提供了在分布式环境下的可交互操作性,它实现了最大程度的代码重 用,并为软件维护和升级奠定了良好的基础。因而构件技术成为当今软件系统的 主流技术。 构件的两个基本元素是构件描述和构件实体。构件描述清晰明确告诉用户 构件提供的功能、接口和上下文依赖,对于用户来说就像一个“白盒子”( w h i t e b o x ) 。构件实体是实现构件功能的载体,用户不必知道它是如何实现的,只是 在配置时导出代码进行连接,对于用户来说就像一个“黑盒子”( b l a c k b o x ) 。 为了使构件能够独立的使用,易于被第三方集成,应该尽可能地使构件描述与实 体分开。把构件描述与构件实体分开的另一个原因是考虑到同一个构件描述可以 用不同的程序设计语言来实现。 2 1 2 构件组装 构件组装就是在构件模型的基础上研究构件组装机制,包括源代码级的组装 和基于构件对象互操作性的运行级组装。静态组装以组装工具的使用为主要特 征,但还远未达到普通用户能够轻松掌握和熟练使用的程度。动态组装以构件模 型、构件体系结构的建立和标准化以及开放系统技术的运用为主要特征。与静态 基于e t - i o t o s 的嵌入软构件组装研究 组装相比,动态组装虽然牺牲了应用系统的部分运行效率,但动态组装具有很高 的灵活性。 目前,构件组装方法主要分为“黑”、“白”、“灰”三个层次,由于构件组装 实现的特性,“灰盒”组装方法是研究与开发的重点。“灰盒”组装方法主要分为 四类:基于框架的、基于体系结构的、基于连接器的和基于胶合代码的组装方法。 2 1 2 1 现有的构件组装技术 构件组装技术经过多年的研究取得了一定的成果,研究人员提出了许多技术 用以解决构件组装中遇到各种的问题。本节将进行简要地介绍。 1 拷贝粘贴( c o p y p a s t e ) 拷贝粘贴是将现有构件中的可重用代码复制到新的构件中,并进行适应性 修改满足需求,这样开发人员必须可以完全访问构件的源代码,对构件的实现有 相当程度地了解。这种技术是最原始的,不支持构件自适应和体系结构配置。 2 契约( c o n t r a c t l 契约声明了客户应该如何部署构件,及构件应该提供的服务和所需求的服 务。契约提供了大粒度的抽象,有助于很好地理解和重用构件,并且支持优化机 制,可以用简单的构件行为表达复杂的构件行为。但是契约只提供了抽象化的概 念。 3 模块( m o d u l e l 模块通过接口隐藏了模块的内部实现,所以在系统中模块可以互换而不影响 其他模块( 即信息隐藏原理) ,支持系统配置。模块的一个连接点可以是一次过程 调用,也可以是全局变量的一次访问。连接器可以根据连接点的定义,保证绑定 所有的连接点。但是,模块不支持插接功能和胶合代码。 4 脚本语言( s c r i p tl a n g u a g e l 脚本语言与标准的编程语言类似,是解释型语言。脚本语言只能说明构件如 何交互和数据结构如何在构件之间交换,但是它的执行效率比编译型的语言低, 而且没有提供底层系统功能的函数,所以不适合用来编写完整的应用系统。此外, 脚本语言使用动态类型,只有在执行阶段才能检测到类型错误,所以构件自身也 不使用脚本语言实现。在构件组装中,脚本语言只表示了构件连接的抽象。 现在,许多的c o t s 构件绑定了脚本语言。由于不同的开发商使用不同的脚 本语言。所以,对于构件开发人员来说,构件尽可能多地绑定不同的脚本语言。 目前,比较常用的脚本语言有j a v a s c f i p t ,p e r l ,t c i t k 。 基于e t - l o t o s 的嵌入软构件细装研究 5 组装语言( c o m p o s i t i o nl a n g u a g e l 组装语言应用在更高层次的抽象级上,提供了构件组装的框架。从概念上说, 组装语言应该介于纯面向对象语言( 如s m a l l t a l k ) 与脚本语言之间,必须灵活地处 理对象和构件,更好地解决构件组装的问题。 目前,实现的组装语言有p i c c o l a 语言和b m l ,p i c c o l a 语言是基于二代 数模型的组装语言,通过定义不同的构件组装风格支持多种构件模型,虽然 p i c c o l a 语言支持构件组装,但构件的自适应性修改仍必须通过编程实现。另 一个语言b m l 是基于x m l 的b e a n 标记语言( b e a nm a r k u pl a n g u a g e ) ,允许描 述说明j a v a b e a n s 构件的组装。它支持j a v a b e a n s 的属性配置、用脚本语言编写 的胶合代码,以及定义应用和新j a v a b e a n s 构件。 6 胶合技术( g l u et e c h n i q u e s ) 在脚本语言和软件体系结构中都引入了胶合( g l u e ) 概念,胶合技术主要是解 决不同构件框架的组装接口不兼容性的问题。应用开发人员总是希望通过构件 之间简单地插接实现应用系统,但在现实世界中这几乎是不可能实现的。所以, 使用胶合代码可以解决组装不匹配的问题,可以使不能插接的构件变得可组装。 胶合代码通常使用s m a l l t a l k ( 有利于包装遗产应用) 或c 语言( 有利于访问系 统底层的接口) 编写。虽然脚本语言涉及到构件胶合这方面,但构件互操作性的 问题并没有解决,这可以用胶合技术解决。胶合代码是应用系统的一部分,用于 解决组装不匹配的问题,包括体系结构不匹配和构件互操作( 兼容性) 的不匹配。 在构件组装中,胶合和脚本是两个不同的概念,前者解决构件的不匹配问题,而 后者表示构件连接的抽象。 7 包装- 器( w r a p p e r ) 在面向对象语言的扩展中引入了包装技术,它是一种传统的方法用于扩展现 有的类或转换类的接口,其主要的包装形式有子类、继承、聚集等。包装技术主 要解决组装中出现不匹配的问题,一个构件可以以一定的透明方式被包装,并呈 现为另一个构件,代理对其他构件的调用,而且包装器可以用简单的方式修改构 件的行为。 8 中间形式( i n t e r m e d i a t ef o r m s ) 中间形式是适应性地修改系统中所有的构件以符合某个标准的形式,这个标 准形式也称为中间形式,它通常基于其他代码( 如接1 3 定义语言i d l ,二进制代 码等) 。包装器技术主要解决组装不匹配的问题,而中间形式则通过严格限制系 统中使用的构件形式,尽可能地避免组装不匹配的问题出现。中问形式通常清楚 地说明:构件接口如何定义;何种数据实体可以在构件之间互换:构件之间的交 基于e t _ l o t o s 的嵌入软构件纽装研究 互机制以及使用何种体系结构风格。通常基于中间形式的系统适用于特定的应用 领域和体系结构。 中间形式的典型例子是软总线( s o f t w a r eb u s ) 。软总线定义了标准化的通信协 议用于数据交换( 如用于数据交换的数据类型集合、服务润用机制等) ,负责消息 处理和执行必要的数据转换,并且提供其他服务。软总线的例子有o r b ,b a r t 和 p o i ,y i i t h 2 1 2 2 构件组装方法分类 构件组装技术是基于构件的软件开发的核心技术,构件必须经过组装才能形 成应用系统,实现构件的价值。从目前的研究看构件组装是构件技术研究的重 点和难点。因为构件组装从构件生产到服务,对构件技术的发展形成了强大的约 束。构件本身的编程技术并不是难点,而如何将构件组装形成应用系统却受到构 件模型、体系结构、构件粒度、运行环境等因素的制约:反过来,使这些因素要 尽可能地有利于构件的组装,则更为关键和重要。 目前通常根据构件组装时需要对构件内部细节了解的程度,将构件的组装方 法按其特征分为黑盒( b l a c k b o x ) 组装方法、白盒( w h i t e b o x ) 组装方法和灰盒 ( g r e y b o x ) 组装方法。 1 黑盒组装方法是最理想的方法也不需要对其进行配置或修改它不需要对 构件的实现细节有任何了解,它要求“以不变的构件组装成万变的应用”,用有 限的构件集合通过“组装运算”而形成无限且不断演变的应用集合,这要求构件 集合必须对应用需求具有高度的完备化,这显然实现难度太大,利用现有的组装 技术几乎不可行。 2 白盒组装方法要求将构件的所有细节都展现出来,让组装人员理解后再 进行组装,并可以对构件按应用的需求进行适当地修改。从构件复用的角度分析, 白盒组装只能用于局部的和暂时的。一个可以随意修改的软件构件并不是真正意 义上的可复用产品,因为完全理解一个构件并对其进行合适的修改的代价是相当 高的,而且其安全性、可靠性均得不到保证。更糟糕的是,很可能完全弄明白一 个构件并对其进行合适的修改的代价不会低于开发新的构件的成本。所以白盒组 装方法对于软件复用的意义不大,只限于局部性。 3 灰盒方法介于“黑盒”与“白盒”之间,是当前技术发展的合适选择。 灰盒组装方法通过调整构件的组装机制而不是通过修改构件来满足应用系统组 装的需求,这样既实现了构件组装的灵活性,又不至于在组装过程过于复杂。因 基于e t - l o t o s 的嵌入软构件组装研究 此,近年来对构件组装技术的研究主要集中在灰盒方法方面。 当前,灰盒组装( 也称为灰盒复用) 方法的研究主要集中在基于框架 ( f r a m e w o r k ) 的组装、基于体系结构( a r c h i t e c t u r e ) 的组装、基于连接器( c o n n e c t o r ) 的组装和基于胶合代码( g l u ec o d e ) 的组装四类。在实践中又常常以构件模型为基 础,使各种组装方法充分融合。本文是基于体系结构的组装方法,所以下面将着 重说明基于体系结构的组装方法。 基于体系结构的组装方法 北京大学张世琨等人在研究软件复用和基于构件的软件开发基础上,分析了 现有的构件集成方式的不足,提出了支持接1 3 连接式和插头插座式体系结构的构 件模型及基于这种体系结构的构件集成组装框架。 张世琨等人分析了3 种不同的体系结构类型:即对象连接式( o b j e c t c o n n e c t i o na r c h i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业合理化建议征集与采纳实施服务合同
- 离婚协议书范本:共同财产虚拟货币分割及监管协议
- 公务员遴选考试咨询服务协议
- 仪器设备维护方案
- 心理学中的幸福感提升方法
- 羽绒服装生产工艺指南
- 交通物流信息采集规范
- 2025中信银行成都分行运营管理部社会招聘笔试参考题库附答案解析
- 农业科技成果评价与考核
- 2025云南昭通职业学院招聘城镇公益性岗位工作人员5人笔试备考试题及答案解析
- GB/T 8566-2007信息技术软件生存周期过程
- TSZUAVIA 009.11-2019 多旋翼无人机系统实验室环境试验方法 第11部分:淋雨试验
- GB/T 13452.2-2008色漆和清漆漆膜厚度的测定
- GB/T 12730-2008一般传动用窄V带
- ps6000自动化系统用户操作及问题处理培训
- 手机拍照技巧大全课件
- 基层医院如何做好临床科研课件
- 核电质量保证培训讲义课件
- 2021年东台市城市建设投资发展集团有限公司校园招聘笔试试题及答案解析
- 九年级英语全册单元测试题全套带答案(人教版新目标)
- 城市轨道交通安全管理课件(完整版)
评论
0/150
提交评论