系统架构师学习笔记_第六章(上)_连载
UML 建模与架构文档化
方法种类的膨胀,极大地妨碍了用户的使用和交流。
UML通过统一的表示法,使不同知识背景的 领域专家、系统分析、开发人员、用户 可以方便地交流。
6.1.2 UML 体系结构演变
UML 是用 元模型 描述的,元模型是 4层元模型体系结构模式中的一层,其他层次分别是 元-元模型、模型层、用户对象曾。其中元模型层 由 元-元模型层 导出。
元模型的体系结构模式 可以用来定义 复杂模型 所要求的 精确定义,这种复杂模型通常需要被 可靠地 保存、共享、操作 以及在工具之间进行交换。它的特点如下:
1、在每一层都递归地定义语义结构。
2、可用来定义 重量级和轻量级 扩展机制。
3、在体系结构上 将其他体系结构的标准统一起来。
UML 元模型又被分解为三个逻辑子包:基础包、行为元素包、模型管理包。
6.2 UML 基础
UML 通过 图形化的表示机制 从多个侧面 对系统的分析和设计模型进行刻画。
10种视图,四类:
1、用例图
2、静态图,包括 类图、对象图、包图。
类图的边表示类之间的联系,包括 继承、关联、依赖、聚合 等。
对象图描述在某种状态下或某一时间段,系统中 活跃的对象及其关系。
包由 子包、类 组成。
3、行为图,包括 交互图、状态图、活动图,他们从不同的侧面刻画系统的动态行为。
交互图分为 顺序图、合作图。顺序图强调 对象之间 消息发送的时序。合作图更强调对象间 的动态协作关系。
状态图 描述 对象的动态行为。
活动图 描述 操作序列,这些操作序列 可以并发、同步,包含控制流、信息流。
4、实现图,包括 构件图、部署图。描述组成和分布情况。
部署图 节点表示实际的计算机和设备,边表示节点之间的物理连接,也可以显示连接的类型及节点之间的依赖性。
6.2.2 用例和用例图
用例图 也翻译为 用况、用按 等,在 UML 中,用例用一个椭圆表示,往往用 动宾结构 或 主谓结构 命名。
可选的 动作序列 和 会出现异常的动作序列。
用例是代表系统中 各种相关人员之间 就系统的行为所达成的契约。
需求阶段 用例是 分析人员与客户沟通的工具 项目规模估算的依据;
设计阶段 用例是 系统功能设计的主要输入;
实现阶段 用例是 检测类型为正确性的文档。
本质上,用力分析 是一种功能分解 的技术。
1、参与者 角色,参与者实际上 并不是系统的一部分。
2、用例间的关系,泛化、包含、扩展 等。
包含是比较特殊的依赖关系。
扩展,基本用例必须声明 若干“扩展点”,而这些扩展用例只能在这些扩展点上增加新的行为和含义。
3、用例图
建模人员可以在途中给某些图符加上填充色,在语义上,使用填充颜色和不使用填充颜色的模型是 一样的。
6.2.3 交互图
描述对象之间 对象与参与者之间 动态协作关系 协作过程中行为次序。
通常描述用例的行为,显示该用例中所涉及的对象 对象之间的消息传递。
顺序图、协作图 之间可以互相转化,一个用例需要多个顺序图或协作图。
交互图可以帮助分析人员 对照检查 每个用例中所描述的 用户需求,提醒分析人员去补充遗漏的类或方法。
水平方向为对象维,一般 主要参与者放在最左边,次要参与者放在最右边。
垂直方向为时间维。
6.2.4 类图和对象图
一般而言,类的名字是 名词。
类之间的关系 有 关联、聚集、组合、泛化、依赖 等。
1、关联,链 是关联的实例,关联表示 类与类之间的关系,链表示 对象与对象之间的关系。
关联用 实线表示,角色还具有多重性。
关联类 描述关联的 属性、操作、以及其他信息。
关联类 通过一条虚线与关联连接。
自返关联 又称 递归关联,同一个类的两个对象间的关系。两个关联端,每个关联端的角色不同。
2、聚集和组合
聚集 是一种特殊形式的 关联,类之间整体与部分的关系。
组合 整体与部分具有同样的生存期,是一种特殊形式的聚集。
3、泛化关系,一般和特殊元素之间的关系,就是平常所说的继承关系。
6.2.5 状态图和活动图
1、状态图
描述 对象 生存期间的 动态行为,所经历的状态序列,引起状态转移的 事件、动作。
是 UML 动态行为建模的 5个图之一,用 状态机 对一个对象的生命周期建模,状态图 用于显示状态机,重点在于 状态之间的控制流。
除了 初态和终态,还有 Idle 和 Running 两个状态,keyPress、finished、shutDown 是事件。
2、活动图
是 UML 动态行为建模的 5个图之一,描述系统的 工作流程 和 并发行为。状态图的特殊形式,一个活动结束后将立即进入下一个活动。
基本概念:活动、泳道、分支、分叉、汇合、对象流。
1.活动,注意区分 动作状态 和 活动状态,
动作状态是原子的,没有内部转移,没有内部活动,所占用的时间可以忽略,目的是执行进入动作,然后转向另一个状态。
活动状态是可分解的,工作完成需要一定的时间。
2.泳道,是活动图中区域划分,每个泳道代表一个责任区,泳道 和 类 并不是一一对应的关系。
3.分支,同一个触发事件,可以根据不同的警戒条件 转向不同的活动,每个可能的转移 是一个分支。
4.分叉和汇合,如果要表示 系统或对象 中的 并发行为,使用 分叉fork 和 汇合join,汇合正好与分叉相反。
5.对象流,活动图中可以出现对象,对象可用作为活动的输入输出。活动图中的对象流表示活动和对象之间的关系。
6.2.6 构件图
构件 是系统中 遵从一组接口 且提供其实现的 物理的、可替换 的部分。
构件图 显示一组构件 以及它们 之间的相互关系,包括 编译、连接、执行时 构建之间的依赖关系。
构件就是一个实际文件,以下几种类型:
1、部署构建
2、工作产品构件
3、执行构件
构件图可以对以下几个方面建模:
1、对源代码文件之间的相互关系建模。
2、对可执行文件之间的相互关系建模。
6.2.7 部署图
部署图 也称 配置图、实施图,显示系统中计算节点的 拓扑结构、通信路径、节点上运行的软构件等。
一个系统模型只有一个部署图,常用语帮助理解分布式系统。
部署图 由 体系结构设计师、网络工程师、系统工程师 等 描述。