UML(统一建模语言)基础.ppt

上传人:sccc 文档编号:6218017 上传时间:2023-10-06 格式:PPT 页数:103 大小:4.16MB
返回 下载 相关 举报
UML(统一建模语言)基础.ppt_第1页
第1页 / 共103页
UML(统一建模语言)基础.ppt_第2页
第2页 / 共103页
UML(统一建模语言)基础.ppt_第3页
第3页 / 共103页
UML(统一建模语言)基础.ppt_第4页
第4页 / 共103页
UML(统一建模语言)基础.ppt_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《UML(统一建模语言)基础.ppt》由会员分享,可在线阅读,更多相关《UML(统一建模语言)基础.ppt(103页珍藏版)》请在三一办公上搜索。

1、第三章 UML,易国洪,2,知识图谱,3,Agenda,什么是UML什么是模型常见的UML认识误区,4,什么是UML,UML是一种Language(语言)UML是一种Modeling(建模)LanguageUML是Unified(统一)Modeling Language已进入全面应用阶段的事实标准应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域成为“产生式编程”的重要支持技术:MDA、可执行UML等,5,UML发展历程,6,UML的统一,活动图来自James Odell,状态图来自David Harel,接口来自Microsoft,包的符号来自Apple Macintos

2、h,7,什么是模型,模型是对现实的简化,8,建模的目的与原则,帮助我们按照实际情况或按我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化 仅当需要模型时,才构建它 选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响;最好的模型是与现实相联系的;,9,为什么使用UML建模,UML是一种统一的、标准化的建模语言 UML是一种应用面很广泛的建模语言,10,UML可以建立什么模型,11,草图与蓝图,蓝图一般是指采用CASE工具绘制的、正式的、规范的UML模型 草图则通常是指手工绘制的、规范度较低的在纸张

3、的UML模型 大胆地绘制草图,尽可能基于草图进行讨论。对于局部的、重要性不高的、共享范围较小的UML模型,直接将草图扫描到电脑存档即可;对于全局的、重要性高的、高度共享的,在草图的基础上用CASE工具绘制成为正式的蓝图,并将其纳入统一的模型管理中,12,谁应该建模,业务建模:以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与需求模型:以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人员参与设计模型:高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发人员为主,架构师提供指导。实现模型:以资深开发人

4、员(设计人员)为主,架构师提供总体指导。数据库模型:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。,13,UML 最适于的过程,Use-case driven 用例驱动的Architecture-centric以体系结构为中心Iterative&incremental 迭代的和增量的,14,UML修饰,命名:也就是为对象、关系和图起名字。和任何语言一样,名字都是一个标识符 UML修饰:在为了更好的表示这些细节,UML中还提供了一些修饰符号,例如不同可视性的符号、用斜体字表示抽象类,15,UML定义的图,16,4+1视图,Use case View描述系统的外部特性、系

5、统功能等。,Implementation View 表示系统的实现特征,常用构件图表示。,Design View 描述系统设计特征,包括结构模型视图和行为模型视图,前者描述系统的静态结构(类图、对象图),后者描述系统的动态行为(交互图、状态图、活动图)。,Process View 表示系统内部的控制机制。常用类图描述过程结构,用交互图描述过程行为。,Deployment View部署视图描述系统的物理部署特征。用部署图表示。,Logic Model,Physic Model,17,UML视图和图,18,UML图形分类,19,UML模型关系的种类,20,关联关系,关联(Association)表

6、示两个类之间存在某种语义上的联系。关联关系提供了通信的路径,它是所有关系中最通用、语义最弱的。在UML中,使用一条实线来表示关联关系 在关联关系中,有两种比较特殊的关系:聚合和组合 聚合关系:聚合(Aggregation)是一种特殊形式的关联。聚合表示类之间的关系是整体与部分的关系 如果发现“部分”类的存在,是完全依赖于“整体”类的,那么就应该使用“组合”关系来描述,21,泛化、实现、扩展与依赖,泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。实现关系是用来规定接口和实现接口的类或组件之间的关系。接口是操作的集合,这些操作用于规定类或组件的服务。扩展表示将一个

