【UML】UML建模_飝鱻.的博客-程序员资料

技术标签: flink  scala  windows  sql  

UML介绍

UML规格定义了两大类的IML图:结构图和行为图

  • 结构图:结构图从不同的抽象和实现程度上描述了一个系统和系统构建的静态结构,并且描述了一个系统的对象如何随着时间额的变化而变化。

  • 行为图:展示了一个系统中的对象的动态行为,它描述了一个系统的对象如何随着时间的变化而变化/


UML体系结构——“4+1”视图

  • Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。
    在这里插入图片描述
  • 逻辑视图:逻辑试图主要是用来描述系统的功能需求,即系统提供给最终用户的服务. 在逻辑视图中,系统分解成一系列的功能抽象、功能分解与功能分析,这些主要来自问题领域(Problem Definition)。 在面向对象技术中,通过抽象、封装、继承,可以用对象模型来代表逻辑视图,可以用类图(Class Diagram)来描述逻辑视图。
  • 开发视图:开发视图主要用来描述软件模块的组织与管理(通过程序库或子系统)。服务于软件编程人员, 方便后续的设计与实现。它通过系统输入输出关系的模型图和子系统图来描述。要考虑软件的内部需求:开发的难易程度、重用的可能性,通用性,局限性等等。开发视图的风格通常是层次结构,层次越低,通用性越好(底层库:Java SDK,图像处理软件包)。
  • 进程视图:进程试图侧重系统的运行特性,关注非功能性的需求(性能,可用性)。服务于系统集成人员,方便后续性能测试。强调并发性、分布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。定义逻辑视图中的各个类的具体操作是在哪一个线程(Thread)中被执行。
  • 物理视图:物理试图主要描述硬件配置。服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。可以与进程视图一起映射。

跳转顶部


用例图

参与者、用例的基本概念。

用例图的作用:是需求分析中的产物,主要作用就是描述参与者和用例之间的关系,邦族开放人员了解系统的功能

由参与者(Actor)、用例(Use Case) 以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。其中用例和参与者之间的对应关系又叫做通讯关联(Communication Association)。

用例图的构成元素有四个:参与者(角色)、用例、系统边界和元素

  • 参与者(Actor):在村与系统外部并且直接与程序或者系统接触的人、系统、子系统火类的外部实体的抽象,在UML中使用一个小人来进行表示
    在这里插入图片描述
  • 用例:用例即使外部可见的系统功能,对系统提供的服务来进行描述,使用椭圆来进行表示
    在这里插入图片描述
  • 系统边界:指系统与系统之间的界限,使用方形框+系统名称来表示
    在这里插入图片描述
  • 元素间的关系有四个:关联、泛化、包含
    关联:参与者与用例之间的关系,,如何一方都可以接收或者发送信息(箭头指向信息接受方)
    在这里插入图片描述
    泛化:是类元一般描述和具体描述之间的关系,具体描述建立在一般描述的基础之上,并且对其进行了扩展。具体描述完全拥有一般描述的特性、成员和关系,并且包含补充信息(类似于Java这继承关系)。
    在这里插入图片描述
    依赖:类A的实现需要使用到B,这就是依赖,这种使用关系是具有偶然性、临时性、非常弱的,并且B类的的变化会影响到A,则A与B就是存在依赖关系,依赖关系是弱的关联关系,例如:人们依赖计算机去做软件的开发。
    在这里插入图片描述
    箭头家虚线不仅仅可以代表依赖关系,还可以代表扩展、包含关系,扩展就是对用例功能的延申,包含就是将一个复杂的功能分解成数个小的功能

跳转顶部


绘制用例图。

例题1

在火车票预订系统中,客户可以进行购买车票、退订车票、查询余票和查询列车时刻四个操作。不管是购买车票还是退订车票,用户都必须先进行登录系统操作。其中查询列车时刻主要包括按站站查询和按车次查询两种方式。如果在登录系统的过程中忘记密码,则还可使用找回密码功能。

在这里插入图片描述

