8.1UML起源第八章UML简介8.2UML构成8.3统一过程(RUP)简介8.4RationalRose介绍教学目的与要求⒈了解UML的发展历史;⒉掌握UML的基本概念和组成;3.了解统一过程(RUP);4.了解RationalRose建模工具的基本功能。教学重点⒈UML视图;⒉UML图;⒊UML的模型元素;⒋UML通用机制。教学难点⒈UML视图;⒉UML图;3.UML的模型元素。统一建模语言UMLUnifiedModelingLanguage8.1UML起源UML是一种基于面向对象的可视化的通用(General)建模语言,该方法结合了Booch,OMT,和OOSE方法的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。UML起源发展历史1994年Booch和Rumbaugh在RationalSoftwareCorporation开始了UML的工作,其目标是创建一个“统一的方法”。1995年OOSE的创始人Jacobson加盟到这项工作中,工作重点转移到创建一种统一的建模语言UML。1997年11月,OMG(ObjectManagementGroup)批准把UML1.1作为基于面向对象技术的标准建模语言。2004年推出了UML2.0。UML起源UML只是一种建模语言,不是一种建模方法。建模方法应包括建模语言和建模过程两部分:①建模语言:提供这种方法用于表示建模结果的符号。(图形符号:可视化)②建模过程:描述建模时需要遵循的步骤。为什么称之为UML?U:对多种经典的OO建模方法进行了统一,形成了规范。M:用于建立软件开发过程中的各种工程模型。L:是一种可视化的(图式)语言。①具有指定的建模元素(图式符号)②具有严格的语法(构图规则)③具有明确的语义(逻辑含义)6.3.1UML的主要构成UML是一种标准化的图形建模语言,它是面向对象分析与设计的一种标准表示。由以下四个部分构成:视图(views)图(Diagrams)模型元素(Modelelements)通用机制(generalmechanism)UML视图一个系统应从不同的角度进行描述,从一个角度观察到的系统称为一个视图(view)。视图由多个图(Diagrams)构成,它不是一个图表,而是在某一个抽象层上,对系统的抽象表示。如果要为系统建立一个完整的模型图,需定义一定数量的视图,每个视图表示系统的一个特殊的方面。另外,视图还把建模语言和系统开发时选择的方法或过程连接起来。LogicalViewComponentViewConcurrencyViewDeploymentViewUseCaseView用例视图描述系统的外部特性、系统功能等。逻辑视图描述系统设计特征,包括结构模型视图和行为模型视图,前者描述系统的静态结构,后者描述系统的动态行为。组件图用来显示代码组件的组织方式。它描述了实现模块和它们之间的依赖关系。并发图用来显示系统的并发工作状况。并发视图将系统划分为进程和处理机方式,通过划分引入并发机制,利用并发高效地使用资源、并行执行和处理异步事件。展开图用来显示系统的物理架构,即系统的物理展开。分析人员和测试人员关心的是系统的行为,因此会侧重于用例视图;最终用户关心的是系统的功能,因此会侧重于逻辑视图;程序员关心的是系统的配置、装配等问题,因此会侧重于组件视图;系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,因此会侧重于并发视图;系统工程师关心的是系统的发布、安装、拓扑结构等问题,因此会侧重于展开视图。说明:对于同一个系统,不同人员所关心的内容并不一样:用例视图作用:描述系统的功能需求,找出用例和执行者;适用对象:客户、分析者、设计者、开发者和测试者;描述使用的图:用例图和活动图;重要性:系统的中心,它决定了其他视图的开发,用于确认和最终验证系统。逻辑视图作用:描述如何实现系统内部的功能;适用对象:分析者、设计者、开发者;描述使用的图:类图和对象图、状态图、顺序图、合作图和活动图;重要性:描述了系统的静态结构和因发送消息而出现的动态协作关系。组件视图作用:描述系统代码构件组织和实现模块,及它们之间的依赖关系;适用对象:设计者、开发者和测试者;描述使用的图:组件图;重要性:描述系统如何划分软件构件,如何进行编程。并发视图作用:描述系统的并发性,并处理这些线程间的通信和同步;适用对象:开发者和系统集成者;描述使用的图:状态图、顺序图、协作图、活动图、组件图和部署图;重要性:将系统分割成并发执行的控制线程及处理这些线程的通信和同步。展开视图作用:描述系统的物理设备配置,如计算机、硬件设备以及它们相互间的连接;适用对象:开发者、系统集成者和测试者;描述使用的图:部署图;重要性:描述硬件设备的连接和哪个程序或对象驻留在哪台计算机上执行。UML图UML中最常用的图包括用例图、类图、对象图、状态图、序列图、协作图、活动图、组件图、部署图等。用例图用例图用例图(use-casediagram)用于显示若干角色(actor)以及这些角色与系统提供的用例之间的连接关系。一个用例是系统所提供的一个功能的描述,执行者是指使用这些用例的人或外部系统,执行者与用例的连接表示该执行者使用了此用例。贸易经理风险分析设置边界进行交易交易估价更新帐目《使用》《使用》《扩展》营销人员超越边界评价记帐系统销售人员类图(classdiagram)用来表示系统中的类和类与类之间的关系,它是对系统静态结构的描述。类用来表示系统中需要处理的事物。类与类之间有多种连接方式(关系),比如:关联、依赖、通用化或打包(packaged)。可以把若干个相关的类包装在一起作为一个单元(包),相当于一个子系统。一个系统可以有多张类图,一个类也可以出现在几张类图中。类图1.泛化(Generalization)【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。【箭头指向】:带三角箭头的实线,箭头指向父类2.实现(Realization)【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.【箭头指向】:带三角箭头的虚线,箭头指向接口3.关联(Association)【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。【代码体现】:成员变量【箭头及指向】:带普通箭头的实心线,指向被拥有者4.聚合(Aggregation)【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。【代码体现】:成员变量【箭头及指向】:带空心菱形的实心线,菱形指向整体4.聚合(Aggregation)5.组合(Composition)【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。【代码体现】:成员变量【箭头及指向】:带实心菱形的实线,菱形指向整体5.组合(Composition)6.依赖(Dependency)【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.【代码表现】:局部变量、方法的参数或者对静态方法的调用【箭头及指向】:带箭头的虚线,指向被使用者classdiagram各种关系的强弱顺序:泛化=实现组合聚合关联依赖对象图对象图是类图的实例,它及时具体地反映了系统执行到某处时系统的工作状况。对象图使用与类图相同的符号,只是在对象名下面加上下划线,同时它还显示了对象间的所有实例链接关系。丁一:作家姓名=丁一年龄=30丁一办公室中的PC:计算机名称=Dell466内存=64丁一家里的PC:计算机名称=长城PIIMMX内存=64状态图状态图通常是对类描述的补充,它说明该类的对象所有可能的状态以及哪些事件将导致状态的改变。一个状态图只能有一个初态,而终态则可以有多个。起点用一个黑点表示,终点用黑点外加一个圆表示。状态用一个圆角四边形表示。状态所有对象都具有状态,状态是对象执行了一系列活动的结果。当某个事件发生后,对象的状态将发生变化。状态图中定义的状态有:初态、终态、中间状态、复合状态。起点终点状态名状态在第一层上行上升到指定楼层上行空闲时间=0开始计时到达下降到指定楼层下行超时移到第一层到达到达电梯状态图序列图序列图序列图用来反映若干个对象之间的动态协作关系,也就是随着时间的流逝,对象之间是如何交互的。主要是用来显示对象之间发送消息的顺序,还显示了对象之间的交互,即系统执行的某一特定点所发生的事。呼叫者交换接受者拿起话筒响拨号声拨号码路由选择鸣响音停音响铃声接电话停铃声ABCDE{B-A1S}{C-B10S}通过网络选择通话路径{E-D5S}双方通话打电话的序列图协作图协作图(CollaborationDiagram)用于描述相互合作的对象间的交互关系和链接关系。虽然顺序图和合作图都用来描述对象间的交互关系,但侧重点不一样,顺序图着重体现交互的时间顺序,合作图则着重体现交互对象间的静态链接关系。1.2:[打印机忙]保存打印文件:队列:计算机1.3:[打印机空闲]打印文件:打印机:打印服务器1:打印文件协作图活动图活动图反映一个连续的活动流。活动图由各种动作状态构成,每个动作状态包含可执行动作的规范说明。当某个动作执行完毕,该动作的状态就会随着改变。这样,动作状态的控制就从一个状态流向另一个与之相连的状态。活动图中还可以显示决策、条件、动作状态的并行执行、消息(被动作发送或接收)的规范说明等内容。活动图(ActivityDiagram)的应用非常广泛,它既可用来描述操作(类的方法)的行为,也可以描述用例和对象内部的工作过程,并可用于表示并行过程。活动图是由状态图变化而来的,它们各自用于不同的目的。活动图描述了系统中各种活动的执行的顺序。刻化一个方法中所要进行的各项活动的执行流程。活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的变迁可能需要事件的触发)。组件图组件图(componentdiagram)用来反映代码的物理结构。代码的物理结构用代码组件表示。组件可以是源代码、二进制文件或可执行文件组件。组件包含了逻辑类或逻辑类的实现信息,因此逻辑视图与组件视图之间存在着映射关系。组件之间也存在依赖关系,利用这种依赖关系可以方便地很容易地分析一个组件的变化会给其他的组件带来怎样的影响。实际编程工作中经常使用组件图。窗口控制2(whnd.ccp)通信控制2(comhnd.ccp)主控模块(main.ccp)窗口控制1(whnd.obj)通信控制1(comhnd.obj)主控模块(main.obj)图形库(graphic.dll)客户程序(client.exe)部署图部署图(deploymentdiagram)用来显示系统中软件和硬件的物理架构。通常部署图中显示实际的计算机和设备(用结点表示),以及各个结点之间的关系(还可以显示关系的类型)。每个结点内部显示的可执行的组件和对象清晰地反映出哪个软件运行在哪个结点上。组件之间的依赖关系也可以显示在部署图中。UML模型元素UML中的模型元素包括事物和事物之间的联系。事物是UML中重要的组成部分,它代表任何可以定义的东西。事物之间的关系能够把事物联系在一起,组成有意义的结构模型。每一个模型元素都有一个与之相对应的图形元素。模型元素的图形表示使UML的模型图形化,而图形语言的简明和直观使其成为人们建立问题模型的有