UML学习体会

news2024/11/25 11:02:49

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都说不清楚,我这水平应该够在架构面前吹吹牛不被鄙视了吧。

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

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

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

相关文章

智能客服知识库如何搭建比较方便?教程奉上!

随着科技的进步,人工智能已深入到我们日常生活的各个角落。在客服行业里,智能客服知识库的出现,不仅极大地减轻了客服人员的工作负担,还提升了用户的服务体验。那么,怎样才能建立一个方便和实用的智能客服知识库呢&…

Acwing.167 木棒(回溯)

题目 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 50 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序,帮助乔治计算木棒…

【马斯克开源GROK-1模型】意味着什么?

目录 1.激动人心的消息 Grok-1 根据 Apache License 2.0 开放源代码 题外话-介绍JAX框架 2.grok-1模型参数介绍 3.推理grok-1模型需要多大显存? 4.grok-1开源意味着什么? 5.最后,让我们一同期待开源grok-1模型的训练代码!…

电脑内存取证

目录 电脑内存文件与volatility工具获取电脑用户名获取程序最后一次运行的时间总结 电脑内存文件与volatility工具 这个文件就是内存文件 提取内存信息,我们一般采用volatility工具进行提取,具体如何安装和使用,直接去网上搜索就可以了 获取…

力扣Lc18--- 168. Excel表列名称(java版)-2024年3月19日

1.题目描述 2.知识点 因为是输入字符 然后显示数字。 就类似2进制10代表2&#xff0c;110代表4&#xff0c;用某进制次幂的方式返回最后的数字结果。 3.代码实现 class Solution {public int titleToNumber(String columnTitle) {int sum0;for(int i0;i<columnTitle.len…

大数据架构技术选型

OLAP数据库选型对比&#xff1a; AnalyticDB(阿里&#xff09;、Hologres&#xff08;阿里&#xff09;、Doris、StarRocks、ClickHouse、Hbase AnalyticDB MySQL 技术架构 Adb是融合数据库、大数据技术于一体的云原生企业级数据仓库服务、支持高吞吐的数据实时增删改查低延时…

企业合规视角下的恒大地产财务造假案深度剖析

当幕布被拉开&#xff0c;真相暴露在聚光灯下&#xff0c;近日中国房地产市场的巨头恒大地产因财务造假被中国证监会严厉处罚&#xff0c;引起了公众和市场的强烈震动。这份重量级的罚单&#xff0c;不仅以41.75亿元的天价罚款单给恒大地产记下了沉重的一笔&#xff0c;更是将包…

数据仓库相关概述

数据仓库概述 数据仓库概念 数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据&#xff0c;借助数据仓库的分析能力&#xff0c;企业可从数据中获得宝贵的信息进而改进决策。同时&#xff0c;随着时间的推移&#xff0c;数据仓…

IDEA Git恢复DropCommit删除的提交

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

【数据可视化】使用Python + Gephi,构建中医方剂关系网络图!

代码和示例数据下载 前言 在这篇文章中&#xff0c;我们将会可视化 《七版方剂学》 的药材的关系&#xff0c;我们将使用Python制作节点和边的数据&#xff0c;然后在Gephi中绘制出方剂的网络图。 Gephi是一个专门用于构建网络图的工具&#xff0c;只要你能提供节点和边的数…

Android StateLayout状态页

文章目录 Android StateLayout状态页概述源码使用源码下载 Android StateLayout状态页 概述 StateLayout&#xff08;状态页&#xff09;包含&#xff1a;加载中页面&#xff0c;错误页面&#xff0c;空页面&#xff0c;内含状态默认页面&#xff0c;支持自定义页面。 源码 …

如何在SpringCloud2023中快速集成注册中心

你好&#xff0c;这里是codetrend专栏“SpringCloud2023实战”。欢迎点击关注查看往期文章。 注册中心在前文提到有很多选型&#xff0c;在这里以Spring Cloud Zookeeper为例说明注册中心的集成和使用。 选择Spring Cloud Zookeeper作为注册中心原因如下&#xff1a; 依赖更少…

水电能源智能化监控系统

水电能源智能化监控系统是利用现代信息技术&#xff0c;对水电站的运行状态、设备性能、环境参数等进行实时监测和管理的一种智能化系统。随着我国水电能源事业的快速发展&#xff0c;水电能源智能化监控系统在水电能源行业中的应用越来越广泛&#xff0c;为我国水电能源事业的…

用Python的turtle库绘制皮卡丘

turtle库的简介 turtle(海龟)库是turtle绘图体系的python实现&#xff0c;turtle库是一种标准库&#xff0c;是python自带的。 turtle(海龟)是一种真实的存在&#xff0c;有一个海龟在窗口的正中心&#xff0c;在画布上游走&#xff0c;走过的轨迹形成了绘制的图形&#xff0…

如何快速搭建一个完整的vue2+element-ui的项目-二

技术细节-继续配置 提示&#xff1a;你以为这样就完了吗,其实还有很多东西需要我们自己手写的 例如&#xff1a; element-ui的配置样式重置配置src使用的配置elinst配置axios异步请求的二次封转配置语言国际化配置(这个看需求,我这里就不用配置了)vuex的配置mixins的配置开发环…

改进YOLOv8注意力系列六:结合SEAttention轻量通道注意力、ShuffleAttention重排特征注意力模块、SimAM无参数化注意力

改进YOLOv8注意力系列五:结合ParNetAttention注意力、高效的金字塔切分注意力模块PSA、跨领域基于多层感知器(MLP)S2Attention注意力 代码SEAttention轻量通道注意力ShuffleAttention重排特征注意力模块SimAM无参数化注意力加入方法各种yaml加入结构本文提供了改进 YOLOv8注…

vulnhub-----SickOS靶机

文章目录 1.信息收集2.curl命令反弹shell提权利用POC 1.信息收集 ┌──(root㉿kali)-[~/kali/vulnhub/sockos] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, IPv4: 10.10.10.10 Starting arp-scan 1.9.8 with 256…

【数据库基础增删改查】修改与删除

系列文章目录 &#x1f308;座右铭&#x1f308;&#xff1a;人的一生这么长、你凭什么用短短的几年去衡量自己的一生&#xff01; &#x1f495;个人主页:清灵白羽 漾情天殇_计算机底层原理,深度解析C,自顶向下看Java-CSDN博客 ❤️相关文章❤️&#xff1a;清灵白羽 漾情天…

cocos 3.8开发 微信小游戏分包技巧压缩主包

Creator 版本&#xff1a; 3.8.2 目标平台&#xff1a;小游戏开发 压缩后 我不知道别人压缩几百kb是怎么做到的。不过哪个要钱。 我这个技巧不用花钱。 论坛有教程但是没有教详细怎么做。 开整&#xff01; 做一个空白的场景。然后写一个load脚本。load主场景。 从代码可…

初代编译器实验

此文章用于记录第一次编译器实验的实践心得以及一些知识记录。 次实验主要目的是将C语言代码转换成对应的汇编代码&#xff0c;这就涉及到对与表达式的处理。 我们一般使用的表达式是中缀表达式&#xff0c;这对于我们人来说是比较好识别并且计算的。但对于机器&#xff0c;内部…