UML与软件体系结构建模课件

PPT
  • 阅读 34 次
  • 下载 0 次
  • 页数 44 页
  • 大小 939.000 KB
  • 2022-11-25 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
UML与软件体系结构建模课件
可在后台配置第一页与第二页中间广告代码
UML与软件体系结构建模课件
可在后台配置第二页与第三页中间广告代码
UML与软件体系结构建模课件
可在后台配置第三页与第四页中间广告代码
UML与软件体系结构建模课件
UML与软件体系结构建模课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 44
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】UML与软件体系结构建模课件.ppt,共(44)页,939.000 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-50395.html

以下为本文档部分文字说明:

徐宝文周毓明卢红敏第八章UML与软件体系结构建模UML与软件建模第1页,共44页。徐宝文周毓明卢红敏2UML用作体系结构描述语言约束UML以支持软件体系结构建模内容第2页,共44页。徐宝文周毓明卢红敏3◼将UML看作是一种软件体系结构描述语言进行软件体系结构建模◼利用UML的扩展

机制约束UML元模型以支持软件体系结构建模的需要◼对UML的元模型进行扩展,使其直接支持软件体系结构的概念软件体系结构建模方法(1)第3页,共44页。徐宝文周毓明卢红敏4◼第一种方法最简单,其实质是利用

现有的UML符号表示软件体系结构◼UML用户能很容易地理解所建立的软件体系结构模型,并可以用与UML兼容的工具对其进行操纵◼现有的UML结构无法和软件体系结构的概念显式地直接对应。因此,它们之间的对应关系必须由建模人员维护软件体系结构建模方法(2)第4页

,共44页。徐宝文周毓明卢红敏5◼第二种方法是使用带约束的UML进行软件体系结构建模◼这种方法能显式地表示软件体系结构的约束,所建立的软件体系结构模型仍然可用标准的UML工具进行操纵,UML用户理解起来也比较容易◼对OCL约束进行检查的工具还不是太多。元

元模型元模型模型用户对象显式约束UML模型以支持体系结构建模软件体系结构建模方法(3)第5页,共44页。徐宝文周毓明卢红敏6◼第三种方法是对UML的元模型进行扩展,这种扩展使UML能引入新的建模能力◼可使UML中包含各种ADL所具有的优良特性,并且具有直接

支持软件体系结构建模的能力◼扩展后的概念不符合UML标准,因而与UML工具不兼容元模型模型用户对象元元模型扩展UML元模型以支持体系结构建模软件体系结构建模方法(4)第6页,共44页。徐宝文周毓明卢红敏7◼“到底什么是软件体系结构”这个问题上还存在着争议,更不用说在“如何使用UML进行软件体系结

构建模”◼为评估UML对软件体系结构建模的支持程度,下面用UML以与专门的体系结构描述语言ADL相同的方式进行应用程序的软件体系结构建模◼评价UML的软件体系结构建模能力◼将之与ADL的软件体系结构建模能力进行直接比较UML用作ADL第7页,共44页。徐宝文周毓明卢红敏8◼会议的发起者在安排会

议时为了保证尽可能多的人参加,会向每个拟与会人员询问他们可以参加会议的日期(简称“选择集”)以及不能出席会议的日期(简称“排除集”)◼会议的发起者也向素来表现积极的会议参与者征求有关会议方式、会议地点等方面的意见◼会议发起者还向一些重要的会议参与者征求会议位置方面的其它问题UML用作

ADL:体系结构建模实例(1)第8页,共44页。徐宝文周毓明卢红敏9◼最后定的会议日期应该在会议发起者所指定的日期范围之内,且在任何一个排除集之外。理想情况下,它应在尽可能多的选择集之内。若无法找到满足这些条件的日期,那么称出现冲突◼强冲突:若在指定的日期范围内和所有的排除集之外都找不到满足条件

的会议日期◼弱冲突:若能在指定的日期范围之内和所有的排除集之外但无法在所有选择集的交集内找到满足条件的日期UML用作ADL:体系结构建模实例(2)第9页,共44页。徐宝文周毓明卢红敏10冲突可以通过如下几种方法解决:◼让会议发起者扩大会议日期范围◼让某些会议参与者扩大其选择集或缩小其排除集◼

