目录
传送门
经过上面几节,对UML可能有一个初步认识和体感。
但是UML设计具体是什么?作用是什么?是怎么建模的?有哪些常用图例?
这就系统性的讨论一下
什么是UML设计
要回答这个问题,百科已经定义的很明确了:统一建模语言
归纳起来,就是下面几个方面:
UML设计的作用
前面图上列举了UML设计的作用
- 为软件系统建立可视化模型
- 为软件系统建立构件
- 为软件系统建立文档
如果只是枯燥的理解这几句话,还是不容易体会到它真正的好处的。
一个伟人说过一句说,实践是检验真理的唯一标准!只有去用了,才能体会到UML设计的好处和自己的评判。做为一个开发人员,并且使用过UML一段时间的"过来人",按照自己浅薄的经验,觉得在开发过程中,可以归纳为以下3个阶段,使用并体现UML的好处:
见过不少项目组,甚至一些小一些的公司,是几乎没有什么文档的。
项目中的老司机会牛逼的说,所有的,最好的文档就是代码,自己去看!你知道刚去报道的新人心中是有多少匹马跑过吗?
所以UML设计的一个直接好处是:为系统建立设计文档库,记录系统的演进过程,新人的学习资料!
而且这种机制形成之后,在以后的开发过程中,开发人员通过设计UML编写设计文档时,一方面对负责的模型/系统会进行相关实现方案的调研,是否可行。并同步的思考相关的一些细节,可以细到一个类,一张表的字段,接口的出入参等。另一方面能对相关业务做个了解,而不仅仅是个coder!
最后呢,在大一点的项目或者复杂的功能,可以用以上的UML设计文档作为评审材料,比如开发人员设计的,由架构师或者团队其它人员交叉审核,众人拾柴火焰高嘛!
常见用例
UML设计的常用图例不少,大致如下
按照刚才上面的分类,一共有3种
功能模型
用例图
对象模型
包图
部署图
动态模型
其它
UML设计里面,还有一些不是很常见的用例,比如对象图,协作图。
顾名思义,对象图,主要是指java这种面向对象的语言,对象之间的关系,个人觉得跟类图差别不是很大,而且类图基本已经覆盖对象图的功能了,所以不是很常用。
另一个是协作图,用的也不多,就不过多讨论了。
但是有一个非常特殊的,就是ER图。主要是表示关系数据库,表及表之间的关系,比如
这个在现在的系统设计中还是很常用的,后续会单独讨论这种
UML设计是银弹吗
上面都是在说UML设计的好处,那它就这么完美吗?
当然不是的,天生万物,不可能十全十美,UML设计也是一样!
成本
首先,要使用UML设计,还是要有一定学习成本,需要了解它,使用它,熟悉对应的工具。
其次,是开发过程中,增加了开发成本,要画各种图,而这个工作量有的时候,不亚于编写等量的代码!
最后,也是最重要的,是对一些没有接触过的,或者是对UML设计天生抵触的人来说,这无异是一项负担, 要转变开发思维,和开发习惯!
场景
对于想要使用UML设计的,肯定是建议尝试,在项目中或者自己学习中,找到可以使用的地方,去用,去写。
但是一些小项目,或者可以预见,规模不大的,是可以不用的,甚至自己的私人项目。
因为UML设计,背后还有一个目的在于协作