当前位置: 首页 > news >正文

(+4)2.2UML建模图

①用例图

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

  用例图所包含的元素如下:

  1. 参与者(Actor)

  表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示。

  2. 用例(Use Case)

   用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示。

  3. 子系统(Subsystem)

  用来展示系统的一部分功能,这部分功能联系紧密。

  4. 关系

  用例图中涉及的关系有:关联、泛化、包含、扩展

  如下表所示:

  a. 关联(Association)

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

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

  b. 泛化(Inheritance)

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

  【箭头指向】:指向父用例

  c. 包含(Include)

  包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。

  【箭头指向】:指向分解出来的功能用例

  d. 扩展(Extend)

  扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。

  【箭头指向】:指向基础用例

  e. 依赖(Dependency)

  以上4种关系,是UML定义的标准关系。但VS2010的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。

  【箭头指向】:指向被依赖项


  5. 项目(Artifact)

  用例图虽然是用来帮助人们形象地理解功能需求,但却没多少人能够通看懂它。很多时候跟用户交流甚至用Excel都比用例图强,VS2010中引入了“项目”这样一个元素,以便让开发人员能够在用例图中链接一个普通文档。

  用依赖关系把某个用例依赖到项目上:

  然后把项目-》属性 的Hyperlink设置到你的文档上;

  这样当你在用例图上双击项目时,就会打开相关联的文档。

  6. 注释(Comment)

 

  包含(include)、扩展(extend)、泛化(Inheritance) 的区别:

  条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;

  直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。

  对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。

  对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;

  一个用例图示例:

 

  牢骚:

  感觉用例图还不成熟,并不能很好地表达系统的需求, 没有UML背景的用户几乎不知道画的是些什么。

  其次,包含关系、扩展关系的箭头符号竟然是同样的箭头,仅靠上方写个文字来加以区别,翻译成其他语言的话,几乎就不知道代表什么意思。扩展关系的箭头朝向也很难理解,为何要指向基用例,而不指向扩展用例。

  VS2010添加的“项目”元素,是个很好的创新,能够在用例图中关联word, excel这些文档。但为什么不把这些功能直接集成到用例里面,双击用例就弹出一份文档岂不更容易理解,非要画蛇添足地加一个元件,仅仅为了提供个链接功能。 

  用例描述表:

  鉴于用列图并不能清楚地表达功能需求,开发中大家通常用描述表来补充某些不易表达的用例,下图的表给大家提供一个参考:

 

②活动图

阅读简单活动图

image

活动图的主要元素

•初始节点和活动终点:用一个实心圆表示初始节点,用一个圆圈内加一个实心圆来表示活动终点

•活动节点:是活动图中最主要的元素之一,它用来表示一个活动

image

 

•转换:当一个活动结束时,控制流就会马上传递给下一个活动节点,在活动图中称之为“转换”,用一条带箭头的直线来表示

活动图的主要元素

•分支与监护条件:分支是用菱形表示的,它有一个进入转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符号指向外)。而每个离开转换上都会有一个监护条件,用来表示满足什么条件的时候执行该转换。

image

•分岔与汇合:

image

修改后的简单活动图

image

带泳道的活动图

image

带对象流的活动图

image

复杂活动图

•辅助活动图:

image

•汇合描述:当汇合的所有入流均到点汇合点时,就将执行汇合点指向的活动节点。但是有些时候,你希望对其做一些约束,这时就可以借助汇合描述来完成。汇合描述实际上是一个约束,其格式就是“{约束条件}”。

•发送信号与接收信号:

image 

image

 

 

 

•如何绘制活动图

绘制活动图

•“活动图” 比较直观易懂;与传统的流程图十分的相近,只要能够读懂活动图,就不难画出活动图

•绘制时首先决定是否采用泳道:主要根据活动图中是否要体现出活动的不同实施者

•然后尽量使用分支、分岔和汇合等基本的建模元素来描述活动控制流程

•如果需要,加入对象流以及对象的状态变化,利用一些高级的建模元素(如辅助活动图、汇合描述、发送信号与接收信号、引脚、扩展区)来表示更多的信息

•活动图的建模关键是表示出控制流,其它的建模元素都是围绕这一宗旨所进行的补充

工作流程,控制流程,业务流程中使用。

