笔记 | 软件工程06-2:软件设计-软件体系结构设计

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. 自然地解决具有数据流特征的软件需求
  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 精化软件体系结构

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

设计其所需的基础服务:

确立设计元素

  1. 确定子系统及其接口

  2. 评估和改进所确立的子系统

  3. 确定子系统的接口

  4. 确定构件及其接口

  5. 确定关键设计类及其接口

2.6.7 设计部署模型

2.7 整合体系结构设计


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

2.8 优化体系结构设计

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

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

3.1 撰写软件体系结构设计文档

3.2 评审软件体系结构设计

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

相关推荐
搏博1 小时前
软件工程之软件项目管理深度解析
软件工程·软件构建·需求分析·软件需求
爱吃java的羊儿5 小时前
信息系统项目管理师-软考高级(软考高项)2025最新(十八)
信息可视化·软件工程·产品经理·可用性测试
我要学土木9 小时前
软件工程期末知识点整理(更新中)
软件工程
meisongqing10 小时前
【软件工程】软件缺陷 基于组合的优化方法
软件工程·软件缺陷·组合优化
搏博1 天前
软件工程之需求分析涉及的图与工具
数据库·软件工程·软件构建·软件需求
workflower1 天前
人协同的自动化需求分析
运维·开发语言·自动化·软件工程·需求分析·软件需求
meisongqing1 天前
【软件工程】基于机器学习的多缺陷定位
软件工程
搏博2 天前
软件工程之形式化说明技术深度解析
分布式·软件工程·软件构建·软件需求
meisongqing2 天前
【软件工程】基于频谱的缺陷定位
软件工程
搏博3 天前
软件工程之面向对象分析深度解析
软件工程·软件构建·需求分析·软件需求