7、构造型附加到一个元类(metaclass)上,使得元类的定义中包括这个构造型。有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X。,22,类图 class diagram,描述类以及类之间的关系单个类的符号表示,访问权限的表示:public+;protect#;private 类符号的几种变体,23,表示类之间关系的UML符号,派生 Student 派生GraduateStudent继承 GraduateStudent继承Student泛化 Student泛化GraduateStudent特化 GraduateStuden

8、t继承Student,24,聚合aggregation:Airport 聚集Aircraft一个机场可以有0架或多架(*)飞机一架飞机可以正停在0个或1个机场,25,组合composition:Car由Tire组成汽车包含轮胎1辆汽车包含4到5个轮胎1个轮胎只能装在1辆汽车上,26,汽车使用(依赖)加油站,27,28,示例类图,先看清有哪些类,然后看看类之间存在的关系,并结合多重性来理解类图的结构特点以及各个属性和方法的含义,29,读图过程,读出类:图中共有7个类,Order、OrderItem、Customer、Consignee、DeliverOrder、Peddlery、Prodcut读

9、出关系:从图中关系最复杂(也就是线最密集)的类开始阅读,本图中最复杂的就是Order类。1)OrderItem和Order之间是组合关系,根据箭头的方向可知Order包含了OrderItem。2)Order类和Customer、Consignee、DeliverOrder是关联关系。也就是说,一个订单和客户、收货人、送货单是相关的。,30,接口与抽象类,抽象类是一种不能够被直接实例化的类,也就是说不能够创建一个属于抽象类的对象接口则是一种类似于抽象类的机制,它是一个没有具体实现的类,31,关联类,关联类即是关联也是类,它不仅像关联那样连接两个类,而且还可以定义一组属于关系本身的特性,32,对象

10、图,对象是类的实例,是具有具体属性值的具体事物例如你的时钟,品牌是:瑞士,型号是R001下图中的图标说明了如何用UML来表示对象。注意对象的图标也是一个矩形,并且对象名下面要带下划线。具体实例的名字位于冒号的左边而该实例所属的类名位于冒号的右边。实例的名字以一个小写字母开头。也有可能是一个匿名类。,33,开发过程,34,(0)业务(1)需求(2)分析:结构(3)分析:行为(4)设计,35,两种分析方法,36,用例图,用例图能描述系统、子系统、或类的行为。它将系统功能划分成对参与者有用的需求。站在用户的角度看待系统、定义系统;使用用户能够看懂的语言来表述。表示处于同一系统中的参与者和用例之间的关

11、系的图表示法:用例图是包括参与者、由系统边界(一个矩形)封闭一组用例、参与者和用例之间的关联、用例间的关系以及参与者泛化的图。,37,用例图组成元素,参与者用例系统边界关系,38,参与者,参与者是与系统、子系统或类发生交互作用的外部用户、进程或其他系统的理想化概念。作为外部用户与系统发生交互作用,这是参与者的特征。参与者可以是人,也可以是外部计算机系统和外部进程、硬件、时钟。表示法:用一个小人图标表示参与者,1)外部系统:当系统需要与其它系统交互时,如ATM柜员机系统中,银行后台系统就是一个参与者;2)硬件设备:如果系统需要与硬件设备交互时,如在开发IC卡门禁系统时,IC卡读写就是一个参与者;

12、3)时钟:当系统需要定时触发时,时钟就是参与者,39,用例,用例是外部可见的一个系统功能单元,这些功能单元由系统所提供,并通过一系列系统功能单元与一个或多个参与者之间交换消息所表达。用例的用途是在不揭示系统内部构造的情况下定义连贯的行为。用例的定义包含用例所必需的所有行为表示法:用例用一个包括用例名的椭圆形来表示。,40,系统边界,系统边界:描述了系统的边界,以及描述了外部系统与系统之间交互的边界表示法:用封闭所有用例的矩形表示,41,关系,参与者与用例以及用例之间的关系,42,举例,43,状态图,显示一个状态机(包括简单状态、转换、嵌套组成状态)的图。表示法:简单状态图表示成直边圆角矩形框,

