软件体系结构集成开发环境-Wright_第1页
软件体系结构集成开发环境-Wright_第2页
软件体系结构集成开发环境-Wright_第3页
软件体系结构集成开发环境-Wright_第4页
软件体系结构集成开发环境-Wright_第5页
全文预览已结束

下载本文档

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

文档简介

1、本文由dftest贡献pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机 查看。3.6Wright系统介绍Wright体系结构描述语言用于描述软件系统的体系结构。它可以描述体系结构 风格, 系统族,体系结构实例和单个系统。在 WrightT 中,直接提供对计算构件和连 接件的描述。 连接件定义成具有所期望的模块间通信模式的协议。 它允许模块交互 的形式化定义, 并支持 自动检查和形式化推理。(1) 实现关系与交互关系 在系统设计级上,模块间的“实现”关系是指一个特定的模块在其他模块提供的功能上定 义。构件间的“交互”关系是指模块之间的通信,系统描述成一系列计算构件和

2、构件间的连接。交互关系通常用 Client/Server、管道过滤器组织或事件广播通信等术语 描述。这些描述将构件看成独立的实体,它们之间可能有复杂的交互。在MIL中,模块的交互是基于实现的。 Wright 体系结构描述语言则是基于交互的。 而 基于实 现关系和基于交互关系的系统描述有以下几点不同。系统的推理方式。在实现关 系 中,推理具有层次性,模块的正确性依赖于正确使用其它模块。在交互关系中,模 块逻辑上 是相互独立的,模块的正确性独立于与其交互的其它模块。抽象要求。在 实现关系中,编 程语言(如过程调用和数据共享)的原语通常就足够了,它侧重于一 个构件如何实现计算。交互关系包括不能由编程

3、语言直接提供的抽象(例如管道、事件广播、 Client/Server协议), 它着重于计算是如何在整个系统中组合的,这样, 使用了不同的和可能复杂的通信模式或协 议。一致性检查。对于实现关系,类型检查是判断模块的使用是否与其定义匹配;对于交互关系,主要检查协议是否 被满足(如管道的读取是否在输入末尾之外,服务器是否在客户提出请求之前初始化 )。(2)体系结构描述的推理 体系结构描述语言的一个重要性质就是提供对软件系统描述推理的能力。在体系结构连接中,对端口和角色的一致性判断是体系结构描 述语言的一个重要内容。 一致性检查就是对端口和任务协议的一致性检测。例如,上 节中的Split端口并不使用

4、Pipe任务所提供的所有功能。类似的还有,在管道过滤 器风格中,如果将管道的任一端连 接到文件,虽然文件同时支持读和写,但管道只支 持其中一个。 体系结构描述语言还要进行一些特定的正确性自动检测。在 Wright中 ,描述分为两部分:协议(用 CSP 进程表示)和协议轨迹预测的说明。它使用现存的工 具(FDR)来进行 Wright 描述上的自动一致性检测。(3)Wright 语言的描述 作为-种体系结构描述语言, Wright是根据构件、连接件和配置等基本体系结构元素 的抽 象而构造的°Wright为这些元素提供了关键字,把构件作为计算部件,把连接件形式化为交互模式。 如上节的Cap

5、talize系统是由管道过滤器风格构造的系统。 它从系统输入读取 一个字符流,并输出把每个字符转换成大写字母的字符流。为了达到这个要求,需要使用4 个构件:分离过滤器(Split)、大写转换器(Uppercase)、小写转换 器(LowerCase)和字符合并器(Merge)0各构件间用连接件连接。在分离过滤器中, 输入流被分割成两个流。这两个流经过大小写转换器并通过字符合并器重新合并,然 后输出。字符流通过管道从一个构件传送到另一个构件。(1) 构件一个构件描述了 一个本地化、独立的计算。在 Wright中,对构件的描述包括两个方面: 接口(I nter face )和计算(Computat

6、ion)。 接口由多个端口( Port )组成。 每个端口表示构件参 的一种交互。对计算部分的描述说明了构件的行为。构件执行有端口描述的交互行为并且展示了这些构件如何组成一个完整的系统。一个用于定义构件端口的描述 说明了构件两个方面的内容。 端口描述了构件的部分行 为。 从这种观点看,端口 说明了构件所必须具备的与外部环境交互的属性。 实际上,端口成为 构件的部分说明 , 而计算提供了构件行为的更完整的描述。端口表示了与系统交互的构件的期望 。分离过滤器期望可以从输入中读入数据,直到数据结束。 在分离过滤器中,请注意每 个端口描述是如何告诉我们计算信息的。 输入(I nput)端口说 明了数据

