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