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