【UML用户指南】-31-对体系结构建模-制品图
目录
1、对源代码建模
2、对可执行程序的发布建模
3、对物理数据库建模
4、对可适应系统建模
制品图是对面向对象系统的物理方面进行建模时要用到的两种图之一。制品图展示一组制品之间的组织以及其间依赖关系。
利用制品图可以对系统的静态实现视图建模。这包括对存在于结点上的物理事物的建模,如可执行程序、库、表、文件和文档等。制品图实质上是针对系统制品的类图。

1、对源代码建模
将使用集成化开发环境来分割代码,并将源代码存储到一些文件中。可以使用制品图来为这些文件的配置建模,并设立配置管理系统。这些文件代表了工作产品制品。
建模要求
1)对于较大的系统,利用包来展示对这些源代码文件的分组。
2)给出一个标记值,用它指示源代码文件的版本号、作者和最后修改日期等信息。利用工具管理这个标记的值。
3)用依赖关系对源代码文件之间的编译依赖关系建模。利用工具帮助产生并管理这些依赖关系。

上图中有5个源代码文件。文件signal.h是一个头文件,图中显示了跟踪它从新版到旧版的3个版本,该源代码文件的每一个版本都有一个用来显示它的版本号的标记值。
这个头文件(signal.h)被其他两个文件(interp.cpp和signal.cpp)引用,这两个.cpp文件都是体文件。其中一个文件(interp.cpp)有一个到另一个头文件(irq.h)的编译依赖关系,而device.cpp又有一个到interp.cpp的编译依赖关系。有了这个制品图,跟踪变化的影响就容易多了。例如,源代码文件signal.h 发生了变化将需要重新编译 signal.cpp、interp.cpp以及device.cpp这3个文件。该图也显示出,文件irq.h将不受影响。
2、对可执行程序的发布建模
软件的发布是交付给内部或外部用户的相对完整而且一致的制品系列。在制品的语境中,一个发布注重交付一个运行系统所必需的部分。当用制品图对发布建模时,其实是在对构成软件的物理部分(即部署制品)所做的决策进行可视化、详述和文档化。

上图对一个自主机器人的可执行程序发布的一部分进行了建模。该图注重于与机器人的驱动和计算功能相关的部署制品。其中一个制品(driver.dll)表现了引出接口(IDrive)的构件Driving,而这个接口又由制品(path.dll)表现的构件Path所使用。
在构件Path和Driving间的依赖导致了实现它们的制品path.dll和driver.dll间的一个依赖。图中还有一个制品(collision.dll)也表现了一个构件,但图中省略了这些细节,只显示了path.dll对collision.dll的直接依赖。
3、对物理数据库建模
可以把物理数据库看作模式(schema)在比特世界中的具体实现。实际上,模式提供了对持久信息的应用程序编程接口(API),物理数据库模型表示了这些信息在关系型数据库的表中或者在面向对象数据库的页中的存储。可以用制品图表示这些以及其他种类的物理数据库。
三种映射:
(1)(下推)为每一个类定义一个单独的表。这种方法简单,但存在一些问题,因为当增加新的子类或修改父类时,对数据库的维护是很令人头痛的。
(2)(上拉)压平继承的网格,使任何一个类的所有实例都在一个层次上拥有相同的状态。这种方法的缺点是对许多实例要存储大量无用的信息。
(3)(分割表)将父类和子类的状态存储在不同的表中。这种方法很好地反映了继承网格,但它的缺点是访问数据时需要许多跨表连接。
上图给出了一组从学校的信息系统中提取的数据库表。图中有一个数据库(school.db,用衍型化为database的制品表示),其中包括5个表:学生(student)、班级(class)、指导教师(instructor)、系(department)和课程(course)。在相应的逻辑数据库模式中,由于没有继承,所以直接映射到这种物理数据库设计。
4、对可适应系统建模
某些系统是相对静态的,其制品进入现场、参与执行、然后离开。另一些系统则是较为动态的,其中包括一些为了负载均衡和故障恢复而进行迁移的可移动的代理或制品。可以将制品图与对行为建模的UML的一些图结合起来表示这类系统。