让某些会议参与者不参加会议UML用作ADL:体系结构建模实例(3)第10页,共44页。徐宝文周毓明卢红敏11◼C2风格要求构件之间只能通过消息传递的方式通信,而不能通过共享内存通信◼一个C2体系结构是一个通过连接子将各并发构件连接在一起而构成的层次

状网络。其中,每个构件所发送的通知消息应与其操作相对应,而不是与接收通知消息的构件的操作相对应UML用作ADL:C2概述(1)第11页,共44页。徐宝文周毓明卢红敏12◼每个构件只知道位于其所在层之上的各构件所提供的服务,而不了解位于其所在层之下的各构件分别能提供什么服务。这就使体系结构中

的一个高层构件可以具有不同的底层构件UML用作ADL:C2概述(2)◼C2风格改善了构件的可重用性和系统的易扩展性◼C2风格没有对构件或连接子的实现语言、构件到主机之间的映射、连接子之间使用的通信协议以及构件的执行线程

做任何约定第12页,共44页。徐宝文周毓明卢红敏13UML用作ADL:C2SADL建模(1)◼C2SADL是一个支持按照C2风格进行软件体系结构建模的一种体系结构描述语言◼用C2SADL对会议调度者问题进行体系结构建模,目的是为

了体会按照C2风格规则进行体系结构分解的细微之处,同时也作为评价相应UML模型的基础第13页,共44页。徐宝文周毓明卢红敏14Attendee-1Attendee-MImportantAttendee-1ImportantAttendee-NMeetingInitiatorImport

antAttConnAttConnMainConn......会议调度系统C2风格的体系结构UML用作ADL:C2SADL建模(2)第14页,共44页。徐宝文周毓明卢红敏15UML用作ADL:C2SADL建模(3)MeetingInitiator构件仅通过上面的端口和体系结构的其

它部分进行通信,它在behavior部分的startup段说明启动计算请求第15页,共44页。徐宝文周毓明卢红敏16◼每个Attendee-N和ImportantAttendee-N构件从Initiator接收会议调度请求,并且向它发送合适的信息。这两种类型

的构件仅通过下面的端口和体系结构的其它部分进行通信UML用作ADL:C2SADL建模(4)第16页,共44页。徐宝文周毓明卢红敏17◼ImportantAttendee是Attendee构件的一个特化,它具有Attendee的所有功能并且增加了对会议地点进行选择的规约component

ImportantAttendeeissubtypeAttendee(intandbeh)interfacebottom_domainisoutLocPrefs(I:loc_type);inGetLocPrefs();behaviorreceived_messagesGetLoc

Prefsalways_generateLocPrefs;endImportantAttendeeUML用作ADL:C2SADL建模(5)第17页,共44页。徐宝文周毓明卢红敏18◼MeetingScheduler的软件体系结构对应的文本描述如下:UML用作

ADL:C2SADL建模(6)第18页,共44页。徐宝文周毓明卢红敏19◼UML提供了用来对软件构件、构件之间接口以及它们在主机上配置情况等进行建模的各种符号。但这些内部预定义符号并不适合于体系结构层构件的描述,其原因在于它们的抽象程度不是太高就是太低◼UML中的构件

是需要消耗诸如存储器等机器资源的具体的可执行的程序片段。相反,软件体系结构中的构件是用来表示系统状态和行为的抽象概念。尽管体系结构构件的实例可由UML构件的实例来实现,但体系结构构件自身不是具体的UML用作ADL:UML建模(1)第19页,共44页。徐宝文周毓

明卢红敏20◼UML构件可以有任意数目的接口,其内部结构也可以千变万化,但体系结构的构件必须满足某些规则或约束UML用作ADL:UML建模(2)从这个角度看,使用UML中的类来模拟软件体系结构的构件比较合适第20页,共44页。徐宝文周毓明卢红敏21◼将UML作为一种ADL进行软件体系结

构建模的关键是要确保UML设计既要受UML中现有建模特征的约束,也要受ADL自身所具有的特征的约束UML用作ADL:UML建模(3)从这个角度看,用UML进行软件体系结构建模过程的第一步是用UML为所要建模的应用开发一个域模型,并且开发一个非形式化的体系结构图。其中,体系结构图是将

