软件工程(数据流图例题详解)

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

数据流图有4种成分:

1、源点和终点

2、处理

3、数据存储

4、数据流

因此,第一步可以从问题描述中提取数据流图的4种成分:

①首先考虑数据的源点和终点,从上面对系统的描述可以知道“采购部每天需要一张订货报表”,“通过放在仓库中的CRT终端把事务报告给订货系统”,所以采购员是数据终点,而仓库管理员是数据源点。

②接下来考虑处理,再次一次阅读问题描述,“采购部需要报表”,显然他们还没有这种报表,因此必须有一个产生报表的处理。事务的后果是改变零件库存量,然而任何改变数据的操作都是处理,因此对事物进行的加工是另一个处理。

③最后,考虑数据流和数据存储:系统把订单报表送给采购部,因此订货报表是一个数据流;事务需要从仓库送到系统中,显然事务是另一个数据流。产生报表和处理事务这两个在时间上明显不匹配———每当有一个事务发生时立即处理它,然而每天只产生一次订货报表。因此,用来产生订货报表的数据必须存放一段时间,也就是应该有应该数据存储

组成数据流图的元素可以从描述问题的信息中提取出来

源点/终点处理

采购员

仓库管理员

产生报表

处理事务

数据流数据存储

订货报表

    零件编号

    零件名称

    订货数量

    目前价格

    主要供应者

    次要供应者

事务

    零件编号

    事务类型

    数量

订货信息

库存清单

     零件编号

     库存量

     库存量临界值

 

  

一旦把数据流图的4种成分都分离出来以后,就可以画数据流图了,但是,怎样开始画呢?

注意:数据流图是系统的逻辑模型,然而任何计算机系统实质上都是信息处理系统,也就是说计算机系统本质上都是把输入数据变换成输出数据。因此,任何系统的基本模型都是由若干数据源点/终点以及一个处理组成,这个处理就代表了系统对数据加工变换的基本功能。

 从基本系统模型这样非常高的层次开始画数据流图是一个好办法。在这个高层次的数据流图上是否列出了所有给定的数据终点/源点一目了然,因此它是很有价值的通信工具。

然而,订货系统的基本系统模型图毕竟太抽象,从这张图对订货系统所能代表的信息非常有限。下一步应该把基本系统模型细化,描绘系统的主要功能。从信息表中可得,“产生报表”和“处理事务”是系统必须完成的两个主要功能,它们将代替订货系统的基本系统模型图中的订货系统,此外,细化后的数据流图还增加了两个数据存储:处理事务需要“库存清单“数据;产生报表和处理事务在不同时间进行,因此需要存储”订单信息“。除了订货系统的基本系统模型图中列出的两数据流之外,还有另外两个数据流,它们与数据存储相同。这是因为从应该数据存储中取出来的或放进去的数据通常和原来数据相同,也就是说,数据存储和数据流只不过是同样的数据的两种不同的形式。

订货系统的功能级数据流图

接下来应该对功能级数据图中描述的系统主要功能进一步细化。考虑通过系统的逻辑数据流:当发送一个事务时必须首先接收它;随后按照事务的内部修改库存清单;最后如果更新后的库存量少于库存量临界值时,则应该再次订货,也就是要处理订货信息。因此,把“处理事务”这个功能分解为下述3个步骤,这在逻辑上是合理的:“接受事务”,"更新库存清单","处理事务"。

为什么不进一步分解“产生报表”这个功能呢?订货报表中需要的数据在存储的订货信息中全部都有,产生报表只不过是按一定顺序排列这些信息,再按一定格式打印出来。然而这些考虑纯属具体实现的细节,不应该在数据流图中表现。同样道理。对“接收事务”或“更新库存清单”等功能也没有必要进一步细化。总之,当进一步分解将涉及如何具体实现一个功能时就不应该再分解了。

当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入输出数据流必须相同

此外还要注意图中处理编号的方法。处理1.1,1.2和1.3是更高层次的数据流图中处理1的组成元素。如果处理2被进一步分解,它的组成元素的编号将是2.1,2.2,……;如果把处理1.1进一步分解,则将得到编号为1.1.1,1.1.2,……的处理。

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

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

相关文章

软件工程(数据流图的命名、用途和自动化边界)

数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性。因此,给这些成分起名字时应该仔细推敲。 命名 1.为数据流(或数据存储)命名 (1)名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分。 (2)不要使用空洞的…

Qt图形界面编程入门(Qt的历史、Qt安装资源链接、Qt Creator简介)

Qt的历史渊源 Qt是1991年由挪威的奇趣科技(Trolltech)公司开发的跨平台C图形用户界面(GUI)用程序开发框架,2008年,奇趣科技公司被诺基亚公可收购,Qt也因此成为诺基亚公司旗下的编程语言工具,曾称霸一时的Symbian手机操作系统就是…

Qt图形界面编程入门(创建一个简单的程序)

1,手工编码方式 利用手工编码方式建立“Hello Qt!”程序 第一步: 得到界面 2,无UI的向导方式 从图中,我们发现向导为窗口程序提供了3个基类,分别外QMainWindow、QWidget、QDialog,3个基类的区…

Linux基础(Vim编辑器与Shell命令脚本)

