当前位置: 首页 > news >正文

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

1 软件体系结构的概念

image.png

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

image.png

1.2 不同的抽象层次

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

1.3.4.1 描述性部署图

image.png

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

image.png

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

image.png

包的定义

image.png
包的作用

image.png

1.3.6.2 构件图

image.png

构件及接口

image.png

从上述描述来看:一个端口包括了多个接口

构件和接口的表示

image.png

一个圆圈“○”表示的是供给接口,一个半括号“(”表示的是需求接口

1.3.6.3 部署图

image.png

描述性部署图

描述性部署图的节点:

image.png
描述性部署图的边:
image.png

实例性部署图

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

部署图的建模原则

image.png

1.4 软件设计模式

image.png

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

image.png

常用软件体系结构风格:

image.png|425

1.4.1.1.1 分层体系结构模式

image.png

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

image.png

合理地设计抽象层次和组织软构件是关键

分层体系结构模式的约束

image.png

分层体系结构模式的特点

松耦合,可替换,可复用,标准化

1.4.1.1.2 管道与过滤器风格

image.png
image.png

管道与过滤器风格的约束

image.png

示例:编译器

image.png

管道与过滤器风格的特点

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

image.png

应用实例:现代编译器

image.png

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

image.png

知识库风格的特点

image.png

1.4.1.1.4 黑板风格

image.png
image.png
image.png
黑板风格的约束

image.png
典型应用实例:AI如NLP、语音处理、模式识别、图像处理等

黑板风格的特点

image.png
image.png

1.4.1.1.5 MVC风格

image.png
MVC风格的约束

image.png

1.4.1.1.6 SOA风格

image.png
image.png
SOA风格的特点

image.png

1.4.1.1.7 消息总线风格

image.png
image.png

2 软件体系结构设计

2.1 软件体系结构设计的任务

image.png

软件体系结构设计示意图:
image.png

2.2 软件体系结构设计的目标

image.png

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

image.png

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

image.png

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

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

image.png

2.6.1 设计初步的软件体系结构

image.png
image.png

2.6.2 辨识关键软件需求

image.png

根据关键需求选择合适体系结构风格

2.6.3 不同体系结构风格适合的应用

image.png

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

image.png

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

image.png

2.6.6 精化软件体系结构

image.png

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

image.png

设计其所需的基础服务:

image.png

确立设计元素

image.png
1. 确定子系统及其接口
1. image.png
2. 评估和改进所确立的子系统
image.png
3. 确定子系统的接口
image.png
2. 确定构件及其接口
1. image.png
3. 确定关键设计类及其接口
1. image.png

2.6.7 设计部署模型

image.png

2.7 整合体系结构设计

image.png
image.png

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

2.8 优化体系结构设计

image.png

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

image.png

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

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

image.png

3.2 评审软件体系结构设计

image.png

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

image.png

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Web前端开发工程师与前端工程师:角色、职责与发展
  • redis 04 redis结构
  • 2024.05.28 校招 实习 内推 面经
  • VirtFuzz:一款基于VirtIO的Linux内核模糊测试工具
  • 我给KTV服务生讲解防抖,他竟然听懂了
  • AWS无服务器 应用程序开发—第五章 身份验证和用户管理(Amazon Cognito)
  • MySQL 函数与约束
  • CISP究竟适合谁?这四类人没跑了
  • 数组中的第K个最大元素
  • 2021 hnust 湖科大 操作系统课设 报告+原代码+指导书+流程图源文件
  • 【初阶数据结构】深入解析顺序表:探索底层逻辑
  • Facebook开户|Facebook广告设计与测试优化
  • 假期已结束,大家都开始上班了吗
  • if 语句、布尔类型、关系表达式
  • Ktor库的高级用法:代理服务器与JSON处理
  • ➹使用webpack配置多页面应用(MPA)
  • LeetCode18.四数之和 JavaScript
  • MaxCompute访问TableStore(OTS) 数据
  • node学习系列之简单文件上传
  • python_bomb----数据类型总结
  • React-redux的原理以及使用
  • Redis字符串类型内部编码剖析
  • vue.js框架原理浅析
  • Vue.js源码(2):初探List Rendering
  • 初识 beanstalkd
  • 离散点最小(凸)包围边界查找
  • 聊聊hikari连接池的leakDetectionThreshold
  • 使用 @font-face
  • 使用Gradle第一次构建Java程序
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 小而合理的前端理论:rscss和rsjs
  • 智能合约开发环境搭建及Hello World合约
  • # SpringBoot 如何让指定的Bean先加载
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #android不同版本废弃api,新api。
  • #图像处理
  • $.ajax()
  • (7)STL算法之交换赋值
  • (Matlab)使用竞争神经网络实现数据聚类
  • (阿里云万网)-域名注册购买实名流程
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转)我也是一只IT小小鸟
  • .net core开源商城系统源码,支持可视化布局小程序
  • .Net多线程总结
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .Net中ListT 泛型转成DataTable、DataSet
  • :“Failed to access IIS metabase”解决方法
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @Autowired和@Resource装配
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法
  • [1204 寻找子串位置] 解题报告
  • [C#]winform部署PaddleOCRV3推理模型