域模型中的类映射为体系结构构件的关键第21页,共44页。徐宝文周毓明卢红敏22PersonAttendeeImportantAttendeeLocationDateMeetingMeetingInitiatorStronglyConflicts

WithConflictsWith0..*0..*0..*0..*0..*0..*0..*0..*1..*1..*121111111InvitesProposesExcludesPrefersPrefers1会议调度系统的UML类图(省去了

每个类的细节)UML用作ADL:UML建模(4)第22页,共44页。徐宝文周毓明卢红敏23UML用作ADL:UML建模(5)<<interface>>MtgInitGetPrefSet()GetExclSet()RemoveExclSe

t()RequestWithdrawal(attendee)AddPrefDates()<<interface>>ImportantMtgInitGetLocPrefs()<<interface>>MtgAttendPrefSet(d

ate_rng)ExclSet(date_rng)EquipReqts(equip_type)<<interface>>ImportantMtgAttendLocPrefs(loc_type)会议调度系统的类接口第23页,共44页。徐宝

文周毓明卢红敏24AttConnGetPrefSet()GetExclSet()RemoveExclSet()RequestWithdrawal(Attendee)AddPrefDates()PrefSet(date

_rng)ExclSet(date_rng)EquipReqts(equip_type)ImportantAttConnGetLocPrefs()LocPrefs(loc_type)MainConnC2连接子的UML类图表示UML用作ADL:UML

建模(6)第24页,共44页。徐宝文周毓明卢红敏25AttendeeImportantAttendeeAttConnImportantAttConnMainConnMeetingInitator0..*0..*1111MtgInitMtgInitImportantMtgInitImportant

MtgInitImportantMtgInitImportantMtgAttendImportantMtgAttendImportantMtgAttendMtgAttendMtgAttend会议调度系统以C2体系结构风格

描述的UML类图UML用作ADL:UML建模(7)第25页,共44页。徐宝文周毓明卢红敏26AC:AttConnIAC:ImportantAttConnMC:MainConnMI:MeetingInitator1:GetPrefSet()10:Pr

efSet(date_rng)11:PrefSet(date_rng)2:GetPrefSet()4:GetPrefSet()5:GetPrefSet()3:GetPrefSet()7:PrefSet(date_rng)6:Pref

Set(date_rng)8:PrefSet(date_rng)9:PrefSet(date_rng):ImportantAttendee:Attendee会议调度系统的一个协作图UML用作ADL:UML建模(8)第26页,共44页

。徐宝文周毓明卢红敏27利用UML进行体系结构建模的第二种方法是用OCL对UML元模型中的现有元类施加某些约束。这种方法需要:◼从UML元模型中选择一个或多个元类,使它们适合充当给定的ADL建模结构◼定义一个能应用于这些元类的衍型,目的是将这些元类的语义约束为相

关ADL特征所具有的语义约束UML支持SA建模(1)第27页,共44页。徐宝文周毓明卢红敏28◼该方法把UML看作是一种能为支持特定体系结构需求而进行扩展的核心符号◼这和元模型扩展是不同的:通过UML提供的扩展机制对其进行概念上的扩展,从而为体系结构设计者提供了UML中原来并不存在的其它建模工具,

但UML元模型本身并未改变,OCL设施用来将UML约束为一个特定的UML兼容子集◼当开发中遇到新的需求时,进行新的扩展以支持这些新需求。核心符号的语义总是由与UML兼容的工具实施的,扩展符号的语义则由扩展之上的约束来实施。不同的扩展之间可能会产生依赖和冲突,它们

应由开发人员来处理约束UML支持SA建模(2)第28页,共44页。徐宝文周毓明卢红敏29◼C2提供了根据相当通用的体系结构风格进行结构分解和基于事件交互的指南◼Wright支持对单个体系结构元素的行为和交互建模◼Ra

pid支持局部和全局行为约束的规约约束UML支持SA建模(3)第29页,共44页。徐宝文周毓明卢红敏30<<C2Component>>Attendee<<C2Component>>ImportantAttendee<<C2Co

