系统架构设计师之系统设计模块笔记

news2025/7/17 11:36:32

一、系统设计概述

  1. 定义与目标
    系统设计是根据系统分析结果,制定系统构建蓝图的过程,核心目标是合理分配功能需求、优化资源使用、确保系统高内聚低耦合,并满足性能、安全、可扩展等非功能需求。
  2. 主要内容
    • 概要设计:将功能需求分配给软件模块,确定模块调用关系,形成模块结构图(系统结构图)。
    • 详细设计:包括模块内算法、数据结构、数据库物理设计、用户界面设计等,并编写详细设计说明书。

二、系统设计原则

  1. 结构化设计原则
    • 模块独立性:高内聚(功能单一)、低耦合(模块间依赖少)。
    • 模块规模:大小适中,避免过深调用层次(一般不超过7层)。
    • 扇入与扇出:多扇入(被调用次数多,复用度高)、少扇出(减少依赖)。
    • 接口与作用域:单入口单出口,作用域在模块内部,避免全局变量。
  2. 面向对象设计原则(SOLID原则)
    • 单一职责:类职责单一。
    • 开闭原则:对扩展开放,对修改封闭。
    • 里氏替换:子类可替换父类。
    • 依赖倒置:依赖抽象而非具体实现。
    • 接口隔离:使用多个专门接口而非单一总接口。
  3. 质量属性设计
    • 性能:优化算法、缓存机制、负载均衡。
    • 安全性:数据加密、权限管理、入侵防护。
    • 可扩展性:插件化设计、微服务架构、横向扩展能力。

三、设计模式

  1. 分类
    • 创建型:单例、工厂方法、原型模式(解决对象创建问题)。
    • 结构型:适配器、桥接、装饰器模式(处理对象组合)。
    • 行为型:观察者、策略、责任链模式(优化对象交互)。
  2. 高频考点
    • 单例模式:确保全局唯一实例(如配置管理)。
    • 工厂模式:封装对象创建逻辑(如数据库连接池)。
    • 观察者模式:实现事件驱动(如消息订阅)。

四、模块结构设计

  1. 模块定义
    • 要素:输入/输出、处理功能、内部数据、程序块。
    • 模块结构图:展示模块调用关系,包含模块、调用箭头、数据流、控制信息及转接符号。
  2. 分层架构
    • 典型分层:表现层(用户交互)、业务层(核心逻辑)、数据层(持久化存储)。
    • 优点:职责分离、复用性高、易于维护。

五、数据库与数据设计

  1. 设计要点
    • 类型选择:关系型数据库(Oracle、MySQL)适合强一致性场景;非关系型(MongoDB、Redis)适合高并发与灵活数据结构。
    • 性能优化:索引设计、分区存储、连接池管理。
    • 安全性:数据加密、备份恢复策略、权限隔离。
  2. 分布式数据库
    • 垂直分割:按字段分表(如用户信息与订单分离)。
    • 水平分割:按数据行分片(如按用户ID分库)。

六、系统架构风格

  1. 常见架构模式
    • C/S架构:客户端-服务器,适用于高交互场景。
    • 微服务架构:服务拆分、独立部署(如Spring Cloud)。
    • 事件驱动架构:通过事件总线解耦组件(如Kafka)。
  2. 设计考量
    • 可扩展性:通过负载均衡与弹性伸缩应对流量波动。
    • 容错性:冗余设计、故障恢复机制(如主从复制)。

七、考试高频考点总结

  1. 模块结构图与设计原则:扇入/扇出、高内聚低耦合。
  2. 设计模式分类与应用场景:创建型、结构型、行为型模式举例。
  3. 分层架构与微服务对比:职责分离与独立部署的优缺点。
  4. 数据库设计优化:索引、分区、连接池配置。

关于我:IT从业5年,主要擅长Java技术栈相关内容,致力于分享Java技术相关的文章,欢迎关注我公号java_lww,一起努力提升技术人的核心能力。
交个朋友吧,我是一个爱好广泛,,灵魂有趣的人~

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

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

相关文章

Elasticsearch:加快 HNSW 图的合并速度

作者:来自 Elastic Thomas Veasey 及 Mayya Sharipova 过去,我们曾讨论过搜索多个 HNSW 图时所面临的一些挑战,以及我们是如何缓解这些问题的。当时,我们也提到了一些计划中的改进措施。本文正是这项工作的成果汇总。 你可能会问…

图片中文字无法正确显示的解决方案

图片中文字无法正确显示的解决方案 问题描述 在 Linux 系统中生成图片时,图片中的文字(如中文)未能正确显示,可能表现为乱码或空白。这通常是由于系统缺少对应的字体文件(如宋体/SimSun),或者…

ISP--Demosaicking

文章目录 前言算法解释简单的线性插值代码实现 色差法和色比法基于方向加权的方法RB缺失的G通道的插值RB缺失的BR的插值G缺失的BR的插值代码实现 基于边缘检测的方法计算缺失的G计算缺失的RB值/计算缺失的G值 前言 人眼之所以有能感受到自然界的颜色,是因为人眼的感…

国标GB28181协议EasyCVR视频融合平台:5G时代远程监控赋能通信基站安全管理

一、背景介绍 随着移动通信行业的迅速发展,无人值守的通信基站建设规模不断扩大。这些基站大多建于偏远地区,周边人迹罕至、交通不便,给日常的维护带来了极大挑战。其中,位于空旷地带的基站设备,如空调、蓄电池等&…

