系统架构设计专业技能 ·结构化需求分析 - 数据流图
现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.
点击进入系列文章目录
系统架构设计高级技能 · 结构化需求分析 - 数据流图
- 一、数据流图的基本概念
- 二、需求分析(SA)- 数据流图(DFD)
- 三、数据流图平衡原则


一、数据流图的基本概念

- 实体
实体可能是:
(1)人物角色: 如客户、管理员、主管、经理、老师、学生
(2)组织机构:如银行、供应商、募捐机构
(3)外部系统: 如银行系统、工资系统、后台数据库(当要开发的是中间件时) - 存储
存储的文字方面特征:“**文件”、“**表”、“**库”、“**清单”、“**档案” - 数据流
1、数据平衡原则
(1)顶层图与0层图对比,是否有顶层图有,但0层图无的数据流,或反之。
(2)检查图中每个加工,是否存在只有入没有出,或只有出没有入,或根据输入的数据无法产生对应的输出的情况。
2、按需求题目说明与图进行匹配
说明中的每一句话,都能与图中有对应关系,当把说明中的实体与数据流标识出来之后,容易缩小对应范围,找出纰漏。 - 加工名
加工是用于处理数据流的,所以要补充加工名,可以把该加工涉及到的数据流,在说明中标识出来,再在数据流名称所在的句子中,找 “动词+名词” 的结构,分析是否可作为加工。
“动词+名词” 如:生成报告、发出通知、批改作业、记录分数,当然这只是普遍情况,也有例外,如物流跟踪、用户管理。

二、需求分析(SA)- 数据流图(DFD)

三、数据流图平衡原则



