软件工程期末复习(9)数据流图

数据流图

结构化分析方法:

结构化分析方法最初由Douglas Ross提出,由DeMarco推广,

由Ward和Mellor以及后来的Hatley和Pirbhai扩充,形成了今天的结构化分析方法的框架。

结构化分析方法的分析模型: 

  • 核心:数据字典
  • 实体关系图(ERD):描述数据对象和对象之间的关系——数据建模
  • 数据流图(DFD):描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能)——功能建模
  • 状态变迁图(STD):描述系统对外部事件如何响应,如何动作——行为建模

传统化结构分析方法: 

  • 面向数据流进行需求分析的方法。
  • 传统结构化分析方法适合于数据处理类型软件的需求分析。
  • 具体来说,传统结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。
  • 传统结构化分析方法使用工具:
    • 数据流图(Data Flow Diagram)
    • 数据词典(Data Dictionary)
    • Warnier图
    • 结构化英语
    • 判定表与判定树
    • IPO图

DFD的符号:

源点和终点:

源点和终点是系统之外的实体,可以是人、物或其他软件系统。源点和终点是为了帮助理解系统接口而引入的。

加工/变换:

对数据进行处理的单元。在分层数据流图中,要对加工进行编号,以便于管理。加工也要选取适当的名字,以提高数据流图的易读性。

数据流:

文件 :

  • 用来暂时存储数据的。
  • 如果加工要读文件,则数据流的方向是从文件到加工;
  • 如果加工要写文件,则数据流的方向是从加工到文件;
  • 如果加工既要读文件又要写文件,则数据流的方向是双向的。

数据流图的层次结构: 

  • 为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。

  • 按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。

自顶向下逐层画数据流图的步骤:

1. 首先建立顶层的数据流图基本系统模型),其中只含有一个代表目标软件系统整体处理功能的转换。根据软件系统与外部环境的关系确定顶层数据流图中的外部实体以及它们与软件系统之间的数据流。

2. 画系统的内部:将顶层图中的处理分解成若干个处理,并用数据流将这些处理连接起来,使得顶层图中的输入数据流经一连串的加工处理后变换成顶层图中的输出数据流。这张图称为1层数据流图。又称为系统功能级数据流图。

3. 画处理的内部:把每一个处理看作一个小系统,该处理的输入输出数据流看成小系统的输入输出数据流,于是可以用画1层图同样的方法画出每个处理的DFD子图。

4. 对第3步分解出来的DFD子图中的每个处理重复第3步的分解,直至图中尚未分解的处理都足够简单为止。到此得到了一套分层的数据流图。

分层的数据流图:

为分层数据流图和加工编号的原则:   

         (1)子图的图号就是分解的父图中加工的编号   

         (2)子图中的加工的编号是由子图号、小数点,局部顺序号组成

例1:订货系统

假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下列数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存量少于库存量临界值时就应再次定货。

第一步:

  • 确定系统的源点和终点
    • 仓库管理员是数据的源点;
    • 采购员是数据的终点。
  • 处理(加工)
    • 应该完成定货系统这样一个功能。
  • 数据流
    • 事务需从仓库送到系统中,显然事务是一个数据流;
    • 系统要把定货报表送给采购部,定货报表也是一个数据流。

第二步:

  • 将处理(加工)——定货系统进行功能分解成事务处理产生报表两部分;
  • 考虑有关数据存储问题,题中涉及到存储的信息有:库存清单、定货信息;

第三步:

  • 将事务处理进一步分解为接收事务更新库存清单处理定货三部分。
  • 画出事务处理功能分解后的数据流图。

例2:教育基金会的捐助资金管理系统

  • 由捐助者向基金会提出捐助请求,经身份确认后被接受,对捐助人进行登记并授予捐助证书,捐款存入银行。
  • 由教育单位提出用款申请,在进行相应的合法性校验和核对相应的捐款储备后做出支出。
  • 每月给基金会的理事会一份财政状况报表,列出本月的收入和支出情况和资金余额。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot实现文件防盗链设计

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 个人IP:shigen 👋👋👋hello,伙伴们好久不见&…

IO系列(四) - RandomAccessFile 类解读

一、摘要 RandomAccessFile 类,也被称为随机访问文件类。 RandomAccessFile 可以说是 Java 体系中功能最为丰富的文件操作类,相比之前介绍的通过字节流或者字符流接口方式读写文件,RandomAccessFile 类可以跳转到文件的任意位置处进行读写数…

开源连锁收银系统哪个好

针对开源连锁收银系统的选择,商淘云是一个备受关注的候选。商淘云以其功能丰富、易于定制和稳定性等优势,吸引了众多企业和开发者的关注。下面将从四个方面探讨商淘云开源连锁收银系统的优势: 首先,商淘云提供了丰富的功能模块。作…

CNN卷积神经网络初学

1.为什么要学CNN 在传统神经网络中,我们要识别下图红色框中的图像时,我们很可能识别不出来,因为这六张图的位置都不通,计算机无法分辨出他们其实是一种形状或物体。 这是传统的神经网络图,通过权重调整神经元和神经元…

C++学习一(主要对cin的理解)

#include<iostream> int main() {int sum 0, value 0;//读取数据直到遇到文件尾&#xff0c;计算所有读入的值的和while (std::cin >> value){ //等价于sumsumvaluesum value;}std::cout << "Sum is :" << sum << std::endl;sum …

