【UML用户指南】-07-对基本结构建模-公共机制

目录

1、术语和概念

1.1、注解(note)

1.2、修饰

1.3、衍型

1.4、标记值

1.5、约束

1.6、标准元素

1.7、外廓(profile)

2、对新特性建模

3、对新语义建模


注解 (note)是附加在元素或元素集上用来表示约束或注释的图形符号。在图形上,把注解画成带有一个折叠角的矩形,在矩形中填写文字的或者图形的注释。

衍型 (stereotype)是对UML的词汇的扩展,用于创建与已有的构造块相似但针对特定问题的新种类的构造块。在图形上,把衍型表示成用双尖括号(«»)括起来的名字,放在其他的元素名之上。作为一种选择,可以用一种与衍型相关的新图标来表示被衍型化元素。

标记值 (tagged value)是衍型的一种特性,允许在带有衍型的元素中创建新的信息。在图形上,把标记值表示成形如name = value的串,放在一个附加到对象上的注解中。

约束 (constraint)是对UML元素语义的文字说明,用来增加新的规则或修改已有的规则。在图形上,把约束表示成用花括号括起来的串,并把它放在相关的元素附近,或者通过依赖关系连接到这个(或这些)元素。作为一种选择,可以在注解中表示约束。

UML由于存在着4种运用于整个语言的公共机制而得以简化,它们是:规约、修饰、公共划分和扩展机制

1、术语和概念

1.1、注解(note)

注解是一种最重要的能单独存在的修饰。
 

衍型、标记值和约束是UML提供的用以增加新的构造块、创建新的特性和说明新的语义的机制。

例如,如果对网络建模,可能需要路由器和集线器的表示符号,可以用衍型化结点来表示它们,使它们就好像原有的构造块一样;

类似地,项目发布组的成员要负责装配、测试和部署发布,可能要跟踪版本号和各个主要子系统的测试结果,对此就可以用标记值把这些信息附加到模型上;最后,如果对硬实时系统建模,可能要用时间预算和最后完成期限来修饰模型,可以使用约束捕获这些计时需求。
 

1.2、修饰

修饰是附加到元素的基本表示法之上的文字或图形项,用于对元素规约的细节进行可视化。例如,关联的基本表示法是一条线,但是可以用各端的角色或多重性等细节来修饰它。

可以在它们平常的分隔栏的底部增加额外的分隔栏,以填写这种信息

1.3、衍型

把衍型看作元类型(一种定义其他类型的类型),因为每一个衍型将创建一个相当于 UML 元模型中新类的等价物。

例如,如果对商业过程建模,则将引入像职工、文档和政策这样的事物;类似地,如果正在进行像Rational统一过程这样的开发过程,则将使用边界、控制和实体类来建模。这是衍型的实际价值所在。

当对结点或类这样的元素建立衍型时,实际上是通过创建类似于已有的构造块的新构造块来扩展UML,但新构造块有自己的具体特性(各个衍型可以提供自己的标记值集合)、语义(各衍型可以提供自己的约束)和表示法(各衍型可以提供自己的图标)。


1.4、标记值

UML 中的每个事物都有它们自己的一组特性:类有名称、属性和操作,关联有名称和两个或两个以上的端点(每个端点都有自己的特性)等。

用衍型可为UML增加新的事物,用标记值可为UML的衍型增加新的特性。

标记值的最常见的用途之一是说明与代码生成或配置管理相关的特性。

例如,用标记值指明特定类所映射到的编程语言;可以用标记值描述一个构件的作者或版本。


1.5、约束

UML中的每一个事物都有它自己的语义。泛化(通常,如果知道什么对你有好处)意味着运用Liskov 替代原理,而连接到一个类的多个关联则表示不同的关系。使用约束,可以增加新的语义或扩展已存在的规则。约束指明了运行时的配置必须满足与模型一致的条件。

1.6、标准元素

对于类目、构件、关系和其他一些建模元素,UML 定义了一些标准衍型。有一个主要为工具建造者准备的标准衍型,使他们可对衍型本身建模。

stereotype——指明类目是一个可以应用到其他元素的衍型。

当要显式地对那些为项目定义的衍型建模时,则使用这个衍型。

1.7、外廓(profile)

为特定的用途或领域定义一个合适的UML版本常常是有用的。