例题2

在学生信息管理系统的“网上选课模块”中,学生可以进行“查看课程信息”、“选择课程”和“删除已选课程”三个操作。“查看课程信息”主要包括“按课程编号查看”和“按课程名查看”两种方式。

管理员可以进行 “维护课程信息” 操作。

学生和管理员的所有操作均需“登录系统”后方可完成。如果在“登录系统”的过程中忘记密码,则还可使用“找回密码”功能。

在这里插入图片描述

跳转顶部


类图和对象图

类图的基本概念。

类图是使用最广泛的一种模型,聪慧例图的视角来看,系统外部是由一个个用例组成的,用例手机系统的面子,而类图依赖描述特性中各个对象的类型以及他们之间存在关系,现实的是系统内部的静态结构,它是系统的里子类图是一种静态模型,代表面向对象的系统

在研究了剋图之前我们需要先了解类,类是包装信息和行为的基本单位,是面向对象的组织核心结构,类由三部分组成,即类名、属性、操作,在UML中具体表示如下
在这里插入图片描述

跳转顶部


分析识别类。

在UML中可见性分为四级:

  • public:使用前缀+表示,该属性或方法对所有类可见
  • protected:使用前缀#表示,只对该类的子类可见
  • private:使用前缀-表示,只在该类内部可见
  • package:使用前缀~表示,只对同一报申明的其他类可见

接口也是一个类,它定义了一组提供给外界的操作集合的名称,可以把接口看作是一个特殊的抽象类,他的特殊之处在于:接口不能含有属性,接口中之哟与抽象操作——只有操作名,没有具体的实现方法

接口的图像表达就是之间的圆圈

在这里插入图片描述
类之间可以建立四种关系:关联、依赖、聚合和泛化,之变只简单的说一说聚合关系,聚合就是一些系统特性的组成一个整体,如大雁与雁群的关系

  • 聚合中有一个特殊的关系,那就是组合,组合可以看作是更强的聚合操作,他控制着成员对象的创建和结构,部分类需要整体才能存在,如鼠标和电脑的关系

在这里插入图片描述

跳转顶部


顺序图

顺序图的组成。

在这里插入图片描述
顺序图是一种强调消息时间顺序的几乎图,显示的是参与交互的对象及对象之间信息交换的顺序,用来表示用例中的行为顺序

顺序图的组成

  • 活动者,对象、生命线、控制焦点、消息,活动的发起人活着活动的承受者。

  • 对象:活动中交互的实体,由三种表示方式
    在这里插入图片描述

  • 生命线:描述对象的生存周期,对象下方的虚线就是生命线
    在这里插入图片描述

  • 控制焦点:指活动者或对象执行状态的时间段
    在这里插入图片描述

  • 消息:消息用于描述对象间交互的方式和内容

跳转顶部


顺序图中的消息类型。

信息描述对象之间的通信,它可以激发某个动作、唤起信息或导致目标对象的创建或销毁

信息可以分为以下几类:

  • 同步消息:一个对象向另一个对象发出同步消息后,将处于阻塞状态,一直等到另一个对象的回应。
    在这里插入图片描述
  • 异步消息:一个对象向另一个对象发出异步消息后,这个对象可以进行其他的操作,不需要等到另一个对象的响应。
    在这里插入图片描述
  • 返回消息:同步消息的返回消息
    在这里插入图片描述
  • 自身消息:描述对象内部的函数调用
    在这里插入图片描述

跳转顶部


绘制顺序图。

机房示例
在这里插入图片描述

跳转顶部


状态图

状态机的含义。

状态图就是开关,是描述状态变化的图形。描述了一个对象状态与状态的转变并且象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对(用例图:描述需求场景;状态图:描述业务场景)一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机,重点在与描述状态图的控制流。

一个机器的状态图如下:
在这里插入图片描述

跳转顶部


状态机图中的基本标记符。

