【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 ...
随机推荐
- MES 系统介绍
MES系统是一套面向制造企业车间执行层的生产信息化管理系统.MES可以为企业提供包括制造数据管理.计划排程管理.生产调度管理.库存管理.质量管理.人力资源管理.工作中心/设备管理.工具工装管理.采购管 ...
- Android (微信扫码登录) 获取微信二维码+扫码登录
话不多说 直接上菜! 一.因为是微信扫码登录,所有要在微信开放平台 微信开放平台 (qq.com) 进行注册----- 如下 1.资源中心 里面也有详细的官方讲解,里面也有demo 可以下载 2 ...
- js--js实现基础排序算法
前言 文本来总结常见的排序算法,通过 JvavScript 来实现 正文 1.冒泡排序 算法思想:比较相邻两个元素的大小,如果第一个比第二个大,就交换它们.从头遍历到尾部,当一轮遍历完后,数组最后一 ...
- k8s之有状态服务部署基石(基础知识)
PV&PVC&HeadlessService 4.1.什么是无状态/有状态服务? 无状态服务: 1.没有实时的数据需要存储 (即使有,也是静态数据) 2.服务集群网络中,拿掉一个服务后 ...
- MyBatis项目创建
一.开发环境的准备 总览: mybatis搭建过程: 1.导入jar 2.创建mybatis的核心(全局)配置文件mybatis-config.xml,并配置 3.创建映射文件XxxMapper.xm ...
- 如何用车辆历史违章查询API接口进行快速开发
最近公司项目有一个车辆的历史违章查询显示的小功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的车辆历史违章查询API非常符合我的开 ...
- 如何用全国天气预报API接口进行快速开发
最近公司项目有一个全国天气预报的小需求,想着如果用现成的API就可以大大提高开发效率,在网上的API商店搜索了一番,发现了 APISpace,它里面的全国天气预报API非常符合我的开发需求. 全国 ...
- BufferedInputStream字节缓冲输入流
package com.yang.Test.BufferedStudy; import java.io.BufferedInputStream; import java.io.FileInputStr ...
- python开发环境配置(Windows)
简介 由于在搭建pyhon开发环境时会出现各种各样的问题,因此将这些问题记录下来 1.下载python 从官网下载对应系统的python版本(最新稳定版即可):官网地址为:python下载地址, 建议 ...
- python 进程理解
简介 线程理解中介绍过,再回顾一遍,一个应用程序由多个进程组成,一个进程由多个线程组成,由操作系统根据优先级.时间片来绝对线程的运行 进程 python的进程不同于线程,在主流的cpython解释器下 ...