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

news2024/11/26 0:30:03

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1833905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UV胶带和UV胶水的应用场景有哪些不同吗?

UV胶带和UV胶水的应用场景有哪些不同吗? UV胶带和UV胶水的应用场景确实存在不同之处,以下是详细的比较和归纳: 一:按使用场景来看: UV胶带的应用场景: 包装行业:UV胶带在包装行业中常用于食品包装、药…

About Apple Pay

本文翻译整理自:About Apple Pay (更新时间:2017-03-16) https://developer.apple.com/library/archive/ApplePay_Guide/index.html#//apple_ref/doc/uid/TP40014764 文章目录 一、关于 Apple Pay1、使用 Apple Pay2、测试 Apple …

Kaggle比赛:成人人口收入分类

拿到数据首先查看数据信息和描述 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 加载数据(保留原路径,但在实际应用中建议使用相对路径或环境变量) data pd.read_csv(r"C:\Users\11794\Desk…

【机器学习300问】121、RNN是如何生成文本的?

当RNN模型训练好后,如何让他生成一个句子?其实就是一个RNN前向传播的过程。通常遵循以下的步骤。 (1)初始化 文本生成可以什么都不给,让他生成一首诗。首先,你需要确定采样的起始点。这可以是一个特殊的开…

深度学习:从理论到应用的全面解析

引言 深度学习作为人工智能(AI)的核心技术之一,在过去的十年中取得了显著的进展,并在许多领域中展示了其强大的应用潜力。本文将从理论基础出发,探讨深度学习的最新进展及其在各领域的应用,旨在为读者提供全…

外网怎么访问内网?

当我们需要在外网环境下访问内网资源时,常常会面临一些困扰。通过使用一些相关的技术与工具,我们可以轻松地实现这一目标。本文将介绍如何通过【天联】组网产品,解决外网访问内网的问题。 【天联】组网是一款由北京金万维科技有限公司自主研…

事务所管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,客户管理,评论管理,基础数据管理,公告信息管理 客户账户功能包括:系统首页,个人中心,律师管理&#xff0…

示例:WPF中绑定枚举到ComboBox想显示成中文或自定义名称如何实现

一、目的:在开发过程中绑定的枚举不想显示成英文字段怎么办,这里通过TypeConverter的方式来实现绑定的枚举从定义的特性中读取 二、实现 首先定义如下枚举 [TypeConverter(typeof(DisplayEnumConverter))]public enum MyEnum{[Display(Name "无&q…

C++ -- 红黑树的基本操作

目录 摘要 基本规则 基本操作 利用Graphviz 库 总结 摘要 红黑树是一种自平衡的二叉搜索树,它在插入和删除节点时,通过颜色和旋转操作保持树的平衡,确保插入、删除和查找的时间复杂度都是 (O(log n))。红黑树的每个节点都有一个颜色属性…

CentOS 7 安装MySQL以及常见问题解决

访问网站:http://repo.mysql.com 找到适配CentOS 7版本的MySQL 的YUM仓库包rpm文件,如下图 下载后,找到安装包的位置 空白处右键,选择在终端打开 查看当前目录下文件 # 安装MySQL 5.7的YUM仓库包rpm -ivh mysql57-community-rele…

学生成绩评分 - Scala

文章目录 一、第1关:对学生成绩进行评分 一、第1关:对学生成绩进行评分 实训目标 掌握 Scala 中运算符嵌套的使用 了解 if-else if-else 语句的使用 实训分析 利用条件运算符的嵌套来完成此题:学习成绩 150 - 90 分的同学成绩评分为&#…

【安防视界新飞跃】液晶拼接屏:安防事业的“超级守护者”!

在守护安全的征途上,每一双“电子眼”都是智慧与科技的结晶。视频监控,这个安防领域的超级英雄,正以它敏锐的洞察力,24小时不间断地守望着我们的世界。而今,随着科技的飞跃,液晶拼接屏如同安防界的“变形金…

windows环境下,怎么查看本机的IP、MAC地址和端口占用情况

1.输入ipconfig,按回车。即查看了IP地址,子码掩码,网关信息。 2.输入ipconfig/all,按回车。即查看了包含IP地址,子码掩码,网关信息以及MAC地址 3.我们有时在启动应用程序的时候提示端口被占用,如何知道谁占有了我们需要…

JAVAFX打包部署真正能用的办法(jdk21,javafx23)IntelliJ IDEA

我之前创建了javafx项目,想打包试试。一试,全是坑,所以记录下来,为有缘人节约时间。直接构建工件是错误的,别尝试了,找不在JDK的。我也花了一天多的时间尝试了网上各种大神的办法,就没找到一个是…

从手动到自动再到智能,IT运维的进击之路

过去十年,科技化进程飞速发展,作为保障企业信息安全运行的运维行业,从手动发展到自动,又从自动发展到智能,IT运维也从原来的辅助角色逐渐变成了业务推动。 手动——自动——智能的发展 以银行用户为例,最初…

面试题之CSS

1. 引入样式的方式 外部样式 link import 区别 内部样式 /* 写在头部标签 */ <style></style>行内样式 2. 三行代码画三角形 .triangle{width:0px;border:100px solid;border-color:transparent transparent transparent red; }3.属性的继承 可继承的属性 …

边缘检测(一)-灰度图像边缘检测方法

灰度图像边缘检测是数字图像处理与机器视觉中经常遇到的一个问题&#xff0c;边缘检测是否连续、光滑是判断检测方法优劣的一个重要标准&#xff0c;下面通过一个实例提供灰度图像边缘检测方法&#xff0c;该方法对其他图像检测也具有一定的参考价值。 首先&#xff0c;读入一幅…

MongoDB使用$addToSet向数组中添加元素

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第66篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

前端菜鸡学习日记 -- computed和watch的用法

目录 1.computed&#xff1a; 2.watch&#xff1a; 哈喽哇大家&#xff0c;又是新的一周&#xff0c;因为一些特殊的原因&#xff0c;所以目前是比较闲的&#xff0c;就趁机多学习一点东西把&#xff0c;这些学习日记就是学习中的笔记咯&#xff0c;流水账日记则是工作中遇到…

基于Elementui组件,在vue中实现多种省市区前端静态JSON数据展示并支持与后端交互功能,提供后端名称label和id

基于Elementui组件&#xff0c;在vue中实现多种省市区前端静态数据&#xff08;本地JSON数据&#xff09;展示并支持与后端交互功能&#xff0c;提供后端名称label和id 话不多说&#xff0c;先上图 1.支持传递给后端选中省市区的id和名称&#xff0c;示例非常完整&#xff0c…