1-用例图

概述

  1. 展现了一组用例、参与者以及他们之间的关系

  2. 用例图从用户角度描述系统的静态使用情况,用于建立需求模型

用例特征

  • 保证用例能够正确捕捉功能性需求,判断用例是否准确的依据。
  1. 用例是动宾段誉

  2. 用例是相互独立的

  3. 用例是由用户参与者启动的

  4. 用例要有可观测的执行结果

  5. 一个用例是一个单元

参与者 Actor

  • UML中,参与者使用一个小人表示:
  1. 参与者为系统外部与系统直接交互的人或事务,于系统外部与系统发生交互作用

  2. 参与者是角色而不是具体的人

  3. 代表参与者在与系统打交道时所扮演的角色

  4. 系统实际运作中,一个实际用户可能对应系统的多个参与者。不同角色也可以只对应一个参与者,从而代表同一参与者的不通实例

用例 Use Case

系统外部可见的一个系统功能单元。系统的功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。

系统单元用椭圆表示,椭圆中的文字简述系统功能:

关系 Relationship

常见关系类型有关联、泛化、包含和扩展

关联 Association

表示参与者与用例之间的通信,任何一方都可发送或接受消息。

箭头指向:指向消息接收方:

子系统 SubSystem
  • 用来展示系统的一部分功能(紧密联系)

泛化 Inheritance

继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象。。

箭头指向:指向父用例

2-类图

  • 描述系统中的类,以及各个类之间的关系的静态试图
  • 表示类、接口以及它们之间的协作关系,用于程序设计阶段

注意:

  1. 抽象类或抽象方法用斜体表示
  2. 如果是接口,则在类名上方加 <<Interface>>
  3. 字段和方法返回值的数据类型非必需
  4. 静态类或静态方法加下划线

    类图实例:

类图中的事务及解释



如图,类图从上到下分为三部分,分别为类名、属性和操作

  1. 属性:如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等
  2. 操作:如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等

类图中的六种关系

1.实现关系 implements (类实现接口)

  • 用空心三角虚线表示

2.泛化关系 extends (表示一般与特殊的关系) is-a

  • 用空心三角实线表示

3.组合关系 (整体与部分的关系) contains-a

  • 实心菱形实现表示



    eg.有头类、身体类与人类类三个类,则人类类中应包含头类及身体类这两个属性,则人类类与头类和身体的关系即为组合关系。

注: 在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。

4.聚合关系 (整体与部分的关系) has-a

  • 空心菱形实线表示

    eg.BusDriver类有Hat类与Clothes属性,BusDriver类没了Hat与Clothes仍可存在



    注:聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在

5.关联关系(一般关联关系) (对象之间的一种引用关系)

  • 关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。也可以在关联线的两端标注角色名,代表两种不同的角色。



    关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。

6.依赖关系

  • 依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类

类关系的记忆

3-时序图

时序图将交互关系表示为一个二维图

注:

  1. 主要用于展示对象之间交互的顺序。
  2. 纵向代表时间轴,时间沿竖线向下延伸。
  3. 横向代表了在协作中各独立对象的类元角色。
  4. 类元角色用生命线表示。
  5. 当对象存在时,角色用一条虚线表示。
  6. 当对象的过程处于激活状态时,生命线是一个双道线。
  7. 消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。

生命线
  1. 生命线可带下划线
  2. 当使用下划线时意味着序列图中的生命线代表一个类的特定实体。

同步消息&

同步消息: 发送人再它继续之前将等待同步消息相应

异步消息:在发送方继续之前无需等待相应的消息

注释

虚线引出一条说明注释

约束

约束格式: [Boolean Test]

组合片段

用来解决交互执行的条件和方式,它允许在时序图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域。

类型与说明如下:

抉择Alt:抉择用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if..else..。

选项Opt:包含一个可能发生或不发生的序列

循环Loop:片段重复一定次数。 可以在临界中指示片段重复的条件。

时序图的画法及应用实践

  1. 绘制交互场景中的角色及对象梳理出来
  2. 从出发某个交互的某个消息开始,在生命线之间从上到下依次画出所有消息。

eg.学生在教务系统中查询其课程的成绩

在本例中,角色有学生,对象有教务系统、课程、成绩。

对象的梳理是一个相对主观的过程,比如本例中,课程以及成绩分别作为了对象存在,也可以合并为数据库这一个对象。请注意:角色以及对象,都为名词,动词不可作为角色和对象,如“成绩查询”不可作为对象。

学生的登录验证作为本时序图的前置行为,可直接引用到本时序图中,也可忽略不画;学生进入成绩查询页面后,页面会加载本学生的成绩查询课程列表,并显示出课程对应的成绩。

