什么是 UML

UML是一种标准的图形化建模语言,是面向对象分析与设计的标准表示。

它,不是一种可视化的程序设计语言,而是一种可视化的建模语言(用于分析设计);不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的标准。

不是过程,也不是方法,但允许任何一种过程和方法使用它。

为什么要建模

建模的目的

  1. 模型有助于按照所需的样式可视化(VISUALIZE)系统

  2. 模型能够描述(SPECIFY)系统的结构和行为

  3. 模型提供构造(CONSTRUCT)系统的模板

  4. 模型可以文档化(DOCUMENT)设计决策

建模的原则

  1. 选择合适的模型
  2. 模型具有不同的精确程度
  3. 最好的模型是与现实相联系
  4. 需要从多个视角创建不同的模型,单一的模型是不够的

什么情况下推荐使用UML

  1. OO 方法是项目决定采用的方法论,是整个项目或产品成功的关键
  2. 系统规模比较复杂,需要用图形抽象地表达复杂概念,增强设计的灵活性、可读性和可理解性,以便暴露深层次的设计问题,降低开发风险
  3. 组织希望记录已成功项目、产品的公共设计方案,在开发新项目时可以参考、重用过去的设计,以节省投入,提高开发效率和整体成功率
  4. 有必要采用一套通用的图形语言和符号体系描述组织的业务流程和软件需求,促进业务人员、开发人员之间一致、高效地交流

什么情况下不适合

UML不是万能,有些场合并不适合

  • 传统的做法已完全适用,对 OOAD(面向对象的设计与分析) 的要求也不高,项目非常成功,无改进必要。
  • 开发的系统比较简单,直接用源码配上少量的文字就能解决问题,软件开发文档也无需添加图形来辅助说明。
  • 开发的系统本身不属于 OO 方法、UML 适用范围

UML 基础结构和上层结构

UML基础结构(Infrastructure)

  • 即 UML 元模型
  • 使之更加模块化,更易于扩展
  • 与UML其它规范更加保持一致(MOF)

MOF 四层模型

  • 元元模型层(M3)
    • 包含了定义建模语言所需的元素(UML基础结构)
    • METACLASS,METAATTRIBUTE,METAOPERATION
  • 元模型层(M2)
    • 定义了一种建模语言的结构和语法(UML上层结构)
    • 如UML: CLASS,ATTRIBUTE,OPERATION
  • 模型层(M1)
    • 定义了一个具体的系统的模型
    • 如采用 UML 表示的某系统模型
  • 运行时(MO)
    • 包含了一个模型的对象在运行时的状态等
    • 如某系统运行时的对象和数据模型

UML上层结构(Superstructure)

  • 是指普通用户使用的UML语法、语义以及符号表示
  • 使UML更具可用性

构造块(Building Blocks)

事物(Things)

  • 结构(STRUCTURAL)事物
    • 类、接口
    • 用例、协作
    • 构件、工件、节点
  • 行为(BEHAVIORAL)事物
    • 交互、状态机、活动
  • 分组(GROUPING)事物
    • 包(、框架、模型、子系统…)
  • 注释(ANNOTATIONAL)事物

关系(Relationships)

依赖、关联、泛化、实现

图(Diagram)

  • 静态(7种):类图、对象图、构件图、部署图、包图、组合结构图、外廓图。

  • 动态(7种):顺序图、通信图、时间图、交互纵览图、活动图、状态机图、用例图。

规格说明(SPECIFICATIONS)

UML模型至少具有两种维度:

  • 图形维度:使用图和图标可视化模型

  • 文本维度:各种建模元素的

规格说明

  • 模型元素的特征和语义的文本描述
  • 形成了承载模型的语义背板(SEMANTIC BACKPLANE),赋予模型意义,各种图仅仅是该背板的视图或者可视化投影
  • DEATH BY DIAGRAM(由于图形而死亡)