UML与软件体系结构建模_第1页
UML与软件体系结构建模_第2页
UML与软件体系结构建模_第3页
UML与软件体系结构建模_第4页
UML与软件体系结构建模_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、第八章 UML与软件体系结构建模,UML与软件建模,2,UML用作体系结构描述语言 约束UML以支持软件体系结构建模,内容,3,将UML看作是一种软件体系结构描述语言进行软件体系结构建模 利用UML的扩展机制约束UML元模型以支持软件体系结构建模的需要 对UML的元模型进行扩展,使其直接支持软件体系结构的概念,软件体系结构建模方法(1),4,第一种方法最简单,其实质是利用现有的UML符号表示软件体系结构 UML用户能很容易地理解所建立的软件体系结构模型,并可以用与UML兼容的工具对其进行操纵 现有的UML结构无法和软件体系结构的概念显式地直接对应。因此,它们之间的对应关系必须由建模人员维护,软

2、件体系结构建模方法(2),5,第二种方法是使用带约束的UML进行软件体系结构建模 这种方法能显式地表示软件体系结构的约束,所建立的软件体系结构模型仍然可用标准的UML工具进行操纵,UML用户理解起来也比较容易 对OCL约束进行检查的工具还不是太多。,显式约束UML模型以支持体系结构建模,软件体系结构建模方法(3),6,第三种方法是对UML的元模型进行扩展,这种扩展使UML能引入新的建模能力 可使UML中包含各种ADL所具有的优良特性,并且具有直接支持软件体系结构建模的能力 扩展后的概念不符合UML标准,因而与UML工具不兼容,扩展UML元模型以支持体系结构建模,软件体系结构建模方法(4),7,

3、“到底什么是软件体系结构”这个问题上还存在着争议,更不用说在“如何使用UML进行软件体系结构建模” 为评估UML对软件体系结构建模的支持程度,下面用UML以与专门的体系结构描述语言ADL相同的方式进行应用程序的软件体系结构建模 评价UML的软件体系结构建模能力 将之与ADL的软件体系结构建模能力进行直接比较,UML用作ADL,8,会议的发起者在安排会议时为了保证尽可能多的人参加,会向每个拟与会人员询问他们可以参加会议的日期(简称“选择集”)以及不能出席会议的日期(简称“排除集”) 会议的发起者也向素来表现积极的会议参与者征求有关会议方式、会议地点等方面的意见 会议发起者还向一些重要的会议参与者

4、征求会议位置方面的其它问题,UML用作ADL:体系结构建模实例(1),9,最后定的会议日期应该在会议发起者所指定的日期范围之内,且在任何一个排除集之外。理想情况下,它应在尽可能多的选择集之内。若无法找到满足这些条件的日期,那么称出现冲突 强冲突: 若在指定的日期范围内和所有的排除集之外都找不到满足条件的会议日期 弱冲突: 若能在指定的日期范围之内和所有的排除集之外但无法在所有选择集的交集内找到满足条件的日期,UML用作ADL:体系结构建模实例(2),10,冲突可以通过如下几种方法解决: 让会议发起者扩大会议日期范围 让某些会议参与者扩大其选择集或缩小其排除集 让某些会议参与者不参加会议,UML

5、用作ADL:体系结构建模实例(3),11,C2风格要求构件之间只能通过消息传递的方式通信,而不能通过共享内存通信 一个C2体系结构是一个通过连接子将各并发构件连接在一起而构成的层次状网络。其中,每个构件所发送的通知消息应与其操作相对应,而不是与接收通知消息的构件的操作相对应,UML用作ADL:C2概述(1),12,每个构件只知道位于其所在层之上的各构件所提供的服务,而不了解位于其所在层之下的各构件分别能提供什么服务。这就使体系结构中的一个高层构件可以具有不同的底层构件,UML用作ADL:C2概述(2),C2风格改善了构件的可重用性和系统的易扩展性 C2风格没有对构件或连接子的实现语言、构件到主

