软考 软件设计师 场景分析题 速成篇
文章目录
- 试题一:数据流图
- 💖 基本图形元素
- 1. 外部实体
- 2. 数据存储
- 3. 加工
- 4. 数据流
- 📚 例题
- (1)实体名称
- (2)数据存储名称
- (3)数据流
- ① 父子图平衡
- ② 加工有输入有输出
- ④ 数据守恒
- ⑤ 答题格式
- 参考答案
- (4)疑难杂题
- ① 结构化语言
- ② 数据流是否应该存在
- ③ 改进数据流
- ④ 分析输入输出
- 试题二:数据库 ER-图
- 💖 基本图形元素
- 1. 实体
- 2. 属性
- 3. 联系
- 💖 关系模式
- 1. 基本概念
- 2. 一对一关系
- 3. 一对多
- 4. 多对多
- 5. 三个实体的联系转换
- 6. 实体父类和子类的转换
- 📚 例题
- (1)缺失的联系
- (2)补充关系模式
- (3) 疑难杂题
- 试题三:UML 图
- 💖 基础知识
- 1. 关系
- (1)依赖关系
- (2)关联关系
- (3)泛化关系
- (4)实现关系
- 2. 类图
- 3. 用例图
- (1)包含关系
- (2)扩展关系
- (3)泛化关系
- 📚 例题
- (1)用例名
- (3)用例关系
- (3)类名
- (4)疑难杂题(事件流)
- 试题四:设计模式
- 💖 基础知识
- 1. 简单工厂
- 2. 工厂方法
- 📚 例题
- 1. 抽象工厂
- 📙 题目
- 2. 生成器模式(建造者模式)
- 📙 题目
- 3. 原型模式
- 📙 题目
- 4. 适配器模式
- 📙 题目
- 5. 桥接模式
- 📙 题目
- 6. 组合模式
- 📙 题目
- 7. 装饰器模式
- 📙 题目
- 8. 享元模式
- 📙 题目
- 9. 命令模式
- 📙 题目
- 10. 观察者
- 📙 题目
- 11. 状态模式
- 📙 题目
- 11. 策略模式
- 📙 题目
- 13. 访问者模式
- 📙 题目
- 14. 中介者模式
- 📙 题目
👨🏫 参考笔记
试题一:数据流图
👨🏫 参考视频
数据流图:Data Fluid Diagram(DFD)
💖 基本图形元素
1. 外部实体
2. 数据存储
3. 加工
4. 数据流
📚 例题
(1)实体名称
看 子图,看数据流的加工,定位文字说明
(2)数据存储名称
文章中没有具体的数据存储名称,后面加表或者文件就可以了
(3)数据流
① 父子图平衡
结合父图看子图的数据流有没有缺失
② 加工有输入有输出
- 黑洞:缺少以此加工为起点的数据流(加工输出到其他)
- 白洞:缺少以此加工为终点的数据流(其他输入到加工)
④ 数据守恒
子图的加工 找 对应的文字描述
⑤ 答题格式
参考答案
(4)疑难杂题
① 结构化语言
② 数据流是否应该存在
③ 改进数据流
④ 分析输入输出
试题二:数据库 ER-图
👨🏫 参考视频
💖 基本图形元素
1. 实体
- 弱实体
- 父子实体
2. 属性
某个属性有下划线:主键
- 简单属性:不可再分,原子的
- 复合属性:可以细分为更小的部分
3. 联系
- 一个:1
- 多个:
n
、m
、*
💖 关系模式
1. 基本概念
主键一般直接给出
2. 一对一关系
3. 一对多
外键给到 多的一方:把一
那方的主键 作为外键属性 给 多
方的实体
4. 多对多
取
5. 三个实体的联系转换
有联系的,把主键都加进去,作为新的主键
6. 实体父类和子类的转换
- 父类的主键 加到 子类 中去
📚 例题
(1)缺失的联系
(2)补充关系模式
- 完整性约束关系:就是主键和外键
- 主键下面是实线
- 外键下面是虚线
(3) 疑难杂题
试题三:UML 图
👨🏫 参考视频
软考近几年主要是考察 类图 和 用例图
💖 基础知识
1. 关系
(1)依赖关系
一个事务的变化引起另一个变化
(2)关联关系
描述整体和部分之间的关系
聚集
- 聚合(空心菱形):好聚好散,可以独立存在
- 组合(实心菱形) :一个组的,同生共死
(3)泛化关系
- 子类 指向 父类 (空心三角形;聚合是空心菱形)
- 特殊 和 一般
- 继承:父类指向子类
(4)实现关系
- 接口和实现类
2. 类图
聚集分为聚合:空心,组合:实心
关联:无向边
依赖:虚线箭头
泛化(继承):实线三角箭头
实现:虚线三角箭头
3. 用例图
(1)包含关系
虚线箭头 指向被包含用例(箭头指向的表示必须有)
(2)扩展关系
《extend》 虚线箭头 指向基本用例(箭头指向的表示必须有)
(3)泛化关系
实线空心三角形
继承的反义词,B继承A,A泛化B
📚 例题
(1)用例名
主要在描述中看:用户能够做的事情,也就是参与者的动作,这就是用例
(3)用例关系
- 包含:A包含B,先执行 B 再执行 A (《inlcude》:虚线箭头指向 B)
- 扩展:B扩展A,B是A的特殊情况下的备用事件(类似于异常)(《extend:虚线箭头指向A》)
- 泛化:继承的反义
(3)类名
- 注意文章描述中的英文,可能就是类名
- 从图中已有的类名入手
- 找泛化关系,也就是继承 :(机器人和传感器)
(4)疑难杂题(事件流)
- 基本事件流:正确发生的执行流程
- 备选事件流:出错的处理事件和可选事件
试题四:设计模式
👨🏫 参考笔记
💖 基础知识
1. 简单工厂
public class SimpleFactory {public static void main(String[] args) {Product productA = Factory.createProduct("A");productA.info();Product productB = Factory.createProduct("B");}
}abstract class Product {public abstract void info();
}class Factory {public static Product createProduct(String type) {Product product = null;switch (type) {case "A":product = new ProductA();break;case "B":product = new ProductB();break;default:System.out.println("没有 " + type + " 类型的产品!");break;}return product;}
}class ProductA extends Product {@Overridepublic void info() {System.out.println("产品的信息:A");}
}class ProductB extends Product {@Overridepublic void info() {System.out.println("产品的信息:B");}
}
2. 工厂方法
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
把 简单工厂 的一个工厂 换成 多个工厂,定义一个工厂接口(工厂方法)
public class FactoryMethod {public static void main(String[] args) {Factory factoryA = new FactoryA();// 父类 对象名 = new 子类();Product productA = factoryA.createProduct();// Product productA = new ProductA();productA.info();Factory factoryB = new FactoryB();Product productB = factoryB.createProduct();productB.info();}
}// class Factory
interface Factory {public Product createProduct();
}class FactoryA implements Factory {@Overridepublic Product createProduct() {return new ProductA();}
}class FactoryB implements Factory {@Overridepublic Product createProduct() {return new ProductB();}
}// abstract class Product
interface Product {// public abstract void info();public void info();
}// class ProductA extends Product
class ProductA implements Product {@Overridepublic void info() {System.out.println("产品的信息:A");}
}// class ProductB extends Product
class ProductB implements Product {@Overridepublic void info() {System.out.println("产品的信息:B");}
}
📚 例题
1. 抽象工厂
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定具体实现类。通过使用抽象工厂模式,可以将客户端与具体产品的创建过程解耦,使得客户端可以通过工厂接口来创建一族产品。
📙 题目
2. 生成器模式(建造者模式)
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
📙 题目
3. 原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
📙 题目
- 注意是实现Cloneable接口
- 注意类型转换
4. 适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
左边继承 右边传参
📙 题目
5. 桥接模式
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
📙 题目
6. 组合模式
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
📙 题目
***
7. 装饰器模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
📙 题目
8. 享元模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color 属性被用来检查现有的 Circle 对象。
📙 题目
9. 命令模式
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
📙 题目
10. 观察者
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
📙 题目
11. 状态模式
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。
在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。
📙 题目
11. 策略模式
在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。
📙 题目
13. 访问者模式
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
📙 题目
14. 中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
📙 题目
相关文章:

软考 软件设计师 场景分析题 速成篇
文章目录 试题一:数据流图💖 基本图形元素1. 外部实体2. 数据存储3. 加工4. 数据流 📚 例题(1)实体名称(2)数据存储名称(3)数据流① 父子图平衡② 加工有输入有输出④ 数…...
[学习笔记](Python3)防止SQL注入、XSS攻击和文件上传漏洞
学习笔记:防止SQL注入、XSS攻击和文件上传漏洞(Python3) 本笔记由生成式大模型GPT-4o自动整理。注意AI可能犯错。代码和理论由GPT-4o(2024-5-21)自行撰写未经人工复核。 参数化查询防SQL注入 参数化查询通过将SQL语句和数据分离来防止SQL注…...

西门子CPU与汇川伺服通信与控制
西门子CPU与汇川620F伺服通信与控制 一、西门子CPU与汇川620F伺服通信与控制1、器件准备2、伺服软件设置3、PLC添加汇川伺服描述文件4、PLC编程调试5、总结 二、西门子s7-1500限位信号接到伺服的方法1、通过默认报文获取限位信号2、添加自定义报文获取限位信号3、总结 三、西门…...

移动硬盘无法读取怎么修复?简单八步,轻松搞定!
移动硬盘在日常生活和工作中扮演着重要的角色,但有时我们可能会遇到移动硬盘无法读取的问题。这种情况可能导致数据无法访问,给用户带来一定的困扰。本文将介绍移动硬盘无法读取的可能原因以及针对这些问题的修复方法。 1. 检查硬件连接 当发现移动硬盘…...

c4d云渲染是工程文件会暴露吗?
在数字创意产业飞速发展的今天,C4D云渲染因其高效便捷而备受欢迎。然而,随着技术应用的深入,人们开始关注一个核心问题:在享受云渲染带来的便利的同时,C4D工程文件安全吗?是否会有暴露的风险?下…...

C语言/数据结构——每日一题(有效的括号)
一.前言 如果想要使用C语言来解决这道题——有效的括号:https://leetcode.cn/problems/valid-parentheses/description/我们必须要借用上一篇我们所讲的内容——栈的实现:https://blog.csdn.net/yiqingaa/article/details/138923750?spm1001.2014.3001.…...

STM32使用旋转编码开关
一、旋转编码开关如何工作 编码器内部有一个开槽圆盘,连接到公共接地引脚 C。它还具有两个接触针 A 和 B,如下所示。 当您转动旋钮时,A 和 B 按照特定顺序与公共接地引脚 C 接触,具体顺序取决于转动旋钮的方向。 当它们与公共地接…...

OneMO同行 心级服务:中移物联OneMO模组助力客户终端寒冷环境下的稳定运行
中移物联OneMO模组以客户为中心,基于中国移动心级服务要求,开展“OneMO同行 心级服务 标定一流”高标服务主题活动,升级“服务内容““服务方式”和“服务意识”,为行业客户提供全新的服务体验。 近日,某车载监控设备…...
爬虫视图展示之 Power BI
实现方式 读取数据的实现 selenium 库 requests 库 存储媒介 MysqlElasticSearch 图表展示 GrafanaPower BI 是什么? Power BI 简单且快速,能够从 Excel 电子表格或本地数据库创建快速见解。 同时 Power BI 也可进行丰富的建模和实时分析ÿ…...

微软刚发布的Copilot+PC为什么让Intel和AMD尴尬?2024 AI PC元年——产业布局及前景展望
美国东部时间5月20日在微软位于华盛顿的新园区举行的发布会上,宣布将旗下AI助手Copilot全面融入Windows系统,能够在不调用云数据中心的情况下处理更多人工智能任务。 “将世界作为一个提示词就从Windows系统开始”。微软的新PC将是“CopilotPC”…...

抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具
抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具 抖音视频去水印保存部分源码: 通过使用Python中的requests、re和os等库,可以编写如下代码来实现抖音视频去水印保存的功能。 短视频爬虫提取手机下载工具的使用方法: 该工具主…...

类的组合、作用域与可见性、类的静态成员、单例模式、
类的组合 一个类内嵌其他类的对象作为成员的情况 has - a组合 初始化列表的另一用途:为了调用数据成员的带参构造函数 能够层层递进 class Line { public:Line(int x1 0, int y1 0, int x2 0, int y2 0);Line(const Line &other);~Line();Line(const Po…...

高速公路定向广播(声光一体) HT-600D
1、产品概述: HT-600D声光一体平面波IP定向广播是北京恒星科通创新性研发产品,采用公司自主研发的平面波传声技术,该产品具有高声压、强指向性、高清晰度等特点,采用定向声传声技术将声音聚集到正前方定向传输,周边声压级明显降低…...
2024离婚新规已生效,不用等30天冷静期,线上开庭
2024年离婚必知的12条法律知识: ✅分居多久都不会自动离婚,想离婚,必需通过协议或起诉程序离婚 ✅婚后的工资收入,继承的遗产(未指定只给一人)都是夫妻共同财产 ✅没有领结婚证,或领证后没有共同生活&#…...

从零搭建python环境:深入解析虚拟环境与Python版本管理
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:为何需要虚拟环境? 二、虚拟环境的创建与命名 1. 虚拟环境…...

windows安装官方正版notepad++
一 、notepad介绍 Notepad 是一个免费的、开源的文本编辑器,主要面向程序员和高级用户。以下是 Notepad 的特点: 跨平台: 虽然主要为 Windows 平台设计,但可以通过 Wine 在 Linux 和 macOS 上运行。 语法高亮: 自动识…...
netty-socketio 集群随记
实现netty-socketio集群的方式 代码实例 PostConstructpublic void subscribe() {pubSubStore.subscribe(PubSubType.DISPATCH, new PubSubListener<DispatchMessage>() {Overridepublic void onMessage(DispatchMessage message) {log.debug("subscribe: {}"…...

查看目录或文件的磁盘使用情况
在排查问题过程中,会遇到磁盘占满,需要排查具体哪个文件占用比较大,此时可以使用du 命令 du [选项] [文件或目录...] 常用的选项包括: -h 或 --human-readable:以人类可读的格式(如 K、M、G)…...
如何选择合适的自动化框架
自动化测试框架的选型是一个复杂且重要的过程,需要考虑多个因素以确保所选框架能够满足项目的需求。以下是一些建议的步骤和考虑因素: 1. 明确项目需求: * 首先,要明确项目的测试需求,包括测试的类型(如…...
Java面试进阶指南:高级知识点问答精粹(二)
Java 面试问题及答案 1. 什么是Java内存模型(JMM)?它在并发编程中扮演什么角色? 答案: Java内存模型(JMM)是一个抽象的模型,它定义了Java程序中各种变量(线程共享变量&…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...