13、44,多种状态的表示,45,阅读最简单的状态图,最为核心的元素无外乎是两个:一个是用圆角矩形表示的状态(初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换,46,转换的五要素,源状态:即受转换影响的状态目标状态:当转换完成后对象的状态 触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件前置条件:布尔表达式,决定是否激活转换、动作:转换激活时的操作,47,复杂转换,48,49,各种转换的区别,进入和退出转换:当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转换来表示内部转换:用来处理一些不离开该状

14、态的事件,50,使用复合状态,51,绘制状态图,绘制状态机图的理想步骤是:寻找主要的状态,确定状态之间的转换,细化状态内的活动与转换,用复合状态来展开细节寻找主要状态:对于航班机票预订系统而言,显然包括的状态主要有-在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都将处于这种“无预订”状态-对订座而言显然有“部分预订”和“预订完”两种状态-而当航班快要起飞时,显然要“预订关闭”总结一下,主要有四种状态:无预订、部分预订、预订完以及预订关闭,52,活动图,活动图是一种特殊形式的状态机,用于对计算机流程和工作流程建模。活动图中的状态表示计算过程中所处的各种状态,而不是普通对象的状态

15、通常,活动图假定在整个计算处理的过程中没有外部事件引起中断,否则普通的状态机更适合描述这种情况活动节点是活动图中最主要的元素之一,它用来表示一个活动活动节点表示法:表示成带有圆形边线的矩形框,53,活动图的主要元素,分支与前置条件:分支是用菱形表示的,它有一个进入转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符号指向外)。而每个离开转换上都会有一个监护条件,用来表示满足什么条件的时候执行该转换。分岔与汇合:,54,转换,转换:当一个活动结束时,控制流就会马上传递给下一个活动节点,在活动图中称之为“转换”,用一条带箭头的直线来表示,55,阅读简单活动图,56,带泳道的活动图,57,

16、带对象流的活动图,58,59,绘制活动图,“活动图”比较直观易懂;与传统的流程图十分的相近,只要能够读懂活动图,就不难画出活动图绘制时首先决定是否采用泳道:主要根据活动图中是否要体现出活动的不同实施者然后尽量使用分支、分岔和汇合等基本的建模元素来描述活动控制流程如果需要,加入对象流以及对象的状态变化,利用一些高级的建模元素(如辅助活动图、汇合描述、发送信号与接收信号、引脚、扩展区)来表示更多的信息活动图的建模关键是表示出控制流,其它的建模元素都是围绕这一宗旨所进行的补充,60,顺序图,UML中的4种交互图顺序图:顺序图是一种强调消息时间顺序的交互图,为读者提供了控制流随着时间推移的清晰的可视化

17、轨迹 通信图:UML 2.0中的通信图实际上就是UML 1中的协作图,它强调的是参加交互的对象的组织,为读者提供了在协作对象结构组织的语境中观察控制流的一个清晰的可视化轨迹 计时图:采用了一种带数字刻度的时间轴来精确地描述消息的顺序交互概述图:是交互图和活动图的混合物,61,顺序图,62,顺序图的主要元素,对象与角色:最顶上一排矩形框。在交互图中,参与交互的对象既可以是具体的事物,又可以是原型化的事物。作为具体的事物,一个对象代表现实世界中的某个东西。例如,aOrder作为类Order的一个实例,可以代表一个特定的订单;而如果作为一个原型化的事件,则aOrder可以代表类Order的任何一个实

18、例。生命线与控制焦点:每个对象都有自己的生命线,对象生命线是一条垂直的虚线,用来表示一个对象在一段时间内存在。,63,顺序图的主要元素,消息:用来描述对象之间所进行的通信的,该信息带有对将要发生的活动的期望。当传送一个消息时,它所引起的动用是一个通过对计算过程的抽象而得到的可执行语句。消息分为五种:调用、返回、发送、创建和销毁调用:表示调用某个对象一个操作,64,顺序图的主要元素,顺序编号:整个消息的传递过程就形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序。除了顺序编号之外,还可以采用嵌套方案:,65,顺序图的主要元素,循环与分支,66,通信图,67,通信

19、图主要元素,链:连接器,是用来表示对象之间的语义连接,一般而言,链是关联的一个实例(包括association、self、global、local等)。不过在UML 2中已经开始弱化它们的使用,因此除非必要,无需过多地考虑它们消息编号:消息的编号有两种,一种是无层次编号,它简单直观;另一种是嵌套的编号,它更易于表示消息的包含关系迭代标记:用*号表示,表示循环,通常还有迭代表达式,用来说明循环规则,68,通信图主要元素,监护条件:通常是用来表示分支的,也就是表示“如果条件为true,才发送消息”在通信图中使用监护条件一定要有所限制,通常应只列出主要的监护条件,否则会影响其阅读。如果需要,尽可能还

