UML学习体会

1. 水在前面

        本来写作的水平就很一般,平时写的也少。最近看到一些文章说学习最好的方式是输出,刚好又重温了一遍UML方面的基础,所以想记录点学习心得。而且说实话这玩意平时基本不怎么用(偶尔倒是看看别人的成果),所以一直以来只有基本的认知,没有深入,这段重温刚好理清了整个UML的学习脉络,写下来以后给自己温习。

        这里要敲黑板提醒,这篇水文不能让你完全掌握UML,只是用来给我自己温习用的,或者也可以作为小伙伴的学习引路,别指望能读一篇文章就学会了。

2. 关于教材

        总说学习要站在巨人的肩膀上,这里给推荐一本书《UML面向对象建模与设计(第2版)》Michael Blaha, James Rumbaugh 著,(wx号:zhenyeli86  添加好友请说明技术交流,5毛党)。该书的优点有3个:

  1. 网上能下电子版,适合我这种穷人。不过老对着电脑伤眼睛,建议还是支持下作者买本实体书或者去图书馆借本翻翻(这里吐槽下某一线城市某州图书馆,明明书籍检索有,到了图书馆找不着!)。
  2. 书上的习题有答案,这是我一贯选书的习惯。这本书配了一本原书习题答案,不过我只找到英文版的《answer key to Object-Oriented Modeling and Desgin with UML , Sencond Edition》。英文的基本也能用,UML主要的习题都是画图为主。
  3. 书籍的讲授方式很适合我。该书主要是目录编排的好,看完基本上知道了UML的脉络了,而且后面还写了几张UML的这些图怎么用在项目过程中,最重要的还是习题有答案。。。。

3. 关于工具

        现在网上的在线画图工具很多了,而且很多免费的就基本够用,这里推荐一个process on吧,如果要单机版的用office的 viso就好了,不过项目上一本都是标配的用公家的吧。

4. 学习心得

         水了这么多该进入正题了,下面从几个方面来理清UML的脉络。

4.1. UML的作用

        总的来说,UML是用来给项目上不同岗位的人交流用的,经验告诉我最大的用处是作为“技术文档”(shuai guo zheng ju)。举个栗子,产品经理给搬砖小哥讲需求,配的就是交互模型相关的图表。再做个不太恰当的比喻,UML相当于建筑专业的设计图纸。

4.2. UML有那些图

        学习UML说白了就是记住UML都有那些图,然后这些图怎么构成项目的设计文档,从而把项目的内容表达清楚。那对于基本不画图或者第一次接触UML的人来说怎么才能记住这么多图和概念呢?请看下图:

        整个UML其实只用三种模型,对象模型(类建模)、状态模型(状态建模)、交互模型(交互模型)。每种类型对应1种或者几种图,通过这几种图的组合就可以画出产品经理那些看着貌似很高大上的设计图纸了。

        至于说每种图干嘛用的,我觉得上面的这张图已经表的的很清楚的,要细品的画可以做几道习题就比较深刻了。

4.3. 重点说说状态图和活动图

        以前老是把状态图和活动图搞混,这里记录一下体会吧。

4.3.1. 状态图

        状态图是描述系统的状态,例如“待机”-》“运行”-》“关机”,状态机你懂吧,就是那玩意。每本书都说状态图只能表示一个对象的状态。这是怎么理解呢?你把对象这个词理解为一种包含了不同状态的系统就行,一个系统可以有多个状态,每个状态可能是由多个子系统组合表达,每个子系统也可能由自己的状态,那么这就是所谓的“嵌套状态了”。

4.3.2. 活动图

        如果只是从文字上看,活动图和状态图确实有点相似。但是,如果我告诉你活动图是用来表示“流程和算法”的,那么是不是就一切的变得特别清晰了!如果你学过编程,那么你一定知道什么是流程和算法,你一定知道流程和状态的区别在于流程里面是包含多个对象的,还包含了分支!

