1 / 40

第十一章 统一建模语言( UML )

第十一章 统一建模语言( UML ).

hani
Download Presentation

第十一章 统一建模语言( UML )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第十一章 统一建模语言(UML) UML(Unified Modeling Language)是一种建模语言,是为面向对象开发系统的产品进行可视化的说明和编制文档的方法。它是由信息系统(IS,Information System) 和面向对象领域的三位著名的方法学家:Grady Booch、 James Rumbaugh、和Ivar Jacobson提出的,由OMG 组织 (Object Management Group) 采纳作为业界标准。UML 取代目前软件业众多的分析和设计方法(Booch、 Coad、 Jacobson、 Odell、 Rumbaugh、 Wirfs-Brock 等),成为一种标准,这是软件界第一次有了一个统一的建模语言。 软件工程(Software Engineer)

  2. 11.1 UML 简介 1 UML 的产生和成长 UML发展历史大致可以概括为四个阶段: 第一阶段:面向对象的方法学家联合行动。 1994年10月,Grady Booch和Jim Rumbaugh开始致力于这一工作。 第二阶段:公司的联合行动。 1996年, UML的开发者得到了来自公众的正面反应,并倡议成立了UML成员协会,以完善、加强和促进UML的定义工作。 第三阶段:在OMG组织、控制下对UML规范进行的修订和 改进,产生了UML1.2、1.3、1.4、1.5等版本。 第四阶段:目前所处阶段。 目前所处阶段是本世纪开始以来的重大修订,推出了全新的版本2.0。 软件工程(Software Engineer)

  3. 2 UML的定义及目标 UML 是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。 1、它是一种可视化的建模语言。 2、它是一种建模语言规格说明,是一种表示的标准。 3、不是过程也不是方法,但允许任何一种过程和方法使用它 UML 主要作者提出的目标是: 提供给用户一个易于使用和表达的可视化的建模语言,使他们能够开发和交流有意义的模型。独立于任何开发语言。独立于任何开发过程。简单并且可扩展,具有扩展和专有化机制,便于扩展,无需对核心概念进行修改。提供了解建模语言的一个基本手段。支持面向对象的设计与开发中涌现出的高级概念,例如协作、框架、模式和构件,强调在软件开发中对架构、框架、模式和构件的重用。最佳的软件工程实践经验的集成。有利于面向对象工具的市场成长。 软件工程(Software Engineer)

  4. 3 UML 的应用领域 1.在不同类型系统中的应用 UML 常见的应用有: 信息系统(Information System); 技术系统(Technical System); 嵌入式实时系统(Embedded Real-Time System); 分布式系统(Distributed System); 系统软件(System Software); 商业系统(Business System); 在软件开发的不同阶段中的应用,UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。 软件工程(Software Engineer)

  5. 11.2 UML 语言概述 1 视图(views) 视图用来表示被建模系统的各个方面。视图由多个图(Diagrams)构成,它不是一个图片(graph), 而是在某一个抽象层上对系统的抽象表示。如果要为系统建立一个完整的模型图,只需定义一定数量的视图,每个视图表示系统的一个特殊的方面就可以了。另外,视图还把建模语言和系统开发时选择的方法或过程连接起来。 软件工程(Software Engineer)

  6. 2 图(diagram) 图由图片(graph)组成。图片是模型元素的符号化。把这些符号有机地组织起来形成的图,表示了系统的一个特殊部分或某个方面。一个典型的系统模型应有多个各种类型的图,图是一个具体视图的组成部分,在画一个图时就相当于把这个图分配给某个视图了。依据图本身的内容,有些图可能是多个视图的一部分。 UML 中包含用例图、类图、对象图、状态图、顺序图、协作图、活动图、构件图、部署图共九种。使用这九种图就可以描述世界上任何复杂的事物,这充分地显示了UML 的多样性和灵活性。 软件工程(Software Engineer)

  7. 3 模型元素 图为一些通用的模型元素符号示例 在图中使用的概念统称为模型元素。 软件工程(Software Engineer)

  8. 4 通用机制 UML 语言利用通用机制为图附加一些信息,这些信息通常无法用基本的模型元素表示,常用的通用机制有修饰(adornment)、 笔记(note)和规格说明(specification)等。 软件工程(Software Engineer)

  9. 5 UML建模工具 随着UML的诞生与发展,涌现出了众多的UML建模工具。如Rational Rose、Microsoft的 Microsoft Office Visio、Jude、免费的UML工具BOUML、Sparx Systems的Enterprise Architect(EA)、使用java编写的开源UML产品ArgoUml、StartUML等等。 软件工程(Software Engineer)

  10. 11.3 用例建模 用例建模描述一个系统应该做什么,描述的是外部参与者所理解的系统功能。构建用例模型是通过开发者与客户或最终使用者对需求规格说明达成的共识,明确系统的基本功能,为后阶段的工作打下基础。 用例模型的基本组成部件是用例、参与者和系统。用例用于描述系统的功能,也就是从外部用户的角度,观察系统应支持哪些功能,帮助分析人员理解系统的行为,它是对系统功能的宏观描述。 软件工程(Software Engineer)

  11. 1 用例图 用例模型可以由若干个用例图组成,用例图中包含系统、参与者和用例等三种模型元素。 软件工程(Software Engineer)

  12. 2 参与者(actor) 1)参与者是与系统交互的人或事 2)寻找参与者 通过回答下列的一些问题确定参与者: (1)使用系统主要功能的人是谁?(即主要参与者) (2)需要借助于系统完成日常工作的人。 (3)维护、管理系统,保证系统正常工作的人(次要参与者)。 (4)系统要控制哪些硬件设备? (5)系统需要与哪些其它系统交互? (6)对系统产生的结果感兴趣的人或事是哪些? 软件工程(Software Engineer)

  13. 3 用例 用例代表的是参与者感受到的一个完整的功能。UML 中的用例是动作步骤的集合。系统中的每种可执行情况就是一个动作,每个动作由许多具体步骤实现。 1)用例的特征 (1)用例总由参与者初始化,即:参与者必须直接或间接地指示系统执行用例。 (2)用例为参与者提供值。用例必须为参与者提供实在的值,这个值能被参与者识别。 (3)用例是一个完整的描述。 软件工程(Software Engineer)

  14. 2.寻找用例 对于已识别的参与者,通过询问下列问题就可发现用例: (1)参与者需要系统提供哪种功能?参与者需要做什么? (2)参与者需要读取、产生、删除、修改或存储系统中的某种信息吗? (3)系统中发生的事件需要通知参与者吗?或者参与者需要通知系统某件事吗?这些事件(功能)能干些什么? (4)如果用系统的新功能处理参与者的日常工作,是简单化了还是提高了工作效率? 软件工程(Software Engineer)

  15. 3) 用例的描述应包括下面几个方面: (1)用例的目标: 用例的最终任务是什么?想达到什么样的目标? (2)用例是怎样被启动(initiate)的: 哪个参与者在怎样的情况下启动执行用例?比如张三买了车,是所以要投保的原因。 (3)参与者和用例之间的消息流: 参与者和用例之间的哪些消息是用来通知对方的?哪些是修改或检索信息的?哪些是帮助用例做决定的?系统和参与者之间的主消息流描述了什么问题?系统使用或修改了哪些实体? (4)用例的多种执行方案: 在不同的条件或特殊情况下,用例能依当时条件选择一种合适的执行方案。 (5)如何通过给参与者一个值来结束用例。 软件工程(Software Engineer)

  16. 4)用例之间的关系 用例之间有扩展(extend)、使用(use)、组合三种关系。扩展和使用是继承关系的另一种体现形式。组合则是把相关的用例打成包(package), 当作一个整体看待。 软件工程(Software Engineer)

  17. 11.4 类与对象建模 1 类和对象 在面向对象建模技术中,我们采用分类的方法将客观世界的实体映射为对象,并归纳成一个个类。、对象和他们之间的关联是面向对象技术中最基本的元素。在UML中,类和对象模型分别由类图和对象图表示。 软件工程(Software Engineer)

  18. 2 类图和对象图 类图是类图属于一种静态模型,是用类和它们之间的关系描述系统的一种图示。 对象图是类图的一个实例。表示在某一时刻类的具体实例和这些实例之间的具体连接关系。 软件工程(Software Engineer)

  19. 3 关系 类图由类和它们之间的关系组成,类与类之间的关系有关联(association)、依赖(dependency)、泛化(generalization) 1) 关联关系 关联表示两个类之间存在某种语义上的联系,用于描述类与类之间的连接。根据不同的含义关联可分为普通关联、递归关联、限定关联、或关联、有序关联、三元关联和聚合等七种。 软件工程(Software Engineer)

  20. 2)聚合(aggregation)(一般聚合、共享聚合、组合—复合聚合)2)聚合(aggregation)(一般聚合、共享聚合、组合—复合聚合) 聚合是一种特殊形式的关联。聚合表示类与类之间的整体与部分的关系。 3)泛化(generalization) 泛化表示的是一般描述和具体描述之间的关系,具体描述建立在一般描述的基础上,并对其进行了扩展。具体描述与一般描述完全一致,具有其所有特性、成员和关系。 软件工程(Software Engineer)

  21. 4)依赖(Dependency) 依赖是两个模型元素间的语义连接,一个是独立的模型元素,一个是依赖的模型元素。 5)细化(refinement) 细化是UML中的术语,表示对事物更详细一层的描述。两个元素A、B描述同一件事物,它们的区别是抽象层次不同,若元素B是在元素A的基础上的更详细的描述,则称元素B细化了元素A,或称元素A细化成元素B。 软件工程(Software Engineer)

  22. 4 约束和派生(规则) UML 中的规则称为约束和派生。约束用于限制一个模型,我们已经讨论过的约束有或关联、有序关联和继承约束。派生用于描述某种事物的产生规则,比如说一个人的年龄可以由该人的生日和当前日期派生出来。一般说来,约束和派生能应用于任何模型元素,但最常用于属性、关联、继承、角色和时间 软件工程(Software Engineer)

  23. 5 包 对于一个复杂的系统,通常都是把它分为若干个较小的系统(子系统)。解决这个问题的一个思路是将许多类集合成一个更高层次的单位,形成一个高内聚、低耦合的类的集合。这个思路被松散地应用到许多对象技术中。 软件工程(Software Engineer)

  24. 6 如何确定类 1)寻找类 在进行构造类图描述系统的工作时,首先要定义类,也就是将系统要处理的数据抽象成类的属性,将处理数据的方法抽象为操作。 2)类名 类的名字用黑体字书写在长方形的最上面,给类命名时最好能够反映类所代表的问题域中的概念。 3)定义属性 类的属性放在类名字的下方,用来描述该类的对象所具有的特征。 4)定义操作 存取、或改变属性值、或执行某个动作都是操作。操作通常又称为函数。 软件工程(Software Engineer)

  25. 11.5 动态建模 1 消息(massage) 在面向对象技术中,对象间的交互是通过对象间消息的传递来完成的。 软件工程(Software Engineer)

  26. 2状态图(State Diagram) 状态图(State Diagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件。大多数面向对象技术都用状态图表示单个对象在其生命周期中的行为。 软件工程(Software Engineer)

  27. 3顺序图((Sequence Diagram ) 顺序图用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。 顺序图存在两个轴:水平轴表示不同的对象,垂直轴表示时间。顺序图中的对象用一个带有垂直虚线的矩形框表示,并标有对象名和类名。垂直虚线是对象的生命线,用于表示在某段时间内对象是存在的。对象间的通信通过在对象的生命线间画消息来表示。消息的箭头指明消息的类型。 软件工程(Software Engineer)

  28. 4 协作图(Collaboration Diagram) 协作图主要描述相互合作的对象间的交互关系和链接关系(一条链接是一个关联的实例化)。 顺序图和协作图都用来描述对象间的交互,但是侧重点不一样。顺序图强调的是时间,而协作图强调的是空间链接,显示真正的对象以及对象间是如何联系在一起的,可以只显示对象的内部结构,同顺序图一样,协作图也可以说明操作的执行,用例的执行或系统中的一次简单的交互情节。 软件工程(Software Engineer)

  29. 5活动图(Activity Diagram) 活动图使用状态图的符号,与状态图有相同的开始点和结束点。活动图中的状态称为动作状态,用圆角矩形表示,动作状态之间的转移用箭头表示。转移上可以附加监护条件、发送子句和动作表达式。 软件工程(Software Engineer)

  30. 11.6 物理体系结构建模 UML 中体系结构的定义为:体系结构是系统的组织结构。可以递归地将体系结构分解成通过接口交互的部分,连接各个部分的关系,组装各个部分的约束。 体系结构可以分解成逻辑和物理体系结构。逻辑体系结构主要指定系统的功能特点,通过系统的功能需求来描述;物理体系结构则描述系统的非功能部分:如可靠性、兼容性、资源使用和系统分布。 软件工程(Software Engineer)

  31. 1 逻辑体系结构 逻辑体系结构处理系统的功能,将功能分配到系统的各个部分,详细说明它们是如何工作的。逻辑体系结构包括应用逻辑,但不是将逻辑物理上分布到不同的进程、程序或计算机。逻辑体系结构有助于更清楚地了解系统的结构,使得更容易管理和协调工作。 软件工程(Software Engineer)

  32. 2 物理体系结构 物理体系结构详细描述系统的软件、硬件。它描述硬件结构,包括不同的节点以及节点间如何连接。物理体系结构还说明实现逻辑体系结构中定义的概念的代码模块的物理结构和相关性,软件运行时,进程、程序和其它构件的分布。 软件工程(Software Engineer)

  33. 构件图描述软件构件及构件之间的关系,显示代码的结构。构件是逻辑体系结构中定义的概念和功能在物理体系结构中的实现。典型情况下构件是开发环境中的实现文件。构件图描述软件构件及构件之间的关系,显示代码的结构。构件是逻辑体系结构中定义的概念和功能在物理体系结构中的实现。典型情况下构件是开发环境中的实现文件。 3 构件图 构件图描述软件构件及构件之间的关系,显示代码的结构。构件是逻辑体系结构中定义的概念和功能在物理体系结构中的实现。典型情况下构件是开发环境中的实现文件。 软件工程(Software Engineer)

  34. 4 部署图 部署图描述处理器、设备、软件构件在运行时的体系结构。它是系统拓朴的最终的物理描述,即描述硬件单元和运行在硬件单元上的软件的结构。在这样的体系结构中,可以看到某个节点上在执行哪个构件,哪些逻辑元素(类、对象、协作等等)是在本构件中实现的,并且最终可以跟踪到这些元素在系统的初始需求说明(在用例建模中完成的)中的位置。 部署图的基本元素有:节点、连接、构件、对象、依赖等。 软件工程(Software Engineer)

  35. 11.7 使用UML 的过程 UML 的表示和规则能够用来为系统进行面向对象的建模,但并没有描述如何工作,也就是没有指定应用UML的过程和方法。因为UML的设计初衷是为了能在尽可能多的领域内得到广泛的应用,尽管如此,要想成功地使用UML, 科学的过程是非常必要的。 软件工程(Software Engineer)

  36. 1 软件工程的过程概念 简单地说,过程描述做什么、怎么做、什么时候做以及为什么要做。描述了一组以某种顺序完成的活动。过程的结果是一组有关系统的文档(模型和其它一些描述),以及对最初问题的解决方案。过程也需要工具的支持。 软件工程(Software Engineer)

  37. 2 Rational 的统一过程 UML在很大程度上是过程独立的。也就是说,可以将UML运用于许多软件过程。目前比较流行的有几种重要的过程,包括Rational 的统一过程、OPEN 过程和面向对象软件过程(OOSP)。这里主要对Rational统一过程进行描述,因为它是由提出UML 的三位方法学家Booch 、Jabson 以Rational 的Objectory 为核心提出,所以Rational统一过程是一种特别适用于UML的生命周期方法。 软件工程(Software Engineer)

  38. 11.8 实例 在这一节里,以“图书管理系统”的面向对象分析与设计过程为例,介绍如何用UML语言为系统建模。 在“图书管理系统”这个实例中,我们使用用例图来描述系统的需求。在识别系统对象时,则通过寻找系统域描述、需求描述中的名词的方法来进行。然后应用包图和类图来描述系统的静态结构。此外,我们还使用顺序图对用例的情节进行描述,从而揭示了系统的主要的动态行为,并对识别类的操作、识别类之间的关系以及细化类起到了一定的作用。另外还应用状态图描述了对象Book和对象Title的动态行为。最后用部署图描述了系统的硬件配置。 软件工程(Software Engineer)

  39. 习题十一 • UML的定义是什么?它的组成部分有哪些? • UML的内容包括那些成分?它的特点是什么? • 讲述UML的模型元素,通用机制的作用。 • 静态图包含哪几类图?类图和对象图有什么相同和不同? • 属性和方法有哪几种类型? • 画一个类的继承图,它描述两类公司的顾客:外部的顾客,他们属于其他公司,内部顾客,他们是公司内部所有部门的顾客。 • 什么是用例图?它的作用是什么? • 什么是状态图?它的作用是什么? • 什么是顺序图?什么是泳道?它们的作用是什么? • 什么是协作图?它的作用是什么? 软件工程(Software Engineer)

  40. 什么是活动图?它的作用是什么? • 什么是包?它的作用是什么? • 什么是构件图?什么是配置图?它们的作用有什么不同? • 什么时候适合用组成建模?例如,为什么不使用UML组成表示法显示一只狗是由高度、重量、颜色和出生日构成的呢? • 切片的面包是由面包片组成的。面包和切片的关联是组成还是聚集? • 构思一个图书馆借书的情节(场景),画出它的顺序图。 • 银行与我们的生活密切相关。银行提供存款、取款、转账等业务。一个客户可以在银行开设多个账户,客户可以向账户中存钱,也可以从账户中取钱,也可以将存款从一个账户转到另一个账户。客户也可以查询自己账户中的存款状况,并可以查询以前进行的存款、取款、转账等历史交易记录。客户也有权撤销账户。 • 根据上述描述的银行的基本功能,对其进行面向对象的系统分析与设计,利用UML语言为系统建模。 软件工程(Software Engineer)

More Related