Martin的主页 http://martinfowler.com/。
Pavel Hruby开发的visio模板,可以用来画UML图: http://phruby.com
简介
统一建模语言UML是一组图形表示法,这些表示法的背后有共同的元模型。UML帮助描述和设计软件系统,特别是使用面向对象风格构建的软件系统。出现的原因:编程语言的抽象级别不够高,不便于讨论设计。
使用UML的方式
草稿、蓝图和编程语言。
- 草稿UML as Sketch。使用草稿的目的是来帮助沟通想法或者展示所要做事情的可选方案。草稿是非正式的,注重当前讨论的方面,而不是完整的规则。草稿一般使用白板或简单的绘图工具,注重绘图的效率。
- 蓝图UML as Blueprint。蓝图关心规则完整性,列出所有的设计决策,程序员应该能够根据设计,进行简单、直接的编码。蓝图需要复杂的工具来绘制,例如CASE工具。蓝图和草稿之间的界限有些模糊,区别类似于:草稿故意画成不完整的,强调重要信息,而蓝图倾向于全面,目的是把编程缩减成简单的机械活动。简言之,草稿是探索性的,蓝图是定义性的。
- 编程语言UML as programming language。在UML方面做得越多,编程变得越机械,这时候编程应该被自动化,借助于CASE工具,可以将UML编译为可执行代码,这时候UML成了源代码。
表示法notation和元模型meta-model
UML中定义了表示法和元模型。表示法是你在模型中看到的图形,它是建模语言的图形表示。例如,类图表示法定义了如何表达类、关联和多重性等条目和概念。元模型是一张定义语言概念的图,通常是类图,定义了表示法中图形的规格。UML理解成一个语言的话,元模型定义了语义的语法。
UML图
下面列出了UML2描述的13种官方图形类型和分类。
图 | 目的 | 传承 |
活动activity | 顺序和并行行为(Procedural and parallel behavior) | UML1 |
类class | 类,特性和关系 (class, features, and relationships) | UML1 |
通信communication | 对象之间的交互;强调链接(interaction between objects; emphasis on links) | UML1 协助图 |
组件component | 组件的结构和连接(structure and connection of components) | UML1 |
组合结构composite structures | 类的运行时分解(runtime decomposition of a class) | UML2 |
部署deployment | 工件部署到节点(deployment of artifacts to nodes) | UML1 |
交互概述interaction overview | 系列图和活动图的混合(mix of sequence and activity diagram) | UML2 |
对象object | 实例的配置例子(example configuration of instances) | UML1 |
包package | 编译时层次结构(compile-time hierarchic structure ) | UML1 |
序列sequence | 对象之间交互;强调顺序(interaction between objects; emphasis on sequence) | UML1 |
状态机state machine | 对象在生命期中如何被事件改变(how events change an object over its life) | UML1 |
时间timing | 对象之间的交互;强调时间(interaction between object; emphasis on timing) | UML2 |
用例use case | 用户如何和系统交互(how users interact with system) | UML1 |