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

相关推荐
张较瘦_5 小时前
[论文阅读] 人工智能 + 软件工程 | AI助力软件可解释性:从用户评论到自动生成需求与解释
论文阅读·人工智能·软件工程
张较瘦_20 小时前
[论文阅读] 人工智能 + 软件工程 | LLM辅助软件开发:需求如何转化为代码?
论文阅读·人工智能·软件工程
爱思德学术1 天前
CCF发布《计算领域高质量科技期刊分级目录(2025年版)》
大数据·网络安全·自动化·软件工程
workflower2 天前
MDSE和敏捷开发相互矛盾之处:方法论本质的冲突
数据库·软件工程·敏捷流程·极限编程
~尼卡~2 天前
软考(软件设计师)软件工程-软件质量,软件测试,McCabe圈复杂度
软件工程·软件设计师-软考
~尼卡~2 天前
软考(软件设计师)软件工程-成本评估模型,软件能力成熟度,软件配置管理
软件工程·软件设计师-软考
No Silver Bullet2 天前
软件工程前端渠道类产品如何精准评估项目规模
前端·软件工程·规模估算
{⌐■_■}3 天前
【软件工程】tob和toc含义理解
前端·数据库·mysql·golang·软件工程·tidb
~尼卡~3 天前
软考(软件设计师)软件工程-软件过程模型,敏捷开发
软件工程·敏捷流程·软件设计师-软考
tuan_zhang3 天前
人机协同的关键枢纽:软件工程3.0中对象模型与模型驱动的融合路径
软件工程·对象模型