前言

没想到吧,研究生也需要学UML(Unified Modeling Language)和RUP(Rational Unified Process)的东西。
画图是软件工程师必备技能了,想到后面应该会经常接触。特此记录下来。
下面的图的知识源有:

  • 书本《UML和模式应用》 Craig Larman著
  • 师兄师姐的笔记
  • 网上比较热门的介绍
  • Staruml软件
    本章介绍包括的图有:用例图、类图、状态图、活动图、顺序图、协作图、构件图、部署图。

💙用例图 use-case model

用例图主要用来描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示这些元素之间的各种关系,如泛化、关联和依赖。它展示了一个外部用户能够观察到的系统功能模型图。
在这里插入图片描述

【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。

  • 场景 scenario : 是用例的实例
  • 参与者 Actor : 与系统交互的人或外部系统
  • 用例 Use case : 系统为参与者提供的有价值的服务功能
  • 用例之间的关系:用例图中用例与参与者之间的交互关系
    • 包含 include:描述两个用例之间的关系为 use, 执行一个用例就必须需要使用另一个用例, 用 include 封装一组跨越多个用例的相似动作
      例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那添加、修改以及删除都要在用例详述中描述,过于复杂;如果分成添加用例、修改用例和删除用例,则划分太细。这时包含关系可以用来理清关系。
      在这里插入图片描述

    • 扩展 extend: 在满足一定的扩展条件(extend points)之后则要执行另一个用例,可能不执行。
      在这里插入图片描述

    • 泛化 generalization: 表示继承关系,表示隶属关系。
      在这里插入图片描述

静态图

💙一般类图 class model

描述系统种类的静态结构。定了系统中的类及各类之间的关联。
在这里插入图片描述

关系

  • 继承 inherit(属于泛化): 是一种 is-a 的关系,是对象之间耦合性最高的一种关系。 子类继承父类的所有细节,并可以自己新增细节。 (e.g 老虎是动物的一种,子类指向父类)

在这里插入图片描述

  • 实现 realization: 是类与接口的关系
    在这里插入图片描述

  • 依赖 Dependency: 最弱的一种关联方式,是一种临时性的关联。 当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
    在这里插入图片描述
    在这里插入图片描述

  • 关联 association (客户类和订单类) : 是一种拥有关系、引用关系, 类 A 知道类 B 的属性和方法 , 双向的关联可以有两个箭头或没有箭头,单向的关联只有一个箭头 , 关联分为一般关联、聚合关联、组合关联 。

企鹅需要‘知道’气候的变化,需要‘了解’气候规律。
在这里插入图片描述

  • 聚合 aggregation(公司类和员工类) : 是一种 has-a 关系 , 具有不稳定的关联关系,强于一般关联 , 没有了整体,局部也可以单独存在 , 空心菱形指向整体 。
    在这里插入图片描述

  • 组合 composition(公司类和部门类) : 是一种 is-a-part-of 的关系 , 具有强烈的包含关系 , 部分不能脱离整理独自存在 , 实心菱形指向整体 。
    在这里插入图片描述
    在这里插入图片描述

多重性

表示类之间的对应的数量关系 。 通常在关联、聚合、组合中使用 。 用数字(0,1)或星号(*无限多)表示。…作为连接符。

  • 1:一个
  • *:零个或多个
  • 1…*:一个或多个
  • 0…1:零个或一个

分析类图

三种类别。

  • 实体类:就是一般类。
  • 控制类:行为操作。
  • 边界类:界面操作,用户交互。
    在这里插入图片描述

💙包图

由包、类、接口组成,通过描述包与包之间的关系(泛化、依赖等),展现出系统中模块与模块之间的依赖关系。描述系统的分层结构,维护和描述系统总体结构的模型。可以逻辑上描述系统的分层结构、管理程序中所有类、组织源码的方式 、组织命名空间。
在UML的建模机制中,模型的组织是通过包(Package)来实现的。包可以把所建立的各种模型(包括静态模型和动态模型)阻止起来,形成各种功能或用途的模块,并可以控制包中元素的可见性,以及描述包之间的依赖关系。


  • 当不需要显示包的内容时,将包的名字放入主方框内;
    当需要显示包的内容时,将包的名字放入左上角的小方框中,内容放入主方框内。
    在这里插入图片描述

  • 包关系

    • 依赖:如果不同包中任何元素之间存在着一个依赖,则两个包之间就存在着依赖关系。
      在这里插入图片描述

    • 泛化:同类的泛化。
      例子:use关系可以不写。
      在这里插入图片描述

行为图

💙状态图

