• 1. UML 基础教程
  • 2. 目录1. 前言 1.1前言 1.2UML概述 1.3UML事物 1.4UML关系 1.5各UML图及特征 1.6各UML图的关系 1.7UML语法 1.8习题 2. 用例图 2.1用例图概要 2.2用例图中的事物及解释 2.3用例图中的关系及解释 2.4例子 2.5习题 3. 类图 3.1类图概要 3.2类图中的事物及解释 3.3类图中的关系及解释 3.4类图与代码的映射 3.5类图例子 3.6习题 4. 顺序图 4.1概要 4.2顺序图中的事物及解释 4.3顺序图与用例图和类图的关系 4.4顺序图例子 4.5 练习题 5. 协作图 5.1概要 5.2协作图中的事物及解释 5.3协作图中的关系及解释
  • 3. 目录5.4对消息标签的详细讲解 5.5协作图例子 5.6协作图与顺序图的区别和联系 5.7练习题 6. 状态图 6.1状态图概要 6.2状态图的组成 6.3状态图中的事物及解释 6.4状态的可选活动表 6.5简单的例子:对象的状态图 6.6复杂的例子:网上银行登陆系统 6.7练习 7. 活动图 7.1活动图概要 7.2活动图事物 7.3活动图关系 7.4活动图实例 7.5活动图练习 8. 构件图 8.1构件图概要 8.2构件图中的事物及解释 8.3构件图中的关系及解释 8.4构件图的例子 8.5习题 9. 部署图 9.1部署图概要 9.2部署图中的事物及解释 9.3部署图中的关系及解释 9.4部署图的例子 9.5关于部署图与构件图 9.6习题 附录
  • 4. 1. 前言1.1 前言 本资料对UML1.5各种模型图的构成和功能进行说明,通过本资料的学习达到可以读懂UML模型图的目的。本资料不涉及模型图作成的要点等相关知识。 1.2 UML概述 1.2.1 UML简介 UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。 UML的定义包括UML语义和UML表示法两个部分。   (1) UML语义:UML对语义的描述使开发者能在语义上取得一致认识,消除了因人 而异的表达方法所造成的影响。   (2) UML表示法:UML表示法定义UML符号的表示法,为开发者或开发工具使用这 些图形符号和文本语法为系统建模提供了标准。 1.2.2 UML模型图的构成 事物(Things):UML模型中最基本的构成元素,是具有代表性的成分的抽象 关系(Relationships):关系把事物紧密联系在一起 图(Diagrams ):图是事物和关系的可视化表示
  • 5. 1. 前言1.3 UML事物 UML包含4种事物:构件事物 行为事物 分组事物 注释事物 1.3.1 构件事物: UML模型的静态部分,描述概念或物理元素 它包括以下几种: 类:具有相同属性相同操作 相同关系相同语义的对象的描述 接口:描述元素的外部可见行为,即服务集合的定义说明 协作:描述了一组事物间的相互作用的集合 用例:代表一个系统或系统的一部分行为,是一组动作序列的集合 构件:系统中物理存在,可替换的部件 节点:运行时存在的物理元素 另外,参与者、信号应用、文档库、页表等都是上述基本事物的变体 1.3.2 行为事物:UML模型图的动态部分,描述跨越空间和时间的行为 交互:实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列、链接 状态机:描述事物或交互在生命周期内响应事件所经历的状态序列 1.3.3 分组事物: UML模型图的组织部分,描述事物的组织结构 包:把元素组织成组的机制 1.3.4 注释事物: UML模型的解释部分,用来对模型中的元素进行说明,解释 注解:对元素进行约束或解释的简单符号
  • 6. 1. 前言1.4 UML关系 1.4.1依赖 依赖(dependency)是两个事物之间的语义关系,其中一个事物(独立事物)发生变化, 会影响到另一个事物(依赖事物)的语义 1.4.2关联 关联(association)是一种结构关系,它指明一个事物的对象与另一个事物的对象间 的联系 1.4.3泛化 泛化(generalization)是一种特殊/一般的关系。也可以看作是常说的继承关系 1.4.4实现 实现(realization)是类元之间的语义关系,其中的一个类元指定了由另一个类元保 证执行的契约
  • 7. 1. 前言1.5 各UML图及特征 1.5.1 用例图( Use Case Diagram )用例图是从用户角度描述系统功能, 是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作) 类图是以类为中心来组织的,类图中的其他元素或属于某个类或与类相关联 1.5.2 类图(Class Diagram)
  • 8. 1. 前言1.5 各UML图及特征 1.5.3 对象图( Object Diagram )对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类1.5.4 顺序图(Sequence Diagram)顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互 顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件
  • 9. 1. 前言1.5 各UML图及特征 1.5.5 协作图(Collaboration Diagram)协作图描述对象间的协作关系,协作图跟顺序图 相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系. 协作图的一个用途是表示一个类操作的实现 1.5.6 状态图(State Chart Diagram)状态图是一个类对象所可能经历的所有历程的模型图。状态图由对象的各个状态和连接这些状态的转换组成
  • 10. 1. 前言1.5 各UML图及特征 1.5.7 活动图(Activity Diagram)活动图是状态图的一个变体,用来描述执行算法的工作流程中涉及的活动 活动图描述了一组顺序的或并发的活动 1.5.8 构件图(Component Diagram)构件图为系统的构件建模型—构件即构造应用的软件单元—还包括各构件之间的依赖关系,以便通过这些依赖关系来估计对系统构件的修改给系统可能带来的影响
  • 11. 1. 前言1.5 各UML图及特征 1.5.9 部署图(Deployment Diagram) 部署视图描述位于节点实例上的运行构件实例的安排。节点是一组运行资源,如计算机、设备或存储器。这个视图允许评估分配结果和资源分配类图顺序图需求分析BDFD/DD类图顺序图用例图用例文档用例图顺序图主要图之间的关系1.6 各UML图的关系
  • 12. 1. 前言1.7 UML语法描述类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的描述对象接口是描述了一个类或构件的一个服务的操作集协作定义了一个交互,它是由一组共同工作以提供某种协作行为的角色和其他元素构成的一个群体用例是对一组动作序列的描述主动类对象至少拥有一个进程或线程的类构件是系统中物理的、可替代的部件参与者在系统外部与系统直接交互的人或事物节点是在运行时存在的物理元素交互它由在特定语境中共同完成一定任务的一组对象间交换的消息组成状态机它描述了一个对象或一个交互在生命期内响应事件所经历的状态序列包把元素组织成组的机制注释事物是UML模型的解释部分依赖一条可能有方向的虚线关联一条实线,可能有方向泛化一条带有空心箭头的实线实现一条带有空心箭头的虚线
  • 13. 1. 前言1.8习题 判断题 1、UML中一共有九种图:它们是用例图、类图、对象图、顺序图、协作图、状态图、活动图、构件图、部署图 2、用例图是从程序员角度来描述系统的功能 3、类图是描述系统中类的静态结构,对象图是描述系统中类的动态结构 4、活动图和状态图用来描述系统的动态行为 5、协作图的一个用途是表示一个类操作的实现 选择题 6、请在下面选项目中选出两种可以互相转换的图 (a) 顺序图 (b)协作图 (c) 活动图 (d) 状态图 7、下面哪些图可用于BD阶段 (a)用例图 (b)构件图 (c)类图 (d)顺序图 答案:1.正确 2.错误 3.错误 4.正确 5.正确 6. (a)(b) 7.(a)(c)(d)
  • 14. 2.1 用例图概要 2. 用例图事物名称解释UML表示参与者(Actor)在系统外部与系统直接交互的人或事物(如另一个计算 机系统或一些可运行的进程)。我们需要注意的是: 1.参与者是角色(role)而不是具体的人,它代表了参与者在与系统打交道的过程中所扮演的角色。所以在系统的实际运作中,一个实际用户可能对应系统的多个参与者。不同的用户也可以只对应于一个参与者,从而代表同一参与者的不同实例。 2.参与者作为外部用户(而不是内部)与系统发生交互作用,是它的主要特征。 3.在后面的顺序图等中出现的“参与者”,与此概念相同,但具体指代的含义,视具体情况而定。用例(Use Case)系统外部可见的一个系统功能单元。系统的功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达 。创建新用例,确认候选用例和划分用例范围的优秀法则----“WAVE”测试(见附录) 2.2 用例图中的事物及解释用例图是被称为参与者的外部用户所能观察到的系统功能的模型图。 (《UML参考手册》) 用例图列出系统中的用例和系统外的参与者,并显示哪个参与者参与了哪个用例的执行 (或称为发起了哪个用例)。 用例图多用于静态建模阶段(主要是业务建模和需求建模)。
  • 15. 2. 用例图关系解释图参与者与用例之间的关系关联表示参与者与用例之间的交互,通信途径。 (关联有时候也用带箭头的实线来表示,这样的表示能够显示地表明发起用例的是参与者。)用例之间的关系包含箭头指向的用例为被包含的用例,称为包含用例;箭头出发的用例为基用例。包含用例是必选的,如果缺少包含用例,基用例就不完整;包含用例必须被执行,不需要满足某种条件;其执行并不会改变基用例的行为。 《include》 扩展箭头指向的用例为被扩展的用例,称为扩展用例;箭头出发的用例为基用例。扩展用例是可选的,如果缺少扩展用例,不会影响到基用例的完整性;扩展用例在一定条件下才会执行,并且其执行会改变基用例的行为。参与者之间的关系泛化发出箭头的事物“is a”箭头指向的事物。泛化关系是一般和特殊关系,发出箭头的一方代表特殊的一方,箭头指向的一方代表一般一方。特殊一方继承了一般方的特性并增加了新的特性。《extend》 2.3 用例图中的关系及解释
  • 16. 2. 用例图实例1 参与者之间的泛化关系 参与者:经理,安全主管,保安 用例:管理人事,批准预算,批准安全证书,监视周边 在参与者之间不存在泛化关系的情况下,各个参与者参与 用例的情况分别是:经理参与用例管理人事和批准预算;安全主管参与用例批准安全证书;保安参与用例监视周边。由于安全主管与经理,安全主管与保安之间泛化关系的存在,意味着安全主管可以担任经理和保安的角色,就能够参与经理和保安参与的用例。这样,安全主管就可以参与全部4个用例。但经理或者保安却不能担任安全主管的角色,也就不能参与用例批准安全证书。实例2 用例之间扩展和包含关系 用例的上下文是:短途旅行但汽车的油不足以应付全部路程。那么为汽车加油的动作在旅行的每个场景(事件流)中都会出现,不加油就不会完成旅行。吃饭则可以由司机决定是否进行,不吃饭不会影响旅行的完成。2.4 例子
  • 17. 2. 用例图实例3. 航空售票的用例图 参与者(actor):clerk,监督员,信用卡服务商,信息亭 用例(use case): Buy tickets, Buy Subscription, Make charges, Survey sales 参与者Clerk参与(或称发起)Buy tickets和Buy Subscription 两个用例(关联关系)。这两个用例的事件流都包含Make charges用例(包含关系)。 系统由:Buy tickets, Buy Subscription, Make charges, Survey sales组成。 该系统主要包含:Buy tickets, Buy Subscription, Make charges, Survey sales这几个功能。 该系统主要面向的用户(参与者):clerk,监督员,信用卡服务商,信息亭。
  • 18. 2. 用例图右图中的参与者有? (a) 1 (b) 2 (c) 3 (d) 4 右图中的用例有? (a) 1 (b) 2 (c) 3 (d) 4 2和3之间是什么关系?5和6呢? (a) 扩展,包含 (b) 包含,扩展 5缺少了3仍然是个完整的用例? (a) 是的 (b) 不是 4能够参与2吗?1能够参与5吗? (a) 可以,不可以 (b) 不可以,可以习题答案: 1、(a)(d) 2、(b)(c) 3、(b) 4、(b) 5、(b) 2.5 习题
  • 19. 3. 类图3.2 类图中的事物及解释 3.2.1 类 从上到下分为三部分,分别是类名、属性和操作。类名是必须有的 类如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等 类如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等可见性 -代表private +代表public #代表protected 也可以使用图形表示返回值类型操作名称 斜体为抽象操作缺省值类名 斜体为抽象类属性名称参数列表3.1 类图概要 类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法 类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象
  • 20. 3. 类图(标准图形)(变体图形)接口抽象类模版参数模版类3.2 类图中的事物及解释 3.2.2 接口 一组操作的集合,只有操作的声明而没有实现 3.2.3 抽象类 不能被实例化的类,一般至少包含一个抽象操作 3.2.4 模版类 一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类
  • 21. 3. 类图UML表示法角色 类的角色是“事物“多重性 (用数字和*表示) 1…*:1个或多个 1个类图有1个或多个类 1个类属于1个或多个类图方向 双向关联(省略箭头)名字 关系的名字是“使用”实例聚合关系 特殊关联关系,指明一个聚集(整体)和组成部分之间的关系 组合关系 语义更强的聚合,部分和整体具有相同的生命周期UML表示法UML表示法(空心菱形)实例类图包含有事物和关系,类图不存在了,事物和关系还可用于其它的类图(实心菱形)实例类与关联关系之间有组合关系,类不存在了,则相应的关联关系也不存在3.3 类图中的关系及解释 3.3.1 关联关系 描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关 联关系语义较弱。也有两种语义较强,分别是聚合与组合
  • 22. 3. 类图UML表示法3.3.3 实现关系 对应于类和接口之间的关系UML表示法类Circle、Rectangle实现了接口Shape的操作关联、泛化、实现、依赖都是一种关系类、接口都是一种事物3.3.2 泛化关系 在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间3.3.4 依赖关系 描述了一个类的变化对依赖于它的类产生影响的情况。有多种表现形式, 例如绑定(bind)、友元(friend)等UML表示法模板类Stack定义了栈相关的操作;IntStack将参数T与实际类型int绑定,使得所有操作都针对int类型的数据类Memento和类Originator建立了友元依赖关系,以便Originator使用Memento的私有变量state
  • 23. 3. 类图C++代码 class Vehicle { public: virtual int Start() = 0; virtual int Stop() = 0; virtual int Run(float fSpeed) = 0; private: float fMaxSpeed; };Java代码 public abstract class Vehicle { public abstract int Start(); public abstract int Stop(); public abstract int Run(float fSpeed); private float fMaxSpeed; }3.4 类图与代码的映射 3.4.1 类的映射
  • 24. 3. 类图3.4.2 关联关系的映射 C++代码 class Dialog { private: Button btnOK; Button btnCancel; TextBox txtInfo; }; class Button {}; class TextBox {};组合关系,代码表现为Dialog的属性有Button和TextBox的对象3.4.3 泛化关系的映射Java代码 public class SavingsAccount extends Account { }C++代码 class SavingsAccount : public Account { };
  • 25. 3. 类图C++代码 class Shape { public: virtual void Draw() = 0; }; class Circle : public Shape { public: void Draw(); private; Point ptCenter; int nRadius; };Java代码 public interface Shape { public abstract void Draw(); } public class Circle implements Shape { public void Draw(); private Point ptCenter; private int nRadius; }在C++语言里面,使用抽象类代替接口,使用泛化关系代替实现关系 在Java语言里面,有相应的关键字interface、implements3.4.4 实现关系的映射 3.4.5 依赖关系的映射绑定依赖C++代码 template class Stack { private: int size; public: int Push(T elem); int Pop(); const T& GetTop(); }; typedef Stack FloatStack;C++代码(编译器生成) class FloatStack { private: int size; public: int Push(float elem); int Pop(); const float& GetTop(); };
  • 26. 3. 类图Graphics: 基本图形和组合图形的父类,声明了所有图形共同的操作,如Draw;也声明了专用于组合图形管理子图形的操作,如Add、Remove Line、Rectangle: 基本图形类 GroupGraphics: 组合图形类,与父类有组合关系,从而可以组合所有图形对象(基本图形和组合图形)泛化组合组合模式3.5 类图例子 3.5.1 图形编辑器 图形编辑器一般都具有一些基本图形,如直线、矩形等,用户可以直接使用基本图形画图,也可以把基本图形组合在一起创建复杂图形 如果区别对待基本图形和组合图形,会使代码变得复杂,而且多数情况下用户认为二者是一样的 组合模式可以用相同的方式处理两种图形
  • 27. 3. 类图3.5.2 演出售票系统 在用例驱动的开发过程中,通过分析各个用例及参与者得到类图。分析用例图的过程中需要根据面向对象的原则设计类和关系,根据用例的细节设计类的属性和操作在这里只考虑以下三个用例: Buy tickets: 买个人票 Buy Subscription: 买套票 Make charges: 信用卡付款信息亭ClerkBuy ticketsBuy Subscription信用卡服务商Make charges监督员Survey sales参与者<><>用例Box Office关系SubscriptionSeriesseries : intIndividualReservationTicketno : int3..60..13..60..110..110..1Reservationdate : DateCustomername : stringphone : string1..*11..*1Seatno : intcolomn : introw : intavailable : bool1111Performanceno : intdate : Datetime : Time0..*10..*1CreditCardServiceCharge(cardnumber, cost)kjoskShowAvailability(seatlist)DemandPayment(cost)PrintTickets(performance, seats)EjectCard()BoxOfficeRequest(count, performance)Select(seats)InsertCard(cardnumber, password)Authorized()用例图类图使用泛化关系处理客户购买个人票和套票两种不同情况 设计类的属性和操作
  • 28. 3. 类图(1)哪两个类之间存在组合关系 Menu、MenuItem MenuItem、Command Command、OpenCommand Command、PasteCommand (2)OpenCommand和PasteCommand是什么关系 组合 泛化 聚合 没关系(3)编辑菜单(EditMenu)是一种菜单,下面哪个图较好的描述了二者之间的关系(4)下面哪份代码(C++)最接近于图中对MenuItem的描述②③ ④① Menu+ Add(item : MenuItem)EditMenuclass MenuItem { private: virtual void Click() =0; public: Command* command; };① class MenuItem { public: virtual void Click() = 0; private: Command* command; };② class MenuItem { private: virtual void Click() = 0; void undo(); public: Command* command; };③class menuitem { public: virtual void Click() = 0; private: Command* command; };④ 3.6 习题 右图描述了菜单(Menu)、菜单项(MenuItem)、抽象命令类(Command)和具体命令类(OpenCommand, PasteCommand)之间的关系,完成1-4题
  • 29. 3. 类图右图描述了图形接口(Graphics)、线段(Segment)、矩形(Rectangle)、点(Point)和三维点(Point3D)之间的关系, 完成5-7题(5)下面哪个关系没有在图中出现 ①关联 ②泛化 ③实现 ④依赖 (6)下面对图中①②③④四处的多重性的描述哪个不正确 ① 0...* ②1 ③0...* ④1 (7)下面哪份代码(Java)最接近于图中对Segment的描述 public class Segment implements Graphics { privatc void Draw(); public Point ptStart; public Point ptEnd; }①public class Segment extends Graphics { public void Draw(); private Point ptStart; private Point ptEnd; }②public class Segment implements Graphics { private Point ptStart; private Point ptEnd; public void Draw(); }③public class segment implements graphics { public void Draw(); private Point ptStart; private Point ptEnd; }④①②③④
  • 30. 4. 顺序图UML- 30 -4.1 概要 顺序图用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的事件。 顺序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。 顺序图属于动态建模。 顺序图的重点在消息序列上,也就是说,描述消息是如何在对象间发送和接收的。表示了对象之间传送消息的时间顺序。 浏览顺序图的方法是:从上到下查看对象间交换的消息。4.2 顺序图中的事物及解释事物名称解释图参与者与系统、子系统或类发生交互作用的外部用户(参见用例图定义)。对象顺序图的横轴上是与序列有关的对象。对象的表示方法是:矩形框中写有对象或类名,且名字下面有下划线。生命线坐标轴纵向的虚线表示对象在序列中的执行情况(即发送和接收的消息,对象的活动)这条虚线称为对象的“生命线”。消息符号消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。
  • 31. 4. 顺序图UML- 31 -4.3 顺序图与用例图和类图的关系
  • 32. 4. 顺序图UML- 32 -4.4 顺序图例子简单的例子从参与者到对象和从对象到参与者之间发送的消息从对象传递给另一个对象的消息在类图中的类的对象使用系统的参与者,这个系统是为某个用例的某个场景设计的对象生命线表示从上到下的时间顺序,消息1在消息2之前发生,消息2在消息3之前发生窄长方框用以强调这个部分处于活动状态消息格式: operation (parameter list) 向哪个对象发消息实际上就是调用它的类中的操作,就是调用箭头指向的对象所在类的 一个operation。 例:订单类发消息给客户类调用客户类中的“验证客户”操作
  • 33. 4. 顺序图UML- 33 -复杂的例子信息亭售票中心信用卡服务从这个例子中可以看出: Kjosk类中的操作有 Show Available (seat-list) Demand Payment (cost) printtickets (performance, seats) eject card Box Office中的操作有 Request (count, performance) Select Seats Insert Card (Card Number) authorized Credit Card Service类中的操作有 charge(card number, cost) 此图是描述购票这个用例的顺序图。顾客在信息亭与售票中心通话触发了这个用例的执行。顺序图中付款这个用例包括售票中心与信息亭和信用卡服务处使用消息进行通信过程。 此图中存在的事物有: 对象(信息亭 Kjosk ,售票中心 Box Office, 信用卡服务 Credit Card Service ),生命线,消息符号。 信息亭发Request (count, performance)消息给售票中心,表示调用售票中心类的Request (count, performance)操作,来查询演出的信息。 售票中心发Show Available(seat-list)消息给信息亭,表示调用信息亭类中的Show Available(seat-list)操作,给出可用的座位表。
  • 34. 4. 顺序图UML- 34 -①②③④⑤⑦⑥⑨⑧⑩1 指出左图中的参与者? A① B② C③ D④ 2 哪些是对象? A① B②③④ C ④ D⑤⑥⑦⑧⑨⑩ 3 Server类调用了CreditService类中的什么操作? A⑦ B⑧ C ⑦⑧ D⑧⑨4.5 练习题1. A 2. B 3. B
  • 35. 5.1 概要5. 协作图协作图是一种交互图,强调的是发送和接收消息的对象之间的组织结构,使用协作图来说明系统的动态 情况。 协作图主要描述协作对象间的交互和链接,显示对象、对象间的链接以及对象间如何发送消息。 协作图可以表示类操作的实现。UML- 35 -UML- 35 -5.2 协作图中的事物及解释事物名称解释图参与者发出主动操作的对象,负责发送初始消息,启动一个操作。对象 对象是类的实例,负责发送和接收消息,与顺序图中的符号相同,冒号前为对象名,冒号后为类名。消息流 (由箭头和标签组成)箭头指示消息的流向,从消息的发出者指向接收者。标签对消息作说明,其中,顺序号指出消息的发生顺序,并且指明了消息的嵌套关系;冒号后面是消息的名字。标签5.3 协作图中的关系及解释关系名称解释关系实例链接用线条来表示链接,链接表示两个对象共享一个消息,位于对象之间或参与者与对象之间
  • 36. UML- 36 -UML- 36 -5. 协作图5.4 消息标签 消息标签的Format: [前缀] [守卫条件] 序列表达式 [返回值 :=] 消息名 前缀的语法规则: 序列号,序列号,…,序列号 ‘/’ (前缀用来同步线程,意思是在发送当前消息之前指定序列号的消息被处理.例:1.1a, 1.1b/) 守卫条件的语法规则: [条件短句] 说明:条件短句通常用伪代码或真正的程序语言来表示。 例:[x>=0] 返回值和消息名:返回值表示一个消息的返回结果,消息名指出了消息的名字和所需参数。 例:x:=calc ( n ) 下面是一个完整的消息标签:      1.1a, 1.1b, 1.1c / [x>=0] 1.2 *[i:=1..n] : x := calc( n )    前缀 守卫条件 序列表达式 返回值 := 消息名 5.5 协作图与顺序图的区别和联系 协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同。 顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系。 协作图清楚地表示了对象间的关系(强调空间),但时间顺序必须从顺序号获得。 协作图和顺序图可以相互转化。 (进行协作图和顺序图的比较,请参考练习题2)
  • 37. UML- 37 -5.6 协作图例子1. 打印操作的协作图5. 协作图actor发送Print消息给Computer,Computer发送Print消息给PrintServer,如果打印机空闲,PrintServer发送Print消息给printer2.乘坐电梯的协作图图中存在的事物有:  参与者 按钮对象 电梯控制对象 命令对象 工作队列 电梯对象 图中存在的关系有:    链接 参与者需要乘坐电梯,他从系统外部按下按钮,让电梯到达他想去的楼层。此时,电梯系统的操作被启动,电梯控制对象以循环的方式检查所有的电梯,从中选择一个工作队列长度最短的。然后,它创建一个作业命令,并将该命令放入对应电梯的工作队列,接着激活队列。电梯对象并发运行,从它的队列中选择一个作业并执行。电梯是一个活动对象,它与它的控制线程并发执行。
  • 38. UML- 38 -5. 协作图5.7 练习题请指出下面的消息标签各部分的内容。 1:display( ) A. 序列表达式:消息名 B.返回值:消息名 C.序列表达式:消息名 [mode=display] 1.2.3.7: redraw( ) A.序列表达式 返回值 消息名 B.守卫条件 序列表达式 消息名 2 *[n:=a . . z] : prim:=nextPrim(prim) A. 守卫条件 序列表达式 消息名 B.序列表达式 返回值 消息名 3.1 [x<0] : foo( ) A.序列表达式 守卫条件 B.守卫条件 消息名 C.序列表达式 消息名 1.1a, 1.1b/1.2 : continue( ) A. 前缀 序列表达式 消息名 B. 后缀 守卫条件 消息名
  • 39. UML- 39 -5. 协作图3. 练习题答案 1. ①A ②B ③B ④C  ⑤A 2. ①A  ②A2. 请对比本章中的协作图与其相应的顺序图,做练习题。①请在下图中指出,循环计算各个电梯的工作队列长度的消息的顺序号。 A 1.1 B1.2 C1.3 D2 ②请说明消息1.3所进行的操作Invoke(job),应属于哪个类所具有的方法。 A Queue类 B ElevatorControl类 C Elevator类 D Button类
  • 40. 6.1 状态图概要 6.1.1状态图 说明对象在它的生命期中响应事件所经历的状态序列,以及它们对那些事件 的响应。 6.1.2状态图用于 揭示Actor、类、子系统和组件的复杂特性。 为实时系统建模。 6.2 状态图的组成 6.2.1状态 对象的状态是指在这个对象的生命期中的一个条件或状况,在此期间对象将 满足某些条件、执行某些活动,或等待某些事件。 6.2.2转移 转移是由一种状态到另一种状态的迁移。这种转移由被建模实体内部或外部 事件触发。 对一个类来说,转移通常是调用了一个可以引起状态发生重要变化的操作的 结果。6.状态图
  • 41. 状态上格放置名称,下格说明处于该状态时,系统或对象要做的工作(见可选活动表) 转移转移上标出触发转移的事件表达式。如果转移上未标明事件,则表示在源状态的内部活动执行完毕后自动触发转移 开始初始状态(一个)结束终态(可以多个)消息(属性)[条件]/动作6.3 状态图中的事物及解释转换种类描述语法入口动作进入某一状态时执行的动作entry/action出口动作离开某一状态时执行的动作exit/action外部转换引起状态转换或自身转换,同时执行一个具体的动作,包括引起入口动作和出口动作被执行的转换e(a:T)[exp]/action内部转换引起一个动作的执行但不引起状态的改变或不引起入口动作或出口动作的执行e(a:T)[exp]/action6.4 状态的可选活动表6.状态图
  • 42. 6.5 例子 (1) 对象的状态图 图中包含以下状态 初始状态 Available状态 Locked状态 Sold状态 状态间的转移 初始状态Available状态 票被预订(lock):AvailableLocked 预定后付款(buy):LockedSold 预定解除(unlock):LockedAvailable 预定过期(time out):LockedAvailable 直接购买(assigned to):AvailableSold 换其它票(exchang) ,该票重有效:SoldAvailable 6.状态图
  • 43. (2)网上银行登陆系统 登陆要求提交个人社会保险号(SSN)和密码(PIN)经验证有效后登陆成功。 登陆过程包括以下状态: 初态(Initial state) 获取社会保险号状态(Getting SSN) 获取密码状态(Getting PIN) 验证状态(Validating) 拒绝状态(Rejecting) 终态 (Final state)出发状态动作到达状态Initial state移动鼠标到 SSNGetting SSNGetting SSN键入非tab键,显示键入内容Getting SSN键入tab键,或移动鼠标到BINGetting PIN提交ValidatingGetting PIN键入非shift-tab键,显示 “ * ”Getting PIN键入shift-tab键,或移动鼠标到SSNGetting SSN提交Validating Validating验证提交信息有效,状态转移Final state验证提交信息无效,显示错误信息Rejecting Rejecting退出Final state重试,清除无效的SSN,PINGetting SSN状态转移 的过程有两个不同的终态6.状态图
  • 44. 6.7 练习 分析下面的状态图,回答问题下降状态 在第一层 上升状态 向第一层下降 空闲状态 上升到达到达上升超时下降到达第一层(1) 以下那些图形元素是对状态的描述? (a) 超时 (b) 到达 (c) 在第一层 (2) 空闲状态 超时后转移到____状态 (a) 向第一层下降 (b) 上升状态 (c) 终态 习题答案 (1) (c) (2) (a)6.状态图
  • 45. 7. 活动图7.1 活动图概要 ※ 描述系统的动态行为。 ※ 包含活动状态(ActionState),活动状态是指业务用例的一个执行步骤或一个操作,不是普通对象的状态。 ※ 活动图适合描述在没有外部事件触发的情况下的系统内部的逻辑执行过程;否则,状态图更容易描述。 ※ 类似于传统意义上的流程图。 ※ 活动图主要用于: 业务建模时,用于详述业务用例,描述一项业务的执行过程; 设计时,描述操作的流程。7.2活动图事物活动 (ActionState)动作的执行起点 (InitialState)活动图的开始终点(FinalState) 活动图的终点对象流(ObjectFlowState)活动之间的交换的信息发送信号(signalSending)活动过程中发送事件,触发另一活动流程接收信号(SignalReceipt)活动过程中接收事件,接收到信号的活动流程开始执行泳道(SwimLane)活动的负责者
  • 46. 7. 活动图7.3 活动图关系迁移(transition)活动的完成与新活动的开始分支(junction point)根据条件,控制执行方向分叉(fork)以下的活动可并发执行结合(join)以上的并发活动再此结合7.4 活动图实例 1. 一般的活动图 本活动图描述一个处理订单的用例执行过 (1)执行setup order (2)根据order的类型是执行不同的分支: single order:执行assign seat、charge credit card subscription:同时执行assignseats、debit account或 award bonus single order与subscription两步可同时进行 (3) 最后mail packet。
  • 47. 7. 活动图2. 带泳道的活动图   本例为一个按活动职责(带泳道)组织的处理订单用例的活动图(模型中的活动按职责组织)。活动被按职责分配到用线分开的不同区域(泳道): Customer Sales Stockroom (1)顾客要求服务,Sales负责接收定 单,并提交到Stockroom (2) Stockroom处理定单,与此同时, Customer付款,并由Sales处 Deliverorder至Customer。
  • 48. 7. 活动图7.5 活动图练习 1. 请选择下面所列的活动图的事物中,表示信号的是( ),表示对象流的是( )。 A BCD 2. 关于右面的活动图,下面的说法中不正确的是( )。 A aPrinter:Printer是信号。 B 操作开始从“删除报文框”活动开始。 C 在“创建PS文件”和”删除报文框”活动中 发送“print(file)”信号。 D 信号发送的方向是从左到右。 习题答案 1 C, B 2 C
  • 49. 8. 构件图构件图用于静态建模,是表示构件类型的组织以及各种构件之间依赖关系的图。 构件图通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。8.2 构件图中的事物及解释 事物名称含义图例构件指系统中可替换的物理部分,构件名字(如图中的Dictionary)标在矩形中,提供了一组接口的实现。接口外部可访问到的服务 (如图中的Spell-check)。构件实例节点实例上的构件的一个实例,冒号后是该构件实例的名字(如图中的RoutingList)。可替换的物理部分包括软件代码、脚本或命令行文件,也可以表示运行时的对象,文档,数据库等。 节点(node)是运行时的物理对象,代表一个计算机资源。具体请参见教程“部署图(deployment diagram)”部分。 8.3 构件图中的关系及解释关系名称含义图例实现关系构件向外提供的服务。依赖关系构件依赖外部提供的服务(由构件到接口)。8.1 构件图概要
  • 50. 8. 构件图实例1.     图中的构件名称是Dictionary字典。     该构件向外提供两个接口,即两个服务Spell-check拼写检查、Synonyms同义词。图中“Planner计划者”构件向外提供一个“update更新”接口服务。 同时,该构件要求外部接口提供一个“Reservations预定”服务。实例2.8.4 构件图的例子
  • 51. 8. 构件图实例3图中依赖关系包括: 顾客需要信息亭接口提供服务 售票员需要职员接口提供服务 信用卡付款需要信用卡代理提供服务 职员接口需要预订销售、个人销售和团体销售提供服务 管理接口需要数据库状态提供服务 售票处需要付款和购买提供服务 等等……图中实现关系包括: 信用卡付款提供付款服务 票数据库提供购买和状态查询服务 售票处提供预订购买、个人购买和团体购买服务情景一: 购买个人票可以通过公用信息亭订购也可直接向售票员购买,但购买团体票只能通过售票员。 情景二: 买票的人可以根据任意选择预订销售或个人销售或团体销售中的一种方式,售票处为了方便销售,需要信用卡付款服务的支持,同时也必然需要票数据库处在有票可卖的状况中。情景描述
  • 52. 8. 构件图 1. 构件图用于那种建模阶段? A.动态建模 B.静态建模 2. 一个构件只能对特定的另一个构件提供特定的一种服务。这种说法正确吗? A.正确 B.错误 3. 构件图用于描述系统中各物理部件之间的服务的依赖提供关系。这种说法正确吗? A.正确 B.错误 4. 构件图中实线箭头表示服务的依赖,虚线箭头表示服务的提供。这种说法正确吗? A.正确 B.错误 习题答案:1.B 2.B 3.A 4.B 8.5 习题
  • 53. 9. 部署图9.2 部署图中的事物及解释事物名称解释图例节点节点用一长方体表示,长方体中左上角的文字是节点的名字 (如图中的Joe’sMachine:PC) 。 节点代表一个至少有存储空间和执行能力的计算资源。 节点包括计算设备和(至少商业模型中的)人力资源或者机械处理资源,可以用描述符或实例代表。 节点定义了运行时对象和构件实例(如图中的Planner构件实例)驻留的位置。构件系统中可替换的物理部分。接口外部可访问的服务。构件实例构件的一个实例。部署图用于静态建模,是表示运行时过程节点结构、构件实例及其对象结构的图。 如果含有依赖关系的构件实例放置在不同节点上,部署视图可以展示出执行过程中的瓶颈。 部署图的两种表现形式:实例层部署图和描述层部署图(会在后面的实例中给出)。 9.1 部署图概要
  • 54. 9. 部署图关系名称解释图例实现关系构件向外提供服务。(节点内)依赖关系构件依赖外部提供的服务(由构件到接口)。关联关系通信关联。(节点间)其他关系对象的移动(一个位置到另一个位置)。9.4 部署图的例子 实例1 实例层部署图实例层部署图描述各节点和它们之间的连接。 本图中的信息与上张描述层部署图中的内容是相互对应的。 图中的关系是各个节点之间存在的通信关系。9.3 部署图中的关系及解释
  • 55. 9. 部署图实例2 描述层部署图图中顾客购票的情景如下: 顾客通过位于Kiosk节点的顾客接口控件进行购票的操作,该顾客接口构件的购票操作依赖于处于TicketServer节点上的售票构件提供的服务,售票构件要完成售票操作,又要依赖统一节点上信用卡付款构件提供的付款服务和票数据库构件图中包括的各种关系如下: 通信链关系(不带箭头的直线) TicketServe票服务器与Kiosk信息厅之间存在一对多的通信关联;与SalesTerminal售票终端也存在一对多的通信关联; 依赖关系(带箭头的虚线) TicketSeller售票构件依赖CreditCardCharges信用卡付款构件和TicketDB票数据库构件提供的服务。节点TicketServer(售票服务)上的构件: CreditCardCharges/ManagerInterface/ TicketSeller/TicketDB 节点Kiosk(信息亭)上的构件: CustomerInterface SalesTerminal(销售终端)上的构件: ClerkInterface 描述层部署图表示了系统中的各节点和每个节点包含的构件。
  • 56. 9. 部署图9.5 关于部署图与构件图部署图与构件图相同的构成元素:    构件、接口、构件实例、构件向外提供服务、构件要求外部提供的服务。 部署图与构件图的关系: 部署图表现构件实例; 构件图表现构件类型的定义。 部署图偏向于描述构件在节点中运行时的状态,描述了构件运行的环境; 构件图偏向于描述构件之间相互依赖支持的基本关系。
  • 57. 9. 部署图 1.部署图用于那种建模阶段? A.动态建模 B.静态建模 2.部署图表现构件实例,构件图表现构件类型定义。这种说法正确吗? A.正确 B.错误 3.部署图中一个节点实例的名称为Server:HostMachine,其中Server是_____,HostMachine是_____。 A.节点名 B.节点类型 4.各节点之间存在着虚线剪头表示的依赖关系,也存在着实线箭头表示的服务提供关系。这种说法正确吗? A.正确 B.错误 5.“接口”表示_____对外提供的服务。 A.构件 B.节点 习题答案:1.B 2.A 3.B,A 4.B 5.A 9.6 习题
  • 58. 附录 WAVE测试1 What to do? (Not how to do.) 2 Actor’s point of view? 3 Value for the actor? 4 Entire flow of events?1 用例描述了系统应该做什么,而不是如何去做。 2 用例必须依据参与者的视点。(即应该从参与者如何使用系统的角度出发定义用例,而不是从系统自身的角度)。 3 用例必须为参与者提供可辨识的价值。 4 用例及其参与者必须捕获系统使用过程中的一个完整的事件流。
  • 59. 附录 UML学习参考书籍
  • 60. 附录 UML学习参考书籍1.《用例驱动UML对象建模应用——范例分析》 Doug Rosenberg、Kendall Scott 著,人民邮电出版社,2005。 2.《UML精粹——标准对象建模语言简明指南》(第3版) Martin Fowler 著,徐家福 译,清华大学出版社,2005。 3.《UML对象、组件和框架——Catalysis方法》 Desmond Francis D’Souza、Alan Cameron Wills 著,清华大学出版社,2004。 4.《UML和模式应用》(第2版) Craig Larman 著,机械工业出版社,2004。 5.《有效用例模式》 Steve Adolph, Paul Bramble 著,车立红 译,清华大学出版社,2003。 6.《用例建模》,Kurt Bittner 著,姜昊 译,清华大学出版社,2003 7.《UML和统一过程实用面向对象的分析和设计》 Jim Arlow,Ila Neustadt,机械工业出版社,2003。 8. 《UML风格》Scott W. Ambler 著,王少峰 译,清华大学出版社,2004。 9. 《UML用户指南》 Grady Booch,Ivar Jacobson著,邵维忠等译,机械工业出版社,2001年6月。 10. 《UML参考手册》 Ivar Jacobson,James Rumbaugh。姚淑兰,唐发根译。机械工业出版社,2001。
  • 61. 附录 UML建模工具1. www.umlchina.com 2. www.uml.org.com 3. www.rational.com 4. www.uml.net.cn
  • 62.   需求分析 BD FD DD 用例图 ◎ ◎ - - 类图 - ○ ◎ ◎ 顺序图 - ○ ◎ ◎ 活动图 ○ ○ ○ ○ 对象图 - △ △ △ 协作图 - △ △ △ 状态图 - △ ○ ○ 构件图 - - ○ ○ 部署图 ○ ○ △ △  ◎:最适用  ○:适用  △:可能适用  -:不适用 附录 各个阶段用到UML模型图
  • 63. 附录 UML全部图的关系用例图用例文档 用例图用例文档对象图状态图构件图类图活动图 部署图活动图 部署图对象图类图状态图协作图顺序图协作图顺序图活动图 部署图需求分析 BDFD/DD全部图之间的关系