【UML用户指南】-24-对高级行为建模-进程和线程

目录

1、概念

2、主动类

3、通信

4、同步

5、常用建模技术

5.1、对多控制流建模

5.2、对进程间通信建模


 

在UML中,可以将每一个独立的控制流建模为一个主动对象,它代表一个能够启动控制活动的进程或线程。

进程是一个能与其他进程并发执行的重量级的流;

线程是一个能与同一进程中的其他线程并发执行的轻量级的流。

主动对象是类的一个实例,在这种情况下,它是主动类的实例。同样也像所有的对象一样,主动对象通过传送消息进行互相之间的通信,然而在这里,消息的传送必须扩充某些并发语义,以帮助同步相互独立的流之间的交互。
 

主动类是类的一种,所以具有类的所有通常部分,包括类名、属性和操作。主动类经常接收信号,通常把这些信号列在一个附加栏中。
 

3dc1af7591304beebf22b5d646e459c1.png

1、概念

主动对象 (active object)是拥有进程或线程,并能够启动控制活动的对象

主动类 (active class)是其实例为主动对象的类。

进程 (process)是能同其他的进程并发执行的重量级的流;

线程 (thread)是能与同一进程中的其他线程并发执行的轻量级的流。

在图形上,主动类用一个左右边为双线的矩形来表示。

进程和线程用衍型化的主动类来表示(而且也在交互图中作为一个序列出现)

一个主动类表示一个独立的控制流,而普通的类不能体现这样的流。

与主动类相比,普通类隐含地被称作被动的,因为它们不能独立地启动控制活动。

2、主动类

主动类拥有与所有其他类相同的特性。

主动类可以有实例;主动类可以有属性和操作;主动类也可以参与到依赖、泛化和关联(包括聚合)关系中;主动类可以使用UML的任何扩展机制,包括衍型、标记值和约束;主动类可以是接口的实现;主动类可以由协作实现,它的行为可以用状态机来说明;主动类还可以参与协作。

3、通信

当对象相互协作时,它们通过从一个对象向另一个对象发送消息来进行交互。

四种交互组合:

1)消息可以在被动对象之间传递。

假定在一个时间点只有一个控制流通过这些对象,这样的一个交其实就是对一个操作的简单引用。

2)消息从一个主动对象传送到另一个主动对象。

当这种情况发生时,就有了进程间的通信,并且有两种可能的通信类型:

一种类型是,一个主动对象可能同步地调用另一个主动对象的操作。这种通信具有会合的语义,即:调用者调用操作;调用者等待接受者接受这个调用;操作被引用;为基于接收者对象的操作和类的执行选择一个方法;方法被执行;一个返回对象(如果有)被回送给调用者;然后二者分别继续它们的各自独立的路径。在调用过程中,两个控制流的步调是固定的。

另一种类型是,一个主动对象可能异步地发送一个信号或调用另一个对象的一个操作。这种通信具有邮箱的语义,这意味着调用者发送信号或调用操作,然后就继续它自己的独立的路径。在此期间,接收者在(通过插入事件或调用队列)做好准备时才接受信号或调用,完成后继续执行它的路径。之所以称这种通信为邮箱,是因为这两个对象不是同步的,而是一个对象给另一个对象留下一个消息后就离开。

在UML中,用实心箭头来表示同步消息,用枝状箭头来表示异步消息

3)消息从一个主动对象传送到一个被动对象。

如果在一个时间点上,有多于一个主动对象通过一个被动对象传送它们的控制流,那么就出现了潜在的冲突。如果同时有多个对象写或者读写同一个属性,那就是真正的冲突了。

4)消息从一个被动对象传送到一个主动对象。

初看起来,这显得不合法,但如果记住每个控制流都是以某些主动对象为根,就会理解,从被动对象传送消息到主动对象与从主动对象传送消息到主动对象具有相同的语义。

1267c440d71949f7872264db36fd0728.png

4、同步

当同一时间在一个对象中有多个控制流时,就出现了问题。如果不小心,可能有一个以上的流来修改同一属性,破坏对象的状态或丢失信息。这是典型的相互排斥问题。