OPC-UA open62541 C++测试代码

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 这是之前写的open62541测试代码…

机器人计算力矩控制

反馈线性化&#xff1a; 反馈线性化是一种控制系统设计方法&#xff0c;其目标是通过状态空间的坐标变换和控制变换&#xff0c;使得非线性系统的输入-状态映射或输入-输出映射反馈等价于线性系统。这样&#xff0c;就可以应用线性系统的控制理论来实现非线性系统的控制。在机…

【Redis】数据类型

Redis数据类型&#xff08;5 3 1&#xff09; 五种基本数据类型 String字符串 特点 二进制安全&#xff0c;可以包含任何数据&#xff0c;如数字&#xff0c;字符串&#xff0c;jpg图片或者序列化的对象 应用场景 缓存&#xff1a; redis作为缓存层&#xff0c;mysql做持…

Java项目:基于ssm框架实现的房屋租售网站管理系统(房屋租赁和房屋出售一体)(B/S架构+源码+数据库+毕业论文+开题+任务书)

一、项目简介 本项目是一套基于ssm框架实现的房屋租售网站管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

2024年5月16日 十二生肖 今日运势

小运播报&#xff1a;2024年5月16日&#xff0c;星期四&#xff0c;农历四月初九 &#xff08;甲辰年己巳月庚辰日&#xff09;&#xff0c;法定工作日。 红榜生肖&#xff1a;猴、鼠、鸡 需要注意&#xff1a;牛、兔、狗 喜神方位&#xff1a;西北方 财神方位&#xff1a;…

Py深度学习基础|关于Batch Normalization

1. 为什么需要Batch Normalization 通常我们会在输入层进行数据的标准化处理&#xff0c;这是为了让模型学习到更好的特征。同样&#xff0c;在模型的中间层我们也可以进行normalize。在神经网络中, 数据分布对训练会产生影响。 比如我们使用tanh作为激活函数&#xff0c;当输入…

财富增长新途径:副业赚钱方法全攻略

探寻财富之路:多元化赚钱途径解析 在追求财富的道路上,每个人都在以自己的方式前行。然而,正如古人所云:“君子爱财,取之有道。”今天,我将为您揭示一些新颖且实用的赚钱途径,希望能为您的财富积累之路注入新的活力。 1、视频内容的创作与分享 在这个视频内容为王的时…

ROS 2边学边练(48)-- 将URDF与robot_state_publisher一起使用

前言 本篇将完成一个行走的机器人&#xff0c;并以tf2消息的方式实时发布机器人状态&#xff0c;以便我们在Rviz中同步查看。 首先&#xff0c;我们创建描述机器人装配的URDF模型。接下来&#xff0c;我们编写一个节点&#xff0c;用于模拟运动并发布JointState和位姿变换。然后…

暴力数据结构之二叉树(堆的相关知识)

1. 堆的基本了解 堆&#xff08;heap&#xff09;是计算机科学中一种特殊的数据结构&#xff0c;通常被视为一个完全二叉树&#xff0c;并且可以用数组来存储。堆的主要应用是在一组变化频繁&#xff08;增删查改的频率较高&#xff09;的数据集中查找最值。堆分为大根堆和小根…

Pathlib,一个不怕迷路的 Python 向导

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 一个简单的库&#xff0c;也许能够开启我们的智慧之门&#xff0c; 一个普通的方法&#xff0c;也许能在危急时刻挽救我们于水深火热&#xff0c; 一个新颖的思维方式&#xff0c;也许能…

vs2019 c++里用 typeid() . name () 与 typeid() . raw_name () 测试数据类型的区别

&#xff08;1&#xff09; 都知道&#xff0c;在 vs2019 里用 typeid 打印的类型不大准&#xff0c;会主动去掉一些修饰符&#xff0c; const 和引用 修饰符会被去掉。但也可以给咱们验证学到的代码知识提供一些参考。那么今天发现其还有 raw_name 成员函数&#xff0c;这个函…

pandas 读取Excel中有行名、列名的数据中的每个元素

读取Excel中有行名、列名的数据中的每个元素,使用pandas,Excel中的内容示例如下&#xff1a; 读取代码如下&#xff1a; def read_xlsx(file ):""" Excel矩阵数据读取 """try:df pd.read_excel(file)# 使用iterrows()方法迭代行for index, ro…

gitlab webhook触发jenkins任务

配置jenkins 安装gitlab插件 配置jenkins job 选择gitlab webhook触发 在高级中生成token 代码仓设置 新增webhook 配置webhook 测试连接 缺点&#xff0c;不能带gitLab事件的参数&#xff01;&#xff01;&#xff01;

如何向全国各大新闻网站投稿?

在信息爆炸的时代,新闻媒体的投稿工作对于单位的信息宣传员来说,既是一项重要的职责,也是一项充满挑战的任务。作为一名信息宣传员,我负责着单位的对外信息宣传投稿工作,每个月都需要在各大媒体上发表文章,以展示单位的成果和风采。 然而,刚开始的投稿之路并不顺畅。我习惯性地…

聊聊数据库索引

一、索引类型介绍 索引是对数据库表中一列或多列的值进行排序的一种结构。 一个非常恰当的比喻就是书的目录页与书的正文内容之间的关系&#xff0c;为了方便查找书中的内容&#xff0c;通过对内容建立索引是对数据库表中一列或多列的值进行排序的一种结构。 索引形成目录。索…