2.设计模式常用的UML图分析(用例图、类图与时序图)的更多相关文章

  1. 设计模式常用的UML图------类图

    关系 UML将事物之间的联系归纳为6种,对应响应的图形 关联 定义:表示拥有的关系,具有方向性,一个类单向访问一个类,为单向关联.两个类可以相互访问,为双向关联. 聚合 定义:整体与部分的关系. 组合 ...

  2. UML分析AsyncDisplayKit框架-ASMuplexImageNode异步下载时序图。

    PS:博客园图片服务器不正常工作,数据上传后服务器返回http500,园方迟迟还没解决. 我从2016-01-18 05:52向园方反馈问题-请问博客园的图片服务器有在正常运行吗,至此时2016-01 ...

  3. Python设计模式 - UML - 时序图(Sequence Diagram)

    简介 时序图表示参与者与对象之间.对象与对象之间的动态交互过程及时序关系. 时序图详细而直观地展示了对象随时间变化的状态.调用关系和消息时序,时序图中的主要元素有:参与者(Actor), 对象(Obj ...

  4. [UML]UML系列——时序图(顺序图)sequence diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  5. UML图 | 时序图(顺序、序列图)绘制

    上一次写过一篇 UML | 类图 相关的文章,平时规范开发会用的上,或者是写什么文档,就还是需要画图,就像毕业设计就是如此.希望能够帮助到大家. 注:本文中所用画图软件为 Microsoft Visi ...

  6. 阅读UML类图和时序图

    这里不会将UML的各种元素都提到.我仅仅想讲讲类图中各个类之间的关系. 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同一时候,我们应该能将类图所表达的含义和终于 ...

  7. UML建模之时序图(Sequence Diagram)<转>

    UML建模之时序图(Sequence Diagram)   一.时序图简介(Brief introduction) 二.时序图元素(Sequence Diagram Elements) 角色(Acto ...

  8. UML之类图、时序图、用例图 粗略版介绍

    UML 概述 UML(Unified Modeling Language):统一(标准)建模语言,是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析 ...

  9. UML 用例图,时序图,活动图的定义以及区别

    1.用例图,时序图,活动图的定义 1.用例图:  用例图描述了系统提供的一个功能单元.用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"角色" ...

随机推荐

  1. [CISCN2019 华北赛区 Day2 Web1]Hack World(二分法写布尔注入脚本)

    记一道布尔注入的题,存在过滤字符. 从题目看应该是一道注入题.提示存在flag表flag列. 输入1和2的返回结果不一样,可能是布尔注入. 简单用万能密码尝试了一下.提示SQL Injection C ...

  2. C++//菱形继承 //俩个派生类继承同一个基类 //又有某个类同时继承俩个派生类 //成为 菱形继承 或者 钻石 继承//+解决

    1 //菱形继承 2 //俩个派生类继承同一个基类 3 //又有某个类同时继承俩个派生类 4 //成为 菱形继承 或者 钻石 继承 5 6 #include <iostream> 7 #i ...

  3. CVE-2021-3156 复现

    测试环境 OS: Ubuntu 18.04.5 LTS GCC: gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) Make: GNU Make 4.1 ...

  4. MyBatis学习01(初识MyBatis和CRUD操作实现)

    1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...

  5. 用华为云cli,管理华为云服务器的,安全组端口

    ---[前言]--- 关键字 hcloud 华为 命令行 linux windows powershell 前些天,大家因为华为云,是否应该默认开启端口,大家吵起来了,所以我抽空写了此文.解决问题,缓 ...

  6. 【原创】深入分析Ubuntu本地提权漏洞CVE-2017-16995

    *本文首发阿里云先知安全技术社区,原文链接https://xz.aliyun.com/t/2212 前言: 2018年3月中旬,Twitter 用户 @Vitaly Nikolenko 发布消息,称 ...

  7. 8.23考试总结(NOIP模拟46)[数数·数树·鼠树·ckw的树]

    T1 数数 解题思路 大概是一个签到题的感觉...(但是 pyt 并没有签上) 第一题当然可以找规律,但是咱们还是老老实实搞正解吧... 先从小到大拍个序,这样可以保证 \(a_l<a_r\) ...

  8. 因为手机设置字体大小导致h5页面在webview中变形的BUG

    出现这个问题,有以下因素 你的页面采用了rem单位,并且是采用js动态计算html的font-size你的页面被加在了APP中的webview中这该死的手机被重设了字体大小解决方法一般,我们动态计算好 ...

  9. java String数组城市

    String[] citys = {"北京","天津","河北","山西","内蒙古"," ...

  10. BeanUtils低依赖属性拷贝测试(一)

    javabean package entity; import java.util.Date; /** * 一个测试用: * student,javaBean * @author mzy * 一个标准 ...