三种方法建模:

1)顺序的(sequential)。调用者必须在对象外部进行协调,使得在一个时刻对象中只有一个流。当有多个控制流出现时,就无法保证该对象的语义和完整性。

2)监护的(guarded)。当有多个控制流出现时,该对象的语义和完整性是通过把所有对受监护的对象操作的调用顺序化来保证的。其效果是,在一个时刻对象恰好只有一个操作能够执行,使之简化为顺序的语义。如果没有设计好,就会有死锁的危险。

3)并发的(concurrent)。当有多个控制流出现时,该对象的语义和完整性得到保证是因为多个控制流存取不相交的数据集合,或者只读取数据。可以通过仔细设计的规则来安排这种情况。

bef02c71c9c949749c9c3a0ad54e36a0.png

可以允许同时有多个读者,但只允许有单独一个写入者来修改concurrent特性

5、常用建模技术

5.1、对多控制流建模

在UML中,可以使用包含主动类和主动对象的类图(捕捉它们的静态语义)和交互图(捕捉它们的动态语义)来做此事。

9b7c153e5bd1409e8715b28c9c2d4739.png

上图显示了一个商务系统的进程视图的一部分。可以发现3个对象并发地把信息放入系统中:StockTicker、IndexWatcher和CNNNewsFeed(名称分别为s、i和c)。这些对象中的两个(s和i)与它们自己的Analyst实例(a1和a2)通信。至少对于这个模型来说,可以简单地假定这个Analyst一个时刻只有一个控制流在它的实例中是活动的。然而,Analyst的两个实例都同时与AlertManager(名称为m)通信。因此,m必须被设计为在多个控制流出现时能维持它的语义。m和c同时与t(一个TradingManager)进行通信。每个流都给定一个由拥有它的控制流来区分的序号。

5.2、对进程间通信建模

进程间通信有两种经典的方式,即消息传送和远程过程调用。

用异步通信对消息建模,用同步通信对远程过程调用建模。

0b7ada0678f74c9da8d5252d3ff38fd1.png

上图显示了一个分布式预订系统,它的进程跨越4个结点。每个对象都用process衍型来标记。每个对象还用一个 location 属性来标记,以说明它的物理位置。在Reserva-tionAgent、TicketingManager和HotelAgent之间的通信是异步的。

用一个注解来描述通信是建立在Java Beans消息服务上的。

在TripPlanner和ReservationSystem之间的通信是同步的。它们的交互语义可以在名为CORBA ORG的协作中找到。TripPlanner作为一个client工作,ReservationAgent 作为一个server 工作。通过放大这个协作,将发现有关服务器端与客户端之间是如何协作的细节。
 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/759418.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

chrome.storage.local.set 未生效

之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …

JAVA学习笔记-JAVA基础语法-DAY19-File类、递归

