当前位置:网站首页>UML系列文章(24)高级行为---时间和空间
UML系列文章(24)高级行为---时间和空间
2022-06-09 06:25:00 【CoderIsArt】
本章内容
- 时间、时间段和位置
- 对时间约束建模
- 为对象的分布建模
- 对移动的对象建模
- 处理实时系统和分布式系统
现实世界是一个严厉无情的地方。事件可能在不可预料的时刻发生,还会在一个特殊的时刻要求一个特殊的响应。系统的资源可能需要分布在世界各地,某些资源甚至还有移动,这就产生了关于反应时间、同步、安全性和服务质量的问题。
对时间和空间建模时任何实时系统或分布式系统的基本要素。可以使用许多UML的特征,包括时间标记、时间表达式、约束和标记值,来可视化、详述、构造和文档化这些系统。
处理实时系统和分布式系统是困难的。好的模型可以揭示系统的时间和空间特性。
1. 入门
当开始对大多数软件系统建模时,通常假定一个理想的环境---消息立即被发送,网络从不断开连接,工作站从不失败,网络上的负载总是平衡的。不幸的是,现实世界并不以这种方式工作---消息要花费时间传递(并且有时丢失),网络会断开,工作站会失败,网络上的负载常常是不平衡的。因此,当遇到必须在现实世界操作的系统时,一定把时间和空间的问题考虑进去。
实时系统是这样一个系统,它的某些行为必须在一个精确地绝对或相对时刻开始,并且在一个可预见的(常常是受限的)时间段内完成。在一种极端的情况下,这样的系统是硬实时的,需要在几纳秒或几微秒内完成完整而可重复的行为。在另一种极端的情况下,模型可能是近似实时的,也需要可预料的行为,但只要求在几秒或更长的时间内完成。
分布式系统是这样一个系统,它的构件可以物理地分布在各个节点上。这些结点可以代表物理上位于同一个机箱中的不同的处理器,甚至可以代表彼此相距半个地球远的计算机。
为了表达对实时系统和分布式系统建模的需要,UML提供了定时标记、时间表达式、定时约束和位置的图形化表示,如图所示,

2. 术语和概念
定时标记(timeing mark)是表示事件发生时刻的符号。在图形上,定时标记由位于顺序图边缘的一根小小的水平线表示。时间表达式(time expression)是用来计算绝对或相对时间值的表达式。时间表达式也可以由消息名和对其处理阶段的表示来形成,如request.sendTime或者request.receiveTime. 定时约束(timeing constraint)是关于绝对或相对时间值的语义陈述。从图形上看,时间 约束的表示同所有约束一样,即由用一对括号括起来的串来表示,并一般通过一个依赖关系链接到一个元素。位置(location)是指构件在结点上的放置。位置是对象的一个属性。
2.1 时间
实时系统正如其名称所表示的,是时间关键系统。事件可以在规则或不规则的时间发生,对一个事件的响应必须在可预料的绝对时间或者相对于事件本身可预料的时间发生。
消息的传送表示系统的动态方面,所以当用UML对一个系统的时间关键特性建模时,可以为交互中的每个消息取一个由时间表达式来使用的名字。交互中的消息通常是没有名字的,它们主要用事件(如信号或调用)的名字来表示。但是也可以给消息命名,以便书写时间表达式,因为同一事件可能触发不同的消息。如果所指的消息有歧义,就要用显式的消息名来指出想在时间表达式中提到的消息。对于给定的消息名,可以引用消息的三个函数中的任意一个:
- 发送时间(sendtime)
- 接收时间(receiveTime)
- 传送时间(transmissionTime)
对于同步调用,也可以引用执行时间(executionTime)来表示往返消息的时间。然后可以用这些函数来表示任何复杂的时间表达式,甚至可以使用权值或偏移量,它们可以是常量、也可以是变量。最后,如图所示,可以把这些时间表达式放进一个定时约束中,来说明系统的定时行为。至于约束,可以把它们放在合适的消息附近,或者用依赖关系显式地连接到消息上来进行表示。

2.2 位置
分布式系统的本质是包含物理上分散于系统各结点上的构件。对许多系统而言,构件在被装载到系统上时,位置是固定的;而在另一些系统中,构件可以从结点到结点进行迁移。
在UML中,用部署图来对一个系统的部署视图建模。部署图代表系统在其上执行的处理器和设备的拓扑结构。制品(例如可执行程序、库、表等)存在于这些结点上。一个结点的每个实例将拥有某些制品的实例,而一个制品的每个实例肯定属于一个结点的一个实例。

3. 常用建模技术
3.1 对定时约束建模

3.2 对对象的分布建模

4. 提示和技巧
一个具有时间和空间特性的结构良好的模型,应满足如下要求:
- 仅仅揭示对于捕捉系统所期望的行为充要的时间和空间特性。
- 集中使用那些特性,使之易于发现和修改。
在用UML绘制时间或空间特性时,要遵循如下的策略:
- 给定时标记取一个有意义的名字
- 清晰地区分相对的和绝对的时间表达式。
- 仅当被部署的系统中元素位置的可视化很重要时,才显示空间属性。
- 高级需求,请参照UML profile for Schedulability, Performance,and Time.这个OMG规范用于对实时和高性能反应式系统建模。
边栏推荐
- Postman installation
- CodeBlocks老是重复运行上一次结果
- ImportError: cannot import name ‘joblib‘ from ‘sklearn. externals‘
- 戒烟日志_03 (day_07)
- Coredns part 4-compiling and installing unbound
- Recursive routines of binary trees
- (cobbler) partition problem and solution 2
- ImportError: cannot import name ‘joblib‘ from ‘sklearn.externals‘
- 全志V3s学习记录(9)buildroot文件系统构建
- Common ideas of sparksql dealing with data skew
猜你喜欢

Bladed software windfile calculation

全志平台BSP裁剪(2)附件一 General setup配置说明

两个Integer比较大小,为什么100等于100,1000不等于1000?

ping: XXX: 未知的名称或服务原因分析

卷积神经网络概述以及简单案列

Sqlserver imports and exports data. There is a process in the background and no display in the foreground.

error: subprocess-exited-with-error(fasttext)

全志平台BSP裁剪(6)附件三--rootfs menuconfig配置说明

Introduction to bladed fault simulation method

Competition between am335x and Quanzhi a40i
随机推荐
RNN以及其改进版(附2个代码案列)
Quanzhi v3s learning record (12) use of rtl8723bs
Yum command error: rpmdb open failed
cms 和 g1的主要区别
BSP tailoring of Quanzhi platform (7) rootfs tailoring -- tailoring of user tools and Libraries & rootfs compression
Quanzhi t7/t507 qt5.12.5 transplantation record
QT: 手工布局并关联QSpin和QSlider
MySQL 5.7 installation tutorial (full step, nanny level tutorial)
BSP tailoring of Quanzhi platform (3) Appendix II: description of kernel hacking configuration
SVN账号密码查找
Two integers compare sizes. Why is 100 equal to 1001000 not equal to 1000?
zgc 与g1对比 及 color points含义
全志平台BSP裁剪(3)附件二 Kernel hacking配置说明
ping: XXX: 未知的名称或服务原因分析
Sudo: GEDIT: command not found
Dropout正则化
内核中的互斥与同步
sparksql处理数据倾斜问题常见思路
MySQL federated query (multi table query)
MySQL password is correct but cannot log in