![基于新信息技术的软件工程与UML教程(第二版) 课件 项目11-13 动态建模、物理建模、双向工程_第1页](http://file4.renrendoc.com/view10/M00/33/19/wKhkGWXjNXWAQ4pEAAEwTp1iSmQ172.jpg)
![基于新信息技术的软件工程与UML教程(第二版) 课件 项目11-13 动态建模、物理建模、双向工程_第2页](http://file4.renrendoc.com/view10/M00/33/19/wKhkGWXjNXWAQ4pEAAEwTp1iSmQ1722.jpg)
![基于新信息技术的软件工程与UML教程(第二版) 课件 项目11-13 动态建模、物理建模、双向工程_第3页](http://file4.renrendoc.com/view10/M00/33/19/wKhkGWXjNXWAQ4pEAAEwTp1iSmQ1723.jpg)
![基于新信息技术的软件工程与UML教程(第二版) 课件 项目11-13 动态建模、物理建模、双向工程_第4页](http://file4.renrendoc.com/view10/M00/33/19/wKhkGWXjNXWAQ4pEAAEwTp1iSmQ1724.jpg)
![基于新信息技术的软件工程与UML教程(第二版) 课件 项目11-13 动态建模、物理建模、双向工程_第5页](http://file4.renrendoc.com/view10/M00/33/19/wKhkGWXjNXWAQ4pEAAEwTp1iSmQ1725.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目十一动态建模任务一认识动态建模任务二认识状态图任务三认识活动图任务四认识顺序图任务五认识协作图
任务一认识动态建模
动态建模描述的是参与者如何通过交互实现系统中的用例。系统中对象的交互是通过顺序图、协作图或者活动图来描述的,同时,用例模型中用例实现所使用的类会在状态图中得以描述。
UML提供了状态图、活动图、顺序图和协作图来描述系统的结构和行为,它们适合于描述系统中的对象在执行期间不同的时间点是如何动态交互的。一组对象为了实现一些功能而进行通信称之为交互,可以通过状态图、活动图、顺序图和协作图来描述系统的动态行为。通过对软件系统的静态结构和动态行为的描述,开发团队和用户易于理解目标系统的功能及执行结果。
任务二认 识 状 态 图一、状态图概述状态图(StatechartDiagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应。通常创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统或组件的复杂行为。状态图主要用来描述对象、子系统、系统的生命周期。状态图适合描述跨越多个用例的对象在其生命周期中的各种状态及其状态之间的转换。这些对象可以是类、接口、构件或者结点。
状态图能帮助分析员、设计员和开发人员理解系统中对象的行为。类图和对应的对象图只展示出系统的静态方面。它们展示的是系统静态层次和关联,并能告诉用户系统的行为是什么。但它们不能说明这些行为的动态细节。
开发人员尤其要知道对象是如何表现自己的行为的,因为他们要用软件实施这些行为。仅仅实施对象是不够的,开发人员还必须让对象做该做的事情。状态图可以确保开发人员能够清楚地了解对象应该做什么,而不用自己去猜测。如果有了一幅展示对象行为的清晰图景,那么开发小组构造出的系统满足需求的可能性就会大大增加。
二、状态图的组成
状态图由表示状态的结点和表示状态之间转换的带箭头的直线组成。若干个状态由一条或者多条转换箭头连接,状态的转换由事件触发,如图11-1所示。
图11-1状态图
1.起点和终点
起点代表状态图的一个初始状态,此状态代表状态图的起始位置。起点只能作为转换的源,而不能作为转换的目标。起点在一个状态图中只允许有一个。
终点代表状态图的最后状态,此状态代表状态图的终止位置。终点只能作为转换的目标,而不能作为转换的源。终点在一个状态图中可以有一个或多个,表示一个活动图的最后和终结状态。
状态图的起点与终点如图11-2所示。
图11-2状态图的起点与终点
2.状态(State)
状态是指对象在其生命周期中,满足某些条件、执行某些活动或等待某些事件时的一个状况。状态指的是对象的状态,用圆角的矩形框表示,如图11-3所示。例如:
•发票(对象)被支付(状态);
•小车(对象)正在停着(状态);
•发动机(对象)正在工作(状态);
•电灯(对象)开着(状态)。
图11-3登录提示状态
1)状态的特征
通常一个状态由名称、进入/退出动作、内部转换、子状态和延迟事件等五个部分组成,如表11-1所示。
如图11-4所示,常常使用三种标准事件:entry(进入)、do(做)和exit(退出)。“进入”用来指定进入一个状态的动作;“退出”用来指定退出一个状态的动作;“做”用来指定在该状态下的动作(如发送一条消息)。
图11-4初始状态、原子状态和结束状态
“动作”是对象类中一个操作的执行,动作具有原子和不可中断特性。
“事件”指的是发生且引起某些动作执行的事情,即事件表示在某一特定的时间或空间出现的能够引发状态改变的运动变化。事件有很多,大致可以分为入口事件、出口事件、动作事件、信号事件、调用事件、修改事件、时间事件和延迟事件等,如表11-2所示。
2)状态的类型
状态的类型有初始状态、原子状态和结束状态,如图11-4所示。状态还可以分为组合状态、子状态、并发状态、历史状态等。
组合状态和子状态如图11-5所示。子状态是指被嵌套在另外一个状态中的状态。组合状态是指含有子状态的状态。组合状态也可以有初态和终态。
图11-5组合状态与子状态
并发状态指一个对象在同一时刻可以处在多种状态,如图11-6所示。图11-6并发状态
历史状态代表上次离开组合状态时的最后一个活动子状态,它用一个包含字母“H”的小圆圈表示。每当转换到组合状态的历史状态时,对象便恢复到上次离开该组合状态时的最后一个活动子状态,并执行入口动作,如图11-7所示。
图11-7历史状态
3.转换
转换表示当一个特定事件发生或者某些条件满足时,一个源状态下的对象完成一定的动作后将发生状态转变,转向另一个称为目标状态的状态。当发生转换时,转换进入的状态为活动状态,转换离开的状态变为非活动状态。转换用箭头表示,如果没有标注事件,则本转换为自动转换。
转换通常分为外部转换、内部转换、完成转换和复合转换四种。一个转换一般包括五部分信息:源状态、目标状态、触发事件、监护条件和动作。转换的特征如表11-3所示。
三、使用RationalRose绘制状态图
状态图显示了对象的动作行为、对象可能存在的各种状态、对象创建时的状态、对象删除时的状态、对象如何从一种状态转移到另一种状态以及对象在不同状态中干什么。
1.创建状态图
(1)在浏览器中右击类。
(2)选择“New”→“StatechartDiagram”,对该类创建一个状态图,并命名该图,如图11-8所示。
图11-8创建状态图
2.在图中增加状态
(1)选择工具栏的【State】按钮,单击框图增加一个状态,双击状态命名。
(2)选择工具栏的“StartState”和“EndState”,单击框图增加初始状态和终止状态,如图11-9所示。初始状态是对象首次实例化时的状态,状态图中只有一个初始状态。终止状态表示对象在内存中被删除之前的状态,状态图中有0个、1个或多个终止状态。
图11-9增加状态
3.在状态之间增加交接
(1)选择【StateTransition】工具栏按钮。
(2)从一种状态拖到另一种状态。
(3)双击“交接”弹出对话框,可以在“General”中增加事件(Event),在“Detail”中增加保证条件(GuardCondition)等交接的细节,如图11-10、图11-11所示。
图11-10增加事件
图11-11增加保证条件
4.在状态中增加活动
(1)右击状态并选择“OpenSpecification”。
(2)选择【Action】标签,右击空白处并选择“Insert”。
(3)双击新活动(清单中有“Entry/”)打开活动规范,在“Name”中输入活动细节,如图11-12所示。
图11-12在状态中增加活动
任务三认 识 活 动 图一、活动图概述
活动图(ActivityDiagram,又称动态图)阐明了业务用例实现的工作流程。业务工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。业务用例由一系列活动组成,它们共同为业务主角生成某些工件。工作流程通常包括一个基本工作流程和一个或多个备选工作流程。工作流程的结构使用活动图来进行说明。
活动图与常用的程序流程图相似,它们的主要区别在于程序流程图一般用来表示串行过程,而活动图则可以用来表示并行过程,如图11-13所示。
图11-13活动图
使用活动图的主要目的是:
(1)描述一个操作执行过程中(操作实现的实例化)所完成的工作(动作)。
(2)描述对象内部的工作。
(3)显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。
(4)显示用例的实例是如何执行动作以及如何改变对象状态的。
(5)说明一次商务活动中的参与者、工作流、组织和对象是如何工作的。
二、活动图的组成
1.动作状态
动作状态是原子性的动作或操作的执行状态,它不能被外部事件的转换中断。动作状态的原子性决定了动作状态要么不执行,要么就完成执行,不能中断。如发送一个信号、设置某个属性值等。动作状态没有子结构、内部转换或内部活动,它不能包括事件触发的转换。
动作状态有如下特点:
(1)动作状态是原子的,它是构造活动图的最小单位,无法分解为更小的部分。
(2)动作状态是不可中断的,它一旦运行就不能中断,一直运行到结束。
(3)动作状态是瞬时的行为,它所占用的处理时间极短,有时甚至可以忽略。
(4)动作状态有入转换,入转换可以是动作流,也可以是对象流。动作状态至少有一条出转换,这条转换以内部动作的完成为起点,与外部事件无关。
(5)动作状态与状态图中的状态不同,它不能有入口动作和出口动作,也不能有内部转移。
(6)动作状态允许多处出现在同一活动图中。
2.活动状态
活动状态是非原子性的,用来表示一个具有子结构的纯粹计算的执行。活动状态可以分解成其他子活动或动作状态,可以使转换离开状态的事件从外部中断。活动状态可以有内部转换、入口动作和出口动作。活动状态至少具有一个输出完成转换,当状态中的活动完成时该转换激发。活动状态用两边为弧的条形框表示,中间填活动名。活动分为简单活动和组合活动。简单活动是指不能再分解的活动;组合活动是指可以再分解的复杂活动。
活动状态有如下特点:
(1)活动状态可以分解成其他子活动或动作状态,由于它是一组不可中断的动作或操作的组合,所以可以被中断。
(2)活动状态的内部活动可以用另一个活动图来表示。
(3)活动状态可以有入口动作和出口动作,也可以有内部转移。
(4)动作状态是活动状态的一个特例,如果某一个活动状态只包括一个动作,那么它就是一个动作状态。
动作状态与活动状态如图11-14所示。
图11-14动作状态与活动状态
3.组合活动
组合活动也叫复合活动。在UML的活动图中,一个大的活动可以分为若干个动作或子活动,这些动作或子活动本身又可以组成一个活动图,如图11-15所示。
图11-15组合活动与简单活动
4.分叉与结合
并发指的是在同一时间间隔内有两个或者两个以上的活动执行。对于一些复杂的大型系统而言,对象在运行时往往不只存在一个控制流,而是存在两个或者多个并发运行的控制流。为了对并发的控制流建模,在UML中引入了分叉和结合的概念。分叉用于表示将一个控制流分成两个或者多个并发运行的分支,结合用来表示并行分支在此得到
同步。
分叉用粗黑线表示。分叉具有一个输入转换、两个或者多个输出转换,每个转换都可以是独立的控制流。结合与分叉相反,结合具有两个或者多个输入转换、一个输出转换,先完成的控制流需要在此等待,只有当所有的控制流都到达结合点时,控制才能继续向下进行,如图11-16所示。
图11-16分叉与结合
5.分支与合并
分支在活动图中很常见,它是转换的一部分,它将转换路径分成多个部分,每一个部分都有单独的监护条件和不同的结果。当动作流遇到分支时,会根据监护条件的真假来判定动作的流向。分支的每个路径监护条件应该是互斥的,这样可以保证只有一个路径的转换被激发。
合并指的是两个或者多个控制路径在此汇合,合并和分支常常成对使用,合并表示从对应分支开始的条件的行为结束。
在活动图中,分支与合并都用空心的菱形表示,分支有一个输入箭头和两个输出箭头,而合并有两个输入箭头和一个输出箭头,如图11-17所示。
图11-17分支与合并
6.泳道
为了活动的职责进行组织而将活动图中的活动状态分为不同的组,称为泳道。每个泳道代表特定含义的状态职责部分。在活动图中,每个活动只能明确地属于一个泳道,泳道表示了哪些活动是由哪些对象进行的。每个泳道都有一个与其他泳道不同的名称。
在活动图中,每个泳道通过垂直实线与它的邻居泳道相分离。在泳道的上方是泳道的名称,不同的泳道中的活动既可以顺序进行也可以并发进行,如图11-18所示。
图11-18泳道
7.对象流
对象可以在活动图中显示,表示动作状态或者活动状态与对象之间的依赖关系。对象可以作为动作的输入或输出,或简单地表示指定动作对对象的影响。对象用矩形符号来表示,在矩形的内部有对象名或类名。对象流用带有箭头的虚线表示,如图11-19所示。
对象流中的对象有如下特点:
(1)一个对象可以由多个动作操纵。
(2)一个动作输出的对象可以作为另一个动作输入的对象。
(3)同一个对象可以多次出现在活动图中,每一次出现表明该对象正处于对象生存期的不同时间点。
图11-19对象流
8.动作流
动作流是指所有动作状态之间的转换。在活动图中,一个动作状态执行完成本状态需要完成的动作后会自动转换到另外一个状态,一般不需要特定事件的触发。动作流用带箭头的直线表示,箭头的方向指向转入的方向,如图11-20所示。
图11-20动作流
三、使用RationalRose绘制活动图
1.创建活动图
创建用于分析系统业务的活动图:在浏览器中右击UseCaseView,选择“New”→“ActivityDiagram”,如图11-21(a)所示。
创建用于显示用例中的事件流的活动图:在浏览器中选中某个用例,然后右击这个用例,选择“New”→“ActivityDiagram”,如图11-21(b)所示。
(a)(b)图11-21创建活动图
2.增加泳道
泳道是框图里的竖段,包含特定人员或组织要进行的所有活动。可以把框图分为多个泳道,每个泳道对应每个人员或组织。
在工具栏中选择【Swimlane】按钮,然后单击框图增加泳道,最后用人员或组织给泳道命名,如图11-22所示。
图11-22增加泳道
3.增加活动并设置活动的顺序
(1)在工具栏中选择【Activity】按钮,单击活动图增加活动,命名活动。
(2)在工具栏中选择【Transition】按钮,把箭头从一个活动拖向另一个活动,如图11-23所示。
图11-23增加活动
4.增加同步
(1)在工具栏中选择【Synchronization】按钮,单击框图来增加同步棒。
(2)画出从活动到同步棒的交接箭头,表示在这个活动之后开始并行处理。
(3)画出从同步棒到可以并行发生的活动之间的交接箭头。
(4)创建另一同步棒,表示并行处理结束。
(5)画出从同步活动到最后同步棒之间的交接箭头,表示完成所有这些活动之后将停止并行处理,如图11-24所示。
图11-24增加同步
5.增加决策点
决策点表示可以采取两个或多个不同的路径。从决策到活动的交接箭头要给出保证条件,控制在决策之后采取什么路径,保证条件应该是互斥的。
(1)在工具栏中选择【Decision】按钮,单击框图增加决策点。
(2)拖动从决策到决策之后可能发生的活动之间的交接,双击“交接”,打开【Detail】选项卡,在“GuardCondition”字段中写入保证条件,如图11-25所示。
图11-25增加决策点
任务四认 识 顺 序 图
一个面向对象的软件系统是一系列相互协同的对象的集合,每个对象都有自己的“生命”,如果每个对象只关心自己的事情,而不考虑与其他对象的交互,将会产生混乱。为了能够确定这些交互的方法,必须补全对静态结构的理解:那些并发对象是如何交互以及交互是如何影响对象的状态的。创建动态模型来完善系统的静态模型,不仅可以帮助确定类中需要的操作,也能改进系统的静态结构。
一、顺序图概述
顺序图(SequenceDiagram)又名序列图、循序图、时序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。顺序图可供不同的用户使用,以帮助他们进一步了解系统。
•帮助用户进一步了解业务细节;
•帮助分析人员进一步明确事件处理流程;
•帮助开发人员进一步了解需要开发的对象和对这些对象的操作;
•帮助测试人员通过过程的细节开发测试案例。
在UML中,顺序图表示为二维图,如图11-26所示。
图11-26典型的顺序图
二、顺序图的组成
顺序图是由对象(Object)、生命线(Lifeline)、激活(Activation)和消息(Message)等构成的,图11-27所示顺序图的目的就是按照交互发生的一系列顺序显示对象之间的交互。
图11-27顺序图的组成
1.对象
顺序图中的对象和对象图中对象的概念一样,都是类的实例。顺序图中的对象可以是系统的参与者或者任何有效的系统对象。对象的表示形式也和对象图中的对象表示方式一样,使用包含名称的矩形框来标记,所显示的对象及其类的名称带有下划线,二者用冒号隔开,即对象名。
类元角色(Actor)为系统中发起请求消息的对象(或者称为参与者对象),它可以是任何在系统中扮演角色的对象,不管它是对象实例还是参与者,它与生命线的使用方法相同,只是表示方法不同。类元角色的表示方法如图11-28所示。
图11-28类元角色
2.生命线
每个参与者及系统运行中的对象(即活动对象)都用一条垂直的生命线表示。UML用矩形和虚线表示生命线,虚线展示了参与交互的对象的生命长度,矩形框中添加对象名称。对象与生命线结合在一起称为对象的生命线。
3.激活
顺序图中的激活是对象操作的执行,它表示一个对象直接或通过从属操作完成操作的过程。它对执行的持续时间和执行与其调用者之间的控制关系进行建模。激活使用小矩形条表示,它的顶端与激活时间对齐,而底端与完成时间对齐。
4.消息
消息是从一个对象(发送者)向另一个或其他几个对象(接收者)发送信号,或由一个对象调用另一个对象的操作。消息可以用于在对象间传递参数。消息可以是信号,即明确的、命名的、对象间的异步通信;也可以是调用,即具有返回控制机制的操作的异步调用。其中,顺序图中强调的是消息的时间顺序,而协作图中强调交换消息的对象间的关系。
在UML中,消息使用箭头来表示,箭头的类型表示了消息的类型,消息箭头所指的一方是接收方。常见的消息类型如表11-4所示。
三、使用RationalRose绘制顺序图
1.创建顺序图
在浏览器内的Logic视图中单击鼠标右键,选择“New”→“SequenceDiagram”就新建了一张顺序图,如图11-29所示。也可以在浏览器UseCaseView中选择某个用例,然后右击这个用例,选择“New”→“SequenceDiagram”。
图11-29创建顺序图
2.在顺序图中放置参与者和对象
顺序图中的主要元素之一就是对象,相似的对象可以被抽象为一个类。
(1)把用例图中该用例涉及的所有参与者拖到Sequence图中。
(2)选择工具栏中的【Object】按钮,单击框图增加对象。可以选择创建已有类的对象,也可以在浏览器中新建一个类,再创建新的类的对象。双击对象,在弹出的对话框中的“Class”里确定该对象所属的类。
(3)给对象命名。对象可以命名也可以没有名字。双击对象,在弹出对话框的“Name”中给对象取名,如图11-30所示。
图11-30放置参与者和对象
3.说明对象之间的消息
(1)在工具栏中选择【message】按钮。
(2)单击启动消息的参与者或对象,把消息拖到目标对象和参与者中。
(3)命名消息。双击消息,在对话框中“General”里的“name”中输入消息名称,如图11-31所示。
图11-31对象之间的消息
任务五认 识 协 作 图
协作图(CollaborationDiagram/CommunicationDiagram,也叫通信图)是一种交互图,强调的是发送和接收消息的对象之间的组织结构。与顺序图不同的是,在协作图中明确表示了角色之间的关系,通过协作角色来限定协作中的对象或链。另外,协作图不将时间作为单独的维来表示,所以必须使用顺序号来判断消息的顺序以及并行线程。顺序图和协作图表达的是类似的信息,虽然它们使用不同的方法表示,但可以通过适当的方式进行转换。
一、协作图概述
要理解协作图,首先要了解什么是协作。所谓协作,是指在一定的语境中一组对象以及实现某些行为的对象间的相互作用。在协作中同时包含了运行时的类元角色(ClassifierRoles)和关联角色(AssociationRoles),类元角色描述了一个对象,关联角色描述了协作关系中的链,并通过几何排列表现交互作用中的各个角色。协作图如图11-32所示。
图11-32协作图
协作图的作用如下:
(1)通过描绘对象之间消息的传递情况来反映具体的使用语境的逻辑表达。
(2)显示对象及其交互关系的空间组织结构。
(3)表现一个类操作的实现。
二、协作图的组成
协作图是由对象(Object)、消息(Message)和链(Link)等构成的。
1.对象
协作图中的对象和序列图中的对象的概念相同,同样都是类的实例。一个协作代表了为了完成某个目标而共同工作的一组对象。对象的角色表示一个或一组对象在达到目标的过程中所应起的那部分作用。在协作图中,不需要关于某个类的所有对象都出现,同一个类的对象在一个协作图中也可能要充当多个角色。
2.消息
在协作图中,可以通过一系列的消息来描述系统的动态行为。在协作图中,消息使用带有标签的箭头来表示,它附在连接发送者和接收者的链上,如图11-33所示。链连接了发送者和接收者,箭头的指向便是接收者。
图11-33消息
3.链
在协作图中的链和对象图中链的概念和表示形式都相同,都是两个或多个对象之间的独立连接,是对象引用元组(有序表),是关联的实例。
链是关联的实例,当一个类与另一个类之间有关联时,这两个类的实例之间就有链,一个对象就能向另一个对象发送消息。所以链是对象间的发送消息的路径。
在协作图中,链的表示形式为一个或多个相连的线或弧。在自身相关联的类中,链是两端指向同一对象的回路,是一条弧。为了说明对象是如何与另外一个对象进行连接的,还可以在链的两端添加上提供者和客户端的可见性修饰。图11-34所示是链的普通和自身关联的表示形式。
图11-34链
三、使用RationalRose绘制协作图
1.增加对象链接
(1)在工具栏中选择【ObjectLink】按钮。
(2)单击要链接的参与者或对象。
(3)将对象链接拖动到要链接的参与者或对象间,如图11-35所示。
图11-35增加对象链接
2.加进消息
(1)在工具栏中选择【LinkMessage】或【ReverseLinkMessage】按钮。
(2)单击要放消息的对象链接。
(3)双击消息,可以在弹出的对话框里为消息命名,如图11-36所示。
图11-36加进消息
3.建立自反链接
(1)在工具栏中选择【LinktoSelf】按钮。
(2)单击要链接的对象,会增加一个消息的箭头。
(3)双击消息,命名自反链接,如图11-37所示。
图11-37建立自反链接
四、顺序图与协作图的比较
1.顺序图与协作图的区别
顺序图与协作图都是交互图,其区别主要表现在:
(1)顺序图强调按时间展开的消息的传递,清晰地显示了时间次序;对简单的迭代和分支的可视化要比协作图好,常用于场景显示,可以不要顺序号。
(2)协作图强调交互中实例之间的结构关系以及所传送的消息,清晰地显示了对象间关系;对复杂的迭代和分支的可视化以及对多并发控制流的可视化要比时序图好,常用于显示过程设计细节,有路径和顺序号。
2.顺序图与协作图的互换
UML中的顺序图和协作图都是用来表示对象之间的交互作用,其中顺序图侧重于描述交互过程中的时间关系,对象之间的关系描述不十分清楚;协作图侧重于描述交互过程中的对象之间的关系,时间顺序描述不是十分清楚。因此,从某种意义上来说,这两种图的作用是等价的,Rose中也提供了这两种图之间的转换方式,步骤如下:
(1)打开要转换的顺序图或协作图。
(2)依次选择主菜单栏中的【Browse】→【GoToSequenceDiagram】,即可将当前的协作图转换成顺序图,如图11-38所示。
图11-38转换为顺序图项目十二物理建模任务一认识物理建模任务二认识组件图任务三认识部署图
任务一认识物理建模
系统模型的大部分图是反映系统的逻辑和设计方面的信息,它们独立于系统的最终实现单元。为了描述系统实现方面的信息,达到系统具有可重用性和可操作性的目的,在UML中通过组建图和部署图来表示实现单元。
进行物理建模的主要目的是解决以下问题:
•类和对象物理上分布在哪一个程序或进程中?
•程序和进程在哪台计算机上运行?
•系统中有哪些计算机和其他的硬件设备?它们如何连接在一起?
•不同的代码文件之间有何关联?如果某一文件被改变,其他的文件是否需要重新编译?
任务二认 识 组 件 图
一、组件图概述组件图描述了软件的组成和具体结构,表示了系统的静态部分,它能够帮助开发人员从总体上认识系统。用户通常采用组件图来描述可执行程序的结构、源代码、物理数据库组成和结构。
通过组件图可以清晰地表示出软件的所有源文件之间的关系,如图12-1所示,这样开发者就可以更好地理解各个源代码文件之间的依赖关系,所以组件图对源文件建模就显得比较重要。
图12-1组件图
在对源程序进行建模时,通常应遵从以下原则:
(1)在正向工程或逆向工程中,识别出要重点描述的每个源代码文件,并把每个源代码文件标识为构件。
(2)如果系统较大,包含的构件很多,就利用包来对组件进行分组。
(3)找出源代码之间的编译依赖关系,并用工具管理这些依赖关系。
(4)给现有系统确定一个版本号,在组件图中,采用约束来表示源代码的版本号、作者和最后的修改日期等信息。
在UML中,组件用一个左边带有两个小矩形的符号来表示。组件名放在组件符号的下面或写在组件符号的大矩形内。如图12-2所示。图12-2组件
二、组件图的组成
1.组件
组件是定义了良好接口的物理实现单元,是系统中可替换的物理部件。组件表示将类、接口等逻辑元素打包而成的物理模块。
1)名称
每个组件都必须有一个不同于其他组件的名称。组件的名称是一个字符串,位于组件图标的内部。
2)组件的种类
组件通常包括编译时的源组件、链接时的二进制组件和运行时的可执行组件三种类型。
(1)源组件。源组件只在编译时有意义。通常情况下,源组件是指实现一个或多个类的源代码文件。
(2)二进制组件。通常情况下,二进制组件是指对象代码,它是源组件的编译结果。它应该是一个对象代码文件、一个静态库文件或一个动态库文件。二进制组件只有在链接时才有意义。如果是动态库文件,则在运行时有意义。
(3)可执行组件。可执行组件是一个可执行的程序文件,它是链接所有二进制组件所得到的结果。
2.接口
在组件图中,组件可以通过其他组件的接口来使用其他组件中定义的操作。通过使用命名接口,可以避免在系统中各个组件之间直接发生依赖关系,有利于组件的替换。组件图中的接口使用一个小圆圈表示。
3.接口和组件的关系
接口和组件的关系分为两种:实现关系和依赖关系。接口和组件之间用实线连接表示实现关系,用虚线箭头连接表示依赖关系,如图12-3所示。
图12-3组件图中的接口
三、使用RationalRose绘制组件图
1.创建组件图
创建组件图的过程如图12-4所示:
(1)右键单击浏览器中的Component视图。
(2)选择“New”→“ComponentDiagram”,并命名新的框图。
图12-4创建构件图
2.把构件加入框图
把构件加入框图的过程如图12-5所示:
(1)选择【Component】工具栏按钮,单击框图增加构件,并命名构件。
(2)右键单击构件,选择“OpenSpecification”,在“Stereotype”中设置构件版型。
图12-5设置构件版型
任务三认 识 部 署 图
一、部署图概述
部署图(DeploymentDiagram)用来显示系统中软件和硬件的物理架构。从部署图中可以了解到软件和硬件组件之间的物理关系以及处理结点的组件分布情况。使用部署图可以显示运行时系统的结构,同时还可传达构成应用程序的硬件和软件元素的配置和部署方式,如图12-6所示。
图12-6部署图
创建一个部署模型的目的有以下几点:
•描述系统投产的相关问题。
•描述系统与生产环境中的其他系统间的依赖关系,这些系统可能是已经存在的,或是将要引入的。
•描述一个商业应用主要的部署结构。
•设计一个嵌入系统的硬件和软件结构。
•描述一个组织的硬件/网络基础结构。
二、部署图的组成
部署图通常包括2种元素:结点和关联关系。
1.结点
结点是拥有某些计算资源的物理对象。这些资源包括带处理器的计算机、外部设备(如打印机、读卡机、通信设备等)。
一个结点用名称区别于其他结点。结点的名称是一个字符串,位于结点的图标内部。
在应用部署图建模时,通常可以将结点分为处理器和设备两种类型,如图12-7所示。
图12-7结点
2.关联关系
部署图结点间通过通信关联在一起。在UML中,这种通信关联用一条直线表示,如图12-8所示,说明在结点间存在某类通信路径,结点通过这条通信路径交换对象或发送消息。
图12-8结点间的通信关联
三、使用RationalRose绘制部署图
1.创建部署图
创建部署图的过程如图12-9所示:
(1)双击DeploymentView。
(2)选择【Processor】工具栏按钮,单击框图增加处理器,并命名处理器。
(3)在DeploymenView中右击处理器并选择“New”→“Process”,命名进程。
(4)在框图中右击处理器,对“ShowProcesses”打钩,可以在框图中显示该处理器的进程。
图12-9创建实施图
2.把设备加入到框图中
把设备加入到框图中的过程如图12-10所示:
(1)选择【Device】工具栏按钮。
(2)单击框图增加设备,并命名。
图12-10加入设备
3.把连接加进框图
把连接加进框图中的过程如图12-11所示:
(1)选择【Connection】工具栏按钮。
(2)单击要连接的一个处理器或设备,拖动到要连接的另一个处理器或设备。
(3)命名连接。
图12-11加入连接
习题
1.绘制ATM系统客户的组件图(见图12-12)。
理解:例如用C++建立系统,每个类有自己的头文件和体文件,因此图中每个类映射自己的组件,例如ATM屏幕类映射两个ATM屏幕组件,这两个ATM屏幕组件表示ATM屏幕类的头和体。阴影构件称为包体,表示C++中ATM屏幕类的体文件(.cpp),构件版型是PackageBody。无阴影的构件称为包规范,这个包规范表示C++类的头文件(.H),构件版型是PackageSpecification。构件ATM.exe是个任务规范,表示处理线程,是一个可执行程序。
图12-12ATM系统的组件图
2.绘制ATM系统的部署图(见图12-13)
理解:ATM系统的部署图显示了系统的主要布局。ATM客户机可执行文件在不同地点的多个ATM上运行。ATM客户机通过专用网与地区ATM服务器通信。ATM服务器上的可执行文件在地区ATM服务器上执行。地区ATM服务器又通过局域网与运行Oracle的银行数据库服务器通信。最后,打印机与地区ATM服务器连接。
ATM系统采用了三层结构,分别针对数据库、地区ATM服务器和客户机。
图12-13ATM系统的部署图项目十三双向工程任务一认识双向工程任务二正向工程任务三逆向工程
任务一认识双向工程
Rose的双向工程包括正向工程和逆向工程。正向工程就是从UML模型到具体语言代码的过程,而逆向工程是在软件开发环境中由具体的语言到UML模型的过程。使用正向工程,一旦软件系统的设计完成后,开发者可以借助于正向工程直接由UML模型生成程序代码框架,提高开发效率。借助于逆向工程,开发者可以通过程序源代码得到软件系统的设计模型和设计文档。
任务二正向工程
一、正向工程概述正向工程是从模型图到代码框架的过程。通过将软件模型对某种特定语言的映射可以从UML图得到该语言的代码,帮助开发者节约许多编写类、定义属性和方法等重复性工作的时间。对一个Java模型元素进行正向工程时,模型的特征会映射到对应的Java语言的特征。Rose中类图中的一个类会通过组件生成一个“.Java”文件;Rose中的包会生成Java中的一个包。
二、使用Rose的正向工程将类图生成Java代码
(1)设置默认语言为Java。在主菜单栏中依次选择【Tools】→【Options】菜单,选择【Notation】选项卡,选择“default”列表框中的语言为Java,如图13-1所示。
图13-1设置默认语言为Java
(2)设置环境变量ClassPath。在主菜单栏中依次选择【Tools】→【Java/J2EE】→【ProjectSpecificat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度个人住房装修贷款分期偿还合同
- 2025年企业保密工作考核与奖励制度合同
- 2025年度基本建设借款合同:城市地下综合管廊建设项目贷款合同样本
- 2025年度建筑安装工程房屋合同书(含生态屋顶)
- 2025年度智能科技产品研发合作合同
- 2025年度交通安全设施施工监理合同
- 2025年度室内装饰灯具采购及设计服务合同
- 2025年度家庭水电改造与智能家居健康管理系统合同
- 2025年度医疗健康产业知识产权转让合同
- 2025年度建筑渣土运输及生态修复合同模板
- 2023年北京市高考作文评分标准及优秀、满分作文
- 2023年大唐尿素投标文件
- GB/T 6682-2008分析实验室用水规格和试验方法
- 《钢铁是怎样炼成的》名著阅读(精讲课件) 初中语文名著导读
- 缩窄性心包炎课件
- 《工程电磁场》配套教学课件
- 辽宁省锦州市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 职位管理手册
- IPQC首检巡检操作培训
- 东南大学 固体物理课件
- 行政人事助理岗位月度KPI绩效考核表
评论
0/150
提交评论