4.4. UML画图

        原理掌握了之后就是使用了,我认为UML最让人迷惑的地方是到底什么时候会用这玩意,特别是我们写代码的,老是奇怪到底这设计图是产品画的还是SE画的,怎么感觉这两哥们的图纸跟他们日常的表现不大相符(这是我意淫的,上游的兄弟们当我胡说就行)。

        其实,图不是一个人画。工作后才发现,其实项目也不是一个人干的。好多人在为一个项目付出,同样的好多人在这个UML上增加设计图。在过程中的每个阶段,所有的图都可以根据对项目的深入认知而增加进去!

        在编码阶段之前的每个环节,每个岗位的人都在为这份图纸增加过自己的理解和对应环节的设计。例如在系统构思阶段,产品经理就已经画出了最原始的交互模型,甚至可能连状态模型也搞出来了一两个了。然后在以后的每个环节中,随着项目组成员对需求的设计的不断深入认知,模型不段被修改和增加。直到文档交到搬砖的手上,就是一个比较完整的成果了。当然在后续的迭代中,文档还会发生变化,甚至有些图是搬砖的画上去的。

5. 水在最后

        看出来了吧,我不是画图的那个,是看图的那个。。。今年终于是从搬砖的角度把UML这玩意理顺了。记得有本书说过,当个架构师还好意思连UML都说不清楚,我这水平应该够在架构面前吹吹牛不被鄙视了吧。

        其实搬过砖的都知道,文档写的再好,还不如当面说的清晰和代码写的好,文档这玩意有用但是不能只依赖文档。敏捷宣言不是说了么,面面俱到的文档不如能工作的软件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mabatis 下

mybatis 原生的API&注解的方式MyBatis-原生的API调用快速入门需求快速入门代码实现 MyBatis-注解的方式操作快速入门需求快速入门代码实现注意事项和说明 mybatis-config.xml配置文件详解说明properties属性settings全局参数定义typeAliases别名处理器typeHandlers类型处理…

麒麟 V10 一键安装 Oracle 11GR2(231017)单机版

Oracle 一键安装脚本,演示 麒麟 V10 一键安装 Oracle 11GR2 单机版过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址:Shell脚本安装Oracle数据库 脚本第…

【C语言】结构体的内存对齐问题

1.结构体内存对齐 我们已经基本掌握了结构体的使用了。那我们现在必须得知道结构体在内存中是如何存储的?内存是如何分配的?所以我们得知道如何计算结构体的大小?这就引出了我们今天所要探讨的内容:结构体内存对齐。 1.1 对齐规…

深入浅出Go性能监控:使用expvar库的实战指南

深入浅出Go性能监控:使用expvar库的实战指南 引言expvar库概览主要组件介绍如何帮助开发者监控应用性能 实战开始:配置和初始化导入expvar库初始化expvar创建和注册自定义Var实例 监控关键数据使用expvar监控内存使用监控Goroutines数量自定义业务指标监…

软件测评中心:进行科技成果鉴定测试的注意事项和好处简析

软件产品科技成果鉴定是有效评价科技成果质量和水平的方法之一,也是鼓励科技成果通过市场竞争等方式得到有效的评价和认可,可以推动科技成果的进步和转化。 一、进行科技成果鉴定测试时的注意事项:   1、应由具备一定资质和能力的专业机构…

综合实验---Web---进阶版

目录 实验配置: 1.PHP调整主配置文件时,修改文件内容 1.原内容调整(在编译安装的情况下) 2.调整如下 3.没有调整的,根据之前配置就行 2.配置Nginx支持PHP解析 1.原内容如下 2.调整如下 3.验证PHP测试页 1.原内容如下 2.调整如下 4…

Ethsign银河活动开启,简单参与领6个NFT

简介:EthSign是一个基于区块链技术的去中心化电子签名平台,目的是解决传统中心化电子签名服务的各种问题。用户可以使用钱包或社交媒体帐户生成的私钥签署文件和协议,数字签名记录在链上,文件经过加密存储在去中心化存储网络中&am…

51-31 CVPR’24 | VastGaussian,3D高斯大型场景重建

2024 年 2 月,清华大学、华为和中科院联合发布的 VastGaussian 模型,实现了基于 3D Gaussian Splatting 进行大型场景高保真重建和实时渲染。 Abstract 现有基于NeRF大型场景重建方法,往往在视觉质量和渲染速度方面存在局限性。虽然最近 3D…

