【UML分析、建模与设计】我在工作时遇到UML
一、前言
UML分析、建模与设计 来自现实世界中的概念的抽象描述方法(摘取自《UML面向对象分析、建模与设计(第2版)》)
就我对UML分析与建模技术的认知,最早可追溯至2019年时的学习。也是在正式开发项目前,最后学习的一门设计类知识,我认为这是软件开发者描述业务逻辑的最佳方式。
写这篇博客,我是希望在未来,我的同事、合作者或者是交流人员,能够拥有一定的建模习惯。或者在互相关注之后,能够知道我的编程习惯是怎样的,能够拥有更好的默契和愉快的合作。
二、代码注释与UML语言
(代码注释)
在项目编码过程中,是必不可缺的一个环节,也是工作组中合作交流的关键。在中大型项目中,如果个人的代码、算法、业务处理能力一般,但是注释完善易懂的话,去请教大佬,还是会得到善意的帮助。就算在开发的过程中,遇到了bug,也能快速定位问题出现的位置。
但是大篇大论的语言表达总是苍白无力,一个复杂的算法或者业务逻辑,是很难使用语言(汉语、英语等)去表达的。就算表达出来了,理解这个逻辑也需要花费一定时间。
我举两个例子。
(第一个)甲和乙是室友,甲回到寝室,突然告诉乙:我丢,今天在路上遇到了一个腿长、漂亮(帅气)的女孩(男孩)。这么说乙能够理解,无非就是表达一个身材好、吸人眼球的女孩(男孩)。可以自动将思维带入短视频里的某一个up主或者正能量。
/ *
* 实现数据按某个要求排列,并自动将用户爱好优先排列在最上层。(优先级:用户爱好>某个要求)
* @参数a (什么意思,什么作用,有没有关键作用)
...
* @developer [开发者]
* @see [相关类/方法]
* @since [产品/模块版本]
* @deprecated
*/
public ...
(第二个)甲、乙、丙是室友,甲和乙回到寝室,甲对丙说:今天我们两在商业街看到一个小姐姐,身材目测无限接近于黄金比例(0.618)、微胖、事业线惊人。可惜穿搭上有所欠妥,没有完全展示出她的优点,但气质弥补了这一问题(然后又描写气质)。这样表达也确实详细,但是关注点太多,脑海生成出一个这样的人,就比较缓慢。这时乙拿出手机将拍到的照片给丙看,这一切就明朗了(现实生活中可不能这么来,乙的行为是错误的,应该大胆上去加微信,大胆访问空间),而个照片可以看做是UML分析、建模与设计。
/ *
* 调用了(方法1)(方法2)能够实现对摄像机内头像的实时捕获,并同步生成什么样的人脸数据,这个数据要进行什么样的操作和导出,才能完成对比
* @参数a (什么意思,什么作用,有没有关键作用)
* @文件b 数据是什么类型 识别转换的数据排列方式
....
* @developer [开发者]
* @see [相关类/方法] [class1.java、class2.java、class.java]
* @since [产品/模块版本]
* @deprecated
*/
public ...
(UML分析、建模与设计)
一般执行于项目编码之前,是对一个模块(功能)的具体(图像流程)分析与描述。开发过程能否顺利,测试结果能否过关,凭借于UML的设计严谨程度。当然也有一些厉害的、业务逻辑熟练的开发工作者,对于建模只是一张草图而已,甚至建模软件都不用打开,就能完整的开发出一个功能来的,也是非常常见。
就我22年2月份找的那份工作,一个负责金融交接功能模块的小组,全小组就一个人。非常厉害的一位大佬,听说是上海回来,之后回不去了,只好在本地老家就业。在一次聚餐时,因为两个人都吃不了辣(我是因为打了疫苗,大佬是因为习惯了上海的饮食),有幸结识了这位大佬,进行了技术交流。听他说,他处理这套逻辑已经7,8年,兼容不同的开发框架也有五、六种,反正对业务逻辑非常熟悉,全公司就他一个人熟悉金融交接,注释随便写,建模就算了。
如果在我的组里,组长告诉我哪个功能模块出现了bug,需要我去修改一下。注释和建模描述不清,我可能会出于行内礼貌,重新定义一个方法、接口去取代他那个有问题的模块。但如果全是黑黢黢的代码,不好意思,请这位靓仔(靓女)和我进行工作衔接时,注意头上那所剩不多的几根毛的存在意义。当然替换了新方法,有可能回出现连锁反应,导致其他方法出现故障,这个时候还是要尽量去重新定位和观察被取代的代码。贸然将自己的方法交上去,导致了这个问题,一般公司会完完整整的将问题全算你的头上。如果只是重构,问题没有得到解决,可以拖着这位同事来分担火力,一切的一切都是他不写注释、不建模而导致我对这个问题不清楚。


