(计算机软件与理论专业论文)通用构架描述语言的研究与实现.pdf_第1页
(计算机软件与理论专业论文)通用构架描述语言的研究与实现.pdf_第2页
(计算机软件与理论专业论文)通用构架描述语言的研究与实现.pdf_第3页
(计算机软件与理论专业论文)通用构架描述语言的研究与实现.pdf_第4页
(计算机软件与理论专业论文)通用构架描述语言的研究与实现.pdf_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通用构架描述语言 的研究与实现 通用构架描述语言的研究与实现 【 摘要】 到目 前为止, 软件构架领域已经出现许多的构架描述语言, 它们能够为基于 构件的系统构架的描述和分析提供形式化的基础。 但是每种构架描述语言都面向 不同的领域并且各自具有构架设计和分析工具, 为跨领域的构架设计和分析带来 了困 难, 针对这个问题, 本文提出了提出了一种通用构架描述语言, 并且称之为 s i l v e r 。通用构架描述语言不同于前人的构架描述语言之处就在于它们能够为 软件构架设计和分析提供一种通用的构架描述, 并且允许整合许多早就己经独立 开发的构架设计和分析工具。 这篇论文中我们将描述s i l v e r通用构架描述语言的语言特征,描述 s i l v e r 语言如何整合其它不同风格的构架描述语言, 还描述了s i l v e r s t u d i o 作为其整合其他构架描述语言的工具的特点, 系统结构和关键技术。 最后总结了 s i l v e r 相对于其他构架描述语言的 优点,以 及在整合其他构架描述语言包括其 设计和分析工具时的经验。 【 关键字】 软件构架,实例,构件,连接器,连接,端口,接口,构架描述语言 分类号7 t p 3 1 9 。 2 。 复旦大学硕士学位论文 通用构架描述语言的研究与实现 c o mmo n a r c h i t e c t u r a l d e s c r i p t i o n l a n g u a g e o f c o mp o n e n t - b a s e d s y s t e ms a b s t r a c t u p t o n o w t h e r e h a v e b e e n m a n y a r c h i t e c t u r e d e s c r ip t io n l a n g u a g e s i n t h e a r c h it e c t u r e c o m m u n i ty , w h i c h a r e t h e b a s e o f t h e f o r m a l d e s c r i p t i o n a n d a n a l y s i s o f a r c h i t e c t u r e r e p r e s e n t a t i o n . b e c a u s e o f t h e d o m a i n - s p e c i f i c a s p e c t o f t h e s e a d l s , s p a n o n d o m a i n s o f a r c h i t e c t u r e d e s c r i p t io n i s s o d i ff i c u l t . a s a re s u l t , i n t h i s p a p e r w e p r e s e n t a c o m m o n a r c h i t e c t u r e d e s c r i p t i o n l a n g u a g e o f c o m p o n e n t - b a s e d s y s t e m s , c a l l e d s i l v e r . b e in g d i ff e r e n t fr o m f o r m e r a d l s , c o m m o n d e s c r i p t i o n l a n g u a g e p r o v i d e a b a s e o n w h i c h d e s i n a n d a n a l y s i s o f a r c h i t e c t u r e s c a n p r o c e s s , a l s o p e r m i t s t o i n t e g r a t e m a n y e x i s t i n g i n d e p e n d e n t a d l s a n d t h e i r d e s i g n t o o l s . i n t h i s p a p e r , f i r s t w e d e s c r ib e t h e p r o p e rt i e s o f s i l v e r l a n g u a g e , s e c o n d w e e l a b o r a t e o n h o w s i l v e r i n t e g r a t e o t h e r a d l s o n s o m e s p e c i f i c a l g o r it h m , t h i r d w e i n t r o d u c e a n a r c h i t e c t u r e d e s i g n a n d a n a l y s i s e n v ir o n m e n t b as e d o n t h e s i l v e r c o m m o n a r c h i t e c t u r e d e s c r i p t i o n l a n g u a g e , f i n a l l y , w e c o n c l u d e t h e a d v a n t a g e s o f s i l v e r a n d s h a r e t h e e x p e r i e n c e s w e h a v e g o t i n t h e p r o c e s s o f d e s i g n i n g , i m p le m e n t i n g a n d m a k i n g u s e o f s i l v e r . 【 k e y w o r d s s o ft w a r e a r c h i t e c t u r e , i n s t a n c e , c o m p o n e n t , c o n n e c t o r , l i n k , p o r t/ r o l e , i n t e r f a c e , s o f t w a r e a r c h i t e c t u r e l a n g u a g e 3 。 复旦大学硕士学位论文 通用构架描述语言的研究与实现 引言 过去的 几十年里,已 经开发出 许多的构架描述语言【 g a 0 9 4 , g a r 9 5 , 柯 2 0 0 3 ,虽然它们各自 面向于不同的领域,专注于不同的问题,在设计和分析工 具上都有着各自 不同的特点, 但是它们的本质上是相同的, 即它们能够为基于构 件的系统构架的描述和分析提供形式化的基础。 随着研究领域的不断深入和构架 设计和分析经验的不断增长, 构架设计和构架描述语言这个领域正在逐渐变得成 熟, 软件构架研究社区中对于软件构架的描述和分析的概念就会形成许多一致并 且有效的意见。 构架设计和分析在软件开发过程中的重要性被越来越多的专业人 士所认同。 当前己 经存在了大量的软件构架描述语言和支持工具, 这些语言和工具几乎 覆盖的当前软件涉及的所有领域, 当某个工程师需要设计某个领域的构架时, 它 就要选择符合那个领域要求的构架描述语言, 比如说, 当需要设计基于事件的系 统的 构架时, 可以 选择c 2 m o r t 9 6 构 架描述语言。 这时 候我 们将遇到一些问 题, 比 如 说, a e s o p g a 0 9 4 的 设 计 工 具 具 有图 形编 辑的 功能, 而r a p id e l a k + 9 5 的 设计特征允许动态模拟构架设计以 及分析构架的动态行为。 如果我们在a e s o p 语言涉及的 领域想要分析构架的动态行为, 我们不仅要修改a e s o p 描述语言的描 述结构和语义, 而且还要修改相关支持工具的代码, 这样做的结果就是所有的构 架描述语言 越来越庞大, 并且越来越具有通用性, 最极端的情况下就是合并成为 一个能够覆盖所有领域的万灵药。 既然各个构架描述语言覆盖各自的领域, 并且 支持不同的构架设计和分析特征, 为什么我们不提出一种能够使各个构架描述语 言自由转化的中间语言呢?这样我们只需要提供各种构架描述语言和这样中间 语言互相转化的 算法就可以充分利用前人的 研究成果。 总结了以 前大多数构架描述语言的 缺陷, 这样我们就提出了 一种通用构架描 述语言,并且称之为s i l v e r 。 通用构架描述语言作为新一代构架描述语言, 之所 以不同于第一代构架描述语言, 就在它们能够为软件构架设计和分析提供一种通 用的构架描述, 并且允许整合许多早就己经独立开发的构架设计和分析工具。 通 用是指具有所有构架描述语言的基本结构特征, 并且具有可变更语义的通用结构 比如说构架属性变体用于整合不同语言的各种语义特征。 这种语义特征我们称之 为构架描述语言的类型和风格。 基于构件的系统工程的一个重要问题就是为描述系统找到合适的标记语言。 良 好的标记语言可以 清晰地记录基于构件的设计, 描述它们的属性, 使系统的分 析和产生的过程自 动化。一种描述基于构件的系统的标记语言是对象建模标记 s z y 9 8 。 每个构件可以由 一个类来表示, 构件的 接口 可以 用类的接口 来表示, 4 一 复旦大学硕士学位论文 通用构架描述语言的研究与实现 构件之间的联系可以用类关联来定义。基于构件的系统的对象建模有许多好处。 首先对象模型标记为大批的软件工程师所熟悉。它们同时提供到实现的直接映 射。 它们被许多商用工具支持。 它们具有开发系统的良好方法支持。 但是对于描 述基于构件的系统,对象建模标记也有许多缺点, 1 )仅仅提供最原始的交互方式 一方法调用。 且不能 把构件交互的丰富类型比 如 说连接器类型作为首要的构架元素来表示。 2 )并不能很好的支持层次描述, 很难描述随 着系统不断复杂设计不断深入的细 节过程。 3 )并不支持家族系统的定义。 虽然它们能够描述模式和许多对象类型, 就每个 家族成员必须遵守的设计约束而言, 它们对于系统的一个类并没有明确的语 法支持。 4 )并不直接支持描述和分析非功能化的 属性。 这就很难推导和评价整个系统的 设计属性,比如说系统的性能和可靠性。 一 个克服了 上述 缺点的 方法就是 使用构架描 述语言 ( a d l ) 。 过去的 几十年 里, 为了处理复杂软件系统的高级描述已经开发出了许多的构架描述语言, 这些构架 描述语言的大致结构就是一组可以交互的构件的集合, 并且允许工程师在一个很 高的抽象层次上推导系统的属性。 所关注的典型属性包括, 交互的协议, 传输带 宽和潜伏期,中间数据存储的位置,与构架标准的一致性以及预期演化的深度 g p 9 5 , g s 9 3 , mt 9 7 , p w9 2 o 这篇论文中我们将描述s i l v e r 语言和其整合工具, 以及我们在整合其他构架 描述语言包括其设计和分析工具时的经验。 我们首先概括性地描述以 往构架描述 语言的特征以及所存在的缺陷,接着我们讲述通用构架描述语言的概念性的基 础, 然后我们描述s i l v e r 语言作为通用构架描述语言 的具体细节,包括支持 s i l v e s i l v e r r语言进行构架设计和分析的工具概述, 再者我们详细讲述三种构架 描述语言如何通过s i l v e r 语言进行互相转化的算法以 及应该注意的问 题, 最后我 们总结关于s i l v e r 的经验以及未来的研究方向。 。 5 一 复旦大学硕士学位论文 通用构架描述语言的研究与实现 第一章背景知识 一个系统的软件构架定义了一个高层次的结构, 把系统看成为一组交户的构 件集合。良 好定义的构架允许工程师在一个更高的抽象层次上推断系统的性能 g p 9 5 , g s 9 3 , p w 9 2 。 关心的 典型问 题包 括构 件之间的 兼容性 a g 9 7 , 是否 符合 标准 a g i 9 8 , 性能 s g 9 8 , 版本演化 b v 9 3 ,可靠性。 在决定复杂软件系统的成功与否上构架的设计往往起到很大的作用, 选择一 个合适的构架能产生满足需求的产品,并且当出 现新的需求时, 也很容易修改, 而一个不恰当的构架的选择则往往是灾难性的。 1 . 1构架研究的起步和发展 早在2 0 世纪6 0 年代,软件研究者就己经注意到软件的整体性结构对软件 质量有重要影响。1 9 6 8 年, d ij k s t r a 提出的软件系统的结构化分析方法可以 看作 是人们对于软件构架的最早的探索。3 0多年以来,随着软件规模不断增大,软 件开发进度和软件质量越来越难以控制。 近年来随着构件化开发方法和软件复用 技术的发展、 软件产品族和产品流水线的出现, 软件构架日 益成为软件研究者和 开发人员们关注的热点。 几十年来, 人们对于软件构架研究日 益深入。 从早期的主程序/ 子过程的主从 模块调用思想的提出、数据抽象和面向对象设计的探索、各种层次模型 ( i s o ) 的建立、 各种形式化构架描述方式的研究、 各种描述语言的应运而生, 到今天的 各种形式化构架描述语言的发展以 及各种构架模式的 研究, 软件构架己 经成为一 个快速发展的、逐渐成熟的软件工程理论研究领域. 1 . 2构架研究的相关背景 1 . 2 . 1 软件构架的定义 一直以来, 人们在构架基本概念上一直存在着分歧。 以下是一个较为综合的 软件构架严格定义: 某个软件或计算机系统的软件构架即组成该系统的一个或多 个结构, 它们构成软件的各个部分, 形成这些组成元素的外部可见属性及相互间 的联系。 这里所说的某个构架组成元素的” 外部可见属性” 是指别的组成元素可对 该组件可做的假设, 例如这个组成元素提供的功能、 具备的性能特性、 容错能力、 共享资源的使用等。该定义包含如下内容, 1 )构架决定了各个组成元素,构架反映了构架各组成元素之间如何交互的信 息,同时构架信息中必须略掉各组成元素中与交互无关内容。 这样构架首先 一 6 一 复旦大学硕士学位论文6 通用构架描述语言的研究与实现 是去除各组成元素中与交互无关的细节之后得到的系统抽象。 2 )定义明 确指出系统可能由 多个结构组成 而且任何软件系统都应该有自己的构架 ,任何一个结构都不能和构架等同。 3 )只要某个构架组成元素行为可以从其它元素的角度观察得到或者区别开, 这 样的行为就是构架的内容。正是因为这种行为的存在, 才使得组成元素交互 成为可能,而这种交互正是构架的重要组成内容。 1 .2 .2构架描述的定义 我们知道, 软件构架决定着一个系统的主体结构、 基本功能、 基本特征和多 种质量属性, 构架质量是整个软件系统质量的关键因素。 在软件开发的整个过程 中,软件构架都担当着重要的指导角色。 在项目 开发起步阶段, 粗略的构架设计就己 经开始成为项目 相关方之间交流 的 最为有效手段, 为软件项目 的 立项、 可行性分析以 及风险评估提供着重要依据。 在需求分析阶段, 构架不仅是用户和设计者之间的重要交流工具, 而且构架本身 也在用户和设计者的交互中也在不断求精与演化。 我们知道, 不同角色的项目 相 关方如: 客户、 项目 经理、 开发人员等对系统的特性关注点有很大区别。 构架提 供了一种各方均可以理解的共同语言, 各种风险承担者都可以通过构架的描述来 表达自己关注的系统目 标和特征。 有关各方对于构架的理解与描述存在着很大的 差异, 例如: 终端用户可能更加关注的是构架的外在表现特征, 而决策人员则更 关心构架性能瓶颈。 这体现了构架从不同角度观察得出的不同构架视图, 突出了 有关各方对软件构架的不同理解。 软件构架是系统早期设计决策的产物, 在软件开发的整个生命周期中, 软件 构架本身很少发生根本性的改变。 构架一旦确定, 将对整个系统开发起着约束作 用。 因此, 对构架的深入研究将会对整个系统质量属性产生重大影响, 极大的降 低软件系统的开发风险。 具有相当抽象度的软件构架本身就是一种可以重用的粗粒度的软件模型, 构 架复用在一定层次上大大提高软件复用的粒度, 促进软件质量改善和软件生产率 提高。 1 .2 .3 构架风格的定义 构架风格,定义了设计元素类型和组成系统的规则。风格就是构架类型系 统在系统级别上的体现,风格允许定义面向某个领域或者特定应用的设计词汇, 以 及这些词汇如何被使用的约束。 这反过来支持面向领域的设计包装, 特定目的 , 一 复旦大学硕士学位论文 通用构架描述语言的研究与实现 的分析和代码生成工具的使用, 设计过程的简化, 以 及检查是否符合构架标准的 能力。图 1 . 1显示了基于构件系统的构架描述, 图1 . 1简单的 c l i e n t - s e r v e r图形 作为一个非常简单的例子, 图1 . 1 描述了 一个系统包括c l i e n t , s e r v e r 两个构 件并且被一个r p c连接器连接。s e r v e r构件本身可以是个子构架。连接器的属 性可能包括构件交互的协议。 服务器的属性可能包括平均相应需求的时间。 系统 上的约束可以规定不能超过五个客户端连接服务器端, 服务器端不能初始化和客 户端的 交流。 系统的 风格是“ c l i e n t - s e r v e r ” 风格, 设计词汇包括 c l i e n t s , s e r v e r s , 和 r p c连接器。 这个a d l s 的拓扑结构具有一个自 然的映射对应基于构件系统的描述需求。 首先, a d l s 允许精确地描述构件的组装,明 确构件交流的方式。第二,它们支 持多个构件接口的使用, 这是许多基于构件系统方法的主要特征. 第三, 它们支 持层次描述和允许在大系统中包装构架到一个构件之中。 第四, 它们支持非功能 性属性的规范和分析。 第五, 许多a d l s 为描述交流的细节提供明 确的区 域( 通 过连接器类型的规范) 。 第六, a d l s 允许定义系统组装上的约束, 这些约束明 确 哪些组装能够允许。最后,构架风格允许精确化构件整合标准类型之间的差异。 1 .3构架描述语言 尽管在软件系统工程中构架设计的重要性, 构架设计的实践往往是非形式化 的且需要临场发挥和具有独特才能的。 结果往往是开发者不能很好的理解构架设 计。 构架的选择也不能仅仅依靠一成不变的工程原则, 也不能分析构架设计的一 致性和完整性。当一个系统不断演化时, 起初设计上的构架约束也会发生变化, 同时很少存在能帮助构架设计者完成工作的辅助工具。 1 .3 . 1 构架描述语言定义 针对以上的问题, 商业和研究领域纷纷为表述和分析构架设计提供了形式化 的 标记。 通常我们称之为“ 构架描述语言” ( a d l s ) , 这些标记语言不但提供了 一个概念上的框架而且也为描述软件构架提供了具体的语法。 他们同时提供根据 自己定义的语言解析,显示,整理,分析和模拟构架的描述。 一 s 一 复旦大学硕士学位论文 通用构架描述语言的研究与实现 1 . 3 .2 构架描述语言 发展回顾 到目 前为止,构架领域已 经存在大量的a d l s 包括a e s o p g a 0 9 4 , a d a g e c s 9 3 , c 2 mo r t 9 6 , d a r w i n md e k 9 5 , r a p i d e l a k + 9 5 , s a d l mq r 9 5 , u n i c o n s d k + 9 5 , m e t a h b v 9 3 , a n d w r i g h t a g 9 7 等。 虽 然这些构架描述语言 都 能 描述构架设计,每种却提供自 己 不同的 特点, 对于a e s o p , r a p i d e , w r i g h t ,因 为后面要专门讨论这三种语言,故此这里加以详细说明。 1 ) a d a g e 为航空电 子设备导航和指引提供了 构架描述。 2 ) a e s o p 支持构架风格的 使用, 通过提供设计元素词汇集、 配置规则集、良 定义语义集等机制提供了对构架风格的支持和描述, 主要用于快速构建领域 特定的 构架风格, 为 进一步的 软 件复 用提供了 相 应支持。 a e s o p提供了 一个 工具 包用来 描述和实现构架风格 g a 0 9 4 。 一个 构架风格是一套构件和连 接 器 类型以 及一 套它 们如 何被连接的 规则。 举个 例子, 一个 p i p e - f i l t e r 风 格描 述一 个 f i l t e r 构件类型 和一个 p 如 e 连接 器类型, 以 及 p i p e s 必须连接一 个 f i l t e r 的。 u t p u t p o r t s 和另外一 个 f i lt e r 的i n p u t p o rt s 。 再 有, 一个 c l i e n t - s e r v e r 类型必须描述 c l i e n t 和 s e r v e r构件类型和一个 c l i e n t - s e r v e r 连接器类型,以及如何多个 c l i e n t s和一个 s e r v e r通信的规则,是否允许 一 个 s e r v e r 直接和另外一 个 s 相连。 a e s o p包括一 个图 形编辑 器可以 根据不同的构架风格提供不同的图形元素。 它也能被构架描述调用作为分析 工 具。 当 被 看成为 一 个 a d l , a e s o p把 构架 描 述成为 对象 系 统。 它 使 用 面向 对象语言既描述一个风格中构件和连接器的类型, 也描述构架实例的语义行 为。 3 ) c 2 使用基于事件的风格为用户界面系统提供支持。利用隐含调用机制保证 底层构件可以 在不被系统感知的情况下加入系统,有利于系统的动态演化。 4 ) d a r w i n为分 布式的 消息 传递系统 提供支持, 提出 将构件作为构件类型的 一 种实例,采用p i 一 算子来规格化构件语义。构架主要用来建模动态的、分布 式系统, 采用隐式连接器。 与此同时, d a r w i n 在相关工具支持方面也做了初 步的构架图形化设计支持的尝试。 5 ) m e t a h支持 实时 航 空电 子设 备 控 制 软 件的 设 计。 6 ) r a p i d 。 允 许模拟构架设计, 并 且提 供工具 分析模 拟的 结果, 是 基于事 件、 事 件偏序集 ( p o s e t s ) 、 可执行的构架描述语言, 允许仿真构架设计, 并且提 供 仿真工具 来检查基于事 件的 组 件行为间 交互。 r a p i d e 通过定义了 事件模 式、接口、构架和事件模型映射,来构建静态和动态构架的随机事件模型。 一 9 。 复旦大学硕士学位论文9 通用构架描述语言的研究与实现 r a p i d e 也把一 个构 架描述成为构 件的 组 装 l a k 十 9 5 。 每个构 件具有一组 接 口用于描述能发生的事件模式。 根据由进入事件产生的输出事件的方法来描 述构件的 行为。 r a p i d e提供了固定的 连接形式: 本质上, 一个连接器显示如 果一个接口 产生的输出事件在另外一个接口上作为输入事件出现。 r a p i d e也 为 连接器 提供一个绑定的 工具, 称 之为 s e r v i c e s . r a p i d e分析的 主 要形式是 基于工具的 检查系统运行行为。因此 r a p i d e可以 作为一个构架模拟语言。 为了 满足所需的 关系能 检查一套 跟踪。 除 此之外, r a p i d e工具 提供运行动态 的能力。 7 ) s a d l为构架细化提供形式化的 基础。 8 ) u n i c o n为构架设计提供一个高级别的编译器, 支持异构构件和连接器类型 的整合。是基于构架和连接器的构架描述语言,支持预先定义的内置连接器 类型,并且首次提出了变体与构件可选择的概念,并且同时有图形与文字两 种等价的表达形式。 9 ) w r i g h t 为构件之间的交互提供形式化的规范和分析工具, 注重于对构件间的 交互行为进行建模分析, 对构件与连接器抽象行为进行形式化的描述, 将明 显的、 独立于实现的连接器类型用作交互模式, 利用进程代数理论来表示构 件的抽象行为, 支持对规约的一致性和完整性静态检查。 由 于w r i g h t 规格说 明 非常严格, 因此能够对被描述的构架或系统进行属性分析。 w r i g h t 使用构 件, 连接器, p o r t s , r o l e s 和配置为 系统建模 a g 9 7 , a 1 1 9 7 1 。 构 件代表处理元 素, 连接器代表构件之间的交互。每个构件和连接器都有一个相关的使用 c s p 变体描述的规范。 这些规范描述了这些元素关于所相关的事件的抽象行 为。 除 此之外, 构件和 连接器都有接口 。 构 件接口 称之为 p o r t s , 连接 器接 口 称之为 r o l e s 。这些接口 也用c s p 表示的协议规范描述。通过连接连接器 的 r o l e s到构件的 p o rt s 定义了 系统描述, 我们称之为 c o n f i g u r a t i o n s . w r i g h t 提供了 许多 构架描述的 静态分析方 法a 1 1 9 7 。 包括,1 ) p o r t - c o m p o n e n t 一 致 性, 检 查 一 个p o r t 的 协 议 是否 是 构 件内 部 行为 的 有效 激发。 2 ) p o r t - r o le 一 致性, 检查一个 p o r t 的行为是否满足连接器的需求。 3 ) 连接器死锁的 释放, 检查是否一个连接器描述了一个死锁的交互。4 )连接完备性,检查是否存 在 任 何 没 有 建 立间 接的p o r ts 或 者ro l e s 。 这 些 检查 将 被使 用f d r f d r 9 2 的w r i g h t 工具包所 执行, f d r 是 个商 用的c s p 模型检查 器。 1 . 3 .3 构架描述语言的基本元素 虽然在各个构架描述语言之间存在巨大的不同, 但是它们都具有一个相似的 1 0 一 复旦大学硕士学位论文 通用构架描述语言的研究与实现 概念, 就 是拓扑结 构 g a r 9 5 , m t 9 7 , 这就决 定了 构架描述的 概念和问 题的 基 础。 拓扑结构的主要元素包括, 1 )构件 代表主要的计算单元和数据存储区域。 直觉上它就是b o x - a n d - l i n e s 构 架描述中的 b o x s 。构件的一些典型例子包括客户机, 服务器, f i l t e r s , 对象, 黑板和数据库。绝大多数的a d l s 中的构件都有多个接口,每个接口定义了 一个这个构件和它的环境之间的交互点。 2 )连接器 代表构件之间的交互。 功能上讲, 连接器协调和组织构件之间的交 流。 也就是说, 它为构架 设计提供“ 胶水” , 直观上说就是b o x - a n d - l i n e s 中 的l i n e s 。 简单形式上的 交互的 例子包 括p i p e s , 过程调用 , 事件广播。 但是连 接器可以表述更加复杂的交互,比如c s 协议或者数据库和应用程序之间的 s q l 连接。 连接器也具有多 个接口 用来定义不同参与者进行交互的r o l e s . 3 )系统 代 表构件和连接器的 配置结 构。 在现代的a d l s 系统描述的 一个重 要 特征就是一个系统的拓扑结构的定义完全独立于构件和连接器的定义。 ( 这和 编程语言模块系统完全相反, 后者要求通过i m p o rt 语句完成构件之间的连 接。 ) 系统也可以 是多层次的。 构件和连接器都可以 具有内 部的构架。 4 )属性 包括一个系统和构件不在结构范围之内的 语义信息。 正如前面所说的 那样, 不同的a d l s 具有不同的属性, 但是都系统某些方法去定义功能之外 的属性以及分析这些属性的工具。举个例子,一些a d l s 允许根据一些构件 和连接器性能来计算整个系统的吞吐量和潜伏期。 5 )约束 代表对于构架设计的一些规定, 这些规定随着系统的演化一直保持为 真。典型的约束例子包括属性的值, 拓扑结构和设计词汇的约束.比 如, 一 个构架可能约束一个服务器的客户端的例子必须不能超过某个最大的值。 6 )风格 代表相关系统的产品 族。 一个构架风格 s g 9 6 定义了设计元素类型和 组 成 系 统的 规则 s g 9 6 。 例 子 包括 基 于p ip e s - a n d - f i lt e r s 的 数 据流 构架 风 格, 基于共享数据空间和知识资源的黑板构架风格和分层系统。 一些构架风格额 外地描述了一个框架作为一套结构化的专门应用程序必须遵守的形式。 1 .4论文的研究意义和动机 1 .4 . 1 论文的动机 当前己 经存在了大量的软件构架描述语言和支持工具, 这些语言和工具几乎 覆盖的当前软件涉及的所有领域, 工程师可以 选择任何他所需要的构架描述语言 和设计工具来进行建模和构架设计, 比 如说, 当需要设计基于事件的系统的构架 。 i t 一 复旦大学硕士学位论文 通用构架描述语言的研究与实现 时, 可以 选择c 2 m o r t 9 6 构架描述语言。 这时候我们将遇到一些引言中已经提到的问题, 即各个构架描述语言往往专 注于不同的领域, 支持工具同时具有不同的 特性, 如果想同时使用这些工具的特 性, 就必须要重复开发具有相同功能的工具包, 为每一套构架描述语言开发一套 构架设计和分析的工具包,这本身就有违构架设计的初衷。 1 .4 .2 论文的研究意义 本论文的目的在于为软件构架设计和分析提供一种通用的构架描述, 并且允 许整合许多早就已经独立开发的构架设计和分析工具。 并且最终能逐渐成为一 个基础, 通过这个基础, 不需要重新搭建基础设施框架, 就可以建立新风格的构 架设计和分析工具。 我们的目的不是否定前人的工作,相反, 我们是为当前的构 架设计领域提供了一个很好的辅助工具, 从而更加有利于提高当前构架领域的复 用程度。 第二章通用构架描述语言 s i l v e r是一种简单通用的构架描述语言, 为构架设计工具提供一种通用的 描述形式, 因此也为开发新的构架设计和分析工具提供了基础。 因为存在各种各 样的构架描述语言和支持工具, s i l v e r项目的目 的在于提供一种通用的构架描 述语言的来支持各种工具之间的交互。 虽然目 前还是作为一个构架交互语言, 但 是我们的目 的是使s i l v e r构架描述语言和支持工具逐渐成为一个基础, 通过这 个基础, 不需要重新搭建基础设施框架, 就可以 建立新风格的构架设计和分析工 具。 当前s i l v e r语言以及其支持工具s i l v e r s t u d i o 提供了一个通用的,可以 扩展的 基础设施框架,用来描述, 表示, 产生和分析软件构架描述。s i l v e r语 言 和工具包提供三个基本的能力, 1 )架构交互。 通过提供构架设计的 通用交互形式, s i l v e r允许构架工具开发 者很容易地整合其它的工具。相似,使用s i l v e r兼容的工具进行分析和设 计构架比使用单个a d l的支持工具要方便的多。 2 )为 新的 构架设计和分析工具提供可以 扩 展的 基 础。 许多构架设计和分析 工具 需要描述,存储和操作构架设计。不幸的是,开发好的构架描述是困难,耗 一 1 2 一 复旦大学硕士学位论文 通用构架描述语言的研究与实现 时并且高成本。s i l v e r降低了开发构架工具的成本和难度,因为它提供了 一个语言和支持工具作为产生其他工具的基础。而且,s i l v e r作为一 种通 用的交互语言允许其它工具使用s i l v e r作为它们自己的构架描述,并且己 经存在的许多构架描述语言和支持工具相兼容。 3 )构 架描述。 s i l v e r本身也是一 个有用的 构架 描述语言。 它提供一整 套语言 结构用于描述构架结构,构架类型和风格以及构架元素的属性。 虽然并不适 合所有的应用程序,s i l v e r构架描述语言为构架建模提供了良 好的指导, 并且可以方便地描述一些简单的软件构架。 2 . 1 s i l v e r简介 2 . 1 . 1 s i l v e r概念 为了详细说明构架描述如何描述基于构件的系统, 我们现在描述一个通用的 构架描述语言, s i l v e r . s i l v e r具有和其它描述语言 不同的属性, 它不仅提供 了 构架设计的基本元素, 而且支持更加复杂的构架描述的 扩展。 尤其s i l v e r体 现了上面描述的通用的构架拓扑结构, 提供了一个语义上可以扩展的语言, 以及 丰富的构架分析和整合其他构架设计和开发工具的工具包。 有了这些工具包 ( s i l v e r l i b 将在后面详细讨论) , s i l v e r 构架描述语言语言就可以 通过添加和 其它构架描述语言相同语义的s i l v e r标记来达到整合各种构架描述语言的目 的, 同时也可以作为生成新的风格的构架描述语言及其支持工具的基础。 s i l v e r 支持四个不同的构架方面的定义, 1 )结构 系统的组织和组成元素, 表示组成系统的基本元素和结构特征。 在构 架描述中的最基本的包括构件,连接器,端口 等。 2 )属性 关于一个系统的 信息, 允许推倒全面的 语义行为。 结构用来记录构架 的功能性结构特征, 但是往往存在许多语义方面和功能性无关的 特征,比如 性能, 容错性等等, 这些特征在各个构架描述语言中都各自 不同,s i l v e r 允许存在无限多的属性,每个属性有属性名称,类型以及值。 3 )约束 构架如何变化的 指导。 随着构架的不断演化, 构架的结构和系统可能 会不断地发生变化,但是始终不变的是构架的约束,s i l v e r要求描述构架 始终和所定义的构架约束保持一致, 并且提供自 动检查构架设计是否符合约 束的 机制和支持工具。 4 )类型和风格 定义类别和构架的 家族。 一个家族往往代表一系列构架的 类型 集合,s i l v e r构架描述语言还允许定义构架类型缺省的实例。 一 1 3 一 复旦大学硕士学位论文 通用构架描述语言的研究与实现 当 一个构件或者连接器具有构架 r e p r e s e n t a t i o n 时, 必须有某种方式能 够表 示部系统的r e p r e s e n t a t i o n 和构件或者连接器的外部接口 之间的关联。 r e p - m a p定 义了 这种联系。 最简单的 情况下, 一 个 r e p - m a p提供了内 部p o rt s 和 外部 p o rt s 之间的联系。其它的情况这种联系可能会变得非常复杂。 图2 .4 显示了 在细化简单的 c l i e n t - s e r v e r 例子上 r e p re s e n t a t i o n s 的使用。 这个例子中s e r v e : 构件被一个更细化的 构架 r e p r e s e n t a t i o n所描述。 图2 .4 c l i e n t - s e r v e r 系统的 分层 2 .2 .2 s i l v e r属性 设计元素的七个类别已 经足够能够定义一个构架的结构。 结构的明 确描述 在记录系统方面是有用的。 然而, 构架描述中不仅仅有构架结构, 往往还存在许 多其它的信息来决定系统的运行语义。 那么什么时候我们可以说一个构架设计是 精确的?看看所有的以前的构架描述语言, 我们就可以发现每个构架描述语一言 都 有自己的辅助信息用来决定系统运行的语义, 包括各种交互协议, 调度约束和资 源消耗以及系统的数据吞吐量。 很明显,记录一个系统结构之外的属性依赖于系统的本质, 所需的分析方 法, 支持工具以及描述中所需的细节的级别等. 这些属性分别记录面向不同 领域 针对不同设计目 标时所需存储的辅助信息。为了支持辅助信息的可扩展性, s i l v e r支持可以 在构架结构之上添加任意多的属性列表, 每个属性有个名字, 可选类型和一个值。s i l v e r 构架描述实体的七个类别的任何一个都可以带有 一个属性列表。 一 1 7 一 复旦大学硕士学位论文 通用构架描述语言的研究与实现 s y s t e m s im p l e c s = c o m p o n e n t c li e n t = , . , c o m p o n e n t s e rv e r =夏 p o rt r e c e i v e r e q u e s t ; r e p r e s e n t a t i o n s e rv e r d e t a i l s = s y s t e m s e rv e r d e t a i l s s y s = c o m p o n e n t c o n n e c t i o n ma n a g e r =夏 p o rt s e x t e rn a l s o c k e t ; s e c u r ity c h e c k l n t f d b q u e ry i n t f c o m p o n e n t s e c u r i ty ma n a g e r = p o r t s s e c u r i ty a u t h o r i z a t i o n ; c r e d e n t i a l q u e ry ; ) c o m p o n e n t d a t a b a s e = p o r ts 厦 s e c u r i t y m a n a g e m e n t l n t f , q u e ry l n t f c o n n e c t o r s q l q u e ry = r o l e s c a l l e r ; c a l l e e ; c o n n e c t o r c l e a r a n c e r e q u e s t =厦 r o l e s r e q u e s t o r ; g r a n t o r ; c o n n e c t o r s e c u r ity q u e ry = r o l e s s e c u r i ty ma n g e r ; r e q u e s t e r ; a t t a c h m e n t s 夏 c o n n e c t i o n ma n a g e r , s e c u r i ty c h e c k i n t f t o c l e a r a n c e r e q u e s t , r e q u e s t o r ; s e c u r ity ma n a g e r , s e c u r i ty a u t h o r i z a t i o n t o c l e a r a n c e r e q u e s t , r e q u e s t o r ; c o n n e c t i o n ma n a g e r , d b q u e ry i n t f t o s q l q u e ry , c a l l e r ; d a t a b a s e , q u e ry i n t f t o s q l q u e ry , c a l l e e ; s e c u r ity m a n a g e r , c r e d e n t i a l q u e ry t o s e c u r i ty q u e ry , s e c u r i t y ma n a g e r , d a t a b a s e , s e c u r i ty m a n a g e m e n t l n t f t o s e c u r ity q u e ry , req u e s t e r ; / / r e p r e s e n t a t i o n b i n d i n g s c o n n e c t i o n m a n a g e r , e x t e rn a l s o c k e t t o s e rv e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论