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分析AsyncDisplayKit框架-ASMuplexImageNode异步下载时序图。

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

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

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

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

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

  4. 阅读UML类图和时序图

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

  5. UML建模之时序图(Sequence Diagram)&lt;转&gt;

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

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

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

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

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

  8. 【UML九种图系列】之如何利用三层来绘制类图、时序图?

    UML并发视图:实体之间行为的交互,是动态.分为:时序图.协作图.状态图.活动图 一.时序图简述: 时序图(Sequence Diagram):描述对象之间的交互行为,按照时间顺序排列. 元素: 角色 ...

  9. UML造型——使用EA时序图工具的开发实践和经验

    Enterprise Architect watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3l3NzE=/font/5a6L5L2T/fontsiz ...

  10. &lt;十七&gt;UML核心视图动态视图之时序图

    一:时序图 --->时序图是用于描述按时间顺序排列的对象之间的交互模式. --->它按照参与交互的对象所具有的“生命线”和他们相互发送的消息来显示这些对象. --->时序图包含对象和 ...

随机推荐

  1. 命名sql数据集

    所谓的命名sql其实也就是数据库里的sql语句,普元EOS里做了一定的封装,以方便在程序中的使用. 命名SQL的基本元素包括: 1. <parameterMap> parameterMap ...

  2. 无向图的DFS遍历(方法之一)

    如果看不懂辅助解释在后面第点 1.录入方式: 输入 u - v  表示一边的2个端点 2.存储结构 struct edge { int from; int to; int next; } e[MAXN ...

  3. R中的统计检验函数

    正态性W检验 shapiro.test()用Shapiro-Wilk W统计量做数据的正态性检验. 经验分布的Kolmogorov-Smirnov检验 ks.test()Kolmogorov-Smir ...

  4. 用cryptico.js实现RSA加密(应对cryptico不支持PEM)

    问题: 随手分享一下好了,这个问题困扰了很久. cryptico.js这个加密算法库很全,很适合在前端用到各种加密解密算法的需求.但是美中不足的是,它的RSA加密不支持PEM格式,所以如果你后端用ja ...

  5. Oracle 12C -- 使用seed PDB创建新的pdb

    $ sqlplus '/as sysdba' SQL*Plus: Release Production on Tue Jun :: Copyright (c) , , Oracle. All righ ...

  6. loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写

    使用loadrunner进行压力测试主要分两步,第一步是编写脚本(比较重点),第二步执行测试(配置都是在界面上点点就行了,当然我只的是比较简单的,能满足日常需要的),第三步分析结果(这一步比较高深,但 ...

  7. js的简单模板解析

    在编程中总是会遇见很多动态生成的东西,一般我们都是通过简单的html拼接起来的 function createHtml(name, phone, addr, email, imageSrc){ var ...

  8. c 查找A字符串在B字符串中是否存在,计算出现的次数

    主要是应用了头文件<string.h>中的strstr函数 char * strstr(const char *s1, const char *s2); 查找是否存在: #include& ...

  9. C# 数据库连接测试以及备份

    现在我们要做一个如图5.1的数据库连接配置,从界面上看有三个功能需要实现:从配置文件中读取数据库连接的相关属性.备份数据库.测试连接. 现在我们就一个一个开始讲解. 图5.1 1.从配置文件中读取数据 ...

  10. 关于ORM,以及Python中SQLAlchemy的scoped_session

    orm(object relational mapping):对象关系映射. python面向对象,而数据库是关系型. orm是将数据库关系映射为Python中的对象,不用直接写SQL. 缺点是性能略 ...