OSPF特殊区域(stub\nssa)

stub区域——只有1类、2类、3类;完全stub区域——只有1类、2类 NSSA区域:本区域将自己引入的外部路由发布给其他区域,但不需要接收其他区域的路由 在NSSA区域的路由器上,引入外部路由时,不会转换成5类LSA&#xff0c…

【保姆级教程】如何拥有GPT?(Proton邮箱版)

OnlyFans 订阅教程移步:【保姆级】2024年最新Onlyfans订阅教程 Midjourney 订阅教程移步: 【一看就会】五分钟完成MidJourney订阅 GPT-4.0 升级教程移步:五分钟开通GPT4.0 如果你需要使用Wildcard开通GPT4、Midjourney或是Onlyfans的话&am…

故障诊断 | 一文解决,RBF径向基神经网络的故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述

【暑期实习记录】腾讯oc

部门:实习基地 - 无意向 - csig腾讯云捞 TimeLine 3.3 压线投递实习基地 3.6 一面 主要深问项目,包括设计、困难点、亮点、迭代过程、对比、测试和部署等,然后问了一些相关的八股,一道简单sql和简单算法 之后反问面试官他对应…

操作系统知识-操作系统作用+进程管理-嵌入式系统设计师备考笔记

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记,未经本人许可,请勿转载,如发现本笔记内容的错误还望各位不吝赐教(笔记内容可能有误怕产生错误引导)。 本章的主要内容见下图: 1、操作系统的作用…

【ACL 2023获奖论文】再现奖:Do CoNLL-2003 Named Entity Taggers Still Work Well in 2023?

【ACL 2023获奖论文】再现奖:Do CoNLL-2003 Named Entity Taggers Still Work Well in 2023? 写在最前面动机主要发现和观点总结 正文1引言6 相关工作解读 2 注释一个新的测试集以度量泛化CoNLL数据集的创建数据集统计注释质量与评估者间协议目标与意义 3 实验装置…

Keil笔记(缘更)

Keil 一、使用Keil时可能会出现的问题1.Project框不见了2.添加文件时找不到3.交换文件位置4.main.c测试报1 warning5.搜索CtrlF 二、STLINK点灯操作1.配置寄存器进行点灯2.使用库函数进行点灯 3.GPIO1.LED闪烁4.按键控制LED 注: 一、使用Keil时可能会出现的问题 1.…

SpringBoot中使用验证码easy-captcha

easy-captcha使用的大概逻辑: 当一个请求发送到后端服务器请求验证,服务器使用easy-captcha生成一个验证码图片,并通过session将验证信息保存在服务器,当用户登录校验时候,会从ession中取出对比是否一致 但是前后端分离之后 由于跨域问题 以上就无法实现了 下面这种情况没…

带你深度吃透Vue3 中计算属性 computed() 的使用

文章目录 导语:概念案例计算属性缓存机制计算属性调试computed() 标注类型扩展性能优化 前情摘要: 本文是在基于 Vue3 的:v3.4.21 版本基础上进行整理的。后续官方如有版本更新有关 计算属性 (computed) 的新特性欢迎留言讨论。 导语&#xf…

文献阅读(213)MCM Allreduce

题目:Enhancing Collective Communication in MCM Accelerators for Deep Learning Training会议:HPCA时间:2024研究机构:德州农工 本篇论文的主要贡献: 我们提出了两种新的基于网格的MCM加速器的AllReduce算法 Ring…

Redis中文乱码问题

最近排查问题,发现之前的开发将日志写在redis缓存中(不建议这样做),我在查看日志的时候发现没办法阅读,详细是这样的: 查阅资料后发现是进制问题,解决方法是启动客户端的时候将redis-cli改为red…

IDEA Git恢复DropCommit删除的提交

刚刚Dorp commit了,本地代码也被删除了,如何恢复呢, 从项目中登录git,找到刚刚的commit代码,如下所示:输入命令git reflog 复制代码,到idea中,打开GIt,找到RESET HEAD, …