nnector>>AttConn<<C2Connector>>ImportantAttConn<<C2Connector>>MainConn<<C2Component>>MeetingInitator0..*0..*1<<C2AttachUnderComp>><<C2

AttachConnConn>><<C2AttachConnConn>><<C2AttachUnderComp>><<C2AttachOverComp>>11111111以带“约束”的UML表示的会议调度系统的体系结构约束UML支持SA建模:基于C2的扩展第30页,共44页。徐宝

文周毓明卢红敏31Wright从三个方面描述一个体系结构:◼构件和连接子的类型◼构件和连接子的实例◼构件和连接子实例的配置约束UML支持SA建模:基于Wright的扩展(1)与C2语言不同的是,Wright语言并不要求以某种特定风格来进行软件体系结构的建

模,而可以采用多种体系结构风格。然而,Wright仍然对体系结构施加了某些拓扑上的约束。例如,Wright规定两个构件不能直接相连,而必须通过连接子相连,这一点和C2的约定相同。另一面,Wright也不允

许两个连接子直接相连第31页,共44页。徐宝文周毓明卢红敏32◼Wright语言使用CSP的一个子集描述构件和连接子的行为以及它们的接口元素所支持的协议。如果CSP的这个子集定义的是“具有有限状态的进程”,那么可用UML状态机模拟Wright的行

为规约◼CSP进程是通过事件进行通信的实体(a)e?x(b)e!xe(x)/e(x)用UML状态机模拟CSP的输入和输出事件◼这两种类型的状态变迁可用来模拟Wright所能支持的更复杂的CSP表达式约束UML支持SA建模:基于W

right的扩展(2)第32页,共44页。徐宝文周毓明卢红敏33CSP概念CSP符号UML状态图前缀P=a→Q二选一(确定性选择)P=b→Qc→R判定(非确定性选择)P=d→Qe→R并行复合P=Q||R成功的事件P=QQRPdebcQRPPQRaPP

Wright的CSP表达式的UML状态机模版约束UML支持SA建模:基于Wright的扩展(3)第33页,共44页。徐宝文周毓明卢红敏34请注意,CSP事件可能没有相关的数据,此时状态机的语义要求指明哪些实体生成事件以及哪些实体观察事件◼每个Wright接口(构件的一个

端口或者是连接子的一个角色)具有一个或多个操作。在Wright语言中,这些操作是隐式说明的,它们是一个端口或角色的CSP协议的一部分约束UML支持SA建模:基于Wright的扩展(4)第34页,共44页。徐宝文周毓明卢红敏35◼在Wright中,一个连接

子由一个角色集和一个胶水组成。其中,前者描述了交互构件所期望的行为,后者通过说明连接子的各角色交互方式来定义其行为。下面用UML元类定义Wright连接子。一个Wright连接子可以提供多个接口,并且能与其它类之间存在关联关系。Wright连接子是没有状态的,即它们没有直接的属性◼在W

right中,一个构件实际上是由一个端口集和一个计算规约所组成的。其中,前者定义了构件的接口,后者则描述了构件的行为约束UML支持SA建模:基于Wright的扩展(5)第35页,共44页。徐宝文周毓明卢红敏36connectorPipe=roleWriter=write→W

riterclose→roleReader=letExitOnly=close→inletDoRead=(read→Readerread-eof→ExitOnly)inDoReadExitOnlyglue=letReadOnly=Reader.

read→ReadOnlyReader.read-eof→Reader.close→Reader.close→inletWriteOnly=Writer.write→WriteOnlyWriter.close

→inWriter.write→glueReader.read→glueWriter.close→ReadOnlyReader.close→WriteOnly一个用Wright描述的连接子约束UML支持SA建模:基于Wright的扩展(6)第36页,共44页。徐宝文周毓明卢红敏37Re

aderReaderWriter/W_close/W_writeDoRead/R_read-eofExitOnly/R_close/R_readWriteOnlyW_closeReadOnlyR_read-eofR_closeR_closeR_readR_closeW_close

W_writePipe管道连接子的UML状态机模型约束UML支持SA建模:基于Wright的扩展(7)第37页,共44页。徐宝文周毓明卢红敏38◼Rapide是一种具有丰富语义并可以支持体系结构约束规约的软件体系结构描述语言◼Rapide语言的基本行为模

