码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • UML设计系列(7):UML设计阶段性总结


    目录

    传送门

    什么是UML设计

    UML设计的作用

    常见用例

     功能模型

    用例图

    对象模型

    动态模型

    其它


    传送门

    UML设计系列(1):状态机图

    UML设计系列(2):类图

    UML设计系列(3):时序图

    UML设计系列(4):用例图

    UML设计系列(5):系统依赖图

    UML设计系列(6):活动图

    经过上面几节,对UML可能有一个初步认识和体感。

    但是UML设计具体是什么?作用是什么?是怎么建模的?有哪些常用图例?

    这就系统性的讨论一下

    什么是UML设计

    要回答这个问题,百科已经定义的很明确了:统一建模语言

    归纳起来,就是下面几个方面:

    UML设计的作用

    前面图上列举了UML设计的作用

    • 为软件系统建立可视化模型
    • 为软件系统建立构件
    • 为软件系统建立文档 

    如果只是枯燥的理解这几句话,还是不容易体会到它真正的好处的。

    一个伟人说过一句说,实践是检验真理的唯一标准!只有去用了,才能体会到UML设计的好处和自己的评判。做为一个开发人员,并且使用过UML一段时间的"过来人",按照自己浅薄的经验,觉得在开发过程中,可以归纳为以下3个阶段,使用并体现UML的好处:

    见过不少项目组,甚至一些小一些的公司,是几乎没有什么文档的。

    项目中的老司机会牛逼的说,所有的,最好的文档就是代码,自己去看!你知道刚去报道的新人心中是有多少匹马跑过吗?

    所以UML设计的一个直接好处是:为系统建立设计文档库,记录系统的演进过程,新人的学习资料!

    而且这种机制形成之后,在以后的开发过程中,开发人员通过设计UML编写设计文档时,一方面对负责的模型/系统会进行相关实现方案的调研,是否可行。并同步的思考相关的一些细节,可以细到一个类,一张表的字段,接口的出入参等。另一方面能对相关业务做个了解,而不仅仅是个coder!

    最后呢,在大一点的项目或者复杂的功能,可以用以上的UML设计文档作为评审材料,比如开发人员设计的,由架构师或者团队其它人员交叉审核,众人拾柴火焰高嘛!

    常见用例

    UML设计的常用图例不少,大致如下

    按照刚才上面的分类,一共有3种

     功能模型

    用例图

    UML设计系列(4):用例图

    UML设计系列(5):系统依赖图

    对象模型

    UML设计系列(2):类图

    包图

    部署图

    动态模型

    UML设计系列(3):时序图

    UML设计系列(6):活动图

    UML设计系列(1):状态机图

    其它

    UML设计里面,还有一些不是很常见的用例,比如对象图,协作图。

    顾名思义,对象图,主要是指java这种面向对象的语言,对象之间的关系,个人觉得跟类图差别不是很大,而且类图基本已经覆盖对象图的功能了,所以不是很常用。

    另一个是协作图,用的也不多,就不过多讨论了。

    但是有一个非常特殊的,就是ER图。主要是表示关系数据库,表及表之间的关系,比如

    这个在现在的系统设计中还是很常用的,后续会单独讨论这种 

    UML设计是银弹吗

    上面都是在说UML设计的好处,那它就这么完美吗?

    当然不是的,天生万物,不可能十全十美,UML设计也是一样!

    成本

    首先,要使用UML设计,还是要有一定学习成本,需要了解它,使用它,熟悉对应的工具。

    其次,是开发过程中,增加了开发成本,要画各种图,而这个工作量有的时候,不亚于编写等量的代码!

    最后,也是最重要的,是对一些没有接触过的,或者是对UML设计天生抵触的人来说,这无异是一项负担, 要转变开发思维,和开发习惯!

    场景

    对于想要使用UML设计的,肯定是建议尝试,在项目中或者自己学习中,找到可以使用的地方,去用,去写。

    但是一些小项目,或者可以预见,规模不大的,是可以不用的,甚至自己的私人项目。

    因为UML设计,背后还有一个目的在于协作

  • 相关阅读:
    Java ArrayList扩容底层原理深挖
    深度解密Go底层Map
    LeetCode刷题笔记-749. 隔离病毒-模拟+搜索
    pandas数据处理之数据转换(映射map、替换replace、重命名rename)
    计算机专业英语词汇
    【附代码】使用Shapely计算多边形外扩与收缩
    Bootstrap-栅格实例(二)
    如何将vue项目打包在服务器上使用nginx运行,并使用反向代理解决跨域问题
    一个C++ AES类加密算法的分享
    行测-图形推理-3-对称图形类
  • 原文地址:https://blog.csdn.net/weigeshikebi/article/details/126440405
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号