软件体系结构-UML概述与结构建模
软件体系结构-UML概述与结构建模
软件体系结构建模概述
UML 是统一建模语言,是一种分析设计语言,也是一种建模语言,是由图形符号表达的建模语言,是一种用于描绘软件蓝图的标准语言,偶尔也要注释。
UML 的结构包括模型结构和通用机制:
-
模型元素包括事物以及事物之间的联系,无论在哪个图中,同一个模型元素都保持同样的意义和符号。
-
通用机制包括规格说明、修饰、公共分类、扩展机制这四种,允许用户对 UML 进行扩展。
UML的特点:
- 工程化,规范化,可视化,系统化,文档化,智能化
基于软件体系结构的开发
软件体系结构模型:
结构模型、框架模型、动态模型、过程模型、功能模型
Kruchten ‘4+1’ 视图模型:
逻辑视图、开发视图、过程视图、物理视图 + 场景视图
UML中的结构建模
类图
类图使用需要出现在系统内的不同的类来描述系统的静态结构,类图包含类和它们之间的关系,它描述系统内所声明的类,但它没有描述系统运行时类的行为。
类图中的对象
-
可见性:
1
2
3
4
5//可见性一般有四种
// +:表示public
// -:表示private
// #:表示protected
// ~:表示default(不写也表示default) -
抽象类
抽象类的类名和抽象方法使用斜体字表示(用笔画时可以适当添加注释防止斜体看不清)
-
静态属性/方法
在属性/方法下加下划线表示static
-
接口
类图中的关系
-
关联关系
关联关系语义较弱(相比于聚合、组合)。关联关系使一个对象知道另一个对象的属性和方法,表现为一个对象持有另一个对象的引用
1
2
3
4//数字表示关联的数量
// 0...* :0个到多个
// 0...1 :0个到一个
// 1...* :1个到多个单向关联(一个员工有多个地址):
双向关联(不带箭头)(一个老师有多个学生,一个学生可以有多个老师):
-
聚合关系
“has a”的关系,体现整体与部分的拥有关系,部分和整体可以独立存在,有独立的生命周期。(整体对象不控制部分对象的生命周期)
使用尾部带空心棱形的箭头,箭头指向部分。
-
组合关系
“contains a”的关系,整体与部分是不可分的,同生共死的。
整体可以控制部分的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。
使用尾部带实心棱形的箭头,箭头指向部分
-
依赖关系
如果对象A用到对象B,但是和B的关系不是太明显的时候,就可以把这种关系看作是依赖关系,如绑定,友元等
-
泛化关系(继承)
-
实现关系(实现接口)
对象图(类图的实例)
包图
- 用于描述包与包之间的关系
- 一种把元素组织到一起的通用机制
- 图标是一个带标签的文件夹
两种组包方式:
- 根据系统分层架构组包(推荐)
- 根据系统业务功能模块组包(用于二次组包)
包图的关系:
-
引入关系:
一个包中的类可以被另一个指定包(以及嵌套于其中的那些包)中的类引用。
在线上加上
<<import>> -
泛化关系:
表示一个包继承了另一个包的内容,同时又补充自己增加的内容。
-
**嵌套关系:**一个包可以包含若干个子包
组件图
又叫构件图,通常包括组件、接口以及各种关系。组件图显示组件以及它们之间的依赖关系,组件一般来说就是一个实际文件,可以分为三种类型:
- 源代码组件
- 二进制组件
- 可执行组件
组件图组成元素:
-
组件:系统中可以替换的部分,一般对应一个实际文件,如exe、jar、dll等文件,它遵循并提供了一组接口的实现。
-
接口:一组操作的集合,它指明了由类或组件所请求或者所提供的服务。
-
部件:组件的局部实现
-
端口:被封装的组件与外界的交互点,遵循指定接口的组件通过它来收发消息
-
**连接件:**在特定语境下组件中两个部件之间或者两个端口之间的通信关系。
部署图
组件图是说明组件之间的逻辑关系的,而部署图则是在此基础上更进一步,描述系统硬件的物理拓扑结构及在此结构上执行的软件。部署图可以显示计算节点的拓扑结构和通信路径、节点上运行的软件组件。
部署图通常被认为是一个网络图或者物理架构图。部署图用于表示何者部署于何处。
一般用于嵌入式系统建模、C/S系统建模、分布式系统建模
部署图的组成元素:
- 节点和连接
- 组件






