跳到主要内容

统一建模语言UML

在面向对象分析和设计过程中,主要就是做 UML 的建模。

基本概念

UML(统一建模语言):是一种可视化的建模语言,而非程序设计语言,支持从需求分析开始的软件开发的全过程。

从总体上来看, UML 的结构包括构造块、规则和公共机制三个部分。

  1. 构造块。UML 有三种基本的构造块,分别是事物(thing)、关系(relationship)和图(diagram)。事物是 UML 的重要组成部分,关系把事物紧密联系在一起, 图是多个相互关联事物的集合。
  2. 公共机制:公共机制是指达到特定目标的公共 UML 方法。
  3. 规则:规则是构造块如何放在一起的规定。

事物

下图是一些图形的表示,图形是由事物组成的。

  • 结构事物:模型的静态部分,如类、接口、用例、构件等;
  • 行为事物:模型的动态部分,如交互、活动、状态机;
  • 分组事物:模型的组织部分,如包;
  • 注释事物: 模型的解释部分,依附于一个元素或一组元素之上对其进行约束或解释的简单符号。

关系

事物之间的关系一共分为四大类

  • 依赖:一个事物的语义依赖于另一个事物的语义的变化而变化,箭头方向指向被依赖方。
  • 关联:是一种结构关系(现实世界中存在最广泛的关系,几乎代表了一切关系),描述了一组链,链是对象之间的连接。分为组合和聚合,都是部分和整体的关系,其中组合事物之间关系更强(它们是具有共同的生命周期的)。两个类之间的关联,实际上是两个类所扮演角色的关联,因此,两个类之间可以有多个由不同角色标识的关联。
    • 组合:比如人和人的大脑,有共同的生命周期。
    • 聚合:部分和整体之间没有共同的生命周期,比如雁群和大雁,大雁可以随时脱离雁群。
    • 关联关系两端还应该有数字,表示对应关系
  • 泛化:一般/特殊的关系,子类和父类的关系(学生,泛化为高中生、研究生...)。
  • 实现:一个类元制定了另一个类元保证执行的契约
关系的符号,必须要记住

把事物和关系表现在一张图中

图分类

虚线框起来的又叫做交互图,也叫做动态图

类图

类图是静态图,为系统的静态设计视图,展现一组对象、接口、协作和它们之间的关系

对象图

对象图是静态图,展现某一时刻一组对象及它们之间的关系,为类图的某一快照。在没有类图的前提下,对象图就是静态设计视图。如下:

用例图

用例图展现了一组用例、参与者以及它们之间的关系。用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作,用例之间的关系有 扩展、包含、泛化,属于用例图里面特有的关系。

  • 参与者:人、硬件或其它系统可以扮演的角色,可以和系统交互。
  • 用例:就是功能(需求),比如 新增书籍信息、查询书籍信息、修改书籍信息、登记外借信息、用户登录、统计金额与册数、查询外借信息
  • 用例之间有三个重要的关系,扩展:当执行某个操作时,另一个操作可做可不做(比如查询完可以选择修改,也可以选择不修改)、包含(include)当执行某个操作时,必须执行另一个操作、泛化表示父子关系,在图中没有画出来。
提示

用例(use case)用来描述系统对事件做出响应时所采取的行动。用例之间是具有相关性的。在一个会员管理系统中,会员注册可以采用电话和邮件两种方式。用例“会员注册”和“电话注册”、“邮件注册”之间就是泛化关系(generalize)

序列图

即顺序图,动态图,是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。有同步消息(进行阻塞调用,调用者中止执行,等待控制权返回,需要等待返回消息,用实心三角箭头表示),异步消息(发出消息后继续执行,不引起调用者阻塞,也不等待返回消息,由空心箭头表示)、返回消息(由从右到左的虚线箭头表示)三种。如下;

生命线可以理解为时间线,横向箭头表示消息,有三种消息。

通信图(了解)

通信图即协作图,强调参加交互的对象的组织。如下:

也是描述传递消息的,只不过是按照序号描述

状态图

动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简单状态和组合状态。转换可以通过事件触发器触发,事件触发后相应的监护条件会进行检查。状态图中转换和状态是两个独立的概念,如下:图中方框代表状态,箭头上的代表触发事件,实心圆点为起点和终点。

状态转换需要先触发事件,然后满足监护条件。

状态图可以没有终点,但是不能没有起点。

活动图

动态图,是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程。活动的分岔和汇合线是一条水平粗线。牢记下图中并发分岔、并发汇合、监护表达式、分支、流等名词及含义。每个分岔的分支数代表了可同时运行的线程数。活动图中能够并行执行的是在同一个分岔粗线下的分支上的活动。

构件图(组件图)

静态图,为系统实现视图,展现了一组构件之间的组织和依赖。如下:

构件可以理解为是可复用的模块,一个构件可能是由多个类组成的。

构件图

部署图

只要涉及到硬件上的东西,毫无疑问都是部署图

静态图,为系统静态部署视图,部署图物理模块的节点分布。它与构件图相关,通常一个结点包含一个或多个构件。其依赖关系类似于包依赖,因此部署组件之间的依赖是单向的类似于包含关系。如下:

部署图

UML 4+1 视图

视图是逻辑上的概念,比图的概念更抽象,是图的抽象。视图提出的概念是由图来实现的。

  1. 逻辑视图。逻辑上视图也称为设计视图,它表示了设计模型在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集
  2. 进程视图。进程视图是可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例,描述了并发与同步结构
  3. 实现视图。实现视图对组成基于系统的物理代码的文件和构件进行建模
  4. 部署视图。部署视图把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构。
  5. 用例视图。用例视图是最基本的需求分析模型