第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(St…

〔002〕虚幻 UE5 发送 get、post 请求、读取 json 文件

✨ 目录 ▷ 安装 varest 扩展▷ 开启 varest 扩展▷ 发送 get 请求▷ 发送 post 请求▷ 读取 json 文件 ▷ 安装 varest 扩展 打开 虚幻商城,搜索 varest 关键字进行检索, varest 是一个 api 调用插件,支持 http/https 请求,也支…

【成都活动邀请函】7月6 | PowerData 数字经济-“成都“开源行!

【成都活动邀请函】7月6 | PowerData 数字经济-"成都"开源行! 活动介绍活动信息线上直播扫码报名往期活动回顾专注数据开源,推动大数据发展 活动介绍 九天开出一成都,万户千门入画图。 自古以来,成都便是国家发展的重要…

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 下载页 ->Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人…

爬坑之 [‘NODE_ENV‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。]

在package.json中配置如下: 执行npm run dev启动 报错: 实际上, NODE_ENVdevelopment webpack-dev-server 这条脚本会合并为两条命令执行, 分别为: NODE_EVNdevelopment webpack-dev-server 这种写法在cmd中是不被支持的 解决…

==和equals的区别(面试题)

和equals有什么区别 对于基本数据类型,比较的是值是否相等,对于引用类型则是比较的地址是否相等;对于equals来说,基本数据类型没有equals方法,对于引用类型equals比较的是引用对象是否相同 那针对以上结论&#xff0c…

LINUX系统编程:多线程互斥

目录 1.铺垫 2.线程锁接口的认识 静态锁分配 动态锁的分配 互斥量的销毁 互斥量加锁和解锁 3.加锁版抢票 4.互斥的底层实现 1.铺垫 先提一个小场景,有1000张票,现在有4个进程,这四个进程疯狂的去抢这1000张票,看看会发生什…

205.Mit6.S081-实验二 system calls

Lab2:system calls 在上一个实验室中,您使用系统调用编写了一些实用程序。在本实验室中,您将向xv6添加一些新的系统调用,这将帮助您了解它们是如何工作的,并使您了解xv6内核的一些内部结构。您将在以后的实验室中添加更多系统调用…

Spring Cloud Alibaba之负载均衡组件Ribbon

一、什么是负载均衡? (1)概念: 在基于微服务架构开发的系统里,为了能够提升系统应对高并发的能力,开发人员通常会把具有相同业务功能的模块同时部署到多台的服务器中,并把访问业务功能的请求均…

grpc学习golang版( 五、多proto文件示例 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件2.1 公共proto文件2.2 语音唤醒proto文…

简单多状态DP问题

这里写目录标题 什么是多状态DP解决多状态DP问题应该怎么做?关于多状态DP问题的几道题1.按摩师2.打家劫舍Ⅱ3.删除并获得点数4.粉刷房子5.买卖股票的最佳时期含手冷冻期 总结 什么是多状态DP 多状态动态规划(Multi-State Dynamic Programming, Multi-St…

Elasticsearch 第四期:搜索和过滤

序 2024年4月,小组计算建设标签平台,使用ES等工具建了一个demo,由于领导变动关系,项目基本夭折。其实这两年也陆陆续续接触和使用过ES,两年前也看过ES的官网,当时刚毕业半年多,由于历史局限性导…

服务器raid5坏盘-换盘-修复阵列过程

目录 背景原因分析解决步骤名词解释进入raid管理界面换回旧4号,进行import再次更换4号盘 总结 背景 服务器除尘之后文件服务器部分文件不能访问了,部分文件夹内容为空,起初以为是新配置的权限的问题,排查之后发现不仅仅是权限问题 jumpserv…

基于Java的会员制医疗预约服务管理信息系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:Java技术ssm框架,结合JSPM工作流引擎 工具:IDEA/Eclipse、Navicat、Maven …

ORA-01775: 同义词的循环链问题

一、问题描述 ORA-01775: 同义词的循环链问题 二、 原因分析 同义词对应的对象(表等)已删除,不存在了。 可能原因: 删除数据库对象,但是忘记删除同义词。删除一个用户,但忘记删除此用户中相关的同义词…

C语言—自定义类型:联合和枚举

1.联合体 1.1联合体类型的声明 像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以是不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。 不难发现…

前端优化:首屏加载速度的实践

目录 目录 前言 多图片的懒加载 避免用户多次点击请求 骨架屏原理 结束语 前言 随着互联网技术的飞速发展,前端网页逐渐取代了传统客户端成为用户获取信息、进行交互的重要渠道,但是网页也有常见的弊端,比如网页首屏加载速度的快慢直接…

Apple - Text Layout Programming Guide

本文翻译整理自:Text Layout Programming Guide(更新日期:2014-02-11 https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/TextLayout/TextLayout.html#//apple_ref/doc/uid/10000158i 文章目录 一、文本布局编程指…

使用ioDraw,AI绘图只需几秒钟!

只需几秒钟,就能将文字或图片转化为精准的思维导图、流程图、折线图、柱状图、饼图等各种图表! 思维导图 思维导图工具使用入口 文字转思维导图 将文本大纲或想法转换成可视化的思维导图,以组织和结构化您的想法。 图片转思维导图 从现有…