在这里插入图片描述
在这里插入图片描述

  • 一个状态图只能由一个初态,但是可以由0个或多个终态

  • 状态:主要用来描述一个对象在生命周期内的一个时间段。状态包括:状态名、内部转移、进入/退出操作、子状态、延迟事件等状态的特征

  • 转换:俩个状态之间的关系,当满足条件是,第一个状态中的对象执行操作变成第二个中的对象
    在这里插入图片描述

其中,除了普通的转换,还有复杂的转换

  • 外部转换:对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转化。

  • 内部转换:对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换。

  • 进入转换:当进入某一状态时,执行相应活动。

  • 退出转换:当离开某一状态时,执行相应活动。

事件可以分为几种:信号事件、调用事件、改变事件、时间事件等。

  • 信号事件:信号是作为两个对象之间的通信媒介的实体,它是用来作为对象之间的通信的。

  • 调用事件:是指一个对象对调用的接收,这个对象利用状态的转换而不是固定的处理过程实现操作。

  • 改变事件:是指依赖于特定属性的布尔表达式所表示的条件满足时,事件发生改变。

  • 时间事件:表示时间表达式被满足的事件,它代表时间的流逝。

跳转顶部


绘制状态图。

校园卡

  • 开始——白卡——初始化——正常——冻结(注销)——回收——初始化——损坏——结束
    在这里插入图片描述

跳转顶部


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/heiren_a/article/details/123237482

智能推荐

ASP网页开发中遇到的还没有解决的问题_JBMMFE的博客-程序员资料

我同学在一个小型的软件开发公司上班,由于大家都是程序员,常常在一起交换心得。 最近,同学给了我一个ASP网页中的问题。我坐了一天 就是没有做出来,不甚感觉自己是菜鸟。 大家都知道,ASP是解释型执行语言,解释型执行语言一个其实是对代码的先后顺序要求一般是比,编译执行的语言要高,同时,在每一次请求时。服务器都会重新解释一次你的代码。速度上来讲,这也是浪费效率的问题,可能这是ASP不如...

SSD-Pytorch,Darknet数据集转VOC训练、检测图片、全流程跑通_darknet ssd_卖strawberry的小女孩的博客-程序员资料

文章目录一、环境二、下载SSD-Pytorch git项目一、环境千辛万苦走通后,发现版本真的坑死人。我的版本:python3.6 + cuda 10.2 + pytorch1.7.1 + numpy1.15.1(建议:据说将pytorch的版本降低为1.2及以下的版本。但是我的cuda是10.2,目前不支持1.2及其以下的GPU版的pytorch,重安装太麻烦了,我就只能在后边解决问题了)二、下载SSD-Pytorch git项目...

uni-app开发蓝牙ble智能设备_uniapp蓝牙开发实例_零涂的博客-程序员资料

最近需要开发一个APP通过蓝牙配置esp32c3的一些参数的项目,之前也接触过移动端开发,所以这次选择uniapp来实现这个项目。参考资料: uniapp官方文档:https://uniapp.dcloud.io/README一. 新建工程我使用的是HBuilder编辑器,新建工程的话按照官方文档中的新建一个uni ui项目模板的工程。二. 替换工程的代码将工程文件下的page/index/index.vue替换为下面的代码。<template> <view>.

python自带读写excel_Python读写Excel_weixin_39885690的博客-程序员资料

#导入库importxlrd,xlwtfrom xlutils.copy importcopy#打开旧工作簿old_file = r'D:/12 用Python自动办公,做职场高手(完结)/01.文件/【12.20更新课程代码】用Python自动办公做职场高手/CourseCode/Chapter1/S1-1-2/LessonCode/日统计.xls'old_book= xlrd.open_wor...

红米k40pro和一加9r哪个好_m0_50613577的博客-程序员资料