•活动图应用说明

活动图应用说明

•对工作流建模:用于业务建模的时候,每一条泳道表示一个职责单位,该图能够有效地体现出所有职责单位之间的工作职责业务范围及之间的交互关系、信息流程

建模时应遵循以下策略:

•为工作流建立一个焦点,除非你所涉及的系统很小,否则不可能在一张图中显示出系统中所有的控制流

•选择对全部工作流中的一部分有高层职责的业务对象,并为每个重要的业务对象创建一条泳道

•识别工作流初始节点的前置条件和活动终点的后置条件,这可有效地实现对工作流的边界进行建模。

•从该工作流的初始节点开始,说明随时间发生的动作和活动,并在活动图中把它们表示成活动节点

•将复杂的活动或多次出现的活动集合归到一个活动节点,并通过辅助活动图或子活动图来表示它们

•找出连接这些活动节点的转换首先从工作流的顺序开始然后考虑分支接着再考虑分岔和汇合

•如果工作流中涉及重要的对象,则也可以将它们加入到活动图中

•若工作流中有多次启用的,则可采用展开区表示

对操作建模:每一个对象占据一个泳道,而活动则是该对象的成员方法

•建模时应遵循以下策略: 
-- 收集操作所涉及的抽象概念,包括操作的参数、返回类型、所属类的属性以及某些邻近的类 
-- 识别该操作的初始节点的前置条件和活动终点的后置条件。也要识别在操作执行过程中必须保持的信息 
-- 从该操作的初始节点开始,说明随着时间发生的活动,并在活动图中将它们表示为活动节点 
-- 如果需要,使用分支来说明条件语句及循环语句 
-- 仅当这个操作属于一个主动类时,才在必要时用分岔和汇合来说明并行的控制流程

③泳道图

活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图。

  它是UML中用于对系统动态活动建模的图形,反映系统中一个活动到另一个活动的流程,常常用于描述业务过程和并行处理过程。活动图中包括泳道、活动开始、活动结束、活动、对象、分支、消息等图形符号。

   泳道将一个活动图中的活动划分为不同的组,每个组分别对应不同角色的操作。活动图描述多个角色之间的协作处理非常有效。

  一张活动图可以有多个开始状态和结束状态。

  一个活动可以与多个实体对象相关(相关指的是一种访问操作)。

  分支用在有多条路径可选的流程中,针对不同的路径进行不同的分支处理。

 

活动图的走向可以是横向的也可以是纵向的,根据个人喜好而定。上图的这个销售订单处理活动图重点展示的是并发处理符号,它反映多个活动可以同时并发处理,并发结束后,又转变为顺序处理。

流程图定义:

1: 有起止框、输入框、输出框、处理框 、流程线、连接点组成。

2: 起止框:表示算法的开始或结束

3: 输入\输出框:表示算法的输入和输出操作。输入操作是指从输入设备山过江算法所需要的数据传递给指定的内存变量;输出操作                    则是将常量或变量的值由内存贮器传递到输出设备。

4: 处理框:算法中各种技术和赋值的操作均一处理框加以表示。处理框内填写处理说明或具体的算式。

5: 判断框:算法中的条件判断操作。判断框说明算法中尝试了分支,需要根据某个灌水或提哦案件的成立与否来确定下一步的执行路                 线。判断框内应当填写判断条件,一般用关系比较运算或逻辑运算来表示。

6: 注释框:表示对算法的走向,流程线箭头的方向就是算法执行的方向。

7: 连接点:表示不同地方的流程图的连接。

 

活动图与流程图的区别:

(1)、流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。而活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。

(2)、活动图能够表示并发活动的情形,而流程图不行。

(3)、活动图是面向对象的,而流程图是面向过程的。

 

 

④顺序图

一 认识

 

        顺序图和协作图都是交互图

        交互图:描述系统对象与对象之间的各种交互

        顺序图:重点强调交互的时间顺序

        协作图:重点强调交互的信息

 

        在unl(2.0)中交互图又加了定时图和交互概述图

 

顺序图包括:对象、生命线、激活、消息、下面是顺序图的样子。

 

 

 

二  顺序图的基本图符和认识

 

1 定义对象是要按照时间顺序排列的、下面是对象命名方式

 

