【UML用户指南】-27-对体系结构建模-制品

news2024/11/16 23:51:58

目录

1、组成结构

2、制品的种类

2.1、部署制品 (deployment artifact)

2.2、工作产品制品 (work product artifact)

2.3、执行制品 (execution artifact)

3、标准元素

4、常用建模技术

4.1、对可执行程序和库建模

4.2、对表、文件和文档建模

4.3、对源代码建模


制品是系统中物理的且可替换的部分,制品是实现平台层次上的物理事物。

对存在于结点上的物理事物(如可执行程序、库、表、文件和文档)进行建模。

制品表示对诸如类、接口和协作等逻辑元素的物理打包。

1、组成结构

制品 (artifact)是存在于实现平台层的系统的物理部分。在图形上,把制品画成带有关键字«artifact»的矩形。

1.1、名称

与类表示形式类似,存在简单名与受限名(用制品所在的包的名字作为前缀)两种

可以用标记值或表示其细节的附加栏来修饰制品。

制品和类都是类目

1)类表示逻辑抽象,而制品表示存在于比特世界中的物理抽象

2)制品可以存在于结点上,而类不可以。

3)制品表示对在实现平台上的比特的物理打包。

4)类可以拥有属性和操作;制品可以实现类和方法,但是它们自身没有属性或操作。

用表现(manifest)关系显式地表示制品和它所实现的类之间的关系。
 

2、制品的种类

2.1、部署制品 (deployment artifact)

这类制品是构成一个可执行系统必要而充分的制品,例如动态连接库(DLL)和可执行程序(EXE)。UML的制品定义足以表达典型的对象模型,如.NET、CORBA及Enterprise Java Beans以及其他对象模型,或许还包括动态Web页、数据库表以及使用专用通信机制的可执行程序。

2.2、工作产品制品 (work product artifact)

这类制品本质上是开发过程的产物,由源代码文件、数据文件等用来创建部署制品的事物构成。这些制品并不直接地参加可执行系统,而是开发中的工作产品,用于产生可执行系统。

2.3、执行制品 (execution artifact)

这类制品是作为一个正在执行的系统的结果被创建的,例如由DLL实例化形成的.NET对象。

3、标准元素

通常可以用标记值扩充制品的性质(如指定一个开发制品的版本),用衍型指定新的制品种类(如特定操作系统的制品)

UML预定义了应用于制品的标准衍型。

(1)可执行程序 (executable) 说明一个可在结点上执行的制品。

(2)库 (library)          说明一个动态或静态对象库。

(3)文件 (file)           说明一个表示文档的制品,其中包含源代码或数据

(4)文档 (document)     说明一个表示文档的制品。

4、常用建模技术

4.1、对可执行程序和库建模

对于大多数系统而言,这些部署制品来源于对如何划分系统的物理实现所做出的决策。

1)技术问题(如对基于制品的操作系统工具的选择)、

2)配置管理问题(如关于系统中哪些部分将随时间而变化的决策)

3)复用问题(即决定复用其他系统的哪些制品以及将哪些制品复用到其他系统中)的影响。

对系统接缝的管理很重要,就要对由一些制品使用并由另一些制品实现的重要接口建模。

上图给出了从个人生产率工具中抽取的一组制品,该工具运行在一台个人计算机上。图中包括一个可执行程序(animator.exe)和四个动态连接库(dlog.dll、wrfrme.dll、render.dll和raytrce.dll),所有这些都分别用UML中关于可执行程序和库的标准元素来表示。图中也给出了这些制品之间的依赖关系。

对于部署在几台计算机上的更大的系统,需要通过表明制品所在的结点来对制品的分布方式建模。

4.2、对表、文件和文档建模

实现中可能包括数据文件、帮助文档、脚本、日志文件、初始化文件及安装/卸载文件等。对这些制品建模是控制你的系统配置的重要部分。

上图展示了围绕在可执行程序animator.exe周围作为被部署系统的组成部分的表、文件及文档。图中包括一个文档(animator.hlp)、一个简单文件(animator.ini)和一个数据库表(shapes.tbl)

4.3、对源代码建模

对源代码的图形化建模特别有助于源代码文件之间编译依赖关系的可视化,也有助于在开发路径分岔或汇合时管理这些文件组的分离与合并。

UML 制品可以是配置管理及版本控制工具的图形界面。

上图展示了用来构造前面例子中的库render.dll的一些源代码文件,图中包括四个头文件(render.h、rengine.h、poly.h和colortab.h),表示某些类规约的源代码。还包括一个实现文件(render.cpp),表示其中一个头文件的实现。

多数情况下,所用的开发工具要把这些组分别放在单独的目录中。在UML中,可以利用包来对这些源代码文件簇建模。

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

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

相关文章

CGLib动态代理技术

基于CGLib的动态代理机制,ProxyFactoryy无需再像JDK动态代理那样实现一个interface,实际情况下可能这个interface并不存在,只需要实现另外一个接口MethodInterceptor即可 package com.hmdp.service.尚硅谷的代理模式3; //CGlib代理import …

UE5 03-物体碰撞检测

在你需要碰撞的物体上添加一个碰撞检测组件 碰撞预设 设置为NoCollision,这样移动过程中就不会有物理碰撞阻挡效果,只负责检测是否碰撞,比较难解释,如果学过Unity的话,可以把它理解成 Collision 为 Trigger

INFINI Console 使用介绍

上次在《INFINI Easysearch尝鲜Hands on》中我们部署了两个节点的Easysearch,并且也设置了Console对集群进行监控。那么今天我们再来介绍下INFINI Console的使用。 INFINI Console 仪表盘功能介绍 INFINI Console 是一个功能强大的数据管理和分析平台,…

