笔记 | 软件工程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 软件体系结构设计的输出

相关推荐
雾江流11 小时前
小米堆叠桌面6.01.05.1991 | 提前享受丝滑堆叠桌面,仅限小米手机
智能手机·软件工程
爱思德学术21 小时前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):SPIN 2026
软件工程·软件开发
赫尔·普莱蒂科萨·帕塔1 天前
智能体工程
人工智能·机器人·软件工程·agi
雾江流1 天前
BiliPai 5.0.5 | B站开源第三方应用,纯净无广流畅
软件工程
JMchen1231 天前
AI编程与软件工程的学科融合:构建新一代智能驱动开发方法学
驱动开发·python·软件工程·ai编程
muddjsv2 天前
软件工程:职业全景与前景深度解析
软件工程
明洞日记2 天前
【图解软考八股034】深入解析 UML:识别标准建模图示
c++·软件工程·软考·uml·面向对象·架构设计
muddjsv2 天前
软件工程编程语言学习:从入门到工程化的路线与建议
软件工程
宇钶宇夕3 天前
CoDeSys入门实战一起学习(二十八):(ST)三台电机顺起逆停程序详解
运维·学习·自动化·软件工程
学嵌入式的小杨同学3 天前
【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
linux·开发语言·vscode·嵌入式硬件·vim·软件工程·ux