第二章UML建模语言介绍
- 格式:doc
- 大小:68.00 KB
- 文档页数:15
UML(UnifiedModelingLanguage统⼀建模语⾔)UML(Unified Modeling Language 统⼀建模语⾔),⼜称标准建模语⾔。
是⽤来对软件密集系统进⾏可视化建模的⼀种语⾔。
UML是⼀种⾯向对象的建模语⾔,它可以实现⼤型复杂系统各种成分描述的可视化、说明并构造系统模型,以及建⽴各种所需的⽂档,是⼀种定义良好、易于表达、功能强⼤且普遍适⽤的建模语⾔。
UML基本内容详述(1)视图 视图是表达系统的某⼀⽅⾯特征的UML建模元素的⼦集;试图并不是图,它是由⼀个或多个图组成的对系统某个⾓度的抽象。
1)⽤例视图(核⼼视图) 强调从⽤户的⾓度看到的或需要的系统功能。
2)逻辑视图 该视图⽤于描述系统内实现的逻辑功能,展现系统的静态或结构组成及特征。
3)组件视图 该视图从系统实现的⾓度来描述模型对象间的关系。
4)配置视图 该视图⽤于说明系统的物理配置。
(2)图表 图表是描述视图内容的图。
1)⽤例图 ⽤于描述外部项与系统提供的使⽤事件之间的联系。
⼀个使⽤事件是系统提供的功能的具体描述,是系统分析⼈员从⽤户⾓度描述系统的功能,是功能与功能之间以及功能与⽤户之间的关系。
使⽤事件定义了系统的功能需求。
简单理解:⽤来描述系统的功能。
2)类图 ⽤于描述系统的静态结构。
类可以⽤不同⽅式连接,主要包括联合、依赖、独⽴和包装。
⼀个系统⼀般有多张类图,⼀个类可在不同的视图中出现。
3)对象图 ⽤于表述系统在某个时刻的静态结构。
对象图也可作为协作图的⼀部分,说明⼀组对象之间的动态协作关系。
对象图与类图的区别:对象图表⽰的是类中的许多对象实例,⽽不是类本⾝。
4)状态图 ⽤于说明类中的对象可能具有的状态,以及由时间引起的状态的改变。
简单理解:描述了系统元素的状态条件和响应。
5)顺序图(时序图) ⽤于描述对象间的动态协作关系。
表达了对象间发⾏消息的时序,同时也表达出对象间的相互作⽤,以及当系统执⾏到某个特定位置时可能会发⽣的事。
《统一建模语言UML》课程介绍一、课程概况英文名:Unified Model Language开课单位:计算机学院课程编码:203082学分学时:52学时(含12个实验学时)授课对象:软件工程专业本科学生先修课程:《软件工程》、《面向对象分析与设计》课程目的和主要内容:本课程以介绍面向对象的统一建模语言UML为主,目的是了解面向对象技术的基本概念,掌握面向对象的分析和设计方法,以及与面向对象技术相关的一些软件开发技术,同时掌握在Rose环境下用UML进行分析和设计的要求。
学会使用UML(Unified Modeling Language)这一建模工具,掌握面向对象建模所必需的描述手段和处理方法,为科学研究中的软件开发工作奠定良好基础;同时培养学生的分析能力、设计能力和工程思想,以提高学生的科学研究素质。
使用教材:《面向对象技术UML教程》,软件工程系列,王少锋编著,清华大学出版社《统一建模语言UML》教学大纲二、课程概况英文名:Unified Model Language开课单位:计算机学院课程编码:203082学分学时:52学时(含12个实验学时)授课对象:软件工程专业本科学生先修课程:软件工程、面向对象分析与设计课程目的和主要内容:本课程以介绍面向对象的统一建模语言UML为主,目的是了解面向对象技术的基本概念,掌握面向对象的分析和设计方法,以及与面向对象技术相关的一些软件开发技术,同时掌握在Rose环境下用UML进行分析和设计的要求。
学会使用UML(Unified Modeling Language)这一建模工具,掌握面向对象建模所必需的描述手段和处理方法,为科学研究中的软件开发工作奠定良好基础;同时培养学生的分析能力、设计能力和工程思想,以提高学生的科学研究素质。
二、课程内容第一章(3学时)UML概述1.1(1学时)UML的历史、特点与构成1.2(1学时)UML的应用领域1.3(1学时)支持UML的工具第二章(3学时)面向对象技术概述1.1(1学时)软件工程概述1.2(1学时)控制软件复杂性的基本方法1.3(1学时)面向对象领域中的基本概念第三章(6学时)用例和用例图1.1(1学时)用例、参与者及脚本1.2(2学时)用例间的关系1.3(2学时)用例图的构成及实例第四章(8学时)顺序图和协作图1.1(2学时)交互图概述及顺序图的构成1.2(2学时)顺序图中的各种消息1.3(2学时)协作图的构成及其建立步骤1.4(1学时)顺序图和协作图的比较及工具支持第五章(8学时)类图和对象图1.1(1学时)类的属性及操作1.2(2学时)类之间的关系1.3(2学时)派生1.4(2学时)3种主要的类版型1.5(1学时)类图和对象图的构成第六章(8学时)状态图和活动图1.1(1学时)状态图概述1.2(3学时)状态图中的基本概念及其支持工具1.3(3学时)活动图中的基本概念及其支持工具1.4(1学时)状态图和活动图两者比较第七章(6学时)构件图和部署图1.1(1学时)构件和构件图的概念及作用1.2(2学时)支持构建图的工具1.3(1学时)部署图和部署图中的概念1.4(2学时)支持部署图的工具实验(12学时)1.安装及使用UML开发工具Rational Rose 2003和Microsoft的Visio 20032.使用开发工具绘制项目案例中所涉及的用例图、顺序图、协作图3.使用开发工具绘制项目案例中所涉及的类图、对象图、状态图、活动图、构件图、部署图4.按照软件开发流程绘制图书借阅系统中的各种图例。
2011UML复习题纲一、选择、判断、填空第一章UML与面向对象1、UML(Unified Modeling Language,统一建模语言)是软件和系统开发的标准建模语言,它主要以图形的方式对系统进行分析、设计。
2、UML是在多种面向对象分析与设计方法相互融合的基础上形成的,是一种专用于系统建模的语言。
它为开发人员与客户之间,以及开发人员之间的沟通与理解架起了“桥梁”。
3、UML不是开发工具,只是建模语言。
4、OOA三种基本模型:功能模型、对象模型、动态模型。
5、软件是程序、数据和相关文档的完整集合。
6、软件开发过程分为如下几个阶段:需求分析、总体设计、详细设计、编程与测试、维护。
7、面向对象的软件工程方法包括面向对易用的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)。
8、软件方法学包含3个要素:方法、工具和过程。
9、对象是现实世界中一个实际存在的事物,它可以是看得见摸得着的东西。
10、类是一组具有相同属性的操作的对象集合,它为所有属于该类的对象提供了统一的描述。
11、封装是指将对象属性和操作结合在一起,构成一个独立的对象。
封装使得对象属性和操作紧密结合在一起,这反映了事物的状态特性与动作是事物不可分割的特征。
12、继承是指子类可以拥有父类的全部属性和操作,继承是OO方法的一个重要的概念,并且是OO技术可以提高软件开发效率的一个重要原因。
13、多态性是指在父类中定义的属性和操作被子类继承后,可以具有不同的数据类型或表现出不同的行为。
14、OO开发中的三层设计:问题域类、GUI类和数据访问类。
15、面向对象设计准则:模块化、抽象、信息隐藏、低耦合、高内聚。
16、UML的构成:元元模型层、元模型层、模型层、用户模型层。
17、UML的核心是由视图、图、模型元素、通用机制组成。
18、UML中的视图细分:(1)用例视图(用例视图强调从系统的外部参与者角度需要的功能,描述系统应该具有的功能);(2)逻辑视图(逻辑视图的使用者主要是设计人员和开发人员,描述用例视图提出的系统功能的实现);(3)并发视图(并发视图的使用者主要是开发人员和系统集成人员,它主要考虑资源的有效利用、代码的并行执行以及系统环境中异步事件的处理);(4)组件视图(组件是不同类型的代码模块,它是构造应用的软件单元。
返回总目录目录第2章 UML语言概述 (2)2.1 视图 (2)2.2 图 (4)2.3 模型元素 (10)2.4 通用机制 (11)2.5 扩展机制 (12)2.6 用UML建模 (14)2.7 工具的支持 (16)第2章 UML 语言概述统一建模语言Unified Modeling Language 简称UML 的应用领域很广泛它可以用于商业建模business modeling 软件开发建模的各个阶段也可以用于其他类型的系统它是一种通用general 的建模语言具有创建系统的静态结构和动态行为等多种结构construction 模型的能力UML 语言本身并不复杂也不很专业化它具有可扩展性和通用性适合为各种多变的系统建模本章主要介绍UML 语言的概况使大家了解UML 的结构和基本元素基本元素只给出简要的描述更详细深入的讨论将在后继章节中叙述因此读者在本章的学习中只要知道与UML 有关的概念即可并不需要完全理解图例UML 由视图views 图Diagrams 模型元素Model elements 和通用机制general mechanism 等几个部分构成视图用来表示被建模系统的各个方面从不同的目的出发建立为系统建立多个模型这些模型都反映同一个系统且具有一致性视图由多个图Diagrams 构成它不是一个图片graph 而是在某一个抽象层上对系统的抽象表示如果要为系统建立一个完整的模型图只需定义一定数量的视图每个视图表示系统的一个特殊的方面就可以了另外视图还把建模语言和系统开发时选择的方法或过程连接起来图由各种图片graph 构成用来描述一个视图的内容UML 语言定义了种不同的图的类型把它们有机地结合起来就可以描述系统的所有视图模型元素代表面向对象中的类对象消息和关系等概念是构成图的最基本的常用概念一个模型元素可以用在多个不同的图中无论怎样使用它总是具有相同的含义和相同的符号表示通用机制用于表示其他信息比如注释模型元素的语义等另外它还提供扩展机制使UML 语言能够适应一个特殊的方法或过程或扩充至一个组织或用户2.1 视 图给复杂的系统建模是一件困难和耗时的事情从理想化的角度来说整个系统像是一张画图这张图画清晰而又直观地描述了系统的结构和功能既易于理解又易于交流但事实上要画出这张图画几乎是不可能的因为一个简单的图画并不能完全反映出系统中需要的所有信息描述一个系统涉及到该系统的许多方面比如功能性方面它包括静态结构和动态交互非功能性方面定时需求可靠性展开性等和组织管理方面工作组映射代码模块等完整地描述系统通常的做法是用一组视图反映系统的各个方面每个视图代表完整系统描述中的一个抽象显示这个系统中的一个特定的方面每个视图由一组图构成图中包含了强调系统中某一方面的信息视图与视图之间有时会产生轻微的重叠从而使得一个图实际上可能是多个视图的一个组成部分如果用不同的视图观察系统每次只集中地观察系统的一个方面视图中的图应该简单易于交流且与其他的图图用图形符号表示图符号代表系统中的模型元素和视图有关联关系UML中的视图包括用例视图Use-case view逻辑视图Logical view组件视图Component view并发视图Concurrency View展开视图Deployment View等五种能够使用的其他视图还有静态动态视图逻辑物理视图工作流程workflow等视图但UML语言中并不使用这些视图它们是UML语言的设计者意识中的视图因此在未来的大多数CASE工具中有可能包含这些视图当用户选择一个CASE工具作图diagram的时候一定要保证该工具能够容易地从一个视图导航navigate到另一个视图另外为了看清楚一个功能在图中是怎样工作的该工具也应该具备方便地切换至用例视图或展开视图的长处因为用例视图下可以看到该功能是怎样被外部用户描述的展开视图下可以看到物理结构中该功能是怎样分布的即确定在哪台计算机中得到该功能2.1.1用例视图用例视图Use-case view用于描述系统应该具有的功能集它是从系统的外部用户角度出发对系统的抽象表示用例视图所描述的系统功能依靠于外部用户或另一个系统触发激活为用户或另一个系统提供服务实现用户或另一个系统与系统的交互系统实现的最终目标是提供用例视图中描述的功能用例视图中可以包含若干个用例use-case用例用来表示系统能够提供的功能系统用法一个用例是系统用法功能请求的一个通用描述用例视图是其他视图的核心和基础其他视图的构造和发展依赖于用例视图中所描述的内容因为系统的最终目标是提供用例视图中描述的功能同时附带一些非功能性的性质因此用例视图影响着所有其他的视图用例视图还可用于测试系统是否满足用户的需求和验证系统的有效性用例视图主要为用户设计人员开发人员和测试人员而设置用例视图静态地描述系统功能为了动态地观察系统功能偶尔也用活动图activity diagram描述2.1.2 逻辑视图用例视图只考虑系统应提供什么样的功能对这些功能的内部运作情况不予考虑为了揭示系统内部的设计和协作状况要使用逻辑视图描述系统逻辑视图Logical view用来显示系统内部的功能是怎样设计的它利用系统的静态结构和动态行为来刻画系统功能静态结构描述类对象和它们之间的关系等动态行为主要描述对象之间的动态协作当对象之间彼此发送消息给给定的函数时产生动态协作一致性persistence和并发性concurrency等性质以及接口和类的内部结构都要在逻辑视图中定义静态结构在类图和对象图中描述动态建模用状态图序列图协作图和活动图描述2.1.3 组件视图组件视图Component view用来显示代码组件的组织方式它描述了实现模块implementation module和它们之间的依赖关系组件视图由组件图构成组件是代码模块不同类型的代码模块形成不同的组件组件按照一定的结构和依赖关系呈现组件的附加信息比如为组件分配资源或其他管理信息比如进展工作的进展报告也可以加入到组件视图中组件视图主要供开发者使用2.1.4 并发视图并发视图Concurrency View用来显示系统的并发工作状况并发视图将系统划分为进程和处理机方式通过划分引入并发机制利用并发高效地使用资源并行执行和处理异步事件除了划分系统为并发执行的控制线程外并发视图还必须处理通信和这些线程之间的同步问题并发视图所描述的方面属于系统中的非功能性质方面并发视图供系统开发者和集成者integrator使用它由动态图状态图序列图协作图活动图和执行图组件图展开图构成2.1.5 展开视图展开视图Deployment View用来显示系统的物理架构即系统的物理展开比如计算机和设备以及它们之间的联接方式其中计算机和设备称为结点node它由展开图表示展开视图还包括一个映射该映射显示在物理架构中组件是怎样展开的比如在每台独立的计算机上哪一个程序或对象在运行展开视图提供给开发者集成者和测试者2.2 图图diagram由图片graph组成图片是模型元素的符号化把这些符号有机地组织起来形成的图表示了系统的一个特殊部分或某个方面一个典型的系统模型应有多个各种类型的图图是一个具体视图的组成部分在画一个图时就相当于把这个图分配给某个视图了依据图本身的内容有些图可能是多个视图的一部分UML中包含用例图类图对象图状态图序列图协作图活动图组件图展开图共九种本小节讨论九种图的基本概念关于图的语法含义它们之间怎样交互等所有细节将在后继章节中叙述使用这九种图就可以描述世界上任何复杂的事物这就充分地显示了UML的多样性和灵活性2.2.1用例图用例图use-case diagram用于显示若干角色actor以及这些角色与系统提供的用例之间的连接关系如图2-1所示用例是系统提供的功能即系统的具体用法的描述通常一个实际的用例采用普通的文字描述作为用例符号的文档性质当然实际的用例图也可以用活动图描述用例图仅仅从角色触发系统功能的用户等使用系统的角度描述系统中的信息也就是站在系统外部察看系统功能它并不描述系统内部对该功能的具体操作方式用例图定义的是系统的功能需求关于用例图的图示方法含义等更进一步的介绍放在第三章中客户图2.1 用例图示例2.2.2 类图类图class diagram 用来表示系统中的类和类与类之间的关系它是对系统静态结构的描述如图2-2所示类用来表示系统中需要处理的事物类与类之间有多种连接方式关系比如关联彼此间的连接依赖一个类使用另一个类通用化一个类是另一个类的特殊化或打包packaged多个类聚合成一个基本元素类与类之间的这些关系都体现在类图的内部结构之中通过类的属性attribute 和操作operation 这些术语反映出来在系统的生命周期中类图所描述的静态结构在任何情况下都是有效的一个典型的系统中通常有若干个类图一个类图不一定包含系统中所有的类一个类还可以加到几个类图中在第四章中我们再详细讨论图2-2 金融贸易类图示例2.2.3 对象图对象图是类图的变体两者之间的差别在于对象图表示的是类的对象实例而不是真实的类对象图是类图的一个范例example它及时具体地反映了系统执行到某处时系统的工作状况对象图中使用的图示符号与类图几乎完全相同只不过对象图中的对象名加了下划线而且类与类之间关系的所有实例也都画了出来如图2-3所示图2-3a 的类图抽象地显示各个类及它们之间的关系图2-3b 的对象图则是图2-3a 类图的一个实例表示对象图没有类图重要对象图通常用来示例一个复杂的类图通过对象图反映真正的实例是什么它们之间可能具有什么样的关系帮助对类图的理解对象图也可以用在协作图中作为其一个组成部分用来反映一组对象之间的动态协作关系姓名string 年龄integer名称string 内存integer丁一作家=丁一PC名称Dell 466=64PC名称长城P MMX=64图2-3 对象图与类图示例2.2.4 状态图一般说来状态图是对类所描述事物的补充说明它显示了类的所有对象可能具有的状态以及引起状态变化的事件如图2-4所示事件可以是给它发送消息的另一个对象或者某个任务执行完毕比如指定时间到状态的变化称作转移transition一个转移可以有一个与之相连的动作action 这个动作指明了状态转移时应该做些什么并不是所有的类都有相应的状态图状态图仅用于具有下列特点的类具有若干个确定的状态类的行为在这些状态下会受到影响且被不同的状态改变另外也可以为系统描绘整体状态图关于状态图更进一步的讨论详见第五章和第八章上升楼层图 2.4 电梯的状态图示例2.2.5序列图序列图用来反映若干个对象之间的动态协作关系也就是随着时间的流逝对象之间是如何交互的如图2-5所示序列图主要反映对象之间已发送消息的先后次序说明对象之间的交互过程以及系统执行过程中在某一具体位置将会有什么事件发生序列图由若干个对象组成每个对象用一个垂直的虚线表示线上方是对象名每个对象的正下方有一个矩形条它与垂直的虚线相叠矩形条表示该对象随时间流逝的过程从上至下对象之间传递的消息用消息箭头表示它们位于表示对象的垂直线条之间时间说明和其他的注释作为脚本放在图的边缘对序列图的讨论详见第五章和第八章文件打印文件打印机忙] 存储文件图 2.5 序列图示例2.2.6协作图协作图和序列图的作用一样反映的也是动态协作除了显示消息变化称为交互外协作图还显示了对象和它们之间的关系称为上下文有关由于协作图或序列图都反映对象之间的交互所以建模者可以任意选择一种反映对象间的协作如果需要强调时间和序列最好选择序列图如果需要强调上下文相关最好选择协作图协作图与对象图的画法一样图中含有若干个对象及它们之间的关系使用对象图或类图中的符号对象之间流动的消息用消息箭头表示箭头中间用标签标识消息被发送的序号条件迭代iteration 方式返回值等等通过识别消息标签的语法开发者可以看出对象间的协作也可以跟踪执行流程和消息的变化情况协作图中也能包含活动对象多个活动对象可以并发执行如图2-6所示第五章和第八章详细讨论协作图打印 1.2文件图2.6协作图示例2.2.7活动图活动图activity diagram 反映一个连续的活动流如图2-7所示相对于描述活动流比如用例或交互来说活动图更常用于描述某个操作执行时的活动状况活动图由各种动作状态action state 构成每个动作状态包含可执行动作的规范说明当某个动作执行完毕该动作的状态就会随着改变这样动作状态的控制就从一个状态流向另一个与之相连的状态活动图中还可以显示决策条件动作状态的并行执行消息被动作发送或接收的规范说明等内容活动图在第五章中详述图2.7 活动图示例2.2.8 组件图组件图component diagram 用来反映代码的物理结构代码的物理结构用代码组件表示组件可以是源代码二进制文件或可执行文件组件组件包含了逻辑类或逻辑类的实现信息因此逻辑视图与组件视图之间存在着映射关系组件之间也存在依赖关系利用这种依赖关系可以方便地很容易地分析一个组件的变化会给其他的组件带来怎样的影响组件可以与公开的任何接口比如OLE COM 接口一起显示也可以把它们组合起来形成一个包package 在组件图中显示这种组合包实际编程工作中经常使用组件图如图2-8所示第六章中将进一步详述组件图图2.8 组件图示例2.2.9 展开图展开图deployment diagram用来显示系统中软件和硬件的物理架构通常展开图中显示实际的计算机和设备用结点表示以及各个结点之间的关系还可以显示关系的类型每个结点内部显示的可执行的组件和对象清晰地反映出哪个软件运行在哪个结点上组件之间的依赖关系也可以显示在展开图中正如前面所陈述展开图用来表示展开视图描述系统的实际物理结构用例视图是对系统应具有的功能的描述它们二者看上去差别很大似乎没有什么联系然而如果对系统的模型定义明确那么从物理架构的结点出发找到它含有的组件再通过组件到达它实现的类再到达类的对象参与的交互直至最终到达一个用例也是可能的从整体来说系统的不同视图给系统的描述应当是一致的如图2-9所示关于展开图的讨论放在第六章中详述TCP/IP A Compaq Pro PC BCompaq Pro PC数据库服务器应用服务器Silicon Graphics O2TCP/IP DecNet 图2.9 展开图示例whnd.cpp comhnd.cppcomhnd.objwhnd.objmain.cppmain.obj graphic.dllclient.exe2.3 模 型 元 素可以在图中使用的概念统称为模型元素模型元素用语义元素的正式定义或确定的语句所代表的准确含义来定义模型元素在图中用其相应的视图元素符号表示利用视图元素可以把图形象直观地表示出来一个元素符号可以存在于多个不同类型的图中但是具体以怎样的方式出现在哪种类型的图中要符合依据一定的规则图2-10给出了类对象状态结点包package 和组件等模型元素的符号图例接口图2.10 一些通用的模型元素符号示例模型元素与模型元素之间的连接关系也是模型元素常见的关系有关联association通用化generalization依赖dependency和聚合aggregation 其中聚合是关联的一种特殊形式这些关系的图示符号如图2-11所示通用化继承图2.11 关系的图示符号示例除了上述的模型元素外模型元素还包括消息动作和版类stereotype 所有模型元素的意义和允许的用法在后续章节中解释它们的语义采用非正式的可行方式描述而不采用UML 语言参考手册中的正式定义2.4 通 用 机 制UML 语言利用通用机制为图附加一些信息这些信息通常无法用基本的模型元素表示常用的通用机制有修饰adornment笔记note和规格说明specification 等2.4.1 修饰在图的模型元素上添加修饰为模型元素附加一定的语义这样建模者就可以方便地把类型与实例区别开当某个元素代表一个类型时它的名字被显示成黑体字当用这个元素代表其对应类型的实例时它的名字下面加下划线同时还要指明实例的名字和类型的名字比如类用长方形表示其名字用黑体字书写比如计算机如果类的名字带有下划线它则代表该类的一个对象比如丁一的计算机对结点的修饰方式也是一样的结点的符号既可以是用黑体字表示的类型比如打印机也可以是结点类型的一个实例丁一的HP 打印机其他的修饰有对各种关系的规范说明比如重数multiplicity重数是一个数值或一个范围它指明涉及到关系的类型的实例个数修饰紧靠着模型元素书写2.4.2 笔记无论建模语言怎样扩展它不可能应用于描述任何事物为了在模型中添加一些额外的模型元素无法表示的信息UML 语言提供了笔记能力笔记可以放在任何图的任意位置并且可以含有各种各样的信息信息的类型是字符串UML语言不能解释如果某个元素需要一些解释或说明信息那么就可以为该元素添加笔记通常用虚线把含有信息的笔记与图中的一些元素联系起来如图2-12所示图2.12 笔记图示笔记中可以包含建模者的注释或问题用以提示建模者防止日后出现不清楚该元素的含义等情况笔记中也可以包含版类版类用于描述笔记的类型版类在下一节的扩展机制中详细叙述2.4.3 规格说明模型元素含有一些性质这些性质以数值方式体现一个性质用一个名字和一个值表示又称作加标签值tagged value 加标签值用整数或字符串等类型详细说明UML 中有许多预定义的性质比如文档documentation响应responsibility 持续性persistence 和并发性concurrency 性质一般作为模型元素实例的附加规格说明比如用一些文字逐条列举类的响应和能力这种规范说明方式是非正式的并且也不会直接显示在图中但是在某些CASE 工具中通过双击模型元素就可以打开含有该元素所有性质的规格说明窗口通过该窗口就可以方便地读取信息了2.5 扩 展 机 制UML 语言具有扩展性因此也适用于描述某个具体的方法组织或用户这里我们介绍三种扩展机制版类stereotype加标签值tagged value和约束constrains这三种机制的更详细的讨论在第七章中进行2.5.1 版类版类扩展机制是指在已有的模型元素基础上建立一种新的模型元素版类与现有的元素相差不多只不过比现有的元素多一些特别的语义罢了版类与产生该版类的原始元素的使用场所是一样的版类可以建立在所有的元素类型上比如类结点组件笔记关系关联通用化和依赖UML 语言中已经预定义了一些版类这些预定义的版类可以直接使用从而免去了再定义新版类的麻烦使得UML语言用起来比较简单版类的表示方法是在元素名称旁边添加一个版类的名字版类的名字用字符串用双尖角括号括起来表示如图2-13所示版类也可以用一个图形表示比如图标具体的版类元素的图示方法有三种第一种在元素名称之上写版类名这是一般的表示法第二种是在元素名称旁画出版类的图标图形化表示第三种是把元素名称和版类图标合在一起图2-13图示了这三种表示法客户角色客户图2-13版类的图示方法当一个元素与版类连接在一起后该元素称为指定版类的元素类型比如与版类window 相连的类就称为window版类的类这意味着该类是window类型的了当用户定义版类的时候与之相关的类也要定义比如定义window版类时必须定义window 版类的类图2-13中的客户是具有版类角色的类由于版类角色添加了特别的语义给客户类所以该类代表的是系统的外部角色用户版类是非常好的扩展机制它的存在避免了UML 语言过于复杂化同时也使UML 语言能够适应各种需求很多需求的新模型元素已做成了UML 语言的基础原型prototype 用户可以利用它添加新的语义后定义新的模型元素2.5.2 加标签值在 2.4.3节中已讨论过元素有很多性质性质用名字和值一对信息表示性质也称为加标签值UML 语言中已经预定义了一定数量的性质用户还可以为元素定义一些附加信息即定义性质任何一种类型的信息都可以定义为元素的性质比如具体的方法信息建模进展状况的管理信息其他工具使用的信息用户需要给元素附加的其他各类的信息图2-14表示的是仪器类的性质其中抽象abstract 详细含义见第四章是预定义的性质作者和状态是用户定义的加标签值图2.14 仪器类的性质示例2.5.3 约束约束是对元素的限制通过约束限定元素的用法或元素的语义如果在几个图中都要使用某个约束可以在工具中声明该约束当然也可以在图中边定义边使用图2-15显示的是老年人类与一般人类之间的关联关系显然并不是所有的人都是老年人为了表示只有岁以上的人才能加入老年人类我们定义了一个约束条件年龄属性大于岁的人person.age > 60有了这个条件哪个人属于这种关联关系中也就自然清楚了反过来说假如没有约束条件这个图就很难解释清楚在最坏情况下它可能会导致系统实现上的错误在上述例子中约束被直接定义和应用在了需要使用的图上当然也可以用名字加规格说明的方法定义约束比如老年人和person.age > 60UML 语言中预定义了一部分约束这些约束的具体内容在第七章中讨论图2.15 约束示例。
软件架构师培训课程之一U M L建模语言入门讲师:廖素文福州特力惠电子有限公司内部资料2008-10-31序言学习UML,不仅仅是学习UML的语法和使用方法,更是学习UML代表的由若干世界级面向对象设计大师总结的OOA和OOD的设计方法和最佳实践。
而且,在我看来,UML的学习内容甚至以后者为主。
只有透彻理解了面向对象设计的基本理论,才可能理解用以表达面向对象软件系统的模型的语言――UML,另一方面,如果理解了面向对象设计的基本理论并有一定的面向对象分析、设计和编程经验,那末UML的学习就简化为一种文档化的技巧而已。
由此可见,UML学习,首先是面向对象的分析、设计和编程的方法的学习,是组件化的、松耦合的有良好体系结构的软件系统的架构设计的研究。
如果软件没有良好的体系结构,或者没有采用面向对象分析设计、编程,即使采用UML也无法建立良好的模式,甚至无法用UML表达出来。
目前,关于UML的书籍可以说是汗牛充栋。
由于UML在软件建模方面独步天下,因此大量的书籍介绍UML的使用。
拜师要拜名师、读书要读经典,UML类的书籍,自然以UML三巨头(Grandy Booch、James Rumbaugh、Ivar Jacobson)和Martin Fowler为代表的UML国际级的大师的著作为上上之选。
其中Grady Booch、James Rumbaugh、Ivar Jacobson著《UML用户指南》和《UML参考手册》(上面两本书目前已经到第二版),Martin Flower 著《UML精粹第三版—对象模型语言标准简介》最为著名和优秀。
《UML用户指南》全面的介绍了UML基本概念,是良好的UML入门书籍。
《UML参考手册》详细介绍UML的各中语法和词汇,是一本不可多得的详尽的参考书。
而《UML精粹第三版》中,Martin Fowler 以一贯的口语化的笔法生动的讲解了UML中最常用的部分,也是一本适合的入门书籍。
第二章UML建模语言介绍1、UML(统一建模语言),统一了:Booch方法、OMT方法、OOSE方法的概念和表示法。
2、UML:一种通用的、标准的、可视化的建模语言,能让系统构造者用标准的、易于理解的方式建立起项目中所有静态结构和动态行为,便于不同的人之间有效的共享和交流工作结果。
3、UML的特点:一、统一了面向对象方法的基本概念。
1、UML是在Booch方法、OMT方法、OOSE方法的基础上发展起来的,是这些方法的延续和发展。
2、消除了不同方法在表示法和术语上的差异,3、避免了在符号表示和理解上不必要的混乱。
二、强大的建模能力。
1、吸收了不同面向对象方法的长处,2、融入了其他面向对象方法的可取之处,其中也包括非面向对象方法的影响,3、汇入了面向对象领域中很多先进思想,4、UML表达能力更强,表示更清晰一致,建模能力更强。
三、提出了很多新概念。
1、UML符号表示涵盖了很多方法的图形表示,2、删除了大量容易引起混乱的、多余的和极少使用的符号,3、增加了一些新符号,4、提出了一些新概念,如,构造型、职责、扩展机制、线程、模式、合作图和活动图等。
四、独立于开发过程。
1、UML是一个标准的图形表示法,2、它不是面向对象的分析和设计,也不是一种方法,只是一组符号。
3、UML只是一种建模语言,与具体软件开发过程无关,因此独立于开发过程。
4、可用于软件开发过程,支持从用户需求到测试的各个开发阶段。
五、易于掌握。
UML概念明确,表示方法简洁明了,图形结构清晰,因此易于掌握。
4、UML的目标是:以面向对象图的方式来描述任何类型的系统。
5、UML的用途说明:一、以面向对象图的方式来描述任何类型的系统。
具有很广泛的应用领域,最常见的是:建立软件系统的模型,同样可以用于描述非软件领域的系统。
二、适用于系统开发过程中的不同阶段。
(适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。
)1、系统分析和设计。
A、在需求分析阶段,可以用用例来捕获用户需求。
B、分析阶段主要关心问题域中的主要概念和机制,需要识别这些类,以及它们相互间的关系,并用UML类图来描述。
2、编程。
一个独立的阶段,任务是用面向对象编程语言将来自设计阶段的类转换成实际的代码。
3、测试。
UML模型还可以作为测试阶段的依据。
系统通常需要经过:A、单元测试(使用类图和类规格说明做为测试依据)、B、集成测试(使用构件图和合作图做为测试依据)、C、系统测试(使用用例图来验证系统的行为作为测试依据)和D、验收测试(由用户进行)。
6、UML的发展历史变革:1、面向对象建模语言出现于20世纪70 年代中期。
2、1989年到1994年面向对象语言从10余种发展到50余种,爆发了一场方法大战。
3、最引人注意的是Booch方法、OMT方法、OOSE方法。
4、Booch是面向对象最早的提倡者之一,提出了面向对象软件工程的概念。
适合于系统的设计和构造。
5、OMT(对象建模技术)采用了面向对象的概念,引入各种独立于语言的表示符。
OMT2适用于分析和描述以数据为中心的信息系统。
6、OOSE(面向对象软件工程)方法是由Jacobson于1994年提出,最大特点是面向用例,在用例的描述中引入了外部角色的概念。
OOSE适合支持商业工程和需求分析。
7、1994年10月,Booch和Rumbaugh将Booch和OMT统一起来,1995年10月发布了第一个公开版本UM0.8。
8、1995年秋,Jacobson加入,三人一起努力,1996年6月和10月发表了UML0.9和UML0.91,将UM命名为UML。
9、1996年成立了UML会员协会。
10、1997年1月和7月公布了UML1.0和UML1.1版本。
11、1997年11月,OMG(对象管理组织)采纳了UML1.1作为面向对象技术的标准建模语言。
7、UML建模型语言的描述方式:以标准的图形表示为主8、UML模型图由:元素、关系和图构成。
9、元素:是UML模型中最基本的构成元素,是具有代表性的成分的抽象。
10、关系:把元素紧密联系在一起。
11、图:是元素和关系的可视化表示。
12、UML表示法:提供标准的图形符号和正文语法。
13、UML的图形表示法:1、用例图。
从用户的角度描述系统功能,并指出各功能的操作者,用于描述表示系统的功能。
2、静态图。
包括类图、对象图及包图,用于描述系统的静态结构。
3、行为图。
包括状态图和活动图。
用于描述系统的动态行为和对象之间的相互关系。
4、交互图。
包括序列图和合作图,用于描述系统的对象之间的动态合作关系。
5、实现图。
包括构件图和部署图。
用于描述系统的物理实现。
14、十种图也可分为:1、静态模型图(类图、对象图、包图、构件图、部署图)描述的是系统的与时间不相关的属性和行为。
2、动态模型图(用例图、状态图、活动图、序列图和合作图)描述了系统随时间变化的行为。
15、UML的通用模型元素:构造型元素和基元素。
16、模型元素:由构造型元素和基元素组成。
是UML构造系统各种模型的元素,是UML构建模型的基本单位。
17、基元素:指由UML定义的模型元素。
(类、对象、节点、包、构件、注释、关联、依赖、泛化等)18、构造型元素:是指在基元素的基础上增加新的定义而构造的新的模型元素,是UML的一种扩展机制。
简称构造型。
19、构造型元素:用带有一对尖括号的字符串表示。
如:<使用>、<扩展>泛化关系的构造型元素。
20、常见的关系有:关联、依赖、泛化。
21、关联关系:一种结构关系,主要是指两个元素间的相互联接结构,表示整体和部分的关系。
22、关联关系的图形符号是:一条实线。
23、泛化关系:指出类之间的“一般和特殊”关系,即继承关系。
特殊化元素(子元素)可以共享一般化元素(父元素)的结构和行为。
24、泛化关系的图形符号是:一条带有空心箭头的由特殊元素指向一般化元素的实线。
25、依赖关系:是指两个事物或者元素之间拥有相互影响的关系,当一个事物或者元素发生改变时,会影响到另一个事物。
(其中一个事物或元素是独立、另一个非独立)26、依赖关系的图形符号是:一条带有箭头的由非独立元素指向独立元素的虚线。
27、UML中,类图、包图、构件图和部署图都会用到依赖关系。
28、约束:UML中提供的一种简便、统一和一致的约束,是各种模型元素的一种语义条件或限制,用于类、关系、属性、操作等元素及其基本构成要素的约束条件,这些约束条件描述了这些元素及其构成要素应遵守的限制和应满足的条件。
29、约束的图形符号:由一对花括号括起约束的内容。
30、约束的示例:{abstract}:用于类的约束,表明该类是一个抽象类。
{complete}:用于关系的约束,表明该分类是一个完全分类。
{hierarchy}:用于关系的约束,表明该关系是一个分层关系。
{xor}:用于关联的约束,称为“或约束”,即某时刻只有一个当前的关联实例。
31、细化:两个元素A和B,若B元素是A元素的详细描述,则称为B元素细化A元素。
细化关系表示了元素之间更详细的一层描述。
32、细化的图形符号:用两个元素之间带空心三角箭头的虚线来表示,箭头的方向由细化的元素指向被细化的元素。
33、注释:用于对UML的元素或实体进行说明、解释和描述,通常用自然语言进行注释。
34、注释的图形符号:注释由注释体和注释连接组成。
图形符号是由一个矩形,其右上角翻下,矩形中间标注释注释的内容;注释连线用虚线表示,它把注释体和被注释的元素或实体连接起来。
35、用例图符号表示:由用例(一个椭圆形表示),参与者(直立人形图表示)和关联线(实线)组成。
用例属于系统内部,装入矩阵内,参与者是系统外部,放在矩阵外面。
36、用例图的组成:用例、参与者、关联线。
37、用例图:从用户角度描述系统功能,并指出各功能的操作者,用于描述表示系统的功能。
38、用例图的作用:1、用例是系统提供的一个功能单元,2、从用户角度对系统行为的一个描述,3、从用户的角度来描述系统需求,4、用例图就是参与者、用例以及它们之间的关系构成的用于描述系统功能的模型图,5、用例图主要用于对系统功能进行建模,F:帮助开发团队以一种可视化的方式理解系统的功能我需求。
6、它是从系统外部看系统功能,并不描述系统内部对功能的具体实现。
39、参与者:是与所建系统交互的人或事物,可以是实际的人,也可以是其他系统或事物,是系统的一部分,是用例图的重要组成部分,是系统的外部实体,放在矩阵外面。
40、类图:一个类是一类或者一组具有类似属性和共同行为的事物。
类图由系统中使用的类以及它们之间的关系组成。
41、类图的作用:1、描述系统中类的静态结构,2、不仅定义系统中的类,3、表示类之间的联系,如关联、依赖、聚合等,4、也包括类的内部结构(类的属性和操作)。
42、类图的表示:类在类图上使用包含三个区域的矩形来描述。
最上面是:类名,中间区域是:类的属性,最下面区域是:类的操作。
43、类的属性和方法都具有可见性,表示该属性或方法对类外的元素是否可见。
常见的可见性有:公用、私有、受保护三种。
分别用:“+”、“-”、“#”来表示。
44、状态图:用来描述一个对象所有可能的状态以及状态之间的转移,并给出了状态变化序列的起点和终点。
45、状态图常用的模型元素:状态、转换、初态、终态。
46、状态图的初态:是状态图的起始点,一个状态图只有一个初态,用一个黑点表示。
47、状态图的终态:是状态图的终点,终态可以有多个,用黑点外加一个圆表示。
48、状态图的状态:是一个圆角四边形表示。
带箭头的连线被称为转移,箭头指向目标状态。
状态的转移需要事件的触发。
49、活动图:活动描述的是系统要完成的一个任务或要进行的一个过程。
活动图描述了一组顺序的或并发的活动。
50、活动图作用:应用广泛,1、即可用来描述操作(类的方法)的行为,2、也可描述用例和对象内部的工作过程,3、还可用于表示并行过程。
51、活动图常用的模型元素:活动、起点、终点、转移、对象、条件判断、同步线、信息流和泳道。
52、活动:是活动图中的一个原子活动,是构成活动图的核心元素,用一个圆角的矩形表示,并标上活动名。
53、起点:描述活动图的开始状态,用一个黑色的圆表示,可以有多个起点。
54、终点:描述活动图的终止状态,用一个带圆圈的黑色圆表示,可以有多个终点。
55、转移:描述活动之间的转换,也就是被描述对象的控制流。
转移用带箭头的实线段表示,箭头指向转向的活动,可以在线段上用文字标识转移发生的条件56、对象:活动图中参与的对象,它可以发送信号给活动或是接收活动的信号,也可以表示活动输入/输出的结果。
57、条件判断:描述活动间转换的分支,只有一个流入的信息流,不同的条件下输出的信息流有不同的流向,条件判断用一个菱形表示。