7、是如何读入的 ,每个左(Left )端口和右(Right )都说明了输出行为的一部分信息。 然而,端口的描述 并没有构成整个计算的描述。这些端口不能联系不同端口上的行为。在 Wright中,计 算本身是完全描述的,这将作为分析构件属性的基础;端口的目的在于对构件 交互的分析进行结构化,并且提供附加的抽象。构件的规格说明如下所示:表 32 Wright 构件描述的结构Component CompName Port portl portl specifi rt2 port2 specification here . Computatification here 端口的使用与程序设计语言中抽象数据类

8、型的声明类似。 声明部分完全决定了 运行时类 型的行为。 抽象类型的声明作为类型的接口,允许进行静态的一致性检查, 并且可以指导编程 人员使用数据类型。抽象类型的声明提供了简化类型检查的方法。 类似地,我们将会看到在 一致性检查中的端口和角色声明。与抽象数据类型接口元素 一样,端口仅提供了构件部分的 描述,而不是讨论整个构件系统,而且每个端口描述了 构件的不同方面。 在一个给定的构件类 型中, 构件中每个端口命名在构件范围内是 唯一的。 (2) 连接件 连接件代表了构件集合内构件之间的交互。例如,一个管道代表 了两个过滤器之间的传 送的数据流。 过程调用就是”调用一返回”方式控制的连接 件。

9、为了使连接件类型更加明确 化, Wright致力于达到两个目标:扩展分析的 可应用性;提高构件的独立性。通过在连接件类型中勾画交互模式,在连接件实例 中复用这种类型, Wright使软件体结构中出现的 共性更加清晰。 在管道过滤器系统 中,不同的构件对之间传送信息时,多次使用”管道”进行交互。如果每对构件独立地 指定交互行为,那么将没有任何简单的验证方法用于验证整个系统仅有一种交互行为 。如果分析了管道连接件并且证明了一种属性,那么在系统中可以使用保存管道连接 件的属性。如果在一种特定的交互环境中进行分析,那么将必须重复分析每一对构件 。在一个更大型的开发过程中,清晰地描述连接件的类型也是非常

10、重要的。通过描述 使用一个相同交互模式的连接件类型,对软件的更新和实现将大大简化。使用连接件 的最大好处是通过结构化的构件与系统的交互,提高了构件的独立性。实际 上,一个连 接件提供了一个需求集合,这个需求集合就是构件所必须满足的。对构件的描述必须 是清晰的,以使这些构件可以用于不同的环境。例如,在分离过滤器中,Left端口并不 是指 大写转换器,而是指一种通用的交互模式。分离过滤器的描述并没有指明是否将 输出送到大 写转化器,其他过滤器或者一个文件,或者该输出是否将被系统丢弃。 构 件描述仅需要说明构 件将要做什么,因为连接件的描述将指明在一个实际的使用中,构 件是如何被结合在一起的。使用