一加9R采用6.55英寸2.5D柔性屏幕设计,分辨率为2400 *1080,支持120Hz屏幕刷新率与240Hz屏幕触控采样率,支持HDR10+的同时也通过了SGS屏幕护眼认证。红米手机爆降900这活动太给力了 机会不容错过http://xiaomi.adiannao.cn/1一加9r更多使用感受和评价:http://www.adiannao.cn/12红米K40 Pro采用了6.67英寸三星E4材质屏幕,分辨率为2400*1080,支持MEMC动态画质补偿,支持120Hz刷新率和360Hz超高触控采

ORA-09925 Linux-x86_64 Error: 2: No such file or directory_weixin_33755847的博客-程序员资料

ORA-09925Linux-x86_64Error:2:Nosuchfileordirectory[javascript]viewplaincopyDBCA***数据库所有实例后,本想用RMANduplicate方式克隆DB,因此在$ORACLE_BASE目录下创建了相关的目录admin/dupl/adump,admin/dupl/dpum...

随便推点

【华为HCIA-5G学习笔记】05H_5G商业应用_为何园区巴士具备第一波应用条件_智驾的博客-程序员资料

目录1. 5G商业价值及发展2035年5G将在全球驱动12万亿美元的经济活动2. 5G商业应用案例2.1 eMBB商业应用及案例2.1.1 资费演进,释放MBB流量快速增长潜力2.1.2 5G帮助运营商支撑未来10倍流量增长2.1.3 Cloud X 3个重要的eMBB业务2.1.4 5G时代的应用将基于端管云协同:Cloud X2.1.5 Cloud PC是趋势:安全、免维护、易升级2.1.6 PC/主机游戏占据半壁江山,Cloud Gaming降低用户门槛2.1.7 云游戏跨越裂谷,云基础设施和5G网络

paddlepaddle 2 应用于语义分割、自动编码机与GAN的数据同步扩充方法_paddlepaddle2_万里鹏程转瞬至的博客-程序员资料

支持按照相同的随机参数对iamge和label进行扩充1、数据扩充方法from paddle.vision import transformsimport numpy as npimport randomimport timedef setup_seed(seed): random.seed(seed) np.random.seed(seed)class Augmentation: def __init__(self,image_size): se

mpls工作原理通俗解释_网工知识角|三分钟让你醍醐灌顶,熟练掌握MPLS技术_weixin_39667452的博客-程序员资料

学网络,就在IE-LAB国内高端网络工程师培养基地许多同学在学习MPLS VPN之前都会问,MPLS 到底是做什么的?为什么需要MPLS呢?首先,什么是MPLS呢?MPLS全称是:Multi-Protocol Label Switching,缩写为MPLS,也就是多协议标签交换。是一种在开放的通信网上利用标签引导数据高速、高效传输的技术。多协议的含义是指MPLS不但可以支持多种网络层层面...

【算法笔记】使用栈实现汉诺塔(Hanoi)经典算法_利用栈实现汉诺塔的调用。并在主函数中进行测试。_暴走的怪兽君的博客-程序员资料

汉诺塔(Hanoi)算法,应该是每一个程序员都会学习到的递推算法之一,汉诺塔是一个很著名的智力题,但是这里就不科普它的由来了,我们直接进入正题。       如上图,假设A棒有五个原盘,依次移动,每次移动一块,小的永远只能在上面,最终移动到C棒上,如何用算法实现呢?       从这里移动的逻辑我们很容易发现,A帮不就像一个栈吗,栈顶必须先出,网上看过很多汉诺塔算法,很少涉及到用栈实现,的确

用计算机算法设置密码,南京邮电大学计算机学院算法分析与设计密码算法.doc..._咚懂咚懂咚的博客-程序员资料

南京邮电大学计算机学院算法分析与设计密码算法实 验 报 告课程名称算法分析与设计实验名称密码算法实验时间2015年6月26日指导单位南京邮电大学指导教师XXXX学生姓名 班级学号学院(系)计算机学院专 业软件工程实 验 报 告实验名称密码算法指导教师XXX实验类型验证实验学时2实验时间2015-6-26实验目的和任务实验目的:了解现代密码学的基本原理和数论的基础知识,掌握非对称密码体制的...

推荐文章

热门文章

相关标签