Martin的主页 http://martinfowler.com/

Pavel Hruby开发的visio模板,可以用来画UML图: http://phruby.com

简介

统一建模语言UML是一组图形表示法,这些表示法的背后有共同的元模型。UML帮助描述和设计软件系统,特别是使用面向对象风格构建的软件系统。出现的原因:编程语言的抽象级别不够高,不便于讨论设计。

使用UML的方式

草稿、蓝图和编程语言。

  1. 草稿UML as Sketch。使用草稿的目的是来帮助沟通想法或者展示所要做事情的可选方案。草稿是非正式的,注重当前讨论的方面,而不是完整的规则。草稿一般使用白板或简单的绘图工具,注重绘图的效率。
  2. 蓝图UML as Blueprint。蓝图关心规则完整性,列出所有的设计决策,程序员应该能够根据设计,进行简单、直接的编码。蓝图需要复杂的工具来绘制,例如CASE工具。蓝图和草稿之间的界限有些模糊,区别类似于:草稿故意画成不完整的,强调重要信息,而蓝图倾向于全面,目的是把编程缩减成简单的机械活动。简言之,草稿是探索性的,蓝图是定义性的。
  3. 编程语言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

UML精粹1 - 简介-LMLPHP

UML图的示例

UML精粹1 - 简介-LMLPHP

UML精粹1 - 简介-LMLPHP

UML精粹1 - 简介-LMLPHP

UML精粹1 - 简介-LMLPHP

05-06 09:12