UML那些事
什么是UML?它的全名:Unified Modeling Language,统一建模语言。最近我用到了uml,顺便重温了下这些知识。知乎上有一个讨论话题:uml还有用吗?这个讨论挺有意思的,看完后,受益匪浅,感触颇多。
中国古人就说了:“君子善假于物也”。软件工程师要善于利用特定的工具来帮助自己完成特定的任务。比如说,有一款分析http请求的工具fiddler比较强大易用;比如说,当知识积累到一定程度时,我用印象笔记来做记录。比如说,当我们资料几十个G需要在不同设备或者在网络上共享时,我们可以用云盘。话说回来,我们用工具,是因为我们自身的不足,“君子生非异也”。
接下来咱们讨论下,UML经常使用的一些场景吧。
当我们的软件涉及到多个系统,多个角色的人员时,可以画用例图,分析这些角色如何使用系统,如下图:

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

不需要我解释,一张图胜过千言万语。
还有一种称作活动图的东西,我想用它来画流程图,不怎么好用,但还是用了:

从上图看,这个流程也是比较简单的,它从发起到结束都是直线型的,没有任何分支。其实这个流程图没有反映出请求vpn的实际流程,因为这个流程不是直线型的,而是肯定具有分支结构的。这个流程图可以看作是一个简化了的协作图。
最后一个很重要的图,那就类图,它反映是类之间的关系。我们也可以用VS编辑器画类图,这个是设计类常用的图。
UML那些事的更多相关文章
- UML大战需求分析——阅读笔记04
读<UML大战需求分析>有感04 开发某系统的重要前提是: 这个系统有谁在用? 这些人通过这个系统能做什么事? 一般搞清楚这件事,再画个业务流程图,就能条例清楚的表达系统的需求了.作为一个 ...
- 初识UML类图--类之间关系
前言 最近有打算学习一下设计模式,所以就去看了园子里面左潇龙大哥的设计模式文章,看完之后只有一个感觉,我啥时候也能写出来这么牛逼的文章啊,但是我这语文老师死的早的人还是算了,但是设计模式还是要学的,这 ...
- UML 用例图、顺序图、状态图、类图、包图、协作图、流程图
用例图.顺序图.状态图.类图.包图.协作图 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling La ...
- 软件开发学习笔记 <一> UML
UML http://www.uml-diagrams.org http://www.umlchina.com/index.htm 统一建模语言(UML)始于1997年的一个OMG(对象管理组织)标准 ...
- 《UML大战需求分析》阅读笔记04
在学习了前面的几种UML图并不能满足所有情况的建模,如当流程图涉及到多种角色,并且通过对多种角色交互展开时,顺序图才是不二选择.顺序图就如同中文语法的说话语言相似,描述的是一种事件发生的顺序.顺序图分 ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- uml大战需求分析阅读笔记01
<<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...
- UML学习备忘
两大类UML图: 行为图(behavior diagrams)和结构图(structure diagrams) 行为图将引导系统分析员分析且理清"系统该做些什么"?系统分析 ...
- Thinking in UML-1-为什么需要UML
1 从面向过程到面向对象 面向过程认为我们的世界是由一个个相互关联的小系统组成.逻辑严密.环环相扣.井然有序.但是我们这个世界从来不是一成不变的.世界的复杂性和频繁变革不是面向过程可以轻易应付应付的. ...
随机推荐
- python3基础入门-知识点简记
1.基础语法 编码.标识符.保留字.注释.行与缩进... 2.变量类型 (1)Python3有6个标准的数据类型: Numbers(数字) 数字数据类型用于存储数值 不可改变的数据类型 可细分为 ...
- Mysql字符串截取总结:left()、right()、substring()、substring_index()
同步首发:http://www.yuanrengu.com/index.php/20171226.html 在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现 ...
- linux下lampp(xampp)安装memcached扩展
原理:根据自己的lampp中的php版本,编译memcache时,引用对应下载的php版本,并安装后的php_config来生成memcache.so文件,再将这个so文件放置到lamppp对应位置, ...
- ElasticSearch和solr的差别
Elasticsearch简介 Elasticsearch是一个实时分布式搜索和分析引擎.它让你以前所未有的速度处理大数据成为可能.它用于全文搜索.结构化搜索.分析以及将这三者混合使用:维基百科使用E ...
- bzoj 1307/1318 玩具 线段树+记录时间戳
玩具 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 743 Solved: 404[Submit][Status][Discuss] Descrip ...
- RMI远程服务调用
数据库:info.sql /* Navicat MySQL Data Transfer Source Server : yuanzhen Source Server Version : 50713 S ...
- Java集合框架(三)—— List、ArrayList、Vector、Stack
List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引.List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象. ArrayList和Vector实现类 Arra ...
- the c programing language 学习过程8
glean 捡拾落穗; glean insight 深入了解 modeled模型化 peripheral外围的 himogeneous匀称的 intents 意图 excerpt摘录 intende ...
- UVA-818 dfs + 位运算
暴力枚举一些圆环,将这些圆环解开,看能否成为单链.判断单链的三个条件: 除了这些删除的圆环之外,其他圆环还连接着的圆环不能超过两个. 剩下的环没有连成圈. 剩下的圆环共分成m堆,每堆之间无连接,m必须 ...
- gogogo