三、开发工作中的UML
根据软件三大生存周期:软件定义时期、软件开发时期和软件维护时期。
UML分析、建模与设计的工作处于软件定义后期和开发前期,分布于项目说明书的需求分析、总体设计、概要设计三个标题中。主要作用是为了用户(领导)能够浅显看懂内部逻辑(拿了工资,帮他实现了这个功能没,一般都是看头看尾看大概)、开发期同事兼容其他功能、维护期维护人员能够快速理解内部逻辑。
【UML分析、建模与设计】我在工作时遇到UML的更多相关文章
- 图书馆管理系统程序+全套开发文档(系统计划书,系统使用说明,测试报告,UML分析与设计,工作记录)
图书馆管理系统程序+全套开发文档(系统计划书,系统使用说明,测试报告,UML分析与设计,工作记录): https://download.csdn.net/download/qq_39932172/11 ...
- <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性
设计类
- 基于UML项目的分析与设计
1,概述 项目中需求和设计的文档是必然的,UML工具可以帮助指导我们从不同的角度去看待一个新的系统,并把这个系统分解剖析出来.本篇文章主要讲述的是如何将UML应用到项目的开发工作中,关于如何学习UML ...
- 利用UML语言建模--以图书馆管理系统为例
一.基本信息 标题:利用UML语言建模--以图书馆管理系统为例 时间:2016 出版源:内蒙古科技与经济 领域分类:UML:RFID:图书馆:模型: 二.研究背景 问题定义:建立图书馆管理系统 难点: ...
- UML标准建模语言与应用实例
一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...
- WebApp分析建模的工具
最近Web工程课在学习分析建模工具的内容.这周作业就写我对WebApp建模工具的认识.Web建模工具有很多,但是专门为分析开发的却相对很少.下面介绍在进行分析时可以用的四类工具. UML工具.使用统一 ...
- 推荐一本书:《UML面向对象建模基础》
http://www.cnblogs.com/onlytiancai/archive/2006/10/13/528205.html 以前对UML呀,感觉用不上,不知道都干啥的,也就是知道有个用例图.类 ...
- 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)
邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...
- “2014年CityEngine三维建模与设计精英培训班”——全国巡回举办
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJjZ2lzX2FsbA==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
随机推荐
- JavaScript 防盗链的原理以及破解方法
先说说防盗链的原理,http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referer.这里的Referer是由于历史原因导致了拼写错误 后来也就一直沿用.图片服务器通过检测 ...
- react native 0.6x 在创建项目时,CocoaPods 的依赖安装步骤卡解决方案
前言 你需要做两件事 gem换源 pod repo 换源 实战 如果你已经成功安装了CocoaPods.那么这里你需要卸载它.gem换源1. 卸载CocoaPods 查看gem安装的东西 gem li ...
- 关于使用 koa路由与mysql模块, ctx.body获取不到值的问题
var Koa = require('koa');var Router = require('koa-router' );var bodyParser = require('koa-bodyparse ...
- 测试右移:线上质量监控 ELK 实战
目录 [测试右移]介绍 ELK Stack 介绍 ELK 监控体系搭建 ES & Kibana 搭建 Nginx 日志自动采集 Nginx Agent 安装 Nginx 服务器 数据分析 Lo ...
- 实战模拟│JWT 登录认证
目录 Token 认证流程 Token 认证优点 JWT 结构 JWT 基本使用 实战:使用 JWT 登录认证 Token 认证流程 作为目前最流行的跨域认证解决方案,JWT(JSON Web Tok ...
- AMS1117降压电路
AMS1117芯片为正向低压差稳压器,内部集成过热保护和限流电路,其固定输出版本电压可为1.5V.1.8V.2.5V.2.85V.3.0V.3.3V.5.0V,设计采用3.3V输出即ASM1117-3 ...
- 选择结构-穿透的switch语句和循环结构-循环概述
case的穿透性 在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束 publi ...
- springboot和mybatis 配置多数据源
主数据源(由于代码没有办法复制的原因,下面图片和文字不一致) package com.zhianchen.mysqlremark.toword.config;import com.zaxxer.hik ...
- zookeeper和spring cloud版本冲突
1.使用elastic-job进行任务调度,而核心的就是使用zookeeper进行管理,但这个与spring cloud 冲突造成启动不了 |ERROR |main |SpringApplicatio ...
- Webpack干货系列 | 怎么运用 Webpack 5 处理css/scss/sass、less、stylus样式资源
程序员优雅哥简介:十年程序员,呆过央企外企私企,做过前端后端架构.分享vue.Java等前后端技术和架构. 本文摘要:主要讲解webpack 5 如何高效处理CSS 资源.scss/sass 资源.l ...