【UML用户指南】-02-UML基本元素的介绍(二)

目录

1、语法和语义规则

2、UML中的公共机制

(1)规约

(2)修饰

(3)通用划分

(4)扩展机制

衍型/版型/类型(stereotype)

标记值 (tagged value)

约束(constraint)

3、系统的体系结构建模

用例视图 (use case view)

设计视图 (design view)

交互视图 (interaction view)

实现视图 (implementation view)

部署视图 (deployment view)

4、软件开发的生命周期

4.1、初始 (inception)

4.2、细化 (elaboration)

4.3、构造 (construction)

4.4、移交 (transition)


1、语法和语义规则

命名——为事物、关系和图起的名字;

范围——使名字具有特定含义的语境;

可见性——这些名字如何让其他成分看见和使用;

完整性——事物如何正确、一致地相互联系;

执行——运行或模拟一个动态模型意味着什么。

2、UML中的公共机制

(1)规约

UML 不仅仅是一种图形语言。实际上,在它的图形表示法的每部分背后都有一个规约,这个规约提供了对构造块的语法和语义的文字叙述
 

(2)修饰

UML中的大多数元素都有唯一而直接的图形表示符号,这些图形符号对元素的最重要的方面提供了可视化表示。

图中表明这个类是一个抽象类,

有两个公共操作、一个受保护操作和一个私有操作。

(3)通用划分

第一种方式是对类和对象的划分。类是一种抽象,对象是这种抽象的一个具体表现。

在图形上,UML是这样区分对象的:采用与类同样的图形符号来表示对象,并且在对象名的下面画一道线

有一个名称为Customer的类,它有3个对象,分别为

Jan(它被明确地标记为Customer的对象)

:Customer(匿名的Customer对象)

Elyse(它在规约中被说明为一种Customer对象,尽管在这里没有明确地表示出来)。

第二种方式是接口和实现的分离。接口声明了一个合约,而实现则表示了对该合约的具体实施,它负责如实地实现接口的完整语义。

在这个图中,有一个名称为SpellingWizard.dll的构件,

它实现了接口IUnknown和接口ISpelling,

并且还需要使用一个由其他构件提供的名为IDictionary的接口。

第三种方式是类型和角色的分离。类型声明了实体的种类(如对象、属性或参数),角色描述了实体在语境中的含义(如类、构件或协作等)。

任何作为其他实体结构中的一部分的实体(例如属性)都具有两个特性:

从它固有的类型派生出一些含义

从它在语境中的角色派生出一些含义

(4)扩展机制

衍型/版型/类型(stereotype)

扩展了UML的词汇,可以用来创造新的构造块,这个新构造块既是从现有的构造块派生的,但是针对专门的问题。

例如,假设正在使用一种编程语言,如Java或C++,经常要对“异常事件”建模。在这些语言里,“异常事件”就是类,只是用很特殊的方法进行了处理。通常可能只想允许抛出和捕捉异常事件,没有其他要求。

此时可以让异常事件在模型中成为“一等公民”——可以像对待基本构造块一样对待它们,只要用一个适当的衍型来标记它们即可。

标记值 (tagged value)

扩展了UML衍型的特性,可以用来创建衍型规约的新信息。

例如,如果在制作以盒装形式销售的产品,随着时间的推移,它经过了多次发行,那么经常会想要跟踪产品的版本和对产品做关键摘要的作者。

版本和作者不是UML的基本概念,通过引入新的标记值,可以把它们加到像类那样的任何构造块中去。例如,在图中,在类EventQueue上明确标记了版本和作者,这样就对该类进行了扩展。

约束(constraint)

扩展了UML构造块的语义,可以用来增加新的规则或修改现有的规则。例如,可能想约束类 EventQueue,以使所有的增加都按序排列。如上图,对操作 add增加了一个约束,即{ordered},以明确标示这一规则。
 

3、系统的体系结构建模

不同人员关注各自的问题

用况:用例

用例视图 (use case view)

由描述可被最终用户、分析人员和测试人员看到的系统行为的用例组成。用例视图实际上没有描述软件系统的组织,而是描述了形成系统体系结构的动力。

在UML中,该视图的静态方面由用例图表现;动态方面由交互图、状态图和活动图表现

设计视图 (design view)

包含了类、接口和协作,它们形成了问题及其解决方案的词汇。这种视图主要支持系统的功能需求,即系统应该提供给最终用户的服务。

在UML中,该视图的静态方面由类图和对象图表现;动态方面由交互图、状态图和活动图表现。类的内部结构图特别有用。

交互视图 (interaction view)

展示了系统的不同部分之间的控制流,包括可能的并发和同步机制。该视图主要针对性能、可伸缩性和系统的吞吐量。

在UML中,对该视图的静态方面和动态方面的表现与设计视图相同,但着重于控制系统的主动类和在它们之间流动的消息

实现视图 (implementation view)