6、机之间的映射、连接子之间使用的通信协议以及构件的执行线程做任何约定,13,UML用作ADL:C2 SADL建模(1),C2 SADL是一个支持按照C2风格进行软件体系结构建模的一种体系结构描述语言 用C2 SADL对会议调度者问题进行体系结构建模,目的是为了体会按照C2风格规则进行体系结构分解的细微之处,同时也作为评价相应UML模型的基础,14,会议调度系统C2风格的体系结构,UML用作ADL:C2 SADL建模(2),15,UML用作ADL:C2 SADL建模(3),MeetingInitiator构件仅通过上面的端口和体系结构的其它部分进行通信,它在behavior部分的startup段说

7、明启动计算请求,16,每个Attendee-N和ImportantAttendee-N构件从Initiator接收会议调度请求,并且向它发送合适的信息。这两种类型的构件仅通过下面的端口和体系结构的其它部分进行通信,UML用作ADL:C2 SADL建模(4),17,ImportantAttendee是Attendee构件的一个特化,它具有Attendee的所有功能并且增加了对会议地点进行选择的规约,component ImportantAttendee is subtype Attendee (int and beh) interface bottom_domain is out LocPref

8、s(I : loc_type); in GetLocPrefs( ); behavior received_messages GetLocPrefs always_generate LocPrefs; end ImportantAttendee,UML用作ADL:C2 SADL建模(5),18,MeetingScheduler的软件体系结构对应的文本描述如下:,UML用作ADL:C2 SADL建模(6),19,UML提供了用来对软件构件、构件之间接口以及它们在主机上配置情况等进行建模的各种符号。但这些内部预定义符号并不适合于体系结构层构件的描述,其原因在于它们的抽象程度不是太高就是太低,UML

9、中的构件是需要消耗诸如存储器等机器资源的具体的可执行的程序片段。相反,软件体系结构中的构件是用来表示系统状态和行为的抽象概念。尽管体系结构构件的实例可由UML构件的实例来实现,但体系结构构件自身不是具体的,UML用作ADL:UML建模(1),20,UML构件可以有任意数目的接口,其内部结构也可以千变万化,但体系结构的构件必须满足某些规则或约束,UML用作ADL:UML建模(2),从这个角度看,使用UML中的类来模拟软件体系结构的构件比较合适,21,将UML作为一种ADL进行软件体系结构建模的关键是要确保UML设计既要受UML中现有建模特征的约束,也要受ADL自身所具有的特征的约束,UML用作A

10、DL:UML建模(3),从这个角度看,用UML进行软件体系结构建模过程的第一步是用UML为所要建模的应用开发一个域模型,并且开发一个非形式化的体系结构图。其中,体系结构图是将域模型中的类映射为体系结构构件的关键,22,会议调度系统的UML类图(省去了每个类的细节),UML用作ADL:UML建模(4),23,UML用作ADL:UML建模(5),会议调度系统的类接口,24,C2连接子的UML类图表示,UML用作ADL:UML建模(6),25,会议调度系统以C2体系结构风格描述的UML类图,UML用作ADL:UML建模(7),26,会议调度系统的一个协作图,UML用作ADL:UML建模(8),27,

11、利用UML进行体系结构建模的第二种方法是用OCL对UML元模型中的现有元类施加某些约束。这种方法需要: 从UML元模型中选择一个或多个元类,使它们适合充当给定的ADL建模结构 定义一个能应用于这些元类的衍型,目的是将这些元类的语义约束为相关ADL特征所具有的语义,约束UML支持SA建模(1),28,该方法把UML看作是一种能为支持特定体系结构需求而进行扩展的核心符号 这和元模型扩展是不同的:通过UML提供的扩展机制对其进行概念上的扩展,从而为体系结构设计者提供了UML中原来并不存在的其它建模工具,但UML元模型本身并未改变,OCL设施用来将UML约束为一个特定的UML兼容子集 当开发中遇到新的

12、需求时,进行新的扩展以支持这些新需求。核心符号的语义总是由与UML兼容的工具实施的,扩展符号的语义则由扩展之上的约束来实施。不同的扩展之间可能会产生依赖和冲突,它们应由开发人员来处理,约束UML支持SA建模(2),29,C2提供了根据相当通用的体系结构风格进行结构分解和基于事件交互的指南 Wright支持对单个体系结构元素的行为和交互建模 Rapid支持局部和全局行为约束的规约,约束UML支持SA建模(3),30,以带“约束”的UML表示的会议调度系统的体系结构,约束UML支持SA建模: 基于C2的扩展,31,Wright从三个方面描述一个体系结构: 构件和连接子的类型 构件和连接子的实例 构