一个类对象所有可能经历的状体的模型。 由对象的各个状态和连接这个状态的 Transition 组成。有一个开始点。包含元素:初始状态、终止状态、状态、转移、守护条件、事件、动作

  1. 状态图(State Diagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件
  2. 描述哪些状态之间可以转换
  3. 不同的状态下有不同的行为
    从一个状态到另一个状态之间的连线称为转移(Transition)。状态之间的过渡事件(Event)对应对象的动作或活动(Action)。事件有可能在特定的条件下发生,在UML中这样的条件称为守护条件(Guard Condition),发生的事件可通过对象的动作(Action)进行处理。状态之间的转移可带有标注,由三部分组成(每一部分都可省略),其语法为:事件名 [条件] / 动作名。
    例子:
    某信用卡系统账户具有使用状态和冻结状态,其中使用状态又包括正常状态和透支状态两种子状态。如果账户余额小于零则进入透支状态,透支状态时既可以存款又可以取款,但是透支金额不能超过5000元;如果余额大于零则进入正常状态,正常状态时既可以存款又可以取款;如果连续透支100天,则进入冻结状态,冻结状态下既不能存款又不能取款,必须要求银行工作人员解冻。用户可以在使用状态或冻结状态下请求注销账户。根据上述要求,绘制账户类的状态图。
    红色表示状态。绿色表示转移。
    在这里插入图片描述

交互图

💙活动图(也有说活动图不是交互图的)

用于描述工作流程中涉及到的活动,及活动间的约束关系,本质上是一种流程图,描述活动的序列,即系统从一个活动到另一个活动的控制流。包括:开始点,结束点,操作,分支,合并和泳道。
例子:会员购买购物车的物品。

  1. 泳道分为:会员泳道和系统泳道。会员选择商品并加入购物车,系统完成订单生成及其支付完毕。
  2. 开始节点:会员添加商品到购物车,点击【订单确认】,开始交于系统处理订单流程
  3. 结束节点:商品发送完毕和付款成功,订单处理流程结束
  4. 活动状态:产生订单、Check Credit Cart核对信用卡、Check Stock 核对库存量、Deliver Goods 发送商品、Process Credit Cart付款
  5. 分叉与汇合:【产生订单】为检查库存量和会员支付金额是否足够,如果不足,取消订单,如果库存量和支付金额足够,发送商品和付款,最后汇合为订单完成。
    在这里插入图片描述

💙顺序图/时序图

描述对象之间传递消息的时间顺序,表示用例中的行为顺序,是强调消息时间顺序的交互图。时序图中每条消息都代表了类的一个操作,或者引起状态改变的触发事件。
在这里插入图片描述

包含:

  1. 角色(Actor)
    系统角色,可以是人或者其他系统和子系统。以一个小人图标表示。
  2. 对象(Object)
    对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:
  • 对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService;
  • 只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。
  • 只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。
  1. 生命线(LifeLine)
    时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表。
  2. 控制焦点(Activation)
    控制焦点代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。
  3. 消息(Message)
    表示对象之间发送的信息。消息分为三种类型。
  • 同步消息(Synchronous Message)
    消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线和实心箭头表示。
  • 异步消息(Asynchronous Message)
    消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线和大于号表示。
  • 返回消息(Return Message)
    返回消息表示从过程调用返回。以小于号和虚线表示。
  1. 自关联消息
    表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。

在这里插入图片描述

💙协作图

强调的是发送和接收消息的对象之间的组织结构,一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。 “协作”作为一个结构事物用于表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能。
要嵌套才对。

  • 外界几个输入就是几个第一层。
  • 用*[1…n]表示n次循环
  • 用[flag==ture]表示判断

在这里插入图片描述

实现图

构件图

描述代码部件的物理结构和各部件之间的依赖关系, 用于分析和理解部件之间的相互影响程度 。在构件图中,系统中的每个物理构件都使用构件符号来表示,通常,构件图看起来像是构件图标的集合,这些图标代表系统中的物理构件。
目的:使系统人员和开发人员能够从整体上了解系统的所有物理构件,同时,也使我们知道如何对构件进行打包,以交付给最终客户。
在这里插入图片描述

部署图

部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。一个系统模型只有一个部署图,部署图通常用来帮助理解分布式系统。
在这里插入图片描述
例子:

  1. Web Server服务器:一台Web服务器预装4个操作系统及其之上的4个IIS,由于客户访问量大,3个用来部署B Web, 1个用来部署B2BB2E Web.
  2. Web访问量分流设备:根据网站流量,自动定位客户访问流量小的服务器。
  3. FTP Server And Session Server服务器:网站所有的图片都统一上传到FTP服务器上,同时B2CWeb下的Session统一转移到此服务器上。
  4. DB Server服务器:数据库服务器
  5. App Server服务器:定时执行排程(控制台程序)的服务器,用于与仓库系統交互。
  6. FrieWa防火墙:所有对服务器的操作通过防火墙过滤。
  7. User Client:用户个人PC,预装有浏览器。

在这里插入图片描述

后话

这些图大部分都是经过我校验的,但是有的资料太少,如果我感觉不太正确,会回来反复修正。
欢迎评论交流。点赞与收藏是我最大的鼓励!

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