1 软件体系结构的概念

1.1 软件体系结构的设计元素

1.2 不同的抽象层次

1.3 软件体系结构的不同视图

1.3.1 软件体系结构的逻辑视图:包图

1.3.2 软件体系结构的逻辑视图:构件图

1.3.3 软件体系结构的开发视图

1.3.4 软件体系结构的部署视图

1.3.4.1 描述性部署图

1.3.5 软件体系结构的运行视图

1.3.6 描述软件体系结构的三类UML图
1.3.6.1 包图

包的定义:
包的作用:

1.3.6.2 构件图

构件及接口:

从上述描述来看:一个端口包括了多个接口
构件和接口的表示:

一个圆圈"○"表示的是供给接口,一个半括号"("表示的是需求接口
1.3.6.3 部署图

描述性部署图:
描述性部署图的节点:

描述性部署图的边:
实例性部署图:
实例性部署图与描述性部署图之间的关系可类比为对象图与类图之间的关系。实例性部署图中节点的命名方式为"节点名: 类型名",其中类型名为描述性部署图中的节点名
部署图的建模原则:

1.4 软件设计模式

1.4.1 不同抽象层次的设计模式
1.4.1.1 体系结构风格 - 面向整个软件系统

常用软件体系结构风格:

1.4.1.1.1 分层体系结构模式

应用实例:TCP/IP分层通信协议

合理地设计抽象层次和组织软构件是关键
分层体系结构模式的约束:

分层体系结构模式的特点:
松耦合,可替换,可复用,标准化
1.4.1.1.2 管道与过滤器风格
管道与过滤器风格的约束

示例:编译器

管道与过滤器风格的特点
- 自然地解决具有数据流特征的软件需求
- 可独立地更新、升级过滤器来实现软件系统的扩展和进化
1.4.1.1.3 知识库风格

应用实例:现代编译器

基于仓库风格的软件研发环境Eclipse

知识库风格的特点

1.4.1.1.4 黑板风格
黑板风格的约束

典型应用实例:AI如NLP、语音处理、模式识别、图像处理等
黑板风格的特点
1.4.1.1.5 MVC风格
MVC风格的约束

1.4.1.1.6 SOA风格
SOA风格的特点

1.4.1.1.7 消息总线风格
2 软件体系结构设计
2.1 软件体系结构设计的任务

软件体系结构设计示意图:
2.2 软件体系结构设计的目标

2.3 软件体系结构设计 vs 软件需求

2.4 软件体系结构设计 vs 详细设计

2.5 软件体系结构设计的重要性和关键性

2.6 软件体系结构设计的过程

2.6.1 设计初步的软件体系结构
2.6.2 辨识关键软件需求

根据关键需求选择合适体系结构风格
2.6.3 不同体系结构风格适合的应用

2.6.4 重用开源软件及已有软件资产

2.6.5 将软件资产集成到体系结构设计中

2.6.6 精化软件体系结构

确定公共基础设施及服务:

设计其所需的基础服务:

确立设计元素

-
确定子系统及其接口
-
-
评估和改进所确立的子系统
-
确定子系统的接口
-
确定构件及其接口
-
-
确定关键设计类及其接口
-
2.6.7 设计部署模型

2.7 整合体系结构设计
2.7.1 整合体系结构设计的结果
- 设计元素的职责划分更为明确
- 系统与外部接口、相关设计元素间的接口和协作更为清晰
- 整体体系结构设计方案更为优化
2.8 优化体系结构设计

2.9 软件体系结构设计的原则

3 文档化和评审软件体系结构设计
3.1 撰写软件体系结构设计文档

3.2 评审软件体系结构设计

3.3 软件体系结构设计的输出
