为了能详细的剖析UML,这里采用6W2H分解法,根据目的和问题一个一个去解决UML是什么,能干什么,有什么好处,怎么干,以及用什么来UML。
先把提纲列在这里。What,Which,Why,Who,When,Where,How,How much.
统一建模语言(UML,Unified Modeling Language)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。
UML集成了Booch,OMT和面向对象软件工程的概念,将这些方法融合为单一的,通用的,并且可以广泛使用的建模语言。UML打算成为可以对并发和分布式系统的标准建模语言。
UML并不是一个工业标准,但在Object Management Group的主持和资助下,UML正在逐渐成为工业标准。OMG 之前曾经呼吁业界向其提供有关物件导向的理论及实现的方法,以便制作一个严谨的软体塑模语言(software modeling language)。有很多业界的领袖亦真诚地回应OMG,帮助她建立一个业界标准。
说了这么多其实是为了让自己的思维铺展开来,全面去感受UML,但UML的最终目的是为了建模。模就是模型,就像我们平时看到的车模,船模,以及各种武器模型,就是以真实的事物为基础,在这个基础上为了突出该事物的某些或全部特点而制作出的一个类似的东西。通常这个模型里比真实的物品或器具要小,通常也未必具备该真实物品的实际功能,但在外形方面还是有很多相似之处的。
这在软件开发之中同样适用,只不过这个相似的地方是在软件的某些框架结构或者数据信息的流向等,用肉眼可见的图表表示出来,让人在视觉上对该软件项目或功能在轮廓及结构上有相应的了解和认识。但实际上建模所产生的事物,并不具备实际项目的功能,但不能阻止我们在该模型的基础之上思路更加清晰的进行软件开发和项目管理。
在某种程度上,可以说UML就像软件开发的图纸一样。
UML模型的分类:鉴于软件系统开发从时间和空间的复杂性,UML本身也划分了不同的模型对应不同的软件开发的不同时期建模需求。其中主要分为三类模型:
我们平时接触的都是UML的各种图,但是在这里区分UML模型和UML图是非常重要的。UML图,包括用例图、协作图(通讯图)、活动图、序列图、部署图、构件图、类图、状态图,是模型中信息的图形表达方式,但是UML模型独立于UML图存在。XML的当前版本只提供了模型信息的交换,而没有提供图信息的交换。
UML使用一套与Java语言或其他面向对象语言等价物,同时也是本体论等价物的图形标记。
UML并不是一个方法学,也不要求使用一个方法学,但是UML对于Rational 统一过程来说是必不可少的。
UML2.0中一共定义了13种图示(diagrams)。为方便了解,可分类上面图形中的结构。
结构性图形(Structure diagrams)强调的是系统式的建模:
行为式图形(behavior diagrams)强调系统模型中触发的事件:
沟通性图形(Interaction diagrams),属于行为图形的子集合,强调系统模型中的资料流程:
协定状态机是状态机的子变种。它用来素在网路通讯协定模型。
UML并不限定UML要素型别非得是某图形上的型别。一般来说,每个UML要素大约会出现在图的所有型别。这种弹性在UML2.0部分被限定。
为了要保持工程图的传统,在您的UML图上加注用途、约束或意图永远无伤大雅。
UML从来源中使用相当多的概念。我们将只定义于同一建模语言术语汇表。下面仅列代表性的概念。
执行者,属性,类,元件,接口,对象,包
活动,事件,讯息,方法,操作,状态,用例
聚合,关联,组合,相依,广义化(而继承)