上图表示对图3中的数据库的复制建模。图中包含制品school.db的两个实例,每个实例都是匿名的,但各有一个不同的位置标记值。图中还有一个注解显式地说明哪个实例是另一个实例的副本。
相关文章:
【UML用户指南】-31-对体系结构建模-制品图
目录 1、对源代码建模 2、对可执行程序的发布建模 3、对物理数据库建模 4、对可适应系统建模 制品图是对面向对象系统的物理方面进行建模时要用到的两种图之一。制品图展示一组制品之间的组织以及其间依赖关系。 利用制品图可以对系统的静态实现视图建模。这包括对存在于结…...
《基于 Kafka + Flink + ES 实现危急值处理措施推荐和范围校准》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,欢迎多多交流。&am…...
计算机的进制转换
十进制:以0-9这九个数字组成。 二进制:由0和1两个数字组成。 八进制:由0-7数字组成,不存在8和9。 十六进制:由0-9和A-F组成。A-F对应的是10-15。 ____________ 十进制 1 2 3 4 5 6 7 8 9 10 二进制 0 1 10 11 1…...
String类(STL开始)
相信大家都知道STL在C中的重要性,作为其模板库中的一部分,包含了常见的数据结构和算法,是C的标准库 而我们今天要讲的String类(String底层是一个字符顺序数组的顺序表对象,可以归类为容器),其实…...
【数据结构】单链表:数据结构中的舞者,穿梭于理论与实践的舞池
欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 数据结构与算法 先赞后看,已成习惯 创作不易,多多支持! 一、链表的概念和结构 1.1 链表的概念 在上一篇文章中,我们了解了线性表(linear list),并且学习了其…...
html三级菜单
示例 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Menu Example</title> <link re…...
【人工智能】—基于成都市各区(市)县租房价格预测建模研究
引言 随着城市化进程的加速,人口流动日益频繁,租房市场作为城市生活的重要组成部分,其价格波动对居民生活质量和城市经济发展具有显著影响。成都市,作为中国西部地区的经济、文化、交通和科技中心,近年来吸引了大量人…...
3213. 最小代价构造字符串
Powered by:NEFU AB-IN Link 文章目录 3213. 最小代价构造字符串题意思路代码 3213. 最小代价构造字符串 题意 给你一个字符串 target、一个字符串数组 words 以及一个整数数组 costs,这两个数组长度相同。 设想一个空字符串 s。 你可以执行以下操作任意次数&a…...
提取重复数据
直接上控制台代码: Module Module1Sub Main()Console.WriteLine("请输入数据,以"",""相隔:")Dim str As String Console.ReadLineDim result From x In str.Split(",")Group By x Int…...
Go语言标准库之log和三方库zap
一、Log 1.1 logger基本使用 Go语言内置的log包实现了简单的日志服务。本包也提供了一个预定义的“标准”logger,可以通过调用函数Print系列(Print|Printf|Println)、Fatal系列(Fatal|Fatalf|Fatalln)、和Panic系列(Panic|Panicf|Panicln)来…...
Linux:进程终止和进程替换
Linux:Linux:进程终止和进程替换 一、进程终止1.1 进程退出场景和创建退出方式 1.2 exit 和 _exit区别二、进程程序替换2.1 进程替换函数2.2 函数解释及命名解释函数解释命名解释 2.3 单进程程序替换(无子进程)2.3.1 带l函数进程替…...
使用Java实现异步消息处理与队列消费
使用Java实现异步消息处理与队列消费 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在现代软件系统中,处理异步消息和队列消费是常见的需求。通过…...
使用C++实现ATM系统,谈谈思路及代码实现
🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…...
相机光学(二十四)——CRA角度
CRA角度 0.参考资料1.什么是CRA角度2.为什么 CRA 会导致luma shading3.为什么 CRA 会导致color shading4.CRA相差过大的具体表现5.CRA Matching6.怎样选择sensor的CRA 0.参考资料 1.芯片CRA角度与镜头的匹配关系(一) 2.芯片CRA角度与镜头选型的匹配关…...
python函数和c的区别有哪些
Python有很多内置函数(build in function),不需要写头文件,Python还有很多强大的模块,需要时导入便可。C语言在这一点上远不及Python,大多时候都需要自己手动实现。 C语言中的函数,有着严格的顺…...
速看!这主食冻干评测极可能被商家恶意举报~PR、希喂和SC真实测评
我是一名专注于宠物健康的营养师,日常大部分时间都在与猫咪和狗狗为伴,对它们入店时的身体状况往往能迅速做出初步判断。当前,多数家养猫咪面临的肥胖和肝损伤问题尤为突出,尽管医疗干预能缓解病情,但要从根本上解决还…...
股票数据分析(K线图、均值图、MACD图、RSI图)--股票日数据
数据 数据是上证指数日行情数据,股票代码000002.sz,原始数据shdata示例如下: 读取数据: import numpy as np import pandas as pd import mplfinance as mpf import matplotlib.pyplot as plt from datetime import datetime imp…...
重写equals()方法为什么同时要重写hashcode()
equals()方法 equals()方法是Object类中的一个方法,在Object类中,equals等同于。 在不同的类中,往往会对equals()按需求进行重写。重写的目的都是:用于比较两个对象是否 "相等"。如果两个对象的内容相同,那…...
安全及应用(更新)
一、账号安全 1.1系统帐号清理 #查看/sbin/nologin结尾的文件并统计 [rootrootlocalhost ~]# grep /sbin/nologin$ /etc/passwd |wc -l 40#查看apache登录的shell [rootrootlocalhost ~]# grep apache /etc/passwd apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin#改变…...
Hadoop权威指南-读书笔记-03-Hadoop分布式文件系统
Hadoop权威指南-读书笔记 记录一下读这本书的时候觉得有意思或者重要的点~ 还是老样子~挑重点记录哈😁有兴趣的小伙伴可以去看看原著😊 第三章 Hadoop分布式文件系统 当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