11、Wright 对连接件进行描述时,可以分为一个角色(Role)的集合和粘合(Glu e)。 每个 角色指定了在交互中单个参与者的行为。例如,在一个管道中有两个角色: 数据源(Source) 和接收器(Sink)。 一个过程调用具有一个调用器和一个定义器。 一 个事件广播器具有一个广播器和零个或者多个收听器。一个共享的变量有一个或多个 读者和写者。 一个连接件类型代表一种抽象的交互,用于不同的环境和构件中。就像 一个构件的端口 指定了构件在连接中的交互一样,角色指定了交互中构件的参与者的 期望。每种角色代表了 一种构件将要做什么,例如,接收器角色代表了那个参与所期待 的行为:任何行为接收器的构件

12、允许读取数据,并且负责关闭连接。一个连接件的粘 合(Glue)描述了参与者如何在一起工作创建一种交互。 如表3.2 所示的 的一个管道 例子,粘合描述了来自数据源的数据如何被传送到连接件。一个过程调用将表示 调用 者初始化一个调用,紧接着从过程定义器返回。连接件的粘合说明了构件的计算是如何 组成一个更大的计算。表 3 3Connector ConnectorName Role Source source Role Sink sink specification here Glue Gluere Wright 连接件的结构和构件的计算一样,连接件的粘合代表了完整的行为说明。 实际上,我们把一个

13、连接件解释成:如果真正的构件(Component )符合角色(Role )所指定的行为,那么构件 的不同计算 (Computatio n)将通过粘合(Glue )而结合起来。(3) 配置 为了描述完整的软件体系结构, Wright把对构件和连接件的描述结合在一起,形成配置(Conf iguration)。一个配置就是通过连接件把构件实例结合起来的一个集合。 实例 因 为在一个系统中可能多次使用给定的构件或者连接件,所以可以把先前的描述作为构件和连接件的类型说明。它们表示构件和连接件的类型。,而不是实际使用的例子。例 如, 在管道过滤器系统中, 管道可以有多个实例。 为了在一个配置中区分每种构件

14、 和连接件类型 的不同实例, Wright语言要求每个实例名必须唯一。 附加在实例 声明之后,就可以描述附加(Attachment) 了,这样配置才算是完整的。 附加说明了明E 些构件与哪些交互,从而定义了配置的拓扑机构。附加把一个构件的端口与一个连接件 的 角色联系在一起。前面的 Captalize 系统 4 中,附加声明” Split Left Source ”表 示构件 Split 在 Pl 交互中将充当 Source 的角色。Split通过端口 Left完成。 也就是说,从 Split 输出到端口 Left的所有数据将被送到具 有通道 Pl的接收器的构件中。 附加的声明把体系结构描述的

15、每个元素结合在一起。构件执行一种计算(Computation), 这种计算的一部分是由端口( Port)指定的交互行 为。这个端口与角色(Role)联系在一起,它 说明了端口为了合法的参与连接件所指定 的交互所必须遵从的规则。 如果每个由各自的端口 表示的构件遵从角色所规定的规 则,那么,连接件的粘合(Glue )则定义了计算是如何结合在一起形成更大的计算。层次Wright支持层次描述。特别地,构件的计算可以直接用一种行为来说明,或者体 系结构 本身的描述来说明。一个体系结构的子系统也可以用以上介绍的配置来说明。(4)风格 上面讨论了如何定义一个简单的系统,开发人员引入构件和连接件的类型 ,并

16、且使用这 些类型创建构件和连接件的实例。然后,指定从端口的粘合到角色配置的 拓扑结构。 然而,在大多数环境下,开发人员并不仅仅是设计单个系统,而是属于整 个系统族中的一个系统。在进行设计之前,他们总是先寻找可以解决类似问题的软件 设计方案。而且开发人员必须说明软件系统长期存在的可能性以及必要的修改,以 满足他们的需要, 这就需要创 建类似系统的整个系统族。 从一些类似的系统中抽取 特定的体系结构风格, 使这种风格的体系结构有一个合理的属 性集合, 或者允许开 发人员使用所要研究的问题领域的自然语言词汇,并且可以对系统的关键部分进行 推理和分析。如果用于定义体系结构的风格,那么,体系结构描述语言