20、是通过顺序图来表示,69,70,计时图,坐标轴交换了位置,改为从左到右来表示时间的推移用生命线的“凹下凸起”来表示状态的变化,每个水平位置代表一种不同的状态,状态的顺序可以有意义、也可以没有意义生命线可以跟在一根线后面,在这根线上显示些不同的状态值可显示一个度量时间值的标尺,用刻度表示时间间隔,71,计时图,72,交互概览图,交互概述图是将活动图和顺序图嫁接在一起的图 可以看作活动图的变体,它将活动节点进行细化,用一些小的顺序图来表示活动节点内部的对象控制流 也可以看作顺序图的变体,它用活动图来补充顺序图交互概述图在草图中更加适用,先通过活动图对业务流程进行建模,然后对于一些关键的、复杂度并不

21、高的活动节点进行细化,用顺序图来表示它的对象间的控制流不要盲目的使用交互概述图,对于规模稍大的场景,它并不是一个很好的选择,它将使模型的可读性大大降低,73,阅读交互概述图,74,阅读交互概述图,理解活动控制流:可以将整个顺序图看作一个活动节点分析活动节点:在对整个业务的活动控制流有清晰的认识和了解之后,这时再深入到每个活动节点的细节中去,75,选择建模策略,交互概述图有两种形式,一种是以活动图为主线,并用顺序图表述细节;另一种是以顺序图为主线,并用活动图来表述细节 如果你是对工作流进行建模,那么应该先采用活动图来表示工作流的活动控制流,然后再通过顺序图来描述其中一些活动节点的对象控制流,阐述

22、更多实现细节 如果你是在为代码的设计、实现进行建模,那么可以先通过顺序图理清对象之间的控制流;然后再通过活动图来表示某些重要的方法、调用的算法流程,76,理清主线用活动图表述主线,77,表述细节用顺序图描述细节,78,包图,79,什么是包,在面向对象软件开发的视角中,类显然是构建整个系统的基本构造块。但是对于庞大的应用系统而言,其包含的类将是成百上千,再加上其间“阡陌交纵”的关联关系、多重性等,必然是大大超出了人们可以处理的复杂度。这也就是引入了“包”这种分组事物构造块。包的作用是:1)对语义上相关的元素进行分组;2)定义模型中的“语义边界”;3)提供配置管理单元;4)在设计时,提供并行工作的

23、单元;5)提供封装的命名空间,其中所有名称必须惟一,80,包的表示法,名称:每个包都必须有一个与其它包相区别的名称 拥有的元素:在包中可以拥有各种其它元素,包括类、接口、构件、节点、协作、用例,甚至是其它包或图,81,包图,包的可见性:可以用“+”来表示“public”,用“#”来表示“protected”,用“-”来表示“private”,82,阅读包图,首先根据use关系,可以发现Client包使用Server包,Server包使用System.Data.SqlClient包,结合其元素,不难得知Client负责Order(订单)的输入,并通过Server来管理用户的登录(LoggingS

24、ervice)和数据库存储(DataBase),而Server包还将通过.NET的SQL Server访问工具包来实现与数据库的实际交互。接着再看两个import,从包的命名和其所属的元素不难发现Rule负责处理一些规则,并引用一个具体的窗体(Window),而Client包则通过引用Rule来实现整个窗体和表单的显示、输入等。并且还将暂存Order(订单)信息。最后来看包的泛化关系,GUI有两个具体实现,一个是针对C/S的WindowsGUI,一个是实现B/S的WebGUI。,83,包的依赖关系,use关系:是一种默认的依赖关系,说明客户包(发出者)中的元素以某种方式使用提供者包(箭头指向的

25、包)的公共元素,也就是说客户包依赖于提供者包 import关系:最普遍的包依赖类型,说明提供者包的命名空间将被添加到客户包的命名空间中,客户包中的元素也能够访问提供者包的所有公共元素 access关系:只想使用提供者包中的元素,而不想将其命名空间合并则应使用该关系trace关系:想表示一个包到另一个包的历史发展,则需要使用trace关系来表示,84,包图绘制原则,最小化包之间的依赖,最小化每个包中的public、protected元素的个数,最大化每个包中private元素个数 在建模时应该避免包之间的循环依赖,也就是不能够包含相互依赖的情况,对于这种情况应进行分析:,85,寻找包,分析系统工