型是事件的偏序集。在Rapide中,构件的行为主要是通过事件来刻画的。对一个构件而言,它既可以观察到其外部环境中发生的事件,也可以生成其外部环境能观察到的事件。构件可以是多线程的,构件内的或构件间的多个线程的同步会导致各构件事件流之间的因果依赖关系约

束UML支持SA建模:基于Rapide的扩展(1)第38页,共44页。徐宝文周毓明卢红敏39◼第一种规约方法利用状态变迁规则描述构件的行为,也即指出构件在观察到一种事件模式后它应该产生何种事件模式作为回应◼第二种规约方法利用事件模式约束描述构件或体系结构所生成的事件偏序集内容

上的限制。当前的Rapide工具中所使用的事件模式约束指出构件或者体系结构的行为中不应发生的事件模式Rapide支持两种类型的基于事件的规约方法:约束UML支持SA建模:基于Rapide的扩展(2)第39页,共44页。徐宝文周毓明卢红敏40这两种类型的规约中都用到了事件模式。

我们可通过各种各样的组合操作构作复杂的事件模式,这些操作能说明各事件在何时应该按照因果顺序依次发生、在何时可以独立发生、在何时必须一起发生以及在何时只有其中的一个能发生等等约束UML支持SA建模:基于Rapide的扩展(3)第40页,共44页

。徐宝文周毓明卢红敏41◼每个平行的子状态中都包含一个循环,从而可达到重复选择执行规则以及重复检查约束的目的。显然,每次只能触发状态机中的一个规则,但具体触发哪个规则不确定。每当触发状态机中的一个约束,就生成一个表示违背了该约束的特殊信号......规则1规则m约束1约束n

模拟Rapide构件行为及行为约束的UML状态机模版约束UML支持SA建模:基于Rapide的扩展(4)第41页,共44页。徐宝文周毓明卢红敏42BankRule1entry/Last:=Last+1Open_Ac

count(Rule1::C)[Last<100]/Assign_Account(Last)Rule2Deposit(Rule2::A,Rule2::D)/New_Balance(Rule2::A,Accounts[Rule2

::A])entry/Accounts[Rule2::A]:=Accounts[Rule2::A]+Rule2::DRule3Withdraw(Rule3::A,Rule3::D)/New_Balance(Rule3::A,Accounts

[Rule3::A])entry/Accounts[Rule3::A]:=Accounts[Rule3::A]+Rule3::DConstraint1New_Balance(Constraint1::A,Constraint1::D)[Constraint1::D<0

.0]/Constraint_ViolationConstraint2Assign_Account(Constraint2::C1,Constraint2::A1)Assign_Account(Constraint2::C2,Constraint2::A2)

[Constraint2::A2=Constraint2::A1]/Constraint_Violation以Rapide描述的Bank构件的UML状态机表示约束UML支持SA建模:基于Rapide的扩展(5)第42页,共44页。徐宝文周毓明卢红敏43◼对一个Rapid

e事件模式而言,可能存在许多能与其进行部分匹配的事件集。在找到一个能与其完全匹配的事件集之前,必须维护所有这些能与其进行部分匹配的事件集◼可在UML状态机中使用递归的子状态机引用表示Rapide事件模式的“重入”行为。一个子状态机引用实际上是一个根据名字引用其它状态机的伪状态Const

raint2Assign_Account(Constraint2::C2[Constraint2::A2=Constraint2::A1]/Constraint_ViolationincludeConstraint2Assign_Account(Constraint2::C1

,Constraint2::A1)用子状态机引用表示Rapide约束约束UML支持SA建模:基于Rapide的扩展(6)第43页,共44页。徐宝文周毓明卢红敏44◼将UML看作是一种软件体系结构描述语言,其实质是利用现有的UML符

号表示软件体系结构。该方法的优点在于UML用户能很容易地理解其建立的软件体系结构模型,并可用UML兼容的工具对其进行操纵◼使用带约束的UML进行软件体系结构建模,其优点在于它能显式地表示软件体系结构的约束,其建立的软件体系结构模型仍然可用标准

的UML工具进行操纵,也便于UML用户理解利用UML进行软件体系结构建模的方法:小结第44页,共44页。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?