conda env pip install error:No space left on device

conda 环境 pip install error:No space left on device 文章目录 conda 环境 pip install error:No space left on device现象1 实验2 分析和解决办法 现象 非root用户的服务器,需要安装环境,安装的环境超过2GB sudo pip insta…

Roboflow自动标定数据集

最近需要自己打数据集,记录一下用Roboflow来打标签。 https://roboflow.com/(官网) 进入官网先注册,注册完成后进入这个界面。 我先讲如果不想让数据集公开怎么办,因为这里每个新建的都是公开的。新账号进去应该进去…

Python | Leetcode Python题解之第214题最短回文串

题目: 题解: class Solution:def shortestPalindrome(self, s: str) -> str:n len(s)fail [-1] * nfor i in range(1, n):j fail[i - 1]while j ! -1 and s[j 1] ! s[i]:j fail[j]if s[j 1] s[i]:fail[i] j 1best -1for i in range(n - 1,…

LIS2DH12

LIS2DH12 是属于“nano”系列的超低功耗高性能 3 轴线性加速度计,具有数字 I 2C、SPI 串行接口标准输出。 器件具有超低功耗工作模式,可实现高级节能、智能睡眠唤醒以及恢复睡眠功能。 LIS2DH12 具有2g/4g/8g/16g 的动态用户可选满量程,并能通…

Adobe Acrobat添加时间戳服务器

文章目录 前言一、Adobe Acrobat添加时间戳服务器1.打开Adobe Acrobat软件2.点击【菜单】→ 【首选项】3.点击【安全性】→【更多】4.点击【新建】5.输入【名称】→【服务器URL】 前言 一、Adobe Acrobat添加时间戳服务器 1.打开Adobe Acrobat软件 2.点击【菜单】→ 【首选项…

汽车电子零部件(15):车载TFT LCD显示模组

前言: 车载显示越来越受到重视,屏的使用越来越大且多,车载显示屏模组技术也在快速发展。 在复杂的显示技术世界中,薄膜晶体管(TFT,Thin Film Transistor)液晶显示器(LCD,Liquid Crystal Display)模块的制造证明了现代工程的奇迹。 TFT显示器是全彩色LCD,提供明亮、生…

WPF 3D绘图 点云 系列五

基本概念:点云是某个坐标系下的点的数据集。 可能包含丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等 点云可以将现实世界原子化,通过高精度的点云数据可以还原现实世界。万物皆点云。 通过三维激光扫描仪进行数据采集获取点云数据,其次通过二维影像进行…

新手教学系列——使用uWSGI对Flask应用提速

在构建和部署Flask应用时,性能和稳定性是两个关键的因素。为了提升Flask应用的性能,我们可以借助uWSGI这个强大的工具。本文将详细介绍为什么要使用uWSGI、uWSGI的底层原理,并提供一个实例配置,帮助你更好地理解和应用这个工具。 为什么要使用uWSGI uWSGI 是一个应用服务…

docker部署简单的Kafka

文章目录 1. 拉取镜像2. 运行创建网络运行 ZooKeeper 容器运行 Kafka 容器 3. 简单的校验1. 检查容器状态2. 检查 ZooKeeper 日志3. 检查 Kafka 日志4. 使用 Kafka 命令行工具检查5. 创建和删除测试主题 1. 拉取镜像 选择一组兼容性好的版本。 docker pull bitnami/kafka:3.6…

【C++】类和对象(中)--上篇

个人主页~ 类和对象上 类和对象 一、类的六个默认成员函数二、构造函数1、构造函数基本概念2、构造函数的特性 三、析构函数1、析构函数的概念2、特性 四、拷贝构造函数1、拷贝构造函数的概念2、特征 一、类的六个默认成员函数 如果有个类中什么成员都没有,那么被称…

[C++初阶]vector的初步理解

一、标准库中的vector类 1.vector的介绍 1. vector是表示可变大小数组的序列容器 , 和数组一样,vector可采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大…

营销故事之扩大牙膏开口

职场营销故事“扩大牙膏开口”又可以说是“牙膏开口扩大1毫米”,为十大经典营销故事之一。某品牌的牙膏,包装精美,品质优良,备受顾客喜爱,连续10年营业额保持10%-20%的增幅。可到了第11年,销售业绩却停滞不…

API-正则表达式

学习目标: 掌握正则表达式 学习内容: 什么是正则表达式语法元字符修饰符 什么是正则表达式: 正则表达式是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。 通常用来查找、替换那些符合正则表达式的文本&a…

泛微开发修炼之旅--26前端j实现手机号码验证

文章链接:26前端j实现手机号码验证

开关电源中强制连续FCCM模式与轻载高效PSM,PFM模式优缺点对比笔记

文章目录 前言一、连续FCCM模式优点:缺点: 二,轻载高效PSM,PFM优点:缺点: 总结 前言 今天我们来学习下开关电源中,强制连续FCCM模式与轻载高效PSM,PFM模式优缺点对比 一、连续FCCM模式 优点: …

安装 VisualSVN Server提示HTTP服务无法启动的问题解决

安装 VisualSVN Server 版本:VisualSVN-Server-5.4.0-x64 安装包在安装到一半的时候,弹窗提示:HTTP服务无法启动,网上找了一大堆,说是service里面更改用户为本地用户什么的都没用用,点右键也无法启动。 …

【Python实战因果推断】17_线性回归的不合理效果7

目录 Regression for Dummies Conditionally Random Experiments Dummy Variables Regression for Dummies 回归和正交化固然很好,但归根结底,你必须做出独立性假设。你必须假设,在考虑到某些协变量的情况下,干预看起来与随机分…