一、前言

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的更多相关文章

  1. 图书馆管理系统程序+全套开发文档(系统计划书,系统使用说明,测试报告,UML分析与设计,工作记录)

    图书馆管理系统程序+全套开发文档(系统计划书,系统使用说明,测试报告,UML分析与设计,工作记录): https://download.csdn.net/download/qq_39932172/11 ...

  2. <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性

    设计类

  3. 基于UML项目的分析与设计

    1,概述 项目中需求和设计的文档是必然的,UML工具可以帮助指导我们从不同的角度去看待一个新的系统,并把这个系统分解剖析出来.本篇文章主要讲述的是如何将UML应用到项目的开发工作中,关于如何学习UML ...

  4. 利用UML语言建模--以图书馆管理系统为例

    一.基本信息 标题:利用UML语言建模--以图书馆管理系统为例 时间:2016 出版源:内蒙古科技与经济 领域分类:UML:RFID:图书馆:模型: 二.研究背景 问题定义:建立图书馆管理系统 难点: ...

  5. UML标准建模语言与应用实例

    一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...

  6. WebApp分析建模的工具

    最近Web工程课在学习分析建模工具的内容.这周作业就写我对WebApp建模工具的认识.Web建模工具有很多,但是专门为分析开发的却相对很少.下面介绍在进行分析时可以用的四类工具. UML工具.使用统一 ...

  7. 推荐一本书:《UML面向对象建模基础》

    http://www.cnblogs.com/onlytiancai/archive/2006/10/13/528205.html 以前对UML呀,感觉用不上,不知道都干啥的,也就是知道有个用例图.类 ...

  8. 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)

      邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...

  9. “2014年CityEngine三维建模与设计精英培训班”——全国巡回举办

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJjZ2lzX2FsbA==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

随机推荐

  1. 虚拟机使用docker 外部机器无法访问端口问题

    1,排查防火墙firewall-cmd --state 如果输出的是"not running"则FirewallD没有在运行,且所有的防护策略都没有启动,那么可以排除防火墙阻断连接 ...

  2. Windows JDK 的下载与安装

    Java Development Kit 简称 JDK,任何需要开发 Java 程序的环境都需要进行安装 JDK. JDK 下载地址:https://www.oracle.com/java/techn ...

  3. Python图像处理丨图像腐蚀与图像膨胀

    摘要:本篇文章主要讲解Python调用OpenCV实现图像腐蚀和图像膨胀的算法. 本文分享自华为云社区<[Python图像处理] 八.图像腐蚀与图像膨胀>,作者: eastmount . ...

  4. 聊聊 C++ 中的四种类型转换符

    一:背景 在玩 C 的时候,经常会用 void* 来指向一段内存地址开端,然后再将其强转成尺度更小的 char* 或 int* 来丈量一段内存,参考如下代码: int main() { void* p ...

  5. 千万小心,99%的Java程序员会踩这些坑

    前言 作为Java程序员的你,不知道有没有踩过一些基础知识的坑. 有时候,某个bug查了半天,最后发现竟然是一个低级错误. 有时候,某些代码,这一批数据功能正常,但换了一批数据就出现异常了. 有时候, ...

  6. 快速入门python看过的一些资料

    我快速入门python看过的一些资料 B站的视频 10天自学Python,轻松掌握Python基础[千锋] 廖雪峰 - Python教程 https://www.liaoxuefeng.com/wik ...

  7. 吐泡泡_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...

  8. Linux 启动流程及相关知识

    基础知识 linux系统的组成 内核(kerner) 根文件系统(rootfs) 内核提供操作系统的功能,根文件系统包含常用的一些工具,这些工具.这些工具的运行离不开glibc库文件. 程序:二进制程 ...

  9. python操作ini文件

    简介 ini文件作为常见的配置文件,因此需要对ini文件做处理,此处使用configparser模块,本文介绍以下ini文件常用的处理方式. 需要读取的ini文件 如下文件,[ ]包含的称为secti ...

  10. Pref 社论

    目录 题面 题解 算法 1 算法 2 算法 3(标答) 代码 算法 1 20pts(by jijidawang) 40pts(by Rolling_Star) 算法 2 算法 3 题面 一个长度为 \ ...