UML

UML, 即 Unified Modeling Language, 统一建模语言,它涉及的内容很多,但实际开发中,用到的只是它很小的一个子集。它对面向对象的软件开发的描述,包括静态和动态的,有时是很有用的,非常直观。

它的表达方式主要是几种图,参下表:

注:具体的 UML 图,部分在这里:https://code.google.com/p/cyiridiumsitewikineed/source/browse/trunk/uml/uml%20notes.zargo

Structural UML diagrams

UML 结构图

Behavioral UML diagrams

UML 行为图

  1. Class diagram, 类图
  2. Component diagram, 组件图
  3. Composite structure diagram, 复合结构图
  4. Deployment diagram, 部署图
  5. Object diagram, 对象图
  6. Package diagram, 包图
  7. Profile diagram, 剖面图
  1. State machine diagram, 状态机图
  2. Use case diagram, 用例图

以下都是交互图(Interaction diagram)

  1. Communication diagram, 通信图 (协作图)
  2. Sequence diagram, 顺序图
  3. Interaction overview diagram, 交互纵览图
  4. Timing diagram, 计时图

阅读材料

建模工具

注:不少建模工具都带有「UML 图 <-> 代码」互转的功能,但是,画 UML 图的目的绝不是为了生成代码(所谓的正向工程),而写代码的目的也绝不是为了画 UML 图(所谓的逆向工程)。UML 图是为了理清思路,不需要反映不重要的细节,代码是一种功能表达,需要写清楚所有的东西,它们各有所用,彼此并不等价,也不能代替,即使互转也不完全。互转功能要少用慎用不用。

后记

曾花了一定时间去研究「规范的」UML,现在想来没有太大必要。UML 图的首要目的就是说明软件需求,结构,而它本身并不是目的。只要能达到软件的目的,怎么用 UML,是否「规范」其实算不上最重要的,甚至用不用 UML 也算不上最重要的。尽管如此,在目前开来,软件开发中应用 UML 是相当普遍的。