模拟-与-现实协同训练:基于视觉机器人操控的简单方法

25年3月来自 UT Austin、Nvidia、UC Berkeley 和纽约大学的论文“Sim-and-Real Co-Training: A Simple Recipe for Vision-Based Robotic Manipulation”。 大型现实世界机器人数据集在训练通才机器人模型方面拥有巨大潜力,但扩展现实世界人类数据收集既耗时又耗资…

WRS-PHM电机智能安康系统:为浙江某橡胶厂构筑坚实的生产防线

以行业工况为背景 一、顾客工厂的背景 浙江某橡胶厂以电机为中心生产设备必须连续平稳运行。但由于缺乏有效的故障预警体系,电机故障就像潜伏着的“不定时炸弹”,不但不时地造成生产流程的中断,也使对生产进行管理异常艰难,对持续安全生产提…

将 CrewAI 与 Elasticsearch 结合使用

作者:来自 Elastic Jeffrey Rengifo 学习如何使用 CrewAI 为你的代理团队创建一个 Elasticsearch 代理,并执行市场调研任务。 CrewAI 是一个用于编排代理的框架,它通过角色扮演的方式让多个代理协同完成复杂任务。 如果你想了解更多关于代理…

Spring 的 IoC 和 DI 详解:从零开始理解与实践

Spring 的 IoC和 DI 详解:从零开始理解与实践 一、IoC(控制反转) 1、什么是 IoC? IoC 是一种设计思想,它的核心是将对象的创建和管理权从开发者手中转移到外部容器(如 Spring 容器)。通过这种…

ZYNQ笔记(四):AXI GPIO

版本:Vivado2020.2(Vitis) 任务:使用 AXI GPIO IP 核实现按键 KEY 控制 LED 亮灭(两个都在PL端) 一、介绍 AXI GPIO (Advanced eXtensible Interface General Purpose Input/Output) 是 Xilinx 提供的一个可…

实操(环境变量)Linux

环境变量概念 我们用语言写的文件编好后变成了程序,./ 运行的时候他就会变成一个进程被操作系统调度并运行,运行完毕进程相关资源被释放,因为它是一个bash的子进程,所以它退出之后进入僵尸状态,bash回收他的退出结果&…

Word / WPS 页面顶部标题 段前间距 失效 / 不起作用 / 不显示,标题紧贴页眉 问题及解决

问题描述: 在 Word 或者 WPS 里面,如果不是新的一节,而是位于新的一页首行时,不管怎么设置段前间距,始终是失效的,实际段前间距一直是零。 解决方案: 查询了很多方案均无法解决问题&#xff…

Linux自行实现的一个Shell(15)

文章目录 前言一、头文件和全局变量头文件全局变量 二、辅助函数获取用户名获取主机名获取当前工作目录获取最后一级目录名生成命令行提示符打印命令行提示符 三、命令处理获取用户输入解析命令行执行外部命令 四、内建命令添加环境变量检查和执行内建命令 五、初始化初始化环境…

在 Q3D 中提取汇流条电感

汇流条排简介和设计注意事项 汇流条排是用于配电的金属导体,在许多应用中与传统布线相比具有设计优势。在设计母线排时,必须考虑几个重要的因素: 低电感:高频开关内容会导致无功损耗,从而降低效率电容:管…

MySQL:事务的理解

一、CURD不加控制,会有什么问题 (1)因为,MySQL里面存的是数据,所以很有可能会被多个客户访问,所以mysqld可能一次会接受到多个关于CURD的请求。(2)且mysql内部是采用多线程来完成数…

python 基础:句子缩写

n int(input()) for _ in range(n):words input().split()result ""for word in words:result word[0].upper()print(result)知识点讲解 input()函数 用于从标准输入(通常是键盘)读取用户输入的内容。它返回的是字符串类型。例如在代码中…

Ruoyi-vue plus 5.2.2 flowble 结束节点异常错误

因业务要求, 我在结束节点的结束事件中,制作了一个归档的事件,来执行一个业务。 始终都会报错, 错误信息 ${archivTemplateListener} did not resolve to an implementation of interface org.flowable.engine.delegate.Execution…

Sublime Text使用教程(用Sublime Text编写C语言程序)

Sublime Text 是一款当下非常流行的文本编辑器,其功能强大(提供有众多的插件)、界面简洁、还支持跨平台使用(包括 Mac OS X、Linux 和 Windows)。 在程序员眼中,Sublime Text 不仅仅是一个文本编辑器&…

【1】k8s集群管理系列--包应用管理器之helm

一、helm概述 Helm核心是模板,即模板化K8s YAML文件。 通过模板实现Chart高效复用,当部署多个应用时,可以将差异化的字段进行模板化,在部署时使用-f或 者–set动态覆盖默认值,从而适配多个应用 helm工作流程&#xf…

Mysql表的操作(2)

1.去重 select distinct 列名 from 表名 2.查询时排序 select 列名 from 表名 order by 列名 asc/desc; 不影响数据库里面的数据 错误样例 : 但结果却有点出乎意料了~为什么会失败呢? 其实这是因为书写的形式不对,如果带了引号,…

智能物联网网关策略部署

实训背景 某智慧工厂需部署物联网网关,实现以下工业级安全管控需求: 设备准入控制:仅允许注册MAC地址的传感器接入(白名单:AA:BB:CC:DD:EE:FF)。协议合规性:禁止非Modbus TCP(端口…