它具有一组预定义的衍型、标记值、约束和基类。它还选择了UML元素的一个子集,使得建模者不被那些在这个特定领域不需要的元素所迷惑。

2、对新特性建模

如果要扩展这些基本构造块的特性,就需要定义衍型和标记值。

下图展示了3个子系统,每个子系统都用«versioned»衍型做了扩展,从而含有其版本号和状态。
 

可以用工具设置像version和status这类标记的值。可以把配置管理工具和建模工具结合起来作为开发环境,以此来维护这些值,这样做要胜于手工设置模型中的这些值。

3、对新语义建模

需要表达UML中不存在的新的语义,或需要修改UML中的规则,就需要写一个约束

用OCL书写新语义

上图表明,每个Person可以是零个或多个Team的成员,每个Team至少有一个

Person作为成员。该图还指出了每个Team必须恰好有一个Person作为队长,而每个

Person可以是零个或多个Team的队长。所有这些语义都可以用基本的UML表达。然而

,为了断定队长也必须是相应的Team的一个成员,就要涉及到多个关联,这无法用基

本的UML表达。为了说明这个不变式,必须写一个约束,以表明队长是Team的成员的

一个子集,用一个约束连接这两个关联。其中还包含了一个约束:队长必须做过至少

一年的成员。
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ICLR24大模型提示(2/11) | BatchPrompt:多样本批量提示事半功倍

