『软件工程10』结构化系统分析:数据流图和字典案例分析

结构化系统分析——数据流图和数据字典案例分析

  • 一、数据流图案例分析
    • 1、案例1:商店业务管理系统
    • 2、案例2:学籍管理系统
    • 3、案例3:大型企业数据中心
  • 二、数据字典案例分析
    • 1、案例1:学籍管理系统
  • 三、写在最后

接 上一篇文章的内容,我们挑选出几个案例来对数据流图和数据字典进行分析。

一、数据流图案例分析

1、案例1:商店业务管理系统

(1)某商店业务管理系统的顶层数据流图如下:

商店业务管理系统

以上数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能。

(2)该管理系统的数据流图绘制步骤为:

  • 首先确定系统的输入输出
  • 根据商店的业务,画出顶层数据流图,以反映最主要业务的处理流程;
  • 经过分析,商店业务处理的主要功能应当有销售采购会计三大项。主要数据流的输入源点输出终点顾客供应商
  • 然后从输入端开始,根据商店业务的工作流程,画出数据流流经的各个加工框,逐步画到输出端,得到第0层数据流图

(3)根据步骤分别画出第0层和第1层数据流图。具体图形如下:

  • 第0层数据流图如下图所示:

第0层数据流图

  • 细化第0层数据流图的每一个加工项,得到第1层数据流图,其中包括销售采购会计三大项功能。具体数据流图如下:

第1层数据流图—销售细化
第1层数据流图—采购细化
第1层数据流图—会计细化

2、案例2:学籍管理系统

(1)某学籍管理系统的顶层数据流图如下:

学籍管理系统顶层流程图

(2)该管理系统的数据流图绘制步骤为:

  • 首先确定系统的输入输出
  • 根据学籍管理系统的业务,画出顶层数据流图,以反映最主要业务的处理流程;
  • 经过分析,据学籍管理系统的主要功能应当有注册成绩管理资格管理奖励管理四大项。主要数据流的输入源点输出终点学生老师
  • 然后从输入端开始,根据学籍管理系统相关业务的工作流程,画出数据流流经的各个加工框,逐步画到输出端,得到第0层数据流图

(3)根据步骤画出第0层数据流图。具体图形如下:

  • 第0层数据流图如下图所示:

学籍管理系统第0层流程图

3、案例3:大型企业数据中心

某大型企业的数据中心为了集中管理、控制用户对数据的访问并支持大量的连接需求,欲构建数据管理中间件,其主要功能如下:

(1)数据管理员可通过中间件进行用户管理、操作管理和权限管理用户管理维护用户信息(用户名、密码),存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。

(2)中间件验证前端应用提供的用户信息。若验证不通过,返回非法用户信息;若验证通过,中间件将等待前端应用提交操作请求。

(3)前端应用提交操作请求后,中间件先对请求进行格式检查。如果格式不正确,返回格式错误信息;如果格式正确,则进行权限验证(验证用户是否有权执行请求的操作),若用户无权执行该操作,则返回权限不足信息,否则进行连接管理

(4)连接管理连接相应的后端数据库并提交操作。连接管理先检查是否存在空闲的数据库连接,如果不存在,新建连接;如果存在,则重用连接

(5)后端数据库执行操作并将结果传输给中间件,中间件对收到的操作结果进行处理后,将其返回给前端应用。

现采用结构化方法对系统进行分析与设计,获得如下图所示的顶层数据流图0层数据流图

数据管理中间件顶层数据流图

数据管理中间件0层数据流图

回答以下问题:

  1. E1、 E2 和 E3 分别指哪三个实体?E1:前端应用;E2:数据管理层;E3:后端数据库。
  2. D1 、D2 和 D3 分别指哪三个数据存储?D1:用户表;D2:操作表;D3:权限表。
  3. 加工P指什么?并指出0层数据流图丢失的两条数据流,包括数据流的起点、终点及数据流名称。
    加工p表示数据管理中间件。0层数据流图丢失的两条数据如4和5所示。
  4. 丢失的数据流1中,其起点、终点和名称分别是什么。→起点为P,终点为E1,名称为处理后的操作结果
  5. 丢失的数据流2中,其起点、终点和名称分别是什么。→起点为E3,终点为P,名称为操作结果

二、数据字典案例分析

1、案例1:学籍管理系统

某学籍管理系统的第0层数据流图如下所示。

学籍管理系统第0层流程图

Question:
根据以上第0层数据流图,请写出该学籍管理系统的五个条目。