17、需要对风格 定义可以共享的属 性集合。这些属性可以包括一个公共的词汇集和约束集。在 Wrig ht中,通过声明一系列构 件和连接件的类型,引入公共的词汇集,并且使用声明的 类型进行实例化说明。3.7Darwin 系统介绍 体系结构描述语言的建立当然离不开形式化语义理论的支持。在体系结构语言 建立过程 中,人们选择了多种形式化描述方法。例如: Wright选用通信顺序进程( CSP )来描述系 统体系结构所包含的特性.Darwin系统选用冗演算来描述分布式系统 的体系结构。下面给 出 Darwin 系统中的语法约定。3.7.1 Darwin 语法基础1 .标识符、关键字和函数 Darwin 系统

18、中的符号、注释符、标识符与IDL 的语 法约定相同。(1)标识符:在 Darwin系统中,标识符用来定义和命名构件类型、接口类型、参数、 常量、端口、实例、f orall循环语句。标识符在其所在以下定义 域里必须唯一。forall标识符的作用域从循环体开始定义到循环体结束定义。 其他 标识符的作用域从该标识符定义开始到其结束定义语句,通常用“ ”来封装该定义 语句。表达式的书写方法与IDL 中的方法相同。预定义的类型和常量: Darwin 系统与 IDL系统类似有预定义好的类型(女口 in string and boolean )和常量(女口 true,false) 。(2)关键字:Da留的关

19、键字有: assert bind component dyn export forall e portal provide require spec to when int double Darwin 系统与 IDL 系统类似,有预定义好的类型(如 int,double,strin lean) 和常量(如 true,false)。在Darwin 中,语法注释为“/”引导的字 列。 Darwin 扩展了 IDL 的表达式以支持函数调用,在函数调用时,推断参数的类型 。一个 Darwin 说明语句是一组有关构件说明语句、接口说明语句、常量说明语句和 其他外部说明 语句的集合。Darwin 说明语句

20、的语法如下: Darwindeclaratio +componentdeclaration | interfacedeclaration | naldeclaration在这里,1+代表一个或多个声明。类似的,1代表一个;01代表零个或一个;0+代表零个或多个。2 构件说明 构件说明定义了可以创建一个或多个实例的构件类型。 构件的实例可以显示定义, 也可 通过已有构件完整(或部分)的导出。在构件实例化说明时,用构件类型标识符来定义构件 的类型。 构件说明语句如下:component-declaration = component COMPONENk |pattial-component-dec

21、laration component-blost0+ tag"" 0 +deckaration"" ""declara| bind-deckaration|component-declaration |condeclarationforalol-declaration|inst-declaraon| portal-declaration| when-declaration partiBASE-COMPONENT-type01 BASE-COMPONENT-TYPE-parg""argument-list =&quo