2 生命线

        生命线是对象中间底部向下延伸的一条虚线

        生命线就是时间线、从顶部一直到底部。

 

        如下图:1:调出窗体与4:管理员修改数据就不在同一时间段内、上面的是较早时间、而越往下面走、时间越往后流逝。

 

3 激活

        在相应对象的生命线上、画出长方形表示对象处于激活状态。

                                                 

4 消息

        消息是对象与对象之间的交互、也就是对象与对象之间的通信、他可以是唤起信号、创建或撤销、消息可以是信号、也可以是调用。

对象之间的消息只能单路通信、消息用箭头表示、如图

        

   

——————消息当然也分很多种、UML用不同的箭头代表不同的消息

 

1 调用消息(procedure call)/同步消息(synchronuos)

            简单的说就是把调用的消息发给接受者、等待接受者放弃或者返回信息、接受者返回信息之前不能发送任何别的消息、并且工作流程被中断。

           通俗的说就是干完这件事、才能干别的

           调用消息用实线和实心箭头表示、如图

           

 

2 异步消息

           简单的说就是把消息发给接受者、不用等待接受者的反馈、可以给别的对象发消息

异步消息可以并发工作

           异步消息的接受者必须是一个主动对象。

           异步消息表示方式是实线和开口箭头

           

3 返回消息

           这个更简单、就是发送给对象的异步消息或调用消息、对象给的反馈、称作返回消息

           如果是过程调用的返回、返回消息是隐含的、所以返回消息可以不用画出来

           如果是非过程的、返回消息要明确的表示出来!

           返回消息用虚线和开口箭头表示

           

4 阻止消息和超时消息

       这两个都是发送消息没有成功然后放弃消息

 

          阻止消息:接受者无法立即接收消息、则发送者放弃这个消息

表达方式如图

      

 

            超时消息:接受者在指定时间内无法接受此消息、则发送者放弃这个消息

表达方式如图

     

 

5 其他消息

          返身消息(自返消息):消息发送者给自己发消息

          简单消息:不考虑同步异步问题的消息.

 

 

———超时消息好像扔个鸡蛋过去……一定时间内他不接着、蛋蛋就碎了……——

——chenchen——

 

 

---

转载于:https://www.cnblogs.com/Ph-one/p/7650624.html

相关文章:

  • 2.1分层数据流
  • +6是不是用例越多越好?为什么说明原因
  • +1阿姆达尔定律
  • +2流水线是怎样提高性能的,会遇到什么问题,解决方法是什么
  • +3软件优化至关重要,软件优化一般有哪些方法?
  • +4 高速缓存
  • +5性能分析定律
  • +6存储结构是怎样提高性能的,它和局部性的关系是什么。
  • +7虚拟内存的作用,通过什么方式提高虚拟内存的性能
  • EFM32JG系列MCU内部温度传感器使用方法
  • 1.1组合电路、时序电路在计算机课程中的地位
  • 4.2说说计算机中的异常
  • 并发编程的几种形式
  • 【传感器】BMA253 数字,三轴加速度传感器
  • 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现...
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Flex布局到底解决了什么问题
  • JDK 6和JDK 7中的substring()方法
  • laravel5.5 视图共享数据
  • MySQL几个简单SQL的优化
  • python docx文档转html页面
  • Spring Boot快速入门(一):Hello Spring Boot
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 安卓应用性能调试和优化经验分享
  • 工作手记之html2canvas使用概述
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 将 Measurements 和 Units 应用到物理学
  • 开源地图数据可视化库——mapnik
  • 力扣(LeetCode)22
  • 码农张的Bug人生 - 初来乍到
  • 你不可错过的前端面试题(一)
  • 协程
  • 学习笔记TF060:图像语音结合,看图说话
  • 原生JS动态加载JS、CSS文件及代码脚本
  • puppet连载22:define用法
  • ​configparser --- 配置文件解析器​
  • # Panda3d 碰撞检测系统介绍
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (一)UDP基本编程步骤
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .net 提取注释生成API文档 帮助文档
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .Net各种迷惑命名解释
  • [C#][DevPress]事件委托的使用
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [C/C++]数据结构 栈和队列()
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [CSS]文字旁边的竖线以及布局知识
  • [Eclipse] 详细设置护眼背景色和字体颜色并导出