1、Vim文本编辑器 Vim文本编辑器有三种模式 命令模型:控制光标移动,可对文本进行复制、粘贴、删除和查找得等工作。 输入模式:正常的文本录入 末行模式:保存或退出文档,以及设置编辑环境。 在每次运行Vim编辑器时&…

Python二级笔记(17)

操作题: 1,接收用户输入的一个浮点数,输出这个浮点数的小数部分各字符的和,以10为宽度,靠右显示,,采用星号*填充。 代码: s input("请输入一个小数:") s s[::1] cs () for c in…

Python二级笔记(18,19合集操作篇)

操作题: 1,键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为25个字符,等号字符()填充,右对齐,带千位分隔符。如果输入正整数超过25位,则按照真实长度输…

Qt图形界面编程入门(信号和槽通信机制)

信号和槽机制是Qt的核心机制,可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信。 声明了信号的对象,当其状态改变时,信号就由该对象发送出去,而且该对象只负责发送信号,它不知道另一端是谁在…

Python二级笔记(18,19合集知识点篇)

知识点: 1,软件测试的目的是发现程序中的错误。调试是作为成功测试的后过而出现的步骤,也就是,调试是在测试发现错误之后排除错误的过程。软件调试的任务是诊断和改成程序中的错误。 2,深度等于控制的层数 3&#x…

Linux基础(用户身份和文件权限)

用户身份与能力 Linux是一个多用户、多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux系统安全则是一系列复杂的配置工作。 Linux系统的管理员之所以是root,并不是因为它的名字叫root,而是因为该用户的身份号码即UID…

TensorFlow实验(1)

实验1-2 搭建深度学习开发环境 1)安装Anaconda 2)创建虚拟环境: 3)激活环境 4)安装tensorflow 5)安装jupyter notebook 安装完成之后,运行第一个程序“Hello,World” 要求:详细安装步骤&…

TensorFlow实验(2)

实验3-4 数据结构-张量 1)已知两个张量[1,3,5,7]和[2,4,4,8],编写一个模型,计算两个张量的加法,输出结果,并在tensorboard中显示 2)已知张量[1,2,3,4,5,6,7,8,9,10,11,12]有12个元素,利用tf.reshape()将其…

Linux基础(文件权限续篇)

文件的特殊权限 在复杂多变的生产环境中,单纯设置文件的rwx权限无法满足我们对安全和灵活性的需求,因此便有了SUID,SGID,SBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现…

Linux基础(存储结构和磁盘划分)

一切从“/”开始 在Linux系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件,一切皆为件 与windows操作系统不同,Linux系统内不存在C/D/E/F盘等,一切文件都是从根(/)目录开始的 Linux系统…

软件工程(需求分析)

需求分析 为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深人理解是软件开发工作获得成功的前提条件,不论人们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望.给开发者带来烦恼。 需求分析是软…

TensorFlow构建二维数据拟合模型(1)

知识图谱 TensorFlow运行机制 TensorFlow是基于计算图的深度学习编程模型 Tensor表示张量,其实质上是某种类型的多维数组 Flow表示基于数据流图的计算,实质上是张量在不同节点间的转化过程。 在TensorFlow中,计算图中的节点称为OP&…

Qt图形界面编程入门(标签与槽机制习题分享)

标签对象初始显示0&#xff0c;每次单击标签对象后&#xff0c;其显示内容就加1&#xff0c;依次变为1、2、3等。 #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #include <QPushButton> //包含命令按钮类 #include "MyLabel.h"class Dialo…

js中执行到一个if就停止的代码_Node 中如何引入一个模块及其细节

在 node 环境中&#xff0c;有两个内置的全局变量无需引入即可直接使用&#xff0c;并且无处不见&#xff0c;它们构成了 nodejs 的模块体系: module 与 require。以下是一个简单的示例const fs require(fs)const add (x, y) > x ymodule.exports add虽然它们在平常使用…

二级MS Office公共基础知识错题本(1)

1&#xff0c;顺序程序具有顺序性、封闭性和可再现性的特点&#xff0c;不具备并发性 2&#xff0c;为了降低算法的空间复杂度&#xff0c;主要应减少输入数据所占的存储空间以及额外空间&#xff0c;通常采用压编存储技术。 3&#xff0c;树的总的结点数为树中所有结点的度数…

c++ file* 句柄泄漏_C++核心指南:P.8 勿泄漏任务资源

P.8: 勿泄漏任务资源原因随着时间的推移&#xff0c;即使是资源的缓慢增长也会耗尽这些资源的可用性&#xff0c;这对于长时间运行的程序特别重要&#xff0c;但也是负责任的编程行为的基本部分。糟糕的例子void f(char* name){ FILE* input fopen(name, "r"); // .…

数据规范化、实体-联系图、状态转换图、层次方框图、Warnier图、IPO图及验证软件需求

数据规范化 软件系统经常使用各种长期保存的信息&#xff0c;这些信息通常以一定方式组织并存储在数据库或文件中&#xff0c;为减少数据冗余&#xff0c;避免出现插入异常或删除异常&#xff0c;简化修改数据的过程,通常需要把数据结构规范化。 通常用“范式(normal forms)”…