Answer:

条目一:数据流

条目一:数据流

条目二:数据元素

条目二:数据元素

条目三:数据存储

条目三:数据存储

条目四:数据加工

条目四:数据加工

条目五:外部项

条目五:外部项

三、写在最后

关于数据流图和数据字典的案例分析就讲到这里啦!大家可以根据上一篇文章和这一篇文章连在一起结合学习。如有需要了解软件工程相关的其他内容,可到『软件工程』栏目进行查看学习~

同时,有不理解或有误的地方也欢迎评论区评论或私信我交流~

  • 关注公众号 星期一研究室 ,不定期分享学习干货,学习路上不迷路~
  • 如果这篇文章对你有用,记得点个赞加个关注再走哦~

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

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

相关文章

MongoDB最新4.2.7版本三分片集群修改IP实操演练

背景重新组网,需要对现有MongoDB分片集群服务器的IP进行更改,因此也需要对MongoDB分片集群的IP也进行相应的更新,而MongoDB分片集群的IP修改不能单纯的通过配置来进行,需要一番折腾后才能正常更新,这里对整个MongoDB集…

浅谈Web前端安全策略xss和csrf,及又该如何预防?

Web前端安全策略xss和csrf的攻击和防御一、XSS跨站请求攻击1、什么是XSS2、场景模拟3、XSS的攻击类型4、如何防御XSS二、XSRF跨站请求伪造1、什么是csrf2、场景模拟(1)场景一(2)场景二3、CSRF的特点4、CSRF攻击方式5、CSRF常见的攻…

leetcode209. 长度最小的子数组(暴力+滑动窗口)