相关文章:
系统架构设计专业技能 ·结构化需求分析 - 数据流图
现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 系统架构设计高级技能 结构化需求分析 - 数据流图 一、数据流图的基本概念二、需…...
linux内核分析:线程和进程创建,内存管理
lec18-19:进程与线程创建 lec20-21虚拟内存管理 内核代码,全局变量这些只有一份,但是内核栈有多份,这可能就是linux线程模型1对1模式的由来。通过栈来做的 x86 CPU支持分段和分页(平坦内存模式)两种 分段,选择子那里就有特权标记了...
SpringMvc根据返回值类型不同处理响应
目录 一、介绍 二、返回值为void (1)控制层方法 三、返回值为String (1)控制层 四、返回值为ModelAndView (1)控制层方法 (2)jsp页面 一、介绍 我们可以通过控制器方法的返回…...
jq命令安装与使用
目录 一、简介二、下载及安装1.Linux 安装2.Windows 安装3.测试安装结果 三、jq用法1.基本语法2.常见用法1)格式化 JSON2)获取属性3)属性不存在情况处理4)数组遍历、截取、展开5)管道、逗号、加号6)数据构造…...
网络面试题汇总
简述 TCP 连接的过程(淘系) 参考答案: TCP 协议通过三次握手建立可靠的点对点连接,具体过程是: 首先服务器进入监听状态,然后即可处理连接 第一次握手:建立连接时,客户端发送 syn 包…...
Java————初始集合框架
一 、 集合框架 Java 集合框架Java Collection Framework ,又被称为容器container , 是定义在 java.util 包下的一组接口interfaces 和其实现类classes 。 其主要表现为将多个元素element 置于一个单元中, 用于对这些元素进行快速、便捷的存…...
SpringMvc如何向context域设置数据
目录 (1)控制层方法 (2)jsp页面 context作用域表示在整个应用范围都有效。在SpringMVC中对context作用域传值,只能使用ServletContext对象来实现。但是该对象不能直接注入到方法参数中,需要通过HttpSessi…...
深入探索智能问答:从检索到生成的技术之旅
目录 一、智能问答概述1. **语义理解**2. **知识库和数据库**3. **上下文感知**4. **动态学习和自适应** 二、发展历程1. **基于规则的系统**2. **统计方法的兴起**3. **深度学习和神经网络的突破**4. **预训练模型** 三、智能问答系统的主要类型四、基于知识库的问答系统五、基…...
02_Flutter自定义Sliver组件实现分组列表吸顶效果
02_Flutter自定义Sliver组件实现分组列表吸顶效果 一.先上效果图 二.列表布局实现 比较简单,直接上代码,主要使用CustomScrollView和SliverToBoxAdapter实现 _buildSection(String title) {return SliverToBoxAdapter(child: RepaintBoundary(child: C…...
uniapp实现大气质量指标图(app端小程序端均支持,app-nvue不支持画布)
效果图如下: 思路: 1.首先我想到的就是使用图标库echarts或ucharts,可是找了找没有找到类似的。 2.其次我就想用画布来实现这个效果,直接上手。(app-vue和小程序均可以实现,但是在app-nvue页面不支持画布…...
Oracle for Windows安装和配置——2.1.Oracle for Windows安装
2.1.1. 准备Oracle软件 1)下载或拷贝安装软件 下载地址:otn.oracle.com或my oracle support。下载文件列表。具体如图2.1.1-1所示。 图2.1.1-1 下载文件列表 --说明: 1)通过otn.oracle.com站点,可以免费下载用于安装的Oracle…...
2.SpringEL bean引用实例
SpringEL bean引用实例 文章目录 SpringEL bean引用实例介绍Spring EL以注解的形式Spring EL以XML的形式 介绍 在Spring EL,可以使用点(.)符号嵌套属性参考一个bean。例如,“bean.property_name” public class Customer {Value("#{addressBean.c…...
通用商城项目(下)之——Nginx的安装及使用
(作为通用商城项目的一个部分,单独抽离了出来。查看完整见父页面: ) 加入Nginx-完成反向代理、负载均衡和动静分离 1.配置SSH-使用账号密码,远程登录Linux 1.1配置实现 1、配置sshd 1)sudo vi /etc/ssh/sshd_confi…...
滑动时间窗口的思想和实现,环形数组,golang
固定时间窗口 在开发限流组件的时候,我们需要统计一个时间区间内的请求数,比如以分钟为单位。所谓固定时间窗口,就是根据时间函数得到当前请求落在哪个分钟之内,我们在统计的时候只关注当前分钟之内的数量,即 [0s, 60…...
SpringBoot 使用异步方法
SpringBoot 使用异步方法 在pom文件引入相关依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframe…...
Django框架学习大纲
对于使用 Python 的 Django 框架进行 web 开发的程序员来说,以下几点是必须了解的。 环境配置与项目初始化 命令: pip install django django-admin startproject myproject解析: 使用 pip 安装 Django。使用 django-admin startproject …...
基于matlab实现的电力系统稳定性分析摆幅曲线代码
完整程序: clear; clc; t 0; tf 0; tfl 0.5; tc 0.5; % tc 0.05, 0.125, 0.5 sec for 2.5 cycles, 6.25 cycles & 25 cycles resp ts 0.05; m 2.52 / (180 * 50); i 2; dt 21.64 * pi / 180; ddt 0; time(1) 0; ang(1) 21.64; pm 0.9; pm1 2.44;…...
mybatis基本构成mybatis与hibernate的区别添加mybatis支持
目录 1. mybatis简介 2. mybatis基本构成 3. mybatis与hibernate的区别 4. 项目中添加mybatis支持 1. mybatis简介 Mybatis是Apache的一个Java开源项目,是一个支持动态Sql语句的持久层框架。Mybatis可以将Sql语句配置在XML文件中,避免将Sql语句硬编…...
c++23中的新功能之十四输入输出指针
一、介绍 在c的发展过程中,无论如何发展,c都尽量保持着与C语言的兼容,当然这也是它的一个特点。在实际的应用中,开发者经常遇到的一个问题是,如何把一个指针的值给传出来?有人会说,简单啊&…...
Day42:网易云项目,路由进阶
网易云项目 创建、启动项目并配置路由 npm init vite npm i npm i vue-router npm i sass -D 在main.js中 import router from ./router createApp(App).use(router).mount(#app) 在index中配置路由 import {createRouter,createWebHistory} from vue-router import H…...
OpenClaw硬件推荐:流畅运行nanobot镜像的最低配置与性价比方案
OpenClaw硬件推荐:流畅运行nanobot镜像的最低配置与性价比方案 1. 为什么需要关注硬件配置? 去年夏天,我第一次尝试在笔记本上部署OpenClaw时遭遇了惨痛的失败。那台搭载i5-8250U的轻薄本在启动nanobot镜像后,风扇立刻像直升机一…...
自动化代码审查:OpenClaw+nanobot分析Git提交差异
自动化代码审查:OpenClawnanobot分析Git提交差异 1. 为什么需要轻量级代码审查方案 作为独立开发者,我经常面临一个困境:既希望保持代码质量,又不愿意搭建复杂的CI/CD系统。传统的代码审查工具要么需要企业级部署,要…...
扶梯安全开关硬件抽象库:轻量级嵌入式状态识别方案
1. 项目概述EscalatorSwitch 是一个面向自动扶梯安全控制场景的轻量级嵌入式硬件抽象库,其核心定位并非通用IO驱动,而是针对电梯/扶梯行业特有的“扶梯运行状态切换开关”(Escalator Switch)这一专用机电装置提供标准化、可复用的…...
TensorRT C#封装库深度评测:比Python快多少?工业级模型部署实战(附性能对比)
TensorRT C#封装库工业级性能对决:量化实测与实战调优指南 当工业级应用遇上AI推理,毫秒级延迟差异可能意味着数百万的产线损失。本文将带您深入实测TensorRT C#封装库与Python原生接口的性能鸿沟,并揭示如何在高并发PLC系统中实现亚毫秒级稳…...
网络协议分析AI应用:使用PyTorch进行网络流量异常检测
网络协议分析AI应用:使用PyTorch进行网络流量异常检测 1. 引言:网络安全的新防线 最近遇到一个真实案例:某电商平台在促销期间突然遭遇流量激增,起初运维团队以为是正常用户访问,直到服务器开始大面积瘫痪才发现是DD…...
从FASTQ到VCF:一个完整生信分析流程中的文件格式演变全解析
从FASTQ到VCF:生物信息学分析流程中的文件格式演进与实战解析 引言:数据格式在生信分析中的核心地位 第一次接触高通量测序数据分析时,我面对各种文件格式感到无比困惑。为什么需要这么多不同的格式?它们之间如何衔接?…...
创新部署策略:如何高效配置OpenCore黑苹果安装环境
创新部署策略:如何高效配置OpenCore黑苹果安装环境 【免费下载链接】Hackintosh 国光的黑苹果安装教程:手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 国光的黑苹果安装教程是一个全面专业的OpenCore配置指南…...
深度学习毕业设计题目实战指南:从选题到部署的完整技术路径
最近在帮学弟学妹们看毕业设计,发现一个挺普遍的现象:大家对深度学习的理论热情很高,但一到动手实现,就各种“翻车”。环境配一天,模型跑不动;好不容易跑起来,精度死活上不去;最后模…...
SpringBoot实战:高效读取resources目录文件并实现安全下载
1. 为什么需要从resources目录读取文件? 在日常开发中,我们经常会遇到需要提供文件下载功能的场景。比如导出Excel报表、下载PDF合同、获取系统模板文件等。这些文件通常具有以下特点: 相对固定:内容不会频繁变动,比如…...
墨语灵犀Keil5开发效率提升:宏定义、调试脚本与代码模板生成
墨语灵犀Keil5开发效率提升:宏定义、调试脚本与代码模板生成 如果你经常用Keil MDK做ARM开发,肯定对下面这些场景不陌生:为了一个寄存器位域定义,在手册和代码编辑器之间反复横跳;调试时,一遍遍手动输入命…...