26、作流程:1)通过Internet连接到股票信息服务器,获取实时的股票信息,并存入数据库中。2)根据用户的输入和选择,从数据库中获取相应的信息,展现在屏幕中。3)在数据的展现过程中,将需要绘制大量的图表 根据功能模块组织包:,86,确定包与包之间的依赖关系,87,构件图,构件和构件的要素构件是系统中可替换的物理部分,它包装了实现而且遵从并提供一组接口的实现规格说明:对于构件,必须有一个它所提供服务的抽象描述。通俗地说,每个构件都必须提供特定的服务一个或多个实现:构件是一种物理概念,必须被一个或多个实现所支持,当然这些实现都必需符合规格说明受约束的构件标准:每一个构件,在实现时必须遵从某种构件标准

27、封装方法:也就是构件遵从的封装标准部署方法:当件要运行时,首先要部署它,88,构件的类型,实施构件:这类构件是构成一个可执行系统必要和充分的构件,例如动态链接库、可执行文件,另外还包括如COM+、CORBA及企业级Java Beans、动态Web页面也属于实施构件的一部分工作产品构件:这类构件主要是开发过程的产物,包括创建实施构件的源代码文件及数据文件。这些构件并不是直接地参与可执行系统,而且用来产生可执行系统的中间工作产品执行构件:作为一个正在执行的系统的结果而被创建的,例如由DLL实例化形成的COM+对象,89,构件及构件接口表示法,90,91,92,嵌套构件图,93,如何绘制构件图,1

28、确定子系统对外的接口,将整个“在线酒店预订子系统”作为一个构件,考虑其对外接口。显然它首先需要提供用户界面;其次还需要与加盟的酒店系统连接,完成预订工作,94,2 确定子构件和接口显然要有一个构件来实现用户界面,一个构件来完成与酒店系统的连接和预订,另外还应该有一个负责将用户的需求与酒店的供给进行匹配的“调度程序”,95,3 对每个构件分析它们之间的关系,96,组成结构图,97,98,部署图,99,部署图的主要元素,节点:它代表一个运行时的计算资源,例如一台计算机、一个工作站等其它设备 节点的概念和构件有许多相同之处,例如二者有多名称,都可以参与依赖、泛化和关联关系,都可以被嵌套,都可以有实例

29、,都可以参与交互。但它们之间也存在明显的区别:构件是参与系统执行的事物,而节点是执行构件的事物;构件表示逻辑元素的物理打包,而节点表示构件的物理部署本图中建模了四个节点:B/S客户端、C/S客户端、IIS服务器和数据库服务器,100,部署图的主要元素,连接:节点之间最常见的关系就是关联关系(用一根实线表示)。为了更好地表示两个节点之间的关系,我们可以通过“约束”来对连接进行描述。,101,部署图的补充元素,处理器(process):具有处理能力的节点,即可以执行构件设备(device):没有处理能力的节点,至少是不关心其处理能力的节点。例如打印机、IC卡读写器,如果我们的系统不考虑它们内部的芯

30、片,就可建模为设备节点属性和操作:可以为一个节点提供处理器速度、内存容量、网卡数量等属性,可以为其提供启动、关机等操作,102,如何绘制部署图,1确定所需的节点和节点间的连接关系,IC卡读卡器:提供给员工刷卡用,它将收集刷卡的时间信息,传给应用系统,并存入数据库中应用服务器:用来负责从IC卡读卡器中收集信息,并对管理人员提供员工设置、考勤查询等功能数据库服务器:用来存储考勤数据,由于该系统比较小,因此在物理上可以与应用服务器合并客户端软件:提供给管理人员使用,连接应用服务器,完成相应操作,103,2 根据实现描述节点,客户端:需使用Windows操作系统,安装客户端软件(假设名为KaoQing.exe)服务器:包含一个用Delphi开发的服务端软件(设为KqServer.exe),它需要与Access数据库交互(设为KaoQing.mdb),并且需要通过IC卡读卡器的驱动程序(假设名为cardReader.dll)来实现与IC卡读卡器通信IC卡读写器:对于本系统而言,它是不执行构件的设备,不过为了方便员工,安装了3个。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号