《UM(统一建模语言)基础》由会员分享,可在线阅读,更多相关《UM(统一建模语言)基础(103页珍藏版)》请在金锄头文库上搜索。
1、第三章 UML易国洪知识图谱2Agenda什么是什么是UML什么是模型什么是模型常见的常见的UML认识误区认识误区3什么是什么是UMLUML是一种是一种Language(语言)(语言)UML是一种是一种Modeling(建模)(建模)LanguageUML是是Unified(统一)(统一)Modeling Language已进入全面应用阶段的事实标准已进入全面应用阶段的事实标准应用领域正在逐渐扩展,包括嵌入式系统应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域建模、业务建模、流程建模等多个领域成为成为“产生式编程产生式编程”的重要支持技术:的重要支持技术:MDA、可执行可
2、执行UML等等4UML发展历程5UML的统一活动图来自James Odell,状态图来自David Harel 接口来自Microsoft,包的符号来自Apple Macintosh 6什么是模型什么是模型模型是对现实的简化7建模的目的与原则帮助我们按照实际情况或按我们需要的样帮助我们按照实际情况或按我们需要的样式对系统进行可视化;提供一种详细说明式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进系统构造的模板;对我们所做出的决策进行文档化行文档化 仅当需要模型时,才构建它仅当需要模型时,才构建它 选
3、择要创建什么模型对如何动手解决问题选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响;和如何形成解决方案有着意义深远的影响;最好的模型是与现实相联系的;最好的模型是与现实相联系的;8为什么使用UML建模UML是一种统一的、标准化的建模语言是一种统一的、标准化的建模语言 UML是一种应用面很广泛的建模语言是一种应用面很广泛的建模语言9UML可以建立什么模型模型的种类模型的用途业务模型对业务过程、工作流、组织的建模需求模型对捕获的需求进行整理和分析的工具,辅助开发人员与用户进行沟通设计模型包含高层设计(架构模型)和详细设计模型,用于统一开发人员、沟通设计信息数据库模型设计数据
4、库的结构、表结构以及与应用系统的交互实现模型用来理清软件的组成、部署方案,为安装与维护人员的工作提供指导10草图与蓝图蓝图一般是指采用蓝图一般是指采用CASE工具绘制的、正式工具绘制的、正式的、规范的的、规范的UML模型模型 草图则通常是指手工绘制的、规范度较低草图则通常是指手工绘制的、规范度较低的在纸张的的在纸张的UML模型模型 大胆地绘制草图,尽可能基于草图进行讨大胆地绘制草图,尽可能基于草图进行讨论。对于局部的、重要性不高的、共享范论。对于局部的、重要性不高的、共享范围较小的围较小的UML模型,直接将草图扫描到电模型,直接将草图扫描到电脑存档即可;对于全局的、重要性高的、脑存档即可;对于
5、全局的、重要性高的、高度共享的,在草图的基础上用高度共享的,在草图的基础上用CASE工具工具绘制成为正式的蓝图,并将其纳入统一的绘制成为正式的蓝图,并将其纳入统一的模型管理中模型管理中11谁应该建模业务建模:以领域专家为主,需求分析人员是主业务建模:以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与力,系统分析员、架构师可参与需求模型:以需求分析人员为主,系统分析员是需求模型:以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人主力,领域专家提供指导,架构师和资深开发人员参与员参与设计模型:高层设计模型以架构师为主,系统分设计模型:高层设计模型以架构师为主,系统
6、分析员从需求方面提供支持,资深开发人员从技术析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发实现方面提供支持。详细设计模型则以资深开发人员为主,架构师提供指导。人员为主,架构师提供指导。实现模型:以资深开发人员(设计人员)为主,实现模型:以资深开发人员(设计人员)为主,架构师提供总体指导。架构师提供总体指导。数据库模型:以数据库开发人员为主,架构师提数据库模型:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。供指导,资深开发人员(设计人员)予以配合。12UML 最适于的过程最适于的过程Use-case driven 用例驱动的Arch
7、itecture-centric以体系结构为中心Iterative & incremental 迭代的和增量的13UML修饰命名:也就是为对象、关系和图起名字。和任何命名:也就是为对象、关系和图起名字。和任何语言一样,名字都是一个标识符语言一样,名字都是一个标识符 UMLUML修饰:修饰:在为了更好的表示这些细节,在为了更好的表示这些细节,UML中中还提供了一些修饰符号,例如不同可视性的符号、还提供了一些修饰符号,例如不同可视性的符号、用斜体字表示抽象类用斜体字表示抽象类 可见性规则标准表示法Rose属性Rose方法public任一元素,若能访问包容器,就可以访问它+ + protected只
8、有包容器中的元素或包容器的后代才能够看到它# private只有包容器中的元素才能够看得到它- package只有声明在同一个包中的元素才能够看到该元素14UML定义的图图名功能备注类图描述类、类的特性以及类之间的关系UML 1原有对象图描述一个时间点上系统中各个对象的一个快照UML 1非正式图组成结构图描述类的运行时刻的分解UML 2.0新增构件图描述构件的结构与连接UML 1原有部署图描述在各个节点上的部署UML 1原有包图描述编译时的层次结构UML中非正式图用例图描述用户与系统如何交互UML 1原有活动图描述过程行为与并行行为UML 1原有状态图描述事件如何改变对象生命周期UML 1原有
9、顺序图描述对象之间的交互,重点在强调顺序UML 1原有通信图描述对象之间的交互,重点在于连接UML 1中的协作图计时图描述对象之间的交互,重点在于定时UML 2.0 新增交互纵览图是一种顺序图与活动图的混合UML 2.0新增154+1视图设计视图设计视图实现视图实现视图部署视部署视图图过程视图过程视图Use case视图视图Use Use case case ViewView描描述述系系统统的的外外部部特特性性、系系统功能等。统功能等。Implementation Implementation ViewView 表示系统表示系统的实现特征,常的实现特征,常用构件图表示。用构件图表示。Desig
10、n Design ViewView 描描述述系系统统设设计计特特征征,包包括括结结构构模模型型视视图图和和行行为为模模型型视视图图,前前者者描描述述系系统统的的静静态态结结构构( (类类图图、对对象象图图) ),后后者者描描述述系系统统的的动动态态行行为为( (交交互互图图、状态图、活动图状态图、活动图) )。Process ViewProcess View 表示系统内表示系统内部的控制机制。常用类图描部的控制机制。常用类图描述过程结构,用交互图描述述过程结构,用交互图描述过程行为。过程行为。Deployment ViewDeployment View部署部署视视图描述系统的物理图描述系统的物
11、理部署部署特特征。用征。用部署部署图表示图表示。Logic ModelPhysic ModelDesign ViewAnalysts/DesignersStructure 设计视图Process ViewPerformanceScalabilityThroughput System integrators进程视图Implementation ViewProgrammers Software management 实现视图Deployment ViewSystem topology Delivery, installationcommunicationSystem engineering部署视图
12、Use-Case ViewEnd-user Functionality用例视图16UML视图和图主要领域视图图结构静态视图类图设计视图组成结构图、协作图、构件图用例视图用例图动态状态视图状态图活动视图活动图交互视图顺序图、通信图物理部署视图部署图模型管理模型管理视图包图特性描述包图17UML图形分类18UML模型关系的种类种类变种表示法关键字或符号种类变种表示法关键字或符号抽象派生依赖关系derive导入 私有依赖关系access显现manifest公有import实现实现关系关系虚线加空心三角信息流flow精化依赖关系refine包含并merge跟踪trace许可permit关联关关联关系关
13、系实线协议符合未指定绑定依赖关系bind(参数表)替换依赖关系substitute部署deploy使用调用call扩展Extendextend(扩展点)创建create扩展extension扩展关系展关系实线加实心三角实例化instantiate泛化泛化关系泛化关系实线加空间三角职责responsibility包含依赖关系include发送send19关联关系关联(关联(Association)表示两个类之间存在某种语)表示两个类之间存在某种语义上的联系。关联关系提供了通信的路径,它是义上的联系。关联关系提供了通信的路径,它是所有关系中最通用、语义最弱的。所有关系中最通用、语义最弱的。在在UM
14、L中,使用一条实线来表示关联关系中,使用一条实线来表示关联关系 在关联关系中,有两种比较特殊的关系:聚合和在关联关系中,有两种比较特殊的关系:聚合和组合组合 聚合关系:聚合(聚合关系:聚合(Aggregation)是一种特殊形)是一种特殊形式的关联。聚合表示类之间的关系是整体与部分式的关联。聚合表示类之间的关系是整体与部分的关系的关系 如果发现如果发现“部分部分”类的存在,是完全依赖于类的存在,是完全依赖于“整整体体”类的,那么就应该使用类的,那么就应该使用“组合组合”关系来描述关系来描述20泛化、实现、扩展与依赖泛化关系描述了一般事物与该事物中的特殊种类之间的泛化关系描述了一般事物与该事物中
15、的特殊种类之间的关系,也就是父类与子类之间的关系。关系,也就是父类与子类之间的关系。实现关系是用来规定接口和实现接口的类或组件之间的实现关系是用来规定接口和实现接口的类或组件之间的关系。接口是操作的集合,这些操作用于规定类或组件关系。接口是操作的集合,这些操作用于规定类或组件的服务。的服务。 扩展表示将一个构造型附加到一个元类(扩展表示将一个构造型附加到一个元类(metaclass)上,)上,使得元类的定义中包括这个构造型。使得元类的定义中包括这个构造型。 有两个元素有两个元素X、Y,如果修改元素,如果修改元素X的定义可能会引起对的定义可能会引起对另一个元素另一个元素Y的定义的修改,则称元素的
16、定义的修改,则称元素Y依赖依赖(Dependency)于元素)于元素X。 21类图 class diagram描述类以及类之间的关系单个类的符号表示访问权限的表示:public +; protect # ; private 类符号的几种变体Clock - hour : int- minute : int- second : int+ ShowTime() : void+ SetTime(newH : int = 0, newM : int = 0, newS : int = 0) : void22表示类之间关系的UML符号派生 Student 派生GraduateStudent继承 Gradu
17、ateStudent继承Student泛化 Student泛化GraduateStudent特化 GraduateStudent继承Student23聚合aggregation: Airport 聚集Aircraft一个机场可以有0架或多架(*)飞机一架飞机可以正停在0个或1个机场24组合composition: Car由Tire组成汽车包含轮胎1辆汽车包含4到5个轮胎1个轮胎只能装在1辆汽车上25汽车使用(依赖)加油站2627示例类图先看清有哪些类,然先看清有哪些类,然后看看类之间存在的后看看类之间存在的关系,并结合多重性关系,并结合多重性来理解类图的结构特来理解类图的结构特点以及各个属性和
18、方点以及各个属性和方法的含义法的含义 28读图过程读出类:图中共有读出类:图中共有7个类,个类,Order、OrderItem、Customer、Consignee、DeliverOrder、Peddlery、Prodcut读出关系:从图中关系最复杂(也就是线读出关系:从图中关系最复杂(也就是线最密集)的类开始阅读,本图中最复杂的最密集)的类开始阅读,本图中最复杂的就是就是Order类。类。1)OrderItem和和Order之间是组合关系,之间是组合关系,根据箭头的方向可知根据箭头的方向可知Order包含了包含了OrderItem。2)Order类和类和Customer、Consignee、
19、DeliverOrder是关联关系。也就是说,一是关联关系。也就是说,一个订单和客户、收货人、送货单是相关的。个订单和客户、收货人、送货单是相关的。29接口与抽象类抽象类是一种不能够被直接实例化的类,也就是说不能抽象类是一种不能够被直接实例化的类,也就是说不能够创建一个属于抽象类的对象够创建一个属于抽象类的对象接口则是一种类似于抽象接口则是一种类似于抽象类的机制,它是一个没有类的机制,它是一个没有具体实现的类具体实现的类 30关联类关联类即是关联也是类,它不仅像关联那样连接两个类,关联类即是关联也是类,它不仅像关联那样连接两个类,而且还可以定义一组属于关系本身的特性而且还可以定义一组属于关系本
20、身的特性 31对象图对象是类的实例,是具有具体属性值的具体事物例如你的时钟,品牌是:瑞士,型号是R001下图中的图标说明了如何用UML来表示对象。注意对象的图标也是一个矩形,并且对象名下面要带下划线。具体实例的名字位于冒号的左边而该实例所属的类名位于冒号的右边。实例的名字以一个小写字母开头。也有可能是一个匿名类。32开发过程33(0)(0)业务业务(1)(1)需求需求(2)(2)分析:结构分析:结构(3)(3)分析:行为分析:行为(4)(4)设计设计34两种分析方法35用例图用例图能描述系统、子系统、或类的行为。用例图能描述系统、子系统、或类的行为。它将系统功能划分成对参与者有用的需求。它将系
21、统功能划分成对参与者有用的需求。站在用户的角度看待系统、定义系统站在用户的角度看待系统、定义系统 ;使;使用用户能够看懂的语言来表述。表示处于用用户能够看懂的语言来表述。表示处于同一系统中的参与者和用例之间的关系的同一系统中的参与者和用例之间的关系的图图表示法:用例图是包括参与者、由系统边表示法:用例图是包括参与者、由系统边界(一个矩形)封闭一组用例、参与者和界(一个矩形)封闭一组用例、参与者和用例之间的关联、用例间的关系以及参与用例之间的关联、用例间的关系以及参与者泛化的图。者泛化的图。36用例图组成元素用例图组成元素参与者参与者用例用例系统边界系统边界关系关系37参与者参与者参与者是与系统
22、、子系统或类发生交互作用的外部用户、参与者是与系统、子系统或类发生交互作用的外部用户、进程或其他系统的理想化概念。作为外部用户与系统发生进程或其他系统的理想化概念。作为外部用户与系统发生交互作用,这是参与者的特征。交互作用,这是参与者的特征。参与者可以是人,也可以是外部计算机系统和外部进程、参与者可以是人,也可以是外部计算机系统和外部进程、硬件、时钟。硬件、时钟。表示法:用一个小人图标表示参与者表示法:用一个小人图标表示参与者1)外部系统:当系统需要与其它系统)外部系统:当系统需要与其它系统交互时,如交互时,如ATM柜员机系统中,银行后柜员机系统中,银行后台系统就是一个参与者;台系统就是一个参
23、与者;2)硬件设备:如果系统需要与硬件设)硬件设备:如果系统需要与硬件设备交互时,如在开发备交互时,如在开发IC卡门禁系统时,卡门禁系统时,IC卡读写就是一个参与者;卡读写就是一个参与者;3)时钟:当系统需要定时触发时,时)时钟:当系统需要定时触发时,时钟就是参与者钟就是参与者38用例用例用例是外部可见的一个系统功能单元,这些功能用例是外部可见的一个系统功能单元,这些功能单元由系统所提供,并通过一系列系统功能单元单元由系统所提供,并通过一系列系统功能单元与一个或多个参与者之间交换消息所表达。与一个或多个参与者之间交换消息所表达。用例的用途是在不揭示系统内部构造的情况下定用例的用途是在不揭示系统
24、内部构造的情况下定义连贯的行为。义连贯的行为。用例的定义包含用例所必需的所有行为用例的定义包含用例所必需的所有行为表示法:用例用一个包括用例名的椭圆形来表示。表示法:用例用一个包括用例名的椭圆形来表示。39系统边界系统边界:描述了系统的边界,以及描述了外部系统与系统之间交互的边界表示法:用封闭所有用例的矩形表示40关系参与者与用例以及用例之间的关系41 举例42状态图显示一个状态机(包括简单状态、转换、嵌套组成状态)的图。表示法:简单状态图表示成直边圆角矩形框43多种状态的表示44阅读最简单的状态图最为核心的元素无外乎是两个:一个是用圆角矩形表示最为核心的元素无外乎是两个:一个是用圆角矩形表示
25、的状态(初态和终态例外);另一个则是在状态之间的、的状态(初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换包含一些文字描述的有向箭头线,这些箭头线称为转换45转换的五要素源状态:即受转换影响的状态源状态:即受转换影响的状态目标状态:当转换完成后对象的状态目标状态:当转换完成后对象的状态 触发事件:用来为转换定义一个事件,包括调用、改变、触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件信号、时间四类事件前置条件:布尔表达式,决定是否激活转换、前置条件:布尔表达式,决定是否激活转换、动作:转换激活时的操作动作:转换激活时的操作46复杂转
26、换转换类型描述语法外部转换 对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换事件(参数)监护条件/动作内部转换 对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换事件(参数)监护条件/动作进入转换 当进入某一状态时,执行相应活动entry/活动退出转换 当离开某一状态时,执行相应活动exit/活动4748各种转换的区别进入和退出转换:当进入一个状态时,执进入和退出转换:当进入一个状态时,执行某个动作;或当退出某个状态时,执行行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转什么动作。这时就可
27、以使用进入和退出转换来表示换来表示内部转换:用来处理一些不离开该状态的内部转换:用来处理一些不离开该状态的事件事件 49使用复合状态使用复合状态50绘制状态图绘制状态机图的理想步骤是:寻找主要的状态,绘制状态机图的理想步骤是:寻找主要的状态,确定状态之间的转换,细化状态内的活动与转换,确定状态之间的转换,细化状态内的活动与转换,用复合状态来展开细节用复合状态来展开细节寻找主要状态:对于航班机票预订系统而言,显寻找主要状态:对于航班机票预订系统而言,显然包括的状态主要有然包括的状态主要有 - 在刚确定飞机计划时,显然是没有任何预订在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都
28、将处于这种的,并且在有人预订机票之前都将处于这种“无无预订预订”状态状态 - 对订座而言显然有对订座而言显然有“部分预订部分预订”和和“预订完预订完”两种状态两种状态 - 而当航班快要起飞时,显然要而当航班快要起飞时,显然要“预订关闭预订关闭”总结一下,主要有四种状态:无预订、部分预订、总结一下,主要有四种状态:无预订、部分预订、预订完以及预订关闭预订完以及预订关闭 51活动图活动图是一种特殊形式的状态机,用于对计算机流程和工作流程建模。活动图中的状态表示计算过程中所处的各种状态,而不是普通对象的状态通常,活动图假定在整个计算处理的过程中没有外部事件引起中断,否则普通的状态机更适合描述这种情况
29、活动节点是活动图中最主要的元素之一,它用来活动节点是活动图中最主要的元素之一,它用来表示一个活动表示一个活动活动节点活动节点表示法:表示成带有圆形边线的矩形框52活动图的主要元素分支与前置条件:分支是用菱形表示的,它有一个进入分支与前置条件:分支是用菱形表示的,它有一个进入转换(箭头从外指向分支符号),转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符一个或多个离开转换(箭头从分支符号指向外)。而每个离开转换上都会号指向外)。而每个离开转换上都会有一个监护条件,用来表示满足什么有一个监护条件,用来表示满足什么条件的时候执行该转换。条件的时候执行该转换。分岔与汇合:分岔与汇合:53转
30、换转换转换:当一个活动结束时,控制流就会马上转换:当一个活动结束时,控制流就会马上传递给下一个活动节点,在活动图中称之传递给下一个活动节点,在活动图中称之为为“转换转换”,用一条带箭头的直线来表示,用一条带箭头的直线来表示 54阅读简单活动图55带泳道的活动图56带对象流的活动图5758绘制活动图“活动图活动图” 比较直观易懂;与传统的流程图十分比较直观易懂;与传统的流程图十分的相近,只要能够读懂活动图,就不难画出活动的相近,只要能够读懂活动图,就不难画出活动图图绘制时首先决定是否采用泳道:主要根据活动图绘制时首先决定是否采用泳道:主要根据活动图中是否要体现出活动的不同实施者中是否要体现出活动
31、的不同实施者然后尽量使用分支、分岔和汇合等基本的建模元然后尽量使用分支、分岔和汇合等基本的建模元素来描述活动控制流程素来描述活动控制流程如果需要,加入对象流以及对象的状态变化,利如果需要,加入对象流以及对象的状态变化,利用一些高级的建模元素(如辅助活动图、汇合描用一些高级的建模元素(如辅助活动图、汇合描述、发送信号与接收信号、引脚、扩展区)来表述、发送信号与接收信号、引脚、扩展区)来表示更多的信息示更多的信息活动图的建模关键是表示出控制流,其它的建模活动图的建模关键是表示出控制流,其它的建模元素都是围绕这一宗旨所进行的补充元素都是围绕这一宗旨所进行的补充59顺序图UMLUML中的中的4 4种交
32、互图种交互图顺序图:顺序图是一种强调消息时间顺序的交互顺序图:顺序图是一种强调消息时间顺序的交互图,为读者提供了控制流随着时间推移的清晰的图,为读者提供了控制流随着时间推移的清晰的可视化轨迹可视化轨迹 通信图:通信图:UML 2.0中的通信图实际上就是中的通信图实际上就是UML 1中的协作图,它强调的是参加交互的对象的组织,中的协作图,它强调的是参加交互的对象的组织,为读者提供了在协作对象结构组织的语境中观察为读者提供了在协作对象结构组织的语境中观察控制流的一个清晰的可视化轨迹控制流的一个清晰的可视化轨迹 计时图:采用了一种带数字刻度的时间轴来精确计时图:采用了一种带数字刻度的时间轴来精确地描
33、述消息的顺序地描述消息的顺序交互概述图:是交互图和活动图的混合物交互概述图:是交互图和活动图的混合物 60顺序图61顺序图的主要元素对象与角色:最顶上一排矩形框。在交互图中,参与交对象与角色:最顶上一排矩形框。在交互图中,参与交互的对象既可以是具体的事物,又可以是原型化的事物。互的对象既可以是具体的事物,又可以是原型化的事物。作为具体的事物,一个对象代作为具体的事物,一个对象代表现实世界中的某个东西。例如,表现实世界中的某个东西。例如,aOrder作为类作为类Order的一个实例,可以代表一个的一个实例,可以代表一个特定的订单;而如果作为一个原型化的事特定的订单;而如果作为一个原型化的事件,则
34、件,则aOrder可以代表类可以代表类Order的任何一的任何一个实例。个实例。生命线与控制焦点:每个对象都有自己的生命线与控制焦点:每个对象都有自己的生命线,对象生命线是一条垂直的虚线,生命线,对象生命线是一条垂直的虚线,用来表示一个对象在一段时间内存在。用来表示一个对象在一段时间内存在。62顺序图的主要元素消息:用来描述对象之间所进行的通信的,该信息带有消息:用来描述对象之间所进行的通信的,该信息带有对将要发生的活动的期望。当传送一个消息时,它所引对将要发生的活动的期望。当传送一个消息时,它所引起的动用是一个通过对计算过程的抽象而得到的可执行起的动用是一个通过对计算过程的抽象而得到的可执行
35、语句。语句。消息分为五种:调用、返回、发送、创建和销毁消息分为五种:调用、返回、发送、创建和销毁调用:表示调用某个对象一个操作调用:表示调用某个对象一个操作 63顺序图的主要元素顺序编号:整个消息的传递过程就形成了一个完整的序顺序编号:整个消息的传递过程就形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序。除了顺序编号之外,还可以采用顺序号来表示其顺序。除了顺序编号之外,还可以采用嵌套方案:嵌套方案:64顺序图的主要元素循环与分支循环与分支65通信图66通信图主要元素链:连接器,是用来表示对象之间的语义链:连接器
36、,是用来表示对象之间的语义连接,一般而言,链是关联的一个实例连接,一般而言,链是关联的一个实例(包括(包括association、self、global、local等)。不过在等)。不过在UML 2中已经开始弱化它们的使用,因此除非必中已经开始弱化它们的使用,因此除非必要,无需过多地考虑它们要,无需过多地考虑它们消息编号:消息的编号有两种,一种是无消息编号:消息的编号有两种,一种是无层次编号,它简单直观;另一种是嵌套的层次编号,它简单直观;另一种是嵌套的编号,它更易于表示消息的包含关系编号,它更易于表示消息的包含关系迭代标记:用迭代标记:用*号表示,表示循环,通常还号表示,表示循环,通常还有迭
37、代表达式,用来说明循环规则有迭代表达式,用来说明循环规则67通信图主要元素监护条件:通常是用来表示分支的,也就是表示监护条件:通常是用来表示分支的,也就是表示“如果如果条件为条件为true,才发送消息,才发送消息” 在通信图中使用监护条件一定要有所限制,通常应只列在通信图中使用监护条件一定要有所限制,通常应只列出主要的监护条件,否则会影响其阅读。如果需要,尽出主要的监护条件,否则会影响其阅读。如果需要,尽可能还是通过顺序图来表示可能还是通过顺序图来表示 6869计时图坐标轴交换了位置,改为从左到右来表示时间的推移坐标轴交换了位置,改为从左到右来表示时间的推移用生命线的用生命线的“凹下凸起凹下凸
38、起”来表示状态的变化,每个水平来表示状态的变化,每个水平位置代表一种不同的状态,状态的顺序可以有意义、也位置代表一种不同的状态,状态的顺序可以有意义、也可以没有意义可以没有意义生命线可以跟在一根生命线可以跟在一根线后面,在这根线上线后面,在这根线上显示些不同的状态值显示些不同的状态值可显示一个度量时间可显示一个度量时间值的标尺,用刻度表值的标尺,用刻度表示时间间隔示时间间隔70计时图71交互概览图交互概览图交互概述图是将活动图和顺序图嫁接在一起的图交互概述图是将活动图和顺序图嫁接在一起的图 可以看作活动图的变体,它将活动节点进行细化,可以看作活动图的变体,它将活动节点进行细化,用一些小的顺序图
39、来表示活动节点内部的对象控用一些小的顺序图来表示活动节点内部的对象控制流制流 也可以看作顺序图的变体,它用活动图来补充顺也可以看作顺序图的变体,它用活动图来补充顺序图序图交互概述图在草图中更加适用,先通过活动图对交互概述图在草图中更加适用,先通过活动图对业务流程进行建模,然后对于一些关键的、复杂业务流程进行建模,然后对于一些关键的、复杂度并不高的活动节点进行细化,用顺序图来表示度并不高的活动节点进行细化,用顺序图来表示它的对象间的控制流它的对象间的控制流不要盲目的使用交互概述图,对于规不要盲目的使用交互概述图,对于规模稍大的场景,它并不是一个很好的模稍大的场景,它并不是一个很好的选择,它将使模
40、型的可读性大大降低选择,它将使模型的可读性大大降低72阅读交互概述图73阅读交互概述图理解活动控制流:可以将整个顺序图看作一个活动节点理解活动控制流:可以将整个顺序图看作一个活动节点分析活动节点:在对分析活动节点:在对整个业务的活动控制整个业务的活动控制流有清晰的认识和了流有清晰的认识和了解之后,这时再深入解之后,这时再深入到每个活动节点的细到每个活动节点的细节中去节中去 74选择建模策略交互概述图有两种形式,一种是以活动图为主线,交互概述图有两种形式,一种是以活动图为主线,并用顺序图表述细节;另一种是以顺序图为主线,并用顺序图表述细节;另一种是以顺序图为主线,并用活动图来表述细节并用活动图来
41、表述细节 如果你是对工作流进行建模,那么应该先采用活如果你是对工作流进行建模,那么应该先采用活动图来表示工作流的活动控制流,然后再通过顺动图来表示工作流的活动控制流,然后再通过顺序图来描述其中一些活动节点的对象控制流,阐序图来描述其中一些活动节点的对象控制流,阐述更多实现细节述更多实现细节 如果你是在为代码的设计、实现进行建模,那么如果你是在为代码的设计、实现进行建模,那么可以先通过顺序图理清对象之间的控制流;然后可以先通过顺序图理清对象之间的控制流;然后再再通过活动图来表示某些重要的方法、调用的通过活动图来表示某些重要的方法、调用的算法流程算法流程 75理清主线用活动图表述主线76表述细节用
42、顺序图描述细节77包图78什么是包在面向对象软件开发的视角中,类显然是构建整在面向对象软件开发的视角中,类显然是构建整个系统的基本构造块。但是对于庞大的应用系统个系统的基本构造块。但是对于庞大的应用系统而言,其包含的类将是成百上千,再加上其间而言,其包含的类将是成百上千,再加上其间“阡陌交纵阡陌交纵”的关联关系、多重性等,必然是大大的关联关系、多重性等,必然是大大超出了人们可以处理的复杂度。这也就是引入了超出了人们可以处理的复杂度。这也就是引入了“包包”这种分组事物构造块。这种分组事物构造块。包的作用是:包的作用是:1)对语义上相关的元素进行分组;)对语义上相关的元素进行分组;2)定义模型中的
43、)定义模型中的“语义边界语义边界”;3)提供配置管理单元;)提供配置管理单元;4)在设计时,提供并行工作的单元;)在设计时,提供并行工作的单元;5)提供封装的命名空间,其中所有名称必须惟一)提供封装的命名空间,其中所有名称必须惟一79包的表示法名称:每个包都必须有一个与其它包相区别的名称名称:每个包都必须有一个与其它包相区别的名称 拥有的元素:在包中可以拥有各种其它元素,包括类、拥有的元素:在包中可以拥有各种其它元素,包括类、接口、构件、节点、协作、用例,甚至是其它包或图接口、构件、节点、协作、用例,甚至是其它包或图 80包图包的可见性:可以用包的可见性:可以用“+”来表示来表示“public
44、”,用,用“#”来表示来表示“protected”,用用“-”来表示来表示“private” 81阅读包图首先根据首先根据use关系,可以发现关系,可以发现Client包使用包使用Server包,包,Server包使用包使用System.Data.SqlClient包,结合其元素,不难得包,结合其元素,不难得知知Client负责负责Order(订单)的输入,并通过(订单)的输入,并通过Server来管理用户的登录(来管理用户的登录(LoggingService)和)和数据库存储(数据库存储(DataBase),而),而Server包还将通包还将通过过.NET的的SQL Server访问工具包来
45、实现与数据库访问工具包来实现与数据库的实际交互。的实际交互。接着再看两个接着再看两个import,从包的命名和其所属,从包的命名和其所属的元素不难发现的元素不难发现Rule负责处理一些规则,并引用负责处理一些规则,并引用一个具体的窗体(一个具体的窗体(Window),而),而Client包则通过包则通过引用引用Rule来实现整个窗体和表单的显示、输入等。来实现整个窗体和表单的显示、输入等。并且还将暂存并且还将暂存Order(订单)信息。(订单)信息。最后来看包的泛化关系,最后来看包的泛化关系,GUI有两个具体实现,有两个具体实现,一个是针对一个是针对C/S的的WindowsGUI,一个是实现,
46、一个是实现B/S的的WebGUI。82包的依赖关系use关系:是一种默认的依赖关系关系:是一种默认的依赖关系 ,说明客,说明客户包(发出者)中的元素以某种方式使用提供者户包(发出者)中的元素以某种方式使用提供者包(箭头指向的包)的公共元素,也就是说客户包(箭头指向的包)的公共元素,也就是说客户包依赖于提供者包包依赖于提供者包 import关系:最普遍的包依赖类型,说明提关系:最普遍的包依赖类型,说明提供者包的命名空间将被添加到客户包的命名空间供者包的命名空间将被添加到客户包的命名空间中,客户包中的元素也能够访问提供者包的所有中,客户包中的元素也能够访问提供者包的所有公共元素公共元素 acces
47、s关系:只想使用提供者包中的元素,关系:只想使用提供者包中的元素,而不想将其命名空间合并则应使用该关系而不想将其命名空间合并则应使用该关系trace关系:想表示一个包到另一个包的历史关系:想表示一个包到另一个包的历史发展,则需要使用发展,则需要使用trace关系来表示关系来表示 83包图绘制原则最小化包之间的依赖,最小化每个包中的最小化包之间的依赖,最小化每个包中的public、protected元素的个数,最大化每个包中元素的个数,最大化每个包中private元素个数元素个数 在建模时应该避免包之间的循环依赖,也就是不能够包在建模时应该避免包之间的循环依赖,也就是不能够包含相互依赖的情况,对
48、于这种情况应进行分析:含相互依赖的情况,对于这种情况应进行分析: 84寻找包分析系统工作流程:分析系统工作流程:1)通过)通过Internet连接到股票信息服务器,获取实时的股连接到股票信息服务器,获取实时的股票信息,并存入数据库中。票信息,并存入数据库中。2)根据用户的输入和选择,从数据库中获取相应的信)根据用户的输入和选择,从数据库中获取相应的信息,展现在屏幕中。息,展现在屏幕中。3)在数据的展现过程中,将需要绘制大量的图表)在数据的展现过程中,将需要绘制大量的图表 根据功能模块组织包:根据功能模块组织包:包分析与功能.NET支持包SocketClient负责连接Internet服务器,获
49、取实时股票信息System.Net.SocketsDataAccess负责从数据库读写实时股票信息System.Data.SqlclientUI负责响应用户输入和选择,并展现信息System.Windows.FormsGraphicGenerate负责根据数据库的信息生成相应的图表System.Drawing85确定包与包之间的依赖关系86构件图构件图构件和构件的要素构件和构件的要素构件是系统中可替换的物理部分,它包装了实现构件是系统中可替换的物理部分,它包装了实现而且遵从并提供一组接口的实现而且遵从并提供一组接口的实现规格说明:对于构件,必须有一个它所提供服务规格说明:对于构件,必须有一个它
50、所提供服务的抽象描述。通俗地说,每个构件都必须提供特的抽象描述。通俗地说,每个构件都必须提供特定的服务定的服务一个或多个实现:构件是一种物理概念,必须被一个或多个实现:构件是一种物理概念,必须被一个或多个实现所支持,当然这些实现都必需符一个或多个实现所支持,当然这些实现都必需符合规格说明合规格说明受约束的构件标准:每一个构件,在实现时必须受约束的构件标准:每一个构件,在实现时必须遵从某种构件标准遵从某种构件标准封装方法:也就是构件遵从的封装标准封装方法:也就是构件遵从的封装标准部署方法:当件要运行时,首先要部署它部署方法:当件要运行时,首先要部署它87构件的类型实施构件:这类构件是构成一个可执
51、行系实施构件:这类构件是构成一个可执行系统必要和充分的构件,例如动态链接库、统必要和充分的构件,例如动态链接库、可执行文件,另外还包括如可执行文件,另外还包括如COM+、CORBA及企业级及企业级Java Beans、动态、动态Web页面也属于实施构件的一部分页面也属于实施构件的一部分工作产品构件:这类构件主要是开发过程工作产品构件:这类构件主要是开发过程的产物,包括创建实施构件的源代码文件的产物,包括创建实施构件的源代码文件及数据文件。这些构件并不是直接地参与及数据文件。这些构件并不是直接地参与可执行系统,而且用来产生可执行系统的可执行系统,而且用来产生可执行系统的中间工作产品中间工作产品执
52、行构件:作为一个正在执行的系统的结执行构件:作为一个正在执行的系统的结果而被创建的,例如由果而被创建的,例如由DLL实例化形成的实例化形成的COM+对象对象88构件及构件接口表示法899091嵌套构件图92如何绘制构件图如何绘制构件图1 确定子系统对外的接口将整个将整个“在线酒店预订子系统在线酒店预订子系统”作为一个构件,考虑其作为一个构件,考虑其对外接口。显然它首先需要提供用户界面;其次还需要对外接口。显然它首先需要提供用户界面;其次还需要与加盟的酒店系统连接,完成预订工作与加盟的酒店系统连接,完成预订工作 932 确定子构件和接口显然要有一个构件来实现用户界面,一个构件来完成与酒店系统的连
53、接和预订,另外还应该有一个负责将用户的需求与酒店的供给进行匹配的“调度程序”943 对每个构件分析它们之间的关系对每个构件分析它们之间的关系95组成结构图9697部署图98部署图的主要元素节点:它代表一个运行时的计算资源,例节点:它代表一个运行时的计算资源,例如一台计算机、一个工作站等其它设备如一台计算机、一个工作站等其它设备 节点的概念和构件有许多相同之处,例如节点的概念和构件有许多相同之处,例如二者有多名称,都可以参与依赖、泛化和二者有多名称,都可以参与依赖、泛化和关联关系,都可以被嵌套,都可以有实例,关联关系,都可以被嵌套,都可以有实例,都可以参与交互。但它们之间也存在明显都可以参与交互
54、。但它们之间也存在明显的区别:构件是参与系统执行的事物,而的区别:构件是参与系统执行的事物,而节点是执行构件的事物;构件表示逻辑元节点是执行构件的事物;构件表示逻辑元素的物理打包,而节点表示构件的物理部素的物理打包,而节点表示构件的物理部署署本图中建模了四个节点:本图中建模了四个节点:B/S客户端、客户端、C/S客户端、客户端、IIS服务器和数据库服务器服务器和数据库服务器99部署图的主要元素连接:节点之间最常见的关系就是关联关系(用一根实连接:节点之间最常见的关系就是关联关系(用一根实线表示)。为了更好地表示两个节点之间的关系,我们线表示)。为了更好地表示两个节点之间的关系,我们可以通过可以
55、通过“约束约束”来对连接进行描述。来对连接进行描述。源节点目标节点约束含义B/S客户端IIS服务器HTTP+Network网络连接,使用HTTP协议C/S客户端IIS服务器HTTP+SOAP+Network网连接,通过Web Service访问服务IIS服务器数据库服务器ADO.NET.NET提供的数据库访问解决方案100部署图的补充元素处理器(处理器(process):具有处理能力的):具有处理能力的节点,即可以执行构件节点,即可以执行构件设备(设备(device):没有处理能力的节):没有处理能力的节点,至少是不关心其处理能力的节点。例点,至少是不关心其处理能力的节点。例如打印机、如打印机
56、、IC卡读写器,如果我们的系统卡读写器,如果我们的系统不考虑它们内部的芯片,就可建模为设备不考虑它们内部的芯片,就可建模为设备节点属性和操作:可以为一个节点提供处节点属性和操作:可以为一个节点提供处理器速度、内存容量、网卡数量等属性,理器速度、内存容量、网卡数量等属性,可以为其提供启动、关机等操作可以为其提供启动、关机等操作 101如何绘制部署图如何绘制部署图1确定所需的节点和节点间的连接关系确定所需的节点和节点间的连接关系IC卡读卡器:提供给员工刷卡用,它将收集刷卡的时间信息,传给卡读卡器:提供给员工刷卡用,它将收集刷卡的时间信息,传给应用系统,并存入数据库中应用系统,并存入数据库中应用服务
57、器:用来负责从应用服务器:用来负责从IC卡读卡器中收集信息,并对管理人员提卡读卡器中收集信息,并对管理人员提供员工设置、考勤查询等功能供员工设置、考勤查询等功能数据库服务器:用来存储考勤数据,由于该系统比较小,因此在物数据库服务器:用来存储考勤数据,由于该系统比较小,因此在物理上可以与应用服务器合并理上可以与应用服务器合并客户端软件:提供给管理人员使用,连接应用服务器,完成相应操客户端软件:提供给管理人员使用,连接应用服务器,完成相应操作作 1022 根据实现描述节点客户端:需使用客户端:需使用Windows操作系统,安装客户端软件(假设名为操作系统,安装客户端软件(假设名为KaoQing.exe)服务器:包含一个用服务器:包含一个用Delphi开发的服务端软件(设为开发的服务端软件(设为KqServer.exe),它需要与),它需要与Access数据库交互(设为数据库交互(设为KaoQing.mdb),并且需要通过),并且需要通过IC卡读卡器的驱动程序(假设名为卡读卡器的驱动程序(假设名为cardReader.dll)来实现与)来实现与IC卡读卡器通信卡读卡器通信IC卡读写器:对于本系统而言,它是不执行构件的设备,不过为了卡读写器:对于本系统而言,它是不执行构件的设备,不过为了方便员工,安装了方便员工,安装了3个。个。103