13、件和连接子实例的配置,约束UML支持SA建模: 基于Wright的扩展(1),与C2语言不同的是,Wright语言并不要求以某种特定风格来进行软件体系结构的建模,而可以采用多种体系结构风格。然而,Wright仍然对体系结构施加了某些拓扑上的约束。例如,Wright规定两个构件不能直接相连,而必须通过连接子相连,这一点和C2的约定相同。另一面,Wright也不允许两个连接子直接相连,32,Wright语言使用CSP的一个子集描述构件和连接子的行为以及它们的接口元素所支持的协议。如果CSP的这个子集定义的是“具有有限状态的进程”,那么可用UML状态机模拟Wright的行为规约 CSP进程是通过事件

14、进行通信的实体,用UML状态机模拟CSP的输入和输出事件,这两种类型的状态变迁可用来模拟Wright所能支持的更复杂的CSP表达式,约束UML支持SA建模: 基于Wright的扩展(2),33,Wright的CSP表达式的UML状态机模版,约束UML支持SA建模: 基于Wright的扩展(3),34,请注意,CSP事件可能没有相关的数据,此时状态机的语义要求指明哪些实体生成事件以及哪些实体观察事件 每个Wright接口(构件的一个端口或者是连接子的一个角色)具有一个或多个操作。在Wright语言中,这些操作是隐式说明的,它们是一个端口或角色的CSP协议的一部分,约束UML支持SA建模: 基于W

15、right的扩展(4),35,在Wright中,一个连接子由一个角色集和一个胶水组成。其中,前者描述了交互构件所期望的行为,后者通过说明连接子的各角色交互方式来定义其行为。下面用UML元类定义Wright连接子。一个Wright连接子可以提供多个接口,并且能与其它类之间存在关联关系。Wright连接子是没有状态的,即它们没有直接的属性 在Wright中,一个构件实际上是由一个端口集和一个计算规约所组成的。其中,前者定义了构件的接口,后者则描述了构件的行为,约束UML支持SA建模: 基于Wright的扩展(5),36,connector Pipe = role Writer = write Wr

16、iter close role Reader = let ExitOnly = close in let DoRead = (read Reader read-eof ExitOnly) in DoRead ExitOnly glue = let ReadOnly = Reader.read ReadOnly Reader.read-eof Reader.close Reader.close in let WriteOnly = Writer.write WriteOnly Writer.close in Writer.write glue Reader.read glue Writer.cl

17、ose ReadOnly Reader.close WriteOnly,一个用Wright描述的连接子,约束UML支持SA建模: 基于Wright的扩展(6),37,管道连接子的UML状态机模型,约束UML支持SA建模: 基于Wright的扩展(7),38,Rapide是一种具有丰富语义并可以支持体系结构约束规约的软件体系结构描述语言,Rapide语言的基本行为模型是事件的偏序集。在Rapide中,构件的行为主要是通过事件来刻画的。对一个构件而言,它既可以观察到其外部环境中发生的事件,也可以生成其外部环境能观察到的事件。构件可以是多线程的,构件内的或构件间的多个线程的同步会导致各构件事件流之间

18、的因果依赖关系,约束UML支持SA建模: 基于Rapide的扩展(1),39,第一种规约方法利用状态变迁规则描述构件的行为,也即指出构件在观察到一种事件模式后它应该产生何种事件模式作为回应 第二种规约方法利用事件模式约束描述构件或体系结构所生成的事件偏序集内容上的限制。当前的Rapide工具中所使用的事件模式约束指出构件或者体系结构的行为中不应发生的事件模式,Rapide支持两种类型的基于事件的规约方法 :,约束UML支持SA建模: 基于Rapide的扩展(2),40,这两种类型的规约中都用到了事件模式。我们可通过各种各样的组合操作构作复杂的事件模式,这些操作能说明各事件在何时应该按照因果顺序依次发生、在何时可以独立发生、在何时必须一起发生以及在何时只有其中的一个能发生等等,约束UML支持SA建模: 基于Rapide的扩展(3),41,每个平行的子状态中

温馨提示

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

评论

0/150

提交评论