22、t;("expression0 +","expret-list="("01expression0+""01 expressionsyntax forsome argument lists。 局部构件说明(Partial Con);构件的类型可以从其他构件类型完 全(或局部)导出。去掉其他构件的一个或多个实参可以定义一个局部构件的类型。实参的顺序和类型必须和构件类型的形参对应。可以将局部构件视作原有构件的一个子类型。局部构件说明实例:componentbeta1=betaType("bac",);/2ndp

23、arameter isomittepe(,alphaType);/lst parameter is omitted 通用类型;通丿 型、构件类型和接口类型的占位符,并可用于通用 构件类型和通用接口类型的规范说明。 通用类型的标示符通常用"V"和" "括起来。 通用类型 用于以下情况:(1)构件类型、接口类型的形参和实参说明。(2)在入口和入口成员说明中说明入口类型。注:不是所有入口说明都需要定义 入口类型。当没有定义入口类型时,假定有一个 唯一的隐含通用类型。(3)在实例化说明中说明构件的类型。 通用类型说明语法如下: type-name = id |&

24、quot; V"TYPE-id"" /generic-typeonent A(int y,VT) interface B(int y,VT1,VT2) an be omitted hereinst X:VT1(12,VT2); 在构件中要访问其他构件的常量、接口和嵌套构件: 要在这些常量、接口、嵌套构件 前说明该构件,并用连接。口: ComponentTyp e.ConstantID。形式化参数(Farmal Paramerer);构件和接口都可以参数化 参数可以是值参(value parameters)或形参 (type parameters) 。形 明语法如下

25、:formal-parameter-list= " (" formal-parametameter ")" formal-parameter =value-parameter | eter PREDEFINED-TYPE-id PARAMETER-id type-parame 在图5.4 的示例中,若设计人员在 Component Info 对话框中设定构件类型为原子构 件, 则系统自动生成该构件的C+框架。设计人员选中画板的原子构件按鼠标右键, 画板上会出 现一个弹出式菜单,选择“Implementation"菜单,文本配置视图就会从Darw

26、in 配置代码切 换到该构件的 C+代码。设计人员可以利用集成环境中的文本编 辑器完善构件的 C+代码。3.Darwin 系统设计验证 Darwin 系统中构件的规格说明 实际上描述了构件的通用结构。构件运行时结构由传递给该构件实例的实参和条件管 制值决定,在体系结构设计期间难以观察到构件运行结构。Drawin系统提供了一个 依据体系结构配置来描述,仿真系统运行状态的设计验证工具。设计人员对配置描述 中实例构件的参数设置不同的值,并选中 Darwin 系统中 Run 菜单,系统 便会以可 视化的图形仿真运行,并输出运行结果。如果在软件系统开发过程中,软件体系结构 比较稳定、不发生变化,Darw

27、in 系统的设计验证工具为设计人员提供了一种“what- if 脚本测试机制,这使他们可以较早发现系统中存在的许多错误,而不必等到编译 、运行时才能发现系统中存在的错误。在设计复杂、大粒度分布式系统时,“what if”脚本测试机制是 非常有效的。4. Darwin 系统程序设计 为了生成可运行的系 统,设计人员首先将 Darwin系统编辑生成的软件体系结构存盘, 这时系统会生成一 个工程文件,该工程文件包含了设计人员在设计软件体系结构过程中所输入的各种 信息。 该工程文件包含了一个后缀为.dw 的文件, 以及系统中构件对应的后缀为.c c 的程序文件。后缀为.dw 的文件可以被 Darwin

28、 系统识别,后缀为.cc 的文件可以 被 C + +编译器直接编译。Darwin 系统支持增量式开发,在 Darwin 集成环境中用户 修改构件并存盘时, 系统仅保存修改过的构件信息。5. Darwin系统程序结构构造 构造软件体系结构是软件体系结构设计的一项主要任务。为了让软件体系结构适应 用户的不同工作环境,鼓励设计人员开发不同的设计风格,不应该对体系结构附加 不必要的限制。 尽管许多 CASE 工具为了支持分层设计思想,要求软件设计过程必须 严格按照自顶向下的分析设计方法,但 Darwin系统允许设计人员在系统结构设计过 程中同时采用自顶向下和自顶 向上的设计方法。例如:Darwin 系

29、统不要求构件必须 按照严格的顺序关系定义。这种不预先设定严格限制条件的方法使设计人员可以不拘 泥于特定风格、非常灵活的设计软件结构。Darwin系统自顶向下分解系统的设计方法可以通过细化复合构件子结构的方法 实现。 例如:当用户选中一个复合构件并双击鼠标,Darwin系统会自动切换窗口, 并显 示该复合构件的内部构件。当设计人员进入构件的根节点(root node )选择“zo om up”工具, 系统就会创建一个包含根节点,并以父节点作为新的根节点。通过这 种方式 Darwin系统支 持自底向上的设计方法。 在软件体系结构的设计过程中,设 计人员会在不同的抽象层面上轮流用自顶向下、 自顶向上的分析和设计方法°Darwi n 系统提供了合并构件(me

温馨提示

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

评论

0/150

提交评论