包含了用于装配与发布物理系统的制品。这种视图主要针对系统发布的配置管理,它由一些独立的文件组成;这些文件可以用各种方法装配,以产生运行系统。它也关注从逻辑的类和构件到物理制品的映射。

在UML中,该视图的静态方面由构件图表现,动态方面由交互图、状态图和活动图表现。

部署视图 (deployment view)

包含了形成系统硬件拓扑结构的结点(系统在其上运行)。这种视图主要描述组成物理系统的部件的分布、交付和安装。

在UML中,该视图的静态方面由部署图表现,动态方面由交互图、状态图和活动图表现。

4、软件开发的生命周期

1)用例驱动

把用例作为一种基本的制品,用于建立所要求的系统行为、验证和确认系统的体系结构、测试以及在项目组成员间进行交流。

2)以体系结构为中心

以系统的体系结构作为一种基本制品,对被开发的系统进行概念化、构造、管理和演化。

3)迭代的和增量

迭代:涉及到对一连串可执行的发布的管理。

增量:涉及到系统体系结构的持续集成,以产生各种发布,每个新发布都比上一个发布有所改善

总的来讲,迭代和增量的过程是风险驱动的(risk-driven),每个新的发布都致力于处理和降低对于项目成功影响最为显著的风险。

RUP四个阶段,即软件开发生命周期

4.1、初始 (inception)

在此阶段,萌发的开发想法经过培育要达到这样一个目标:至少要在内部奠定足够的基础,以保证能够进入到细化阶段。

4.2、细化 (elaboration)

在此阶段定义产品需求和体系结构。在这个阶段,将明确系统需求,按其重要性排序并划定基线。可以按一般的描述,也可以按精确的评价准则来排列系统的需求,每个需求都说明了特定的功能或非功能的行为,并为测试提供了基础。

4.3、构造 (construction)

在此阶段软件从可执行的体系结构基线发展到准备移交给用户。针对项目的商业需要,这里也要不断地对系统的需求,特别是对系统的评价准则进行检查,并要适当地分配资源,以主动地降低项目的风险

4.4、移交 (transition)

在此阶段把软件交付给用户。在这个阶段,软件开发过程很少能结束,还要继续改善系统,根除错误,增加早期发布未能实现的特性。

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

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

相关文章

代码随想录算法训练营第四十六 | ● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!

139.单词拆分 视频讲解&#xff1a;https://www.bilibili.com/video/BV1pd4y147Rh https://programmercarl.com/0139.%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.html class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<st…

JVM相关:Java内存区域

Java 虚拟机&#xff08;JVM)在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。 Java运行时数据区域是指Java虚拟机&#xff08;JVM&#xff09;在执行Java程序时&#xff0c;为了管理内存而划分的几个不同作用域。这些区域各自承担特定的任务&#xff0c…

sc.tl.rank_genes_groups()问题

今天被问到了一个关于sc.tl.rank_genes_groups()的奇怪的问题 import scanpy as sc import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt # from CellDART import da_cellfraction # from CellDART.utils import random_mix from…

配置 HTTP 代理 (HTTP proxy)

