什么是UML?它的全名:Unified Modeling Language,统一建模语言。最近我用到了uml,顺便重温了下这些知识。知乎上有一个讨论话题:uml还有用吗?这个讨论挺有意思的,看完后,受益匪浅,感触颇多。

中国古人就说了:“君子善假于物也”。软件工程师要善于利用特定的工具来帮助自己完成特定的任务。比如说,有一款分析http请求的工具fiddler比较强大易用;比如说,当知识积累到一定程度时,我用印象笔记来做记录。比如说,当我们资料几十个G需要在不同设备或者在网络上共享时,我们可以用云盘。话说回来,我们用工具,是因为我们自身的不足,“君子生非异也”。

接下来咱们讨论下,UML经常使用的一些场景吧。

当我们的软件涉及到多个系统,多个角色的人员时,可以画用例图,分析这些角色如何使用系统,如下图:

这是一个比较简单的用例图,某些线条,我省略没有画出来,但不影响实际的效果,这是一个静态图,着重描述的是什么人能做什么事情,是对功能需求的一个图形化展示。其实,我们不仅需要静态的描述,也需要动态地描述系统的行为,展示系统之间是如何协调工作的,这时候,我们用时序图,看一个简单的请求VPN的过程:

不需要我解释,一张图胜过千言万语。

还有一种称作活动图的东西,我想用它来画流程图,不怎么好用,但还是用了:

从上图看,这个流程也是比较简单的,它从发起到结束都是直线型的,没有任何分支。其实这个流程图没有反映出请求vpn的实际流程,因为这个流程不是直线型的,而是肯定具有分支结构的。这个流程图可以看作是一个简化了的协作图。

最后一个很重要的图,那就类图,它反映是类之间的关系。我们也可以用VS编辑器画类图,这个是设计类常用的图。

最新文章

  1. javascript设计模式-工厂方法模式
  2. Html锚点定位偏差计算解决插件
  3. 发布mvc遇到的HTTP错误 403.14-Forbidden解决办法
  4. js取整函数
  5. 转 夕甲甲:孔乙己之 C++ 版
  6. 黑马程序员_Java基础:JDK1.5后的新特性:自动拆装箱,以及注意事项
  7. Javascript模块化编程笔记
  8. 第 21 章 CSS3 文本效果
  9. sharepoint2010问卷调查(3)-实现问卷的开始和结束时间(采用自定义字段类型)
  10. iOS 开发之 Xcode6 installation failed invalid argument!
  11. PHP缓存主要技术
  12. Unix文本处理工具之awk
  13. 基于SQLite日志记录工具--Log4W
  14. 关于AR,你想要的全在这儿了
  15. BZOJ3810: [Coci2015]Stanovi
  16. Integer.valueOf()与Integer.parseInt()区别
  17. Centos7.4别名设置提高工作效率
  18. VSS源代码管理器运行代码分析工具的命令
  19. UVALive 4877 Non-Decreasing Digits 数位DP
  20. Android Room使用详解

热门文章

  1. TensorFlow 实战之实现卷积神经网络
  2. Python:main函数
  3. ubuntu17.10 python3.6 install plugins for AI
  4. Yii2中把路由地址中的%2F改为/
  5. Spring boot 整合mybatis
  6. Flask從入門到入土(三)——Web表單
  7. Qt 5.9.4 如何静态编译和部署?
  8. python中__name__=='__main__'的作用
  9. MongoDB,子查询
  10. Appium疑难杂症