一:题目 二:暴力滑动窗口 1:暴力解法 class Solution { public:int min (int a ,int b){return a < b ? a : b;}int minSubArrayLen(int target, vector<int>& nums) {int minx 100001;for(int i 0; i < nums.size(); i){vector<int> v;int sum nu…

做权限认证,还不了解IdentityServer4?不二话,赶紧拥抱吧,.NET Core官方推荐!...

目前大多数的应用程序或多或少看起来是上图所示这样的&#xff0c;最常见的交互场景有&#xff08;浏览器与Web应用程序、Web应用程序与WebApi通讯、本地应用程序狱WebApi通讯、基于浏览器的应用程序与WebApi 通讯、基本服务器的应用程序与WebApi通讯、WebApi与WebApi通讯&…

leetcode 904:水果成篮(滑动窗口)

一:题目 二:思路 1.用两个篮子装进两个数&#xff0c;后面只能装入这两个相同的数,并统计个数;如果遇到其他数,则重新开始计数&#xff0c; 这里的重新开始计数指的是在去除第一个篮子中所装进的数 2.滑动窗口来做 滑动窗口的起始位置为:数组的起始位置 滑动体为 统计的个数 滑…

真・WPF 按钮拖动和调整大小

真・WPF 按钮拖动和调整大小独立观察员 2020 年 8 月 29 日手头有个 Winform 程序&#xff0c;是使用动态生成按钮&#xff0c;然后拖动、调整大小&#xff0c;以此来记录一些坐标数据&#xff0c;最后保存坐标数据的。在数据量&#xff08;按钮数量&#xff09;比较小的时候是…

『软件工程11』结构化系统设计:解决软件“怎么做”问题

结构化系统设计——解决软件“做什么”问题一、设计的目标和任务1、目标2、任务3、开发阶段的信息流4、软件设计的重要性5、软件设计的技术观点和管理观点二、设计基础1、结构图&#xff08;体系结构图、模块结构图&#xff09;&#xff08;1&#xff09;分析结构图三者间的关系…

map容器中删除一个元素(value)

一:问题描述 我们想要删除map容器中&#xff0c;一个key值对应的vlaue 二&#xff1a;上码 #include<iostream> #include<map> #include<vector> using namespace std; int main(){map<int,int> m;for(int i 0; i < 4; i){m[i] i1;}//正常输出 …

.Net5发布在即,当心技术断层!

就在上周&#xff0c;.NET5的最后一个预览版&#xff0c;.NET5 Preview.8发布了&#xff0c;更新内容只有几个小bug的修复&#xff0c;已完成.NET5正式版的最后准备&#xff0c;.NET5即将正式面世&#xff01;时光荏苒&#xff0c;回首2016年发布.NET Core1.0至今&#xff0c;已…

『软件测试4』耗子尾汁!2021年了,你还不知道这4种白盒测试方法吗?

软件测试——详解白盒测试基本概念&#xff0c;四种白盒测试方法一、白盒测试基本概念1、白盒测试的定义2、白盒测试的测试对象3、白盒测试的原则4、白盒测试的分类二、静态白盒测试1、代码检查法&#xff08;1&#xff09;代码审查的定义&#xff08;2&#xff09;代码审查的目…

leetcode76:最小覆盖字串(滑动窗口)

一&#xff1a;题目 二:思路 思路拿别人的&#xff0c;感觉写的很nice!! 渣渣杰只能膜拜大佬的了 1.滑动窗口的思想&#xff1a; left 指针和 ring 指针&#xff0c;保证两个指针之间的字符串包含所需要的全部字符。 2在保证 1 的前提下&#xff0c; 向右移动 left&#x…

Orleans 知多少 | Orleans 中文文档上线

Orleans 简介Orleans是一个跨平台框架&#xff0c;用于构建健壮&#xff0c;可扩展的分布式应用程序Orleans建立在.NET开发人员生产力的基础上&#xff0c;并将其带入了分布式应用程序的世界&#xff0c;例如云服务。Orleans可从单个本地服务器扩展到云中全局分布的高可用性应用…

『软件工程12』软件工程实践方法——软件测试

软件工程实践方法—— 软件测试一、软件测试概述1、软件测试的目的&#xff08;1&#xff09;从用户和开发者角度&#xff08;2&#xff09;Myers软件测试目的2、软件测试的原则3、软件测试的对象4、测试信息流5、测试与软件开发各阶段的关系二、软件测试用例1、黑盒测试概述2、…

leetcode59:螺旋矩阵||(思路+详解)

一:题目 二&#xff1a;思路 1.我们需要模拟数字的变化过程, 2.模拟填充的过程:(顺时针) 填充上行 从左到右 填充右行 从上到下 填充下行 从右向左 填充左行 从下到上 3.分析我们填充数字的过程&#xff0c;比如n3的时候 上行:1,2 右行:3,4 下行:5,6 左行:7,8 这么分析下来我们…

在香蕉派的树莓派系统上配置 Syncthing 自启动(暨 Linux 软件自启服务配置)

在香蕉派的树莓派系统上配置 Syncthing 自启动独立观察员 2020 年 1 月 19 日&#xff08;2020年8月30日 更新&#xff09;首先做个名词解释&#xff0c;” 香蕉派” 是国内一款山寨树莓派的硬件产品&#xff0c;” 树莓派系统” 指的是”raspberrypi”&#xff0c;而”Syncthi…

『软件工程13』浅谈面向对象方法,统一建模语言UML

浅谈面向对象方法UML一、UML的含义二、UML的主要内容1、UML的概念模型2、UML概念模型图例三、UML的基本构造块1、UML中的事物&#xff08;1&#xff09;UML中的四种事物&#xff08;2&#xff09;UML中各种事物的图示法2、UML中的四种关系&#xff08;1&#xff09;依赖&#x…

leetcode54:螺旋矩阵

一:题目 二&#xff1a;上码 class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> ans;int startx 0,starty 0;int n matrix.size();//求出行int m matrix[0].size();//求出列int loop m/2 < n/…

查漏补缺方为上策!!两万六字总结vue的基本使用和高级特性,周边插件vuex和vue-router任你挑选

vue的基本使用和高级特性&#xff0c;周边插件vuex和vue-router一、vue的使用1、vue-cli2、基本使用&#xff08;1&#xff09;模板&#xff08;插值&#xff0c;指令&#xff09;&#xff08;2&#xff09;computed和watch&#xff08;3&#xff09;class和style&#xff08;4…

数据库单表千万行 LIKE 搜索优化手记

我们经常在数据库中使用 LIKE 操作符来完成对数据的模糊搜索&#xff0c;LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。如果需要查找客户表中所有姓氏是“张”的数据&#xff0c;可以使用下面的 SQL 语句&#xff1a;SELECT * FROM Customer WHERE Name LIKE 张%如果需要…

Mybatis第一个程序

一:整体流程 这个流程可以根据官方文档进行编写 mybatis的官方文档 二:实现 1:创建一个表 CREATE DATABASE mybatis;CREATE TABLE user(id INT NOT NULL PRIMARY KEY,name VARCHAR(30) NOT NULL DEFAULT ,pwd VARCHAR(20) NOT NULL DEFAULT )ENGINE INNODB;INSERT I…