配置 HTTP 代理 [HTTP proxy] 1. Proxies2. curl2.1. Environment2.2. Proxy protocol prefixes 3. Use an HTTP proxy (使用 HTTP 代理)3.1. Using the examples (使用示例)3.1.1. Linux or macOS3.1.2. Windows Command Prompt 3.2. Authenticating to a proxy (向代理进行身…

ROS学习记录:自定义消息类型

前言 当我们需要传输一些特殊的数据时&#xff0c;且官方的消息包无法满足需求&#xff0c;我们便可以自己定义一个消息类型。 实验步骤 一、在终端输入cd ~/catkin_ws1/src进入工作空间中src目录 二、输入catkin_create_pkg qq_msgs roscpp rospy std_msgs message_generati…

ODBC访问达梦数据库Ubuntu18.04 x86-x64(亲测有效)

ODBC访问达梦数据库Ubuntu18.04 x86-x64 第1步&#xff1a;安装unixodbc驱动,使用下面命令。第2步&#xff1a;拷贝已经安装好的达梦数据库驱动程序第3步&#xff1a;配置ODBC必要的参数文件&#xff0c;如下图第4步&#xff1a;设置环境变量第5步&#xff1a;连接测试 说明&am…

AI大模型语料库

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 语料库概述 语料库&#xff08;Corpus&#xff09;是一个存储了大量真实语言使用实例的集合&#xff0c;这些实例可以是文本、语音、视频等多种形式的语言数据。语料库通常…

使用C++实现YOLO图像分类:从环境搭建到性能评估的完整指南

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

欢乐钓鱼大师攻略:云手机高分钓鱼技巧教程!

《欢乐钓鱼大师》是一款有趣的休闲游戏&#xff0c;适合各类玩家。本指南将帮助新手快速上手&#xff0c;掌握钓鱼技巧&#xff0c;了解装备和渔场的相关知识。 一、钓鱼的技巧 1.1专属云机 钓大鱼&#xff0c;除了好的技巧&#xff0c;选择合适的设备和软件是成功攻克《欢乐…

手机站怎么推广

随着手机的普及和移动互联网的快速发展&#xff0c;越来越多的人开始使用手机进行在线购物、社交娱乐、阅读资讯等&#xff0c;同时也催生了越来越多的手机站的出现。但是&#xff0c;在海量的手机站中&#xff0c;要让自己的手机站脱颖而出&#xff0c;吸引更多用户访问和使用…

Coolmuster Android助手评测:简化Android到电脑的联系人传输

产品概述 Coolmuster Android助手是一款旨在简化Android设备与计算机之间数据管理和传输过程的全面工具。它以用户友好的界面和全面的功能&#xff0c;成为寻求高效数据管理解决方案的Android用户的热门选择。 主要特点和功能Coolmuster Android助手拥有一系列使其成为管理Andr…

【推荐】用scss循环zoom缩放比例,解决可视化大屏在不同分辨率屏幕下的适配问题

方法1&#xff1a; 指定几种常规屏幕宽度&#xff08;用这种方式就必须要强制用户全屏查看页面&#xff0c;在固定的宽度下才能达到比较不错的显示效果&#xff09; // 适配不同分辨率的页面---------------------------------------- html {overflow: hidden;width: 1920px;…

24、Linux网络端口

Linux网络端口 1、查看网络接口信息ifconfig ens33 eth0 文件 ifconfig 当前设备正在工作的网卡&#xff0c;启动的设备。 ifconfig -a 查看所有的网络设备。 ifconfig ens33 查看指定网卡设备。 ifconfig ens33 up/down 对指定网卡设备进行开关 基于物理网卡设备虚拟的…

中国新闻网怎么投稿 新闻稿件文章如何发布到中国新闻网上,附中国新闻网价格明细

中国新闻网是中国最具影响力和权威性的新闻门户网站之一。作为广大作者和媒体从业者&#xff0c;怎样向中国新闻网投稿一直是一个备受关注的话题。在这篇文章中&#xff0c;我们将着重介绍媒介库网发稿平台&#xff0c;并分享如何在该平台上成功投稿至中国新闻网。 媒介库网发稿…

【WP】猿人学_19_乌拉乌拉乌拉

https://match.yuanrenxue.cn/match/19 发包测试 经过发包测试&#xff0c;并没有携带加密参数&#xff0c;但是使用python无法复现&#xff0c;requests&#xff0c;httpx以及异步都不行&#xff0c;网上搜索了一下&#xff0c;这是使用了JA3指纹。可能是我做的时间比较晚&…

基于Python的实验室管理系统的设计与实现(论文+源码)_kaic

摘 要 随着实验室设备越来越多&#xff0c;实验室及其设备管理工作变得越来越繁重&#xff0c;还存在些管理模式仍旧处于手工管理模式和一些抢占实验室的不文明现象&#xff0c;传统的手工模式已经满足不了日益增长的管理需求&#xff0c;而本系统摒弃传统模式&#xff0c;开启…

STM32 音乐播放器之音频入门实验(pwm、dac、.wav、.mp3)

1.pwm实现简易电子琴实验 1.改变PWM频率&#xff0c;输出不同音调 2.改变占空比&#xff0c;调节音量大小 3.按键弹奏&#xff0c;支持按按键录取弹奏音 4.播放:中高低音&#xff1b;录取音&#xff1b;指定歌曲 5.支持按上一首&#xff0c;下一首&#xff0c;调弹奏速度&#…

《python-配置》在ubuntu系统上安装pycham并破解

阿丹&#xff1a; 因为ai开发要使用ubuntu系统&#xff0c;整理和总结一下如何在这里安装pycham 官网下载&#xff1a;pycham下载地址 PyCharm: the Python IDE for data science and web development 官网操作流程&#xff1a; 1&#xff0c;点击下载 2、下载其他版本 3、…

【自然语言处理】【Scaling Law】语言模型物理学 第3.3部分:知识容量Scaling Laws

语言模型物理学3.3&#xff1a;知识容量Scaling Laws 论文名称&#xff1a;Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws 论文地址&#xff1a;https://arxiv.org/pdf/2404.05405 相关博客 【自然语言处理】【Scaling Law】Observational Scaling …

敏捷开发:拥抱变化,持续交付价值的艺术

目录 敏捷开发&#xff1a;拥抱变化&#xff0c;持续交付价值的艺术 引言 第一部分&#xff1a;敏捷开发是什么&#xff1f; a.定义&#xff1a;敏捷开发的基本概念和核心原则 b.历史&#xff1a;敏捷宣言的诞生和敏捷开发的历史背景 c.价值观&#xff1a;敏捷宣言的12条…