【摘要】由于大型语言模型 (LLM) 的 token 限制不断增加,使得长上下文成为输入,使用单个数据样本进行提示可能不再是一种有效的方式。提高效率的一个直接策略是在 token 限制内对数据进行批处理(例如,gpt-3.5-turbo 为 8k&#xf…

Python08 循环

循环1. while2. for循环控制1.back 退出当前循环2.continue 结束本次继续下次循环 i 0 while i < 10:print(f我正在学习python {i})i1 #循环增量 print(while 结束)while True:print(f我正在学习python {i})if i > 20:break #退出循环i1 #循环增量 print(while2 结束)# …

【Python机器学习】无监督学习——不同类型的预处理

之前学习过&#xff0c;一些算法&#xff08;比如神经网络和SVM&#xff09;对数据缩放非常敏感。因此&#xff0c;通常的做法是对特征进行调节&#xff0c;使数据更适合于这些算法。通常来说&#xff0c;这是对数据的一种简单的按照特征的缩放和移动。举例&#xff1a; impor…

【python】成功解决“ModuleNotFoundError: No module named ‘graphviz’”错误的全面指南

成功解决“ModuleNotFoundError: No module named ‘graphviz’”错误的全面指南 一、引言 在Python编程中&#xff0c;当尝试导入一个不存在的模块时&#xff0c;你会遇到ModuleNotFoundError错误。当你看到“ModuleNotFoundError: No module named ‘graphviz’”这样的错…

vue无需引入第三方, 将web页面内容直接下载为docx

vue无需引入第三方&#xff0c; 将web页面内容直接下载为docx 将web页面内容重绘 html &#xff0c;通过 a 标签直接下载 通过写行内样式&#xff0c;控制docx中的文字图效果 let echHtmlWithIf ;if (this.chartImg.length) {if (this.exceed10Min) {echHtmlWithIf <div…

Linux线程安全:线程互斥

一、线程互斥的概念 1.1临界资源与互斥的关系 临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源。 临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区。 互斥&#xff1a;任何时刻&#xff0c;互斥保证有且只有一个执行流进入…

《数字图像处理-OpenCV/Python》第15章:图像分割

《数字图像处理-OpenCV/Python》第15章&#xff1a;图像分割 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第15章&#xff1a;图像分割 图像分割是由图像处理到图像分析的关键步骤…

对 SQL 说“不”~

开发人员注意&#xff01; 您在当前的应用程序架构中是否面临这些问题&#xff1f; 对 SQL 数据库的高吞吐量。SQL 数据库中的瓶颈。 内存数据存储将是解决问题的方案。Redis 是市场上最受欢迎的内存数据存储和缓存选项。Redis 拥有广泛的生态系统&#xff0c;因为主要科技巨…

54.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露(2)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;53.WEB渗透测试-信息收集-端口、目录扫描、源码泄露&#xff08;1&#xff09; 关于源码…

Nginx作为下载站点

grep -Ev ^$|# /usr/local/nginx/conf/nginx.conf > /opt/nginx.txt cat /opt/nginx.txt > /usr/local/nginx/conf/nginx.conf用上面的指令提取最小化的配置文件 vim /usr/local/nginx/conf/nginx.conf [rootlocalhost ~]# cat /usr/local/nginx/conf/nginx.conf worker…

解决linux系统求前N月月份的bug

日常工作中&#xff0c;需要获取某个日期&#xff08;20240531&#xff09;的前N个月&#xff0c;通常会写命令 date -d "20240531 last-month" %Y%m 我期望得到202404 但是很意外&#xff1a; 经过几轮测试&#xff0c;发现只要月内天数超过30天&#xff0c;即所有…

短视频动画脚本:成都鼎茂宏升文化传媒公司

短视频动画脚本&#xff1a;创作与魅力的探索 在数字化时代的浪潮中&#xff0c;短视频动画以其独特的魅力迅速崛起&#xff0c;成为大众娱乐和信息传播的重要载体。成都鼎茂宏升文化传媒公司作为一名原创文章编辑&#xff0c;我深入探索了短视频动画脚本的创作过程&#xff0…

二,几何相交-5,BO算法分析--(1)正确性

也就是说&#xff0c;BO算法有没有可能误报或者漏报&#xff1f; 一&#xff0c;为什么不会误报&#xff1f; 因为两条线段从不相邻到相邻&#xff0c;或者其中一条线段不存在到相邻&#xff0c;都会进行一次相交测试。所以不会误报。 二&#xff0c;为什么不会漏报&#xff1…

学习算法笔记(7.5)-贪心算法(股票售卖问题)

学到这里的大家应该都非常清楚贪心算法到底是怎么一回事了&#xff0c;说白了就是动态规划的一种特例&#xff0c;没有动态规划的使用范围广&#xff0c;但是效率却比动态规划效率高&#xff0c;贪心算法不考虑之前的情况&#xff0c;只考虑当前的最优选择以期达到最优的结果。…

五款效率软件助你事半功倍

1、&#x1f517; 亿可达 作为一款自动化工具&#xff0c;亿可达被誉为国内版的免费Zaiper。它允许用户无需编程知识即可将不同软件连接起来&#xff0c;构建自动化的工作流程。其界面设计清新且直观&#xff0c;描述语言简洁易懂&#xff0c;使得用户可以轻松上手。 2、&…

轻松产出创新点!多元时间序列最新可参考成果,高性能高精度

今天给大家推荐一个好挖创新点的研究方向&#xff1a;多元时间序列。 多元时间序列是我们解决复杂系统分析和预测问题的重要工具。它通过综合分析多个相关时序数据&#xff0c;可以给我们提供更精准的预测结果&#xff0c;非常适合处理涉及多个变量和多个时间点数据的场景&…

基于 GhostNet 不同版本的图像识别

1、介绍 GhostNet 文章地址&#xff1a;[1911.11907] GhostNet: More Features from Cheap Operations (arxiv.org) 主要思想&#xff1a; 特征提取的时候&#xff0c;很多特征图是具有高度相似性的&#xff0c;也就是说存在许多的冗余特征图。 从另一个角度想&#xff0c;…

从零开始实现自己的串口调试助手(5) -实现HEX显示/发送/接收

实现HEX显示: HEX 显示 -- 其实就是 十六进制显示 --> a - 97(10) --> 61(16) 添加槽函数(bool): 实现槽函数: 注意: 注意QString 没有处理HEX显示的相关API 需要使用 toUtf-8 来 转换位QByteArry 类型&#xff0c; 利用其中的API 来处理HEX格式(toHex fromHex) vo…

Kubernetes外部服务管理Ingress介绍

前言 在 Kubernetes 集群中&#xff0c;管理外部服务的访问和流量路由至关重要。通过使用 Ingress 控制器&#xff0c;我们能够实现对外部服务的有效管理&#xff0c;配置灵活的路由规则&#xff0c;并实现负载均衡和流量控制。 目录 一、Ingress 介绍 1. Ingress 概述 2.…

Windows下搭建Cmake编译环境进行C/C++文件的编译

文章目录 1.下载Cmake2.安装MinGW-w643.进行C/C文件的编译 1.下载Cmake 网址&#xff1a;https://cmake.org/download/ 下载完成后安装&#xff0c;勾选“Add CMake to the system PATH for the current user" 点击Finish完成安装&#xff0c;在cmd窗口验证一下是否安…