《Web应用程序开发的统一建模语言(UML).ppt》由会员分享,可在线阅读,更多相关《Web应用程序开发的统一建模语言(UML).ppt(78页珍藏版)》请在三一办公上搜索。
1、本章内容:4.1 建模技术4.2 UML概述4.3 UML的图4.4 UML的应用,第4章统一建模语言UML,4.1 建模技术 建模技术被广泛应用于各个传统行业中。对于软件行业,尤其是大型软件的设计和生产,在动手实现软件之前,也需要提前先进行软件的分析和设计,构造其各种模型,然后按照这些模型进行开发工作。1.什么是模型简单地说,“模型是对现实的简化和抽象”。模型提供了将要建立的系统的蓝图。模型既可以包含详细的计划,也可以包括从更高的层次对系统的总体计划。,2.建立系统模型的目的模型帮助我们按照实际情况或按照我们所需要的样式对系统进行可视化表述;模型允许我们详细说明系统的结构和行为;模型给出了一
2、个指导我们构造系统的模板;模型对我们做出的决策进行文档化。,3.建模的基本原理选择正确的模型来解决问题、形成解决方案。(2)每一种模型可以在不同的精度和分辨率上表示系统。(3)好的模型总是和现实相联系的。(4)建立一组模型从多角度对系统进行描述。,4.2 UML概述一、UML的发展历史二、UML的主要特点三、UML的结构,一、UML的发展历史对UML的创建起关键作用的有三位学者,他们分别是Booch方法、OMT方法、OOSE方法的创始人Booch,Rumbaugh和Jacobson。1996年6月推出了UML0.9。1997年11月推出了UMLl.1。1997年11月,国际对象管理组织OMG(
3、Object Management Group)批准把UML1.1作为基于面向对象技术的标准建模语言。2005年的4月OMG宣布UML标准成为ISO所接受的一种标准规范。2005年7月OMG颁布了UML2.0版本。,二、UML的主要特点 统一的标准,易于使用,可视化,表达力强,易于在不同背景的人员之间进行交流。UML可以运用于任何软件开发过程,即前面所讲述的各种软件工程模型都可以采用UML去建模。UML内部有扩展机制,可以对一些概念进行进一步地扩展。UML的一个最重要的特征是用于建模,而不是一种方法,它仅仅是一种建模的工具。为了模型的可视化,UML为每一个模型元素规定了独特的图形表示符号,这些
4、符号简洁明了能够容纳足够的语义,并且容易绘制。,三、UML的结构 UML是一种可视化建模语言,它有自身的内部结构,UML结构也称为UML的概念模型。UML的结构主要有三部分:构造块包括了用于建立模型而采用的基本事物(things)或者说叫做基本的模型元素。公共机制主要包括规格说明,修饰,公共分类和扩展机制,可以运用于整个UML,以达到特定目标的公共UML方法,架构规则即系统的组织结构,规定各种UML的构造块如何组织在一起的细则。,1.UML构造块UML构造块包含如下三个内容,它们是UML的事物,关系和图。(1)事物模型的基本元素,可分四类:即结构事物、行为事物、分组事物和注解事物。结构事物:表
5、示UML模型中的名词,它们通常表示模型中的静态部分,描述系统的物理元素或相关概念。共有7种结构事物。类(class)在面向对象方法中,类是具有相同属性和相同操作对象的抽象。,接口(interface)接口是指类或构件提供特定服务的一组操作的集合,接口并不实现操作,而仅仅描述类或构件的外部可见行为。协作(collaboration)协作定义了交互的操作,是一些执行者(Actor)和其他元素一起工作,提供一些合作的动作,这些动作比元素的总和要大。,接 口,用例(use case)用例描述了一系列的动作,这些动作由特定的执行者执行,并产生执行者可观察到的结果。在模型中用例通常用来组织动作事物。用例是
6、通过协作来实现的。主动类(active class)主动类的对象有一个或多个进程或线程,它和类很相似,只是它的对象所代表的元素的行为和其他元素的行为可以并发。,构件(component)构件是物理的、可替换的系统部分,它实现了一个接口集合。结点(node)结点是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存并具有处理能力。,行为事物:是UML模型中的动态部分。它们是模型的动词,代表时间和空间上的动作,共有两种主要的行为元素。交互(interaction)交互是由一组对象在特定上下文中,为达到特定的目的而进行的一系列消息交换而组成的动作。状态机(state machine)
7、状态机由一系列对象的状态组成。交互和状态机是UML模型中最基本的两个动态建模元素,它们通常和其他结构元素、主要的类、对象连接在一起。,状态,分组事物:分组事物是UML模型中的组织部分,可以把分组事物看成一个盒子,模型可以在其中被封装和分解。只有一种分组事物,称为包。包是一种将元素分组的机制。结构事物、动作事物甚至其他的分组事物都有可能放在一个包中。注释事物:注释事物是UML模型的注解部分。,注释,(2)UML中的关系 关系是指把事物组合在一起,说明两个或多个事物是如何语义相关的。在UML中有4种基本关系,即依赖、关联、泛化和实现。依赖是两个或者多个事物间的语义上的关系,一个元素(被依赖事物的提
8、供者)的变化将影响或者提供消息给另一个元素(依赖事物的接收者)。例如,有两个元素,如果元素A的变化会引起元素B的变化,则称元素B依赖于元素A。,依赖关系,关联是两个事物结构上的关系,通常,关联关系描述给定类的单独对象之间语义上的连接,它提供了不同类间对象可以互相作用的连接。有一种特殊的关联关系称为聚合,它描述了整体和部分的关系,即整体在物理上由部分构成。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。组合是聚合的一种特殊形式。当每个部分由一个对象所拥有并且每个部分不能独立于其拥有者,这时可以用组合表示整体和部分的这种特殊关系。,Order Order I
9、tem,组合,1*,泛化表示两个事物之间的特殊/一般关系。通过泛化,特殊事物,即子元素共享了一般事物的结构和行为,即父元素的结构和行为。实现是类元之间的语义关系,表示其中一个类元指定由另一个类元保证执行的契约。在UML中,有两个地方用到了实现关系,一是在接口和它的实现类或组件之间,另一个是在用例和它对应的协作之间。以上列出的仅仅是UML中4种最基本的关系,通过这4种关系,可以构造出更多的关系构造型,从而组成复杂的模型。,泛化,实现,(3)UML中的图 在UML中包含了9种图,通过这9种图可以分别从静态和动态两个方面对系统进行建模。其中的类图,构件图,部署图用来表示系统的静态结构的静态模型;对象
10、图,用例图,顺序图,协作图,状态图,活动图用来表示系统动态结构的动态模型。通过这些图可以表示相关的建模元素以及建模元素之间的关系,组成UML模型各种不同的视图。,2.UML的公共机制UML中的公共机制使得UML变得简单,并且保证概念的完整性。UML有4类公共机制。(1)规格说明:对于每一个UML的图形表示都有一个规格说明,这个说明提供了对构造块的语法和语义的文字叙述。(2)修饰:UML为每一个模型元素设置了一个简单的图形符号,通过修饰可以更多地描述构造块的细节。(3)公共分类:有两组公共分类。包括类元与实体(类元表示概念,实体表示具体的成分)、接口和实现(接口用来定义契约,而实现就是具体的内容
11、)。也就是说在用UML建模时,有两种主要的划分,即对类和对象的划分以及接口和实现的划分。,(4)扩展机制:UML提供了扩展机制,使得UML本身成为可扩展的语言。简单地理解就是UML仅仅提供蓝本,允许派生出新的事物,允许增加新的规则并可以对新的规则进行描述。,3.UML的架构规则UML的规则描述了如何构造一个结构良好的模型,如UML对命名、范围、可见性、完整性等的语义规则进行了描述。在实际的软件开发过程中,开发人员应该尽力遵循UML规则,构建良好的系统模型。4.UML的视图一个系统可以从不同的角度进行观察。从某个角度观察到的系统构成系统的一个视图(View)。视图不是简单的图表,它是由若干幅图组
12、成的对系统的某个功能的一种抽象。通常在开发一个系统时可以构建5种视图,如下所示。,用户模型视图,又可以称为用例视图,它描述了行为者所看到的系统所具有的功能。用户模型视图具有极其重要的地位,它的内容决定了其他视图的内容。常通过用例图来构建用户模型视图。结构模型视图,又可以称为逻辑视图,它描述了系统的静态结构和动态行为。静态结构用类图,对象图来描述。动态结构用状态图,时序图,协作图,活动图来描述。构件视图,描述系统中代码构件的组织,各个模块以及模块间的依赖关系。并发视图,描述了系统的并发性。部署视图,描述了系统的物理部署。,4.3 UML的图在UML的规范中包含了9种图,分别为类图,构件图,部署图
13、,对象图,用例图,顺序图,协作图,状态图,活动图。通过这些图可以表示相关的建模元素以及建模元素之间的关系,并组成UML模型各种不同的视图。,一、用例图1.用例图展示了系统外部的执行者(Actor)与系统所提供的用例(user case)之间的关系。2.用例图的主要目的是以一种可视化的方式理解系统的功能需求。3.用例图由用例,执行者和他们之间的关系构成。通过用例图可以建立用例模型,用例模型描述了一个系统的功能,即一个系统可以做什么。下图所示是一个定货系统的用例图,4.用例建模的主要步骤:首先定义一个系统;并在该系统中确定执行者;确定用例,描述每一个用例;确定关系(包括用例与执行者之间的关系,执行
14、者之间的关系,用例之间的关系);最后确认所建的模型。,(1)如何确定执行者执行者是那些可能使用用例的人或外部系统。执行者不一定是具体的某个人,它代表的是一个角色,是一个虚拟的概念。一个人或者一个外部的系统都可以担任执行者。,常常通过提问的方式寻找执行者。谁使用系统的主要功能(主要使用者)?谁从系统中获得信息?谁向系统提供信息?谁管理该系统?系统需要与哪些其他的系统进行交互?该系统需要控制哪些硬件?该系统使用外部资源吗?对系统产生的结果感兴趣的是哪些人?,(2)如何确定用例用例是指对系统所提供的功能的一种描述。用例可大可小,一个用例对应一个具体的执行目标,是执行者与系统之间为达到某个目的的一次典
15、型交互作用。常常通过提问来寻找用例:执行者要求系统提供哪些功能?执行者将要创建、修改、删除或存储系统中的哪些信息?系统中所发生的哪些事件需要通知执行者?该系统需要什么输入,输出?该系统所有的功能都有相应的用例吗?,(3)用例描述通常用正文来描述。在描述时应该包括以下的内容:用例的目的用例如何启动的用例和执行者之间的消息流用例中可以供选择的消息流如何通过给执行者一个值来结束用例。,(4)确定关系用例图中的关系包括用例和执行者之间的关系,执行者之间的关系,用例之间的关系。用例和执行者之间的关系他们之间的关系描述了“谁使用哪个用例”,最常见的关系是关联关系,如图4.17所示。执行者之间的关系由于执行
16、者实质上是类,所以它拥有与类相同的关系描述,一般来说执行者之间存在泛化关系,泛化关系的含义是把某些执行者的共同行为提取出来表示为通用的行为。用例之间的关系用例之间的关系有包含关系(Include)和扩展关系(Extend)。,二、类图和对象图1.类图和对象图之间的关系。类是抽象的,是具有相同属性和方法的一组对象的抽象表示。对象是类的实例。类图展示了系统中类的静态结构,即类与类之间的相互关系。对象图是类图的一种实例化。一张对象图表示的是与其对应的类图的一个具体实例,即系统在某一时期或者某一特定时刻可能存在的具体对象实例以及它们相互之间的具体关系。,2.类图和对象图建立步骤(1)确定类(2)确定关
17、系(3)确定对象 下面具体说明,(1)确定类命名类:类是来自问题领域,一般通过提问的方式来寻找类。矩形中顶部的格子中写的是类的名字,类的命名应该明确,无歧义,要便于开发人员和用户之间的理解和交流沟通。定义属性可见性 属性名:类型=初值 约束特性 定义操作可见性 操作名(参数表):返回类型 约束特性,(2)确定关系确定关系主要是定义类之间的关系,类之间的关系有依赖关系、关联关系、泛化关系和实现关系。依赖关系:依赖是两个或者多个事物间的语义上的关系,一个元素(被依赖事物的提供者)的变化将影响或者提供消息给另一个元素(依赖事物的接收者)。,关联关系:关联关系用于描述两个或多个特定类的实例(即对象)之
18、间的关系。最常见的关联关系可在两个类之间用一条直线连接,直线上写上关联名。在关联的两端可写上一个被称为“重数”的数值范围,表示该类有多少个对象可与对方的一个对象连接。关联可以有方向,表示该关联的使用方向。可以用线旁的小实心三角表示方向,也可以在关联上加上箭头表示方向,箭头指向的是消息的接收者。只在一个方向上的关联,称作单向关联,在两个方向上都有导航表示的关联,称作双向关联。,关联关系的特殊形式有组成关联和聚合关联。组成关联用于表示类的对象之间的整体和部分的关系。也就是说整体拥有各部分,部分与整体共存,如整体不存在了,部分也会随之消失。聚合关联也用于表示类的对象之间的整体和部分的关系。但是与组成
19、关联不同之处是,整体是聚集对象,部分是构成对象,如果构成对象不存在,聚集对象还可存在。,泛化关系:泛化关系描述了类和包间的一般元素和特殊元素之间的关系,它表示的是类之间的“is-a”的关系,也就是父类和子类之间的关系。父类是子类的泛化。继承关系与泛化关系相反,继承关系描述的是子类是从父类中继承的。实现关系:实现关系用来描述类,接口,构件,包之间的关系。在类和接口之间的实现关系,以及在构件和接口之间的实现关系表示类实现了接口所提供的操作。,(3)确定对象对象是类的实例。对象之间的关系是类之间的关联的实例。对象图是类图的一种实例化。一张对象图表示的是与其对应的类图的一个具体实例,即系统在某一时期或
20、者某一特定时刻可能存在的具体对象实例以及它们相互之间的具体关系。,三、交互图1.交互图的特点交互图描述的是一组对象之间的交互过程,实际上就是用UML形象地表示对象之间方法的调用,消息的传递过程。2.交互图的形式有两种形式:顺序图和协作图(1)顺序图 顺序图描述了多个对象之间进行消息传递的动态协作关系,主要显示了对象之间一系列的方法调用的顺序。可以这么说,UML顺序图的典型用途就是显示出方法调用过程。,下图显示了在定货系统中,一个定货的交易事件,通过该交易事件可以把客户需要的商品添加到定货单上。,(2)协作图 协作图也描述了对象之间的动态协作关系,这一点与顺序图类似。所不同的是它除了显示对象之间
21、所传递的消息,还显示对象之间的关系。,说明:顺序图和协作图均可以表示对象间的协作关系,若强调交互的时间和顺序的,则使用顺序图;若强调交互时对象之间的关系的,则选用协作图,,四、状态图1.状态图的特点状态图是对类图的一种补充描述,它展示了此类对象所具有的可能的状态以及某些事件发生时其状态的转移情况。2.状态图的符号集包括如下的基本元素(1)初始状态:用实心圆来表示,在一张状态图中只能有一个初始状态。(2)状态:又称为中间状态,用圆角矩形来表示。(3)状态之间的转换:使用具有开箭头的线段来表示,箭头旁可以标出转移发生的条件。状态转移可以伴随有某个动作,它表明当转移发生时系统要做什么,用文本说明是什
22、么事件引起这状态改变的。(4)结束状态:用内部包含实心圆的圆表示。在一张状态图中可能有多个结束状态。,(3)绘制状态图方法要绘制状态图,首先绘制起点和一条指向该类的初始状态的转换线段。状态本身可以在图上的任意位置绘制,然后只需使用状态转换线条将它们连接起来。,定货单某个状态图例子,完成,后台数据库处理,客户付款,已付款,打印中,提交定货单,已录入,已处理,五、活动图1.活动图的特点活动图描述系统中各种活动的执行顺序,通常用于描述一个操作中所要进行的各项活动的执行流程以及可选的方式。活动图不仅可以描述在处理某个活动时,两个或者更多类对象之间的过程控制流,而且,它也常被用来描述一个用例的处理流程,
23、或者某种交互流程。,2.活动图与状态图的异同点(1)相同点 活动图与状态图属于UML中的行为图,都可以用于描述系统的动态模型和组成对象间的交互关系。(2)不同点活动图是以活动为中心的,而状态图是以状态为中心的。活动图用来描述一个过程中的一系列连续的活动的顺序,而状态图更适合于描述一个对象在一个生命周期中的离散的不连续的的某些状态。,3.活动图的符号集(1)实心圆表示活动图的起点,带边框的实心圆表示终点。(2)圆角矩形表示执行的过程或活动。(3)菱形表示判定点,说明某些表达式的选择性路径。(4)箭头表示活动之间的转换,各种活动之间的流动次序。箭头上的文字表示继续转换所必须满足的条件,总是使用格式
24、“条件”来描述。(5)粗线条表示分叉与结合,表示了并行进行的过程,即并发流的开始和结束。,4.活动图的类型(1)基本活动图基本活动图与状态图类似,也包括了初始状态,结束状态以及中间状态,每个活动之间就是一种状态的变迁。(2)带泳道的活动图活动图中的泳道显示了在图中谁去执行此动作或者任务,也就是该任务由哪个类来完成的。,六、构件图1.构件图的特点构件图提供系统的物理视图。构件图可以方便地显示构件,接口以及它们之间的各种关系,从而便于人们分析和发现当修改某个构件时可能对那些构件产生影响,以便对它们做相应的修改或更新。构件可以是源代码构件、二进制目标码构件、可执行构件或文档构件。2.构件图的示例图,
25、七、部署图1.部署图的特点部署图描述系统中硬件和软件的物理配置情况和系统体系结构。部署图表示该软件系统如何部署到硬件环境中,并根据它们之间的连接关系,将相应的结点连接起来,并说明其连接方式。在部署图中,一个节点可以代表一台实际的物理设备,如计算机和各种外部设备,或代表一个虚拟机器节点(例如,一个大型机节点)。2.部署图的示例图,一、问题的描述在医院的病房里,将病症监视器安置在每个病床,对病人进行监护。监视器将病人的病症信号(组合)实时地传送到中央监护系统进行分析处理。在中心值班室里,值班护士使用中央监护系统对病员的情况进行监控,监护系统实时地将病人的病症信号与标准的病诊信号进行比较分析,当病症
26、出现异常时,系统会立即自动报警,并打印病情报告和更新病历。系统根据医生的要求随时打印病人的病情报告,系统还定期自动更新病历。,医院病房监护系统,二、简单的需求分析说明 系统名称:医院病房监护系统根据分析系统主要实现以下功能:1、病症监视器可以将采集到的病症信号(组合),格式化后实时的传送到中央监护系统。2、中央监护系统将病人的病症信号与标准的病症信号库里的病症信号的正常值进行比较,当病症出现异常时系统自动报警。3、当病症信号异常时,系统自动更新病历并打印病情报告。4、值班护士可以查看病情报告并进行打印。5、医生可以查看病情报告,要求打印病情报告,也可以查看或要求打印病历。6、系统定期自动更新病
27、历。,三、用UML的静态建模机制定义并描述本系统的静态结构(一)建立系统的用例图通过以下六个问题识别角色(1)谁使用系统的主要功能?(2)谁需要系统的支持以完成日常工作任务?(3)谁负责维护,管理并保持系统正常运行?(4)系统需要应付(或处理)哪些硬设备?(5)系统需要和哪些外部系统交互?(6)谁(或什么)对系统运行产生的结果(值)感兴趣?,通过回答这六个问题以后,再进一步分析可以识别出本系统的四个角色:值班护士,医生,病人,标准病症信号库。通过分析可以初步识别出系统的用例为:中央监护,病症监护,提供标准病症信号,病历管理,病情报告管理。顶层用例图为:,将用例细化,可以得到分解的用例:1、中央
28、监护分解为(a)分解信号:将从病症监护器传送来的组合病症信号分 解为系统可以处理的信号。(b)比较信号:将病人的病症信号与标准信号比较。(c)报警:如果病症信号发生异常(即高于峰值),发出报警信号。(d)数据格式化:将处理后的数据格式化以便写入病历库。,2、病症监护分解为:(e)信号采集:采集病人的病症信号。(f)模数转化:将采集来的模拟信号转化为数字信号。(g)信号数据组合:将采集到的脉搏,血压等信号数据组合为一组信号数据。(h)采样频率改变:根据病人的情况改变监视器采样频率。3、提供标准病症信号 i(此用例不分解),4、病历管理 分解为:j 生成病历k 查看病历l 更新病历 m 打印病历
29、5、病情报告分解为:n 显示病情报告(在显示器上显示病情)o 打印病情报告(在打印机打印病情报告),给出细化的用例图,(二)识别系统的类通过名词识别法和系统实体识别法等方法可以识别出系统的十二个类,以下用类图这种简单明了的方法分别表示出类的名称、属性、操作。见下图,再进一步在类图中标明类之间的关系:,(三)用包图和部署图描述系统的体系结构通过一定的分组机制得到以下包图:,接下来用部署图进一步描述系统的网络结构,四、用UML的动态建模机制定义并描述系统结构元素的动态特性及行为(一)下面给出两个关系很紧密的状态图,(二)用时序图和协作图描述病人病情异常时系统的情况,其他情况从略。时序图:,(三)用
30、活动图描述系统在监护病人时的状态变化,1 什么是UMLUML的全称是United Model Language,是一个统一的业界认可的建模语言,所以称为统一建模语言。UML用非常容易理解的图形表示法以及一套丰富的语义集来描述系统的关键特征,为人们提供了从不同的角度去观察和展示系统的各种特征的一种标准表达方式。在UML中,从任何一个角度对系统所作的抽象都可能需要用几种模型图来描述,而这些来自不同角度的模型图最终组成了系统的完整模型。,4.4 UML的应用,2 UML的作用建模是软件开发中进入编码前的重要组成部分,建模即构建一个模型,模型是对现实世界的抽象,无论是问题领域还是解决方案,都可以抽象成模型。一个大型软件系统由于其复杂程度可能无法直接研究,但模型使之成为可能。在不损失细节的情况下,模型可以抽象到一定的层次以使人们能够理解,便于管理和控制系统的复杂性。各种各样的面向对象的开发方法都有自己的建模方法,但所使用的术语各不相同,这妨碍了采用不同开发方法的技术人员之间的交流。而UML采用统一的标准建立模型,易于在不同背景的人员之间进行交流。,3 UML用在系统设计的哪一个阶段软件设计几个主要的阶段:,