精华内容
下载资源
问答
  • 软件工程:数据流图和结构怎么

    万次阅读 多人点赞 2020-09-01 18:43:03
    文章目录Step 1:根据软件的功能描述,绘制数据流图:Step 2:根据数据流图,分级绘制结构:•边界划分:•第一级分解:•第二级分解:•精化减少耦合: Step 1:根据软件的功能描述,绘制数据流图: 问题表述: ...

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,(ノ´▽`)ノ♪-》点击这里->一个宝藏级人工智能教程网站

    Step 1:根据软件的功能描述,绘制数据流图:

    问题表述

    假设的仪表板将完成下述功能:(1) 通过模数转换实现传感器微处理机接口;(2) 在发光二极管面板显示数据;(3) 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;(4) 指示加速减速;(5) 超速警告:如果车速超过55英里/小时,则发出超速警告铃声。

    首先了解数据流图的4种基本符号

    在这里插入图片描述

    然后,对从问题描述中提取数据流图的4种成分

    数据流图的成分 映射—>方法或实体
    数据处理: 读取(轮胎)旋转信号,读取(尾气)燃料流信号,计算gph,计算燃料消耗mpg,计算里程,产生mpg显示,产生mpg显示,产生里程显示,发出超速警告,产生加速/减速显示等等。
    数据源点: 传感器
    数据终点: 发光二极管面板
    数据存储文件:
    数据流: (轮胎)旋转信号,(尾气)燃料流信号,每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等。

    难点在于我们是否在进行问题的描述之后对问题的流程有详细的理解我们很难通过单一的问题描述去把所有的数据流图的成分去映射完整,从而对问题的描述到实际的系统流程设计发生概念性的理解错误

    总而言之,对问题的描述部分的理解决定了一个系统的框架走向,因此,对问题的描述进行深入的咨询专业人士在实际的工业生产中也是必不可少的

    在这里插入图片描述

    是的,我们只考虑系统的设计部分,省略了数据源点和数据终点。术业有专攻,在实际的数据流图的绘制中加入了一些我们外行人根本看不懂的东西(“读和校验”,“收集和求平均”等等),学习的是思想,切勿纠结于细枝末节,我们继续,看完我们会有所收获的

    在这里插入图片描述

    伏尔泰说过,常识并不是大家都知道的,常见的东西。

    Step 2:根据数据流图,分级绘制结构图:

    •边界划分:

    接下来,确定输入流和输出流的边界,从而孤立出变换中心

    在这里插入图片描述

    •第一级分解:

    软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程(说白了,就是把系统分成3个部分,输入部分,转换处理部分,输出部分):

    在这里插入图片描述

    •第二级分解:

    把数据流图中的每个处理映射成软件结构中一个适当的模块(说白了,就是针对已经划分好的输入部分,转换处理部分,输出部分进行内部的结构划分):

    以“接收传感器信号”部分为例,进行结构图的绘制,仔细观察结构图的层次关系,不就是把数据流图中接收传感器信号的部分按箭头顺序拎起来了嘛??是这样吧<—doge.gif)

    在这里插入图片描述

    “数据转换控制”的结构图如下:

    在这里插入图片描述

    “驱动仪表板”的结构图如下:

    在这里插入图片描述

    •精化减少耦合:

    软件结构进一步精化,对初步分割得到的模块进行再分解或合并

    具体到数字仪表板的例子,可做如下某些可能的修改:(1)输入结构中的模块“转换成rpm”和“收集sps”可以合并;(2)模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合;(3)模块“加速/减速显示”可以相应地放在模块“显示mph”的下面

    在这里插入图片描述

    •添加数据/控制信号流向:

    结构图中一个方框代表一个模块,框内注明模块的名字或主要功能。

    方框之间的箭头(或直线)表示模块的调用关系。位于上方的方框代表的模块调用下方的模块。(尾部是空心圆表示传递的是数据。实心圆表示传递的是控制信息。)
    在这里插入图片描述

    最后,希望这篇博文对你有实际的帮助和加深理解。软件工程,画图并不难,难的是如何将问题描述转化为项目功能的具体需求,难的是结构的设计和统筹

    都看到这里了,确定不点赞收藏再走嘛==(ಥ_ಥ)== !

    在这里插入图片描述

    展开全文
  • 数据流——从软考真题中学画数据流图DFD

    千次阅读 多人点赞 2019-03-28 16:27:45
    (2)画数据流而不要画控制流。 (3)每条数据流的输入或者输出是加工。 (4)—个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。 (5)允许一个加工有多条数据流流向另一个加工,也允许一个加工有...

    题目

    建议将题目复制到word后与此文分屏查看。后面需要多次查看题目。

    某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,
    其主要功能描述如下:
    1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程
    	的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
    2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
    3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确
    	认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课
    	程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的
    	单元相对应,如果是,那么这些成绩是有效的,否则无效。
    4. 对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存
    	在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,
    	系统不会处理这些成绩。
    5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成
    	通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的
    	成绩列表,用来提交考试委员会审查。
    6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。
    	主讲教师须将核对之后的成绩报告返还系统。
    7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审
    	查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成
    	绩,系统将会生成最终的成绩单,并通知每个选课学生。
    现采用结构化方法对这个系统进行分析与设计,得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。  
    


      
      图1-1
      顶层数据流图
      

      

     
      图1-2
      0层数据流图
      

    【问题1】(4分)
      使用说明中的词语,给出图1-1中的外部实体E1~E4的名称。
    【问题2】(3分)
      使用说明中的词语,给出图1-2中的数据存储D1~D5的名称。
    【问题3】(6分)
      数据流图1-2缺少了三条数据流,根据说明及数据流图1-1提供的信息,
      分别指出这三条数据流的起点和终点。
    【问题4】(2分)
      数据流图是在系统分析与总体设计阶段宏观地描述系统功能需求的重要图形化工具,程序流
      程图也是软件开发过程中比较常用的图形化工具。简要说明程序流程图的适用场合与作用。
    

    画顶层图

    我们先不看给出的图,凭借题目给出的信息自己画图,先是顶层图,画顶层图步骤有3步:
    1.将软件系统看作加工,
    2.确定外部实体,
    3.画出数据流
    找到题目中的软件系统,题目第一句就可以看到“成绩管理系统”

    浏览题目一遍,不难找出所有外部实体

    根据各个外部实体与软件系统进行的交互操作,可以得到数据流

    与题目给出的图对比
    在这里插入图片描述
    【问题1】的答案就已经出来了,很明显E1为考试委员会,E2为主讲教师,E3为学生,E4为教务处。

    画0层图

    接下来是画0层图,0层图作画步骤:
    1.细分顶层图的加工
    2.数据流连接加工
    再次从头开始看全文,看到第3句,
    在记录学生成绩之前,系统需要验证这些成绩是否有效
    这里之前是被我们忽略掉的,在画顶层图时,这里算作总的成绩管理系统的加工,现在需要细分成绩管理系统了,我们就需要把此系统的功能提取出来——命名为“验证成绩”的加工。

    继续往后看,到第4句
    对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。
    这里我们又看到系统的两个功能,“保存课程成绩文件”与“保存无效成绩文件”,也就是两个加工。

    继续看到第5句
    若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表
    前面的“系统会发送课程完成通知给教务处”,明显是数据流而不算作是功能,后面的“请求系统生成相应的成绩列表”才体现出功能,我们命此加工为“生成成绩列表”。

    直到最后的一句
    “系统将会生成最终的成绩单,并通知每个选课学生。”
    可见又是一个加工,我们命名为“生成成绩单”

    下面要做是补全数据流
    所有这些加工实质就是整体的软件系统的加工,所以可以先把顶层图的数据流照搬过来

    这里注意每条数据流要对应好加工,图中省略了外部实体,这没关系。
    然后加上数据存储文件

    画到这一步并没有完,有部分数据流并没表示出来,比如保存课程成绩文件与保存无效成绩文件的数据输入还有生成成绩单的数据输入流,但没关系,解第二题足够了,若把所有数据流加上那第三题就迎刃而解了。在这里插入图片描述
    【问题2】答案
    D1就是学生信息文件夹
    D2为课程单元信息文件
    D3为课程信息文件
    D4为课程成绩文件(图中我命名为了 有效成绩文件)
    D5为无效成绩文件

    第一次画就是上图那样不能掌握布局所以很乱,第二次画时根据这张图规划好布局就可以画得更工整了
    【问题3】
    第一条数据流:由说明的第5条可知,生成成绩列表时,是需要从课程成绩文件中获取信息的,“课程成绩文件”是图中的D4。而D4和加工4之间并没有数据流,因此这就是一条缺失的数据流。
      第二条数据流:生成成绩单时是需要学生信息的。且不符合数据输入输出平衡(文末有相关知识),加工5应该从D1中获取相应的信息,这样就找到了第二条数据流。
      第三条数据流:说明的第7句告诉我们,只有“对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生”。也就是说,从成绩列表到成绩单的生成是有条件的。这意味着,在加工4和加工5之间应该存在一条数据流,这就是第3条数据流。
    所以完整的0层图应如下图所示
    在这里插入图片描述

    解题技巧

    (1)适当地为数据流、加工、数据存储、外部实体命名,名字应反映该成分的实际含义, 避免空洞的名字。

    (2)画数据流而不要画控制流。

    (3)每条数据流的输入或者输出是加工。

    (4)—个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。

    (5)允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工。

    (6)保持父图与子图平衡。
    为了表达较为复杂问题的数据处理过程,用一个数据流图往往不够。一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号。对任何一层数据流图来说,称它的上层数据流图为父图,在它的下一层的数据流图为子图。也就是说,父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。值得注意的是,如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。

    (7)在自顶向下的分解过程中,若一个数据存储首次出现时只与一个加工有关,那么这个数据存储应作为这个加工的内部文件而不必画出。

    (8)保持数据守恒。
    也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。每个加工必须有输入数据流和输出数据流,反映此加工的数据来源和加工变换结果。一个加工的输出数据流只由它的输入数据流确定。数据流必须经过加工,即必须进入加工或从加工中流出。每个加工必须既有输入数据流,又有输出数据流。

    (9)在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某 一张子图中可能只有读没有写,或者只有写没有读。

    展开全文
  • 数据流的画法,如何画数据流图

    千次阅读 2020-04-15 16:19:58
    1.数据流图的定义: 数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。 数据流图英文缩写DFD(Data Flow ...

    1.数据流图的定义:

    数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。
    数据流图英文缩写DFD(Data Flow Diagram)它是描绘信息流和数据从输入移动到输出的过程中所经受的变换。数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。

    2.数据流图的基本图形元素有:
    (1)数据流
    (2)加工(处理)
    (3)文件(数据存储
    (4)数据池(数据源或终点)

    数据流是一组数据。在数据流图中数据流用带箭头的线表示,在其线旁标注数据流名。在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。


    加工(处理)
    在数据流图中加工用圆圈表示,在圆圈内写上加工名。一个处理框可以代表一系列程序、单个程序或者程序的一个模块。

    文件(数据存储)

    是按照某种规则组织起来的、长度不限的数据。在数据流图中文件用一直线表示,在线段旁注上文件名。一个数据存储也并不等同于一个文件,它可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等;

    数据池(源点和终点)

    在数据流图中用方框表示,在框内写上相应的名称。

    3.数据流图的四种基本图形符号:

     -->:箭头,表示数据流;

     〇:圆或椭圆,表示加工;

      = :双杠,表示数据存储;

     □:方框,表示数据的源点或终点。

    4.画数据流图所使用的工具:visio

    5.数据流图的画法步骤:

     

    1)确定系统的输入输出

    由于系统究竟包括哪些功能可能一时难于弄清楚,可使范围尽量大一些,把可能有的内容全部都包括进去。此时,应该向用户了解“系统从外界接受什么数据”、“系统向外界送出什么数据”等信息,然后,根据用户的答复画出数据流图的外围。

    2)由外向里画系统的顶层数据流图

    首先,将系统的输人数据和输出数据用一连串的加工连接起来。在数据流的值发生变化的地方就是一个加工。接着,给各个加工命名。然后,给加工之间的数据命名。最后,给文件命名。

    顶层流图只包含一个加工,用以表示被开发的系统,然后考虑该系统有哪些输入数据、输出数据流。顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。

    3)自顶向下逐层分解,绘出分层数据流图

    对于大型的系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示。

     

    • 分层:一般将层号从0开始编号,采用自顶向下,由外向内的原则。画0层数据流图时,分解顶层流图的系统为若干子系统,决定每个子系统间的数据接口和活动关系。
    • 编号:如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号。
    • 父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡。
    • 局部数据存储。当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。
    • 提高数据流图的易懂性。注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性

     

    例题:

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

    • 逐步分解地画出数据流图
    • 第一步,画出最概括的系统模型。因为任何系统实质上都是由若干个数据源点/终点以及一个处理组成。这个处理就代表了系统对数据加工变换的基本功能。

    对上图进行细化

    再细化一点

    勾画出边界

    命名的方法
    1)为数据流(或数据存储)命名
        A.名字应该代表整个数据流(或数据存储)的内容;
        B.不要使用空洞的、缺乏具体含义的名字(如“数据”、“输入”);
        C.如果为某个数据流(或数据存储)起名字时遇到困难,则很可能是因为对数据流图的分解不恰当造成的,应该试试重新分解数据流图;

    2)为处理命名
        A.通常先为数据流命名,然后再为与之相关联的处理命名;
        B.名字应该反映整个处理的功能;
        C.应该尽量避免空洞笼统的动词做名字,如“处理”、“加工”;
        D.通常用一个动词命名,如果必须用两个动词才能描述整个处理的功能,则可能要把这个处理分解成两个处理更恰当;
        E.如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的情况,应考虑重新分解。

    3)为数据源点/终点命名
    通常,为“数据源点/终点”命名时,采用它们在问题域中习惯使用的名字(如“仓库管理员”、“采购员”)。

    展开全文
  • 软件工程之数据流图

    千次阅读 2015-05-27 16:28:43
    数据流图强调的是数据流和处理过程,只关心系统做什么,而不关心系统怎么做;一般不考虑时序问题,即不表示过程的序列;只有数据流,没有控制流;既不反映判断和控制条件,也不反映循环过程。 1.
     数据流图
     

    数据流图( Data Flow Diagram , DFD )以图形的方式描绘数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能,所以是一种功能模型。

    数据流图强调的是数据流和处理过程,只关心系统做什么,而不关心系统怎么做;一般不考虑时序问题,即不表示过程的序列;只有数据流,没有控制流;既不反映判断和控制条件,也不反映循环过程。

    1. 数据流图的基本成分

    数据流图具有四种基本符号,即外部实体、数据流、数据处理过程和数据存储。数据流图所用的符号形状有多种,可以选择使用。表 4-5 给出了常用的符号表示。

    表 4-5数据流图的常用符号

    符号名称

    符号形状

    外部实体

    ( External Entity )

    数据流

    ( Data Flow )

    处理过程

    ( Process )

    数据存储

    ( Data Store )

    ( 1 )外部实体( External Entity )。是指在所研究的系统外独立于系统而存在的,但又和系统有联系的实体,可以是某个人员、企业、某一信息系统或某种事物,是系统的数据来源或数据终点。确定系统的外部实体,实际上就是明确系统与外部环境之间的界限,从而确定系统的范围。

    ( 2 )数据流( Data Flow )。就是一束按特定的方向从源点流到终点的数据,它指出了数据及其流动方向。数据流可以由某一外部实体产生,也可以由处理过程或数据存储产生。对每一条数据流都要给予简单的描述,以便使用户和系统设计人员能够理解它的含义。

    ( 3 )处理过程( Process )。是对数据进行变换操作,即把流向它的数据进行一定的变换处理,产生出新的数据。处理过程的名称应适当反映该处理的含义,使之容易理解。每个处理过程的编号说明该处理过程在层次分解中的位置。

    处理过程对数据的操作主要有:变换数据的结构,如将数据的格式重新排列;在原有数据内容基础上产生新的数据内容,如对数据进行累计或计算平均值。

    ( 4 )数据存储( Data Store )。数据流仅表达数据的流动方向,数据的保存则由数据存储来表达。数据存储指出了数据存储的逻辑描述。为避免数据流线条的交叉,如果在一张图中出现同样的数据存储,可在重复出现数据存储符号时再加一条竖线或左上角画一条斜线。为区别于其他数据存储,除了名称外,数据存储有一个标识(编号),一般用英文字母 D 和数字组成。

    2. 数据流图的绘制

    最初的数据流图应该真实地描绘用户当前的数据处理情况,系统分析员要将他在用户中所看到的、听到的事实如实画出来。用户目前正在使用的参数、图形、表格等资料就是“数据流”或“数据存储”,用户目前正在做的工作,如设计、图件的绘制等就是“处理”,其名称采用用户习惯上使用的名字。在刚开始时只要将实际情况真实地反映出来,而不要急于考虑系统如何实现。

    由于习惯的原因,不同的分析员往往采取不同的画法,但是一般都遵循相同的原则,即同层次由外向里、不同层次自顶向下。

    在绘制 DFD 时,首先画出系统的输入数据流和输出数据流,也就是先决定系统的范围,然后再考虑系统的内部。同样,对每个处理来说,也是先画出它们的输入输出数据流,再考虑该处理的内部,其基本步骤简述如下:

    ( 1 )画系统的输入和输出。这一步实际上是决定研究的内容和系统的范围,向用户了解“系统从外界接受什么信息和数据”,“系统向外界送出什么数据”,画在数据流图的外围。最开始并不十分清楚系统包括哪些功能,所以可以将系统的范围画得大些,即把可能的输入、输出都画进去。然后仔细分析,删除多余的部分,增添遗漏的部分。

    ( 2 )画数据流图的内部。一开始不考虑事物应当如何出现,只反映实际情况。首先找出数据流。如果有一组数据一起到达并一起处理,则应将这些数据画成一个数据流;反之,对不相关的数据,则应分成不同的数据流。找出数据流后,设法将它们与边界上的系统的输入、输出数据流连接起来,在需要对数据进行处理的地方画上处理过程。始终保持由输入到输出的方向,或者反过来,一旦在这个方向上遇到困难,就反过来处理。从开始的只代表整个系统从输入到输出的数据流中少量的处理过程开始构造 DFD 。接下来,再想像一下每个处理过程中是否存在内部的数据流,是否需要用 2 到 3 个处理过程及数据流来替换它。每个数据流应检查它的组成,来自何处,能否从输入项得到输出项。如果有数据存储,应画出相应的图示,并了解其组成及输入输出,从而可以对每一个处理过程进行改进,描述其处理过程中的细节。为了清晰可见,如果同一个数据存储多次出现,可以把它在图中多处画出来。最后,反复修改边界,消除多余,补上遗漏。

    ( 3 )为每一个数据流命名。数据流的命名与数据流图的可理解性密切相关。命名时应避免使用空洞的名字,例如“数据”、“信息”、“输出”等等,因为这些名字并没有反映出任何实质性的内容。如果发现难以命名,不妨考虑重新分解数据流或处理过程,很可能原来的组成不合适。名字要反映整个数据流的含义,而不是其中某一部分。

    ( 4 )为处理过程命名。先命名数据流,再命名处理过程,这样的次序反映了自上而下方法的特性。例如图 4-6 ( a )中,当数据流已经命名后,处理过程 P 的命名可以自然地给予“检查成绩单的合格性”;而图 4-6 ( b )中处理过程已命名,但无法为几个数据流命名。

    图 4-6 处理过程的命名

    为处理过程命名时,名字要反映整个处理过程,而不是它的一部分;名字应当是一种“动词 + 宾语”的形式;遇到不能适当命名的处理过程,要考虑重新分解。名字中只需用一个动词,如果必须用两个以上的动词,则应该将它分成几个处理过程。

    人的思考过程是一种迭代的过程,不可能一次成功,需要完善,直到满意为止。因此要随时准备放弃原有的 DFD ,用改进的 DFD 来替代,通常画 DFD 需要多次的反复。

    3. 数据流图的层次

    数据流图的建立过程必须遵循自顶向下、逐层分解的原则,这是控制系统复杂性的方法,也是细化分析的基础。逐层分解的方式不是一下子引入太多的细节,而是有控制地逐步增加细节,实现从抽象到具体的过渡,因而将有利于对问题的理解。

    用自顶向下、逐层分解的原则来画数据流图,就得到了一套分层的数据流图,分层的数据流图总是由顶层、中间层和底层组成的。

    顶层数据流图描述了整个系统的作用范围,对系统的总体功能、输入和输出进行了抽象,反映了系统和环境的关系。为了画出顶层数据流图,必须首先识别不受系统控制的但影响系统运行的外部因素,从而确定出系统的外部实体和系统的数据输入源和输出对象。

    通过对顶层图的了解、展开,将得到许多中间层的数据流图。中间层图描述了某个处理过程的分解,而它的组成部分又要进一步被分解。一个大型系统的中间层可能有七八层之多。中间层的展开应是化复杂为简单,但决不能失去原有的特性、功能和目标,而应始终保持系统的完整性和一致性。如果展开的数据流图已经基本表达了系统所有的逻辑功能和其必要的输入、输出,处理过程已经足够简单,不必再分解时,就得到了底层数据流图。底层图所描述的都是无需分解的基本处理过程。

    建立分层的数据流图,应该注意编号、父图与子图的关系、局部数据存储以及分解的程度等问题。

    ( 1 )编号。适当地给出编号,有利于系统的理解。对处理过程的编号,随着逐层展开,也应反映出它的层次关系。每一张数据流图的编号即为上层图中相应处理过程的编号,每个处理过程的编号则是本图的图号加上点号和处理过程在本图的编号。例如第一层图中处理过程的编号为 1 , 2 ,…;第二层图的编号应是 1.1 , 1.2 ,…, 2.1 , 2.2 ,…;依此方法,逐层给处理过程加上层次的序列号。

    ( 2 )父图与子图的关系。对任一层数据流图来说,称其上层图为其父图,其下层图为其子图。父图中某个处理的输入输出数据流应该与相应子图的输入输出数据流相同,层次数据流图的这种特点称为“平衡”。平衡是指子图的所有输入数据流必须是父图中相应处理的输入,子图的所有输出数据流必须是父图中相应处理的输出。

    例如,图 4-7 中的处理 3 被分解成子图中的三个子处理,所有子图中的输入和输出数据流与父图中处理 3 的输入输出完全一致。

    图 4-7局部数据存储

    ( 3 )局部数据存储。从图 4-7 可以发现,数据存储“成绩表”并没有在父图中出现。这是因为“成绩表”是完全局部于处理 3 的,它并不是父图中各处理之间的界面。根据“抽象”原则,在画父图时,只需画出父图中各个处理之间的联系,而不必画出各个处理内部的细节,所以“成绩表”不必画出。同理,数据流 L 、 M 、 N 等也不必画出。

    画出一个数据存储可参考如下原则:当数据存储被用做 DFD 中某个处理之间的界面时,该数据存储就必须画出来,一旦数据存储作为 DFD 中的一个独立成分画出来时,它与其他成分之间的联系也应同时表达出来,即应画出每个处理是读还是写该数据存储。在图 4-7 中,当处理 3 被分解成 3.1 、 3.2 和 3.3 三个子处理时,“成绩表”是处理 3.1 和 3.3 的界面,应该画出来。

    ( 4 ) 分解的程度。使用层次 DFD 就是不在一张图中把一个处理分解成它所有的基本处理。在一张图中画出过多的处理将使人难以理解,但如果每次只是将一个处理分解成 2 到 3 个处理,又可能需要过多的层次,也会带来一些麻烦。

    经验表明,人们能有效地同时处理 7 个或 7 个以下的问题。一般是一次“最多不要超过 7 个”。当然,并不能机械地套用这个经验,而应该根据实际情况来定,关键是要使 DFD 易于理解。一般应做到分解自然,概念合理、清晰,在不影响易理解性的基础上适当地多分解,以减少层次 DFD 的层数。一般来说,因为上层是一些综合性描述,分解要快些,而在下层易理解性相对重要则分解慢些。

    4. 数据流图的检查

    数据流图是否正确,可以从数据流的输入和输出、父图与子图的平衡两方面来检查。

    ( 1 )数据流的输入和输出。一个处理所产生的某个输出数据在处理变换中既没有被产生,也没有作为输入数据输入到该处理,则该数据一定是在输入过程中被遗漏了。例如,图 4-8 中“决定比赛名单”这个处理是根据输入“学生名单”和“考试科目”来产生“获奖名单”的,如果“学生名单”和“获奖名单”的组成分别如下:

    学生名单 = 专业 + 姓名 + 考试科目

    获奖名单 = 考试科目 + 姓名 + 获奖等级

    可以发现,“决定比赛名单”这个处理需要输出“获奖等级”数据,但这个处理本身并不产生“获奖等级”,而输入数据中也不包含它。可以肯定,该数据一定是在输入中被遗漏了。

    图 4-8 数据流的检查

    一个处理的某个输入既没有在处理中参加变换,也没有被输出,这可能不是错误。如果确有必要,就保留,否则去掉该数据。

    ( 2 )父图与子图的平衡。在层次 DFD 中,父图与子图不平衡的现象极易发生。当子图进行修改时,一定要及时对父图进行相应的修改,以保持平衡。

    父图与子图是否平衡,不能仅从形式上看,要考虑其真正的内容。如果父图中有一个输入,而子图中有多个输入,此时看起来似乎不平衡,但是假如父图中的这一输入的成分与子图中多个输入组成的成分相同,也认为是平衡的。在图 4-9 中,订货单 = 审批报告 + 待批订货单 + 付款单。

    图 4-9 平衡原则

    DFD 是直接与用户交流的工具,也是系统开发的基础。对于一个大型系统的理解不可能一开始就是十全十美的,要经过逐步去粗取精、去伪存真的过程。因此,在开始分析一个系统时,尽管对问题的理解并不确切,但还是可以把所理解的 DFD 画出来,然后逐步修改,以获得较高的正确性和易理解性。

    5. 数据流图的改进

    DFD 的改进可从简化处理间的联系、注意分解的均匀以及适当地命名等三个方面着手。

    ( 1 )简化处理间的联系。其基本手段是“分解”,用以控制复杂性。分解不能随心所欲地进行,否则可能反而使问题复杂化。合理的分解是将一个问题分解成相对独立的几个部分,每一部分可以单独理解,一个复杂的问题就被几个比较简单的问题取代。 DFD 中,处理间的数据流越少,各处理之间越相对独立。因此,应尽量减少处理间输入输出数据流的数目。

    ( 2 )注意分解的均匀。理想的分解是尽可能将一个问题分解成大小均匀的几个部分。如果在一张图中,某些处理已经是基本处理,而另一些处理还可进行多层分解,则这张图是难以理解的,因为图中某些部分描述的是细节,而另一部分描述的还是较高层的抽象,此时应考虑重新分解。

    ( 3 )适当地命名。 DFD 中各成分的名称是与其易理解性直接相关的,应该注意名称的选取。数据流和数据存储的命名,应尽量避免产生错觉,以减少系统设计、系统实施等阶段的错误。如果难以为某个成分取名,往往是分解不当的迹象,可考虑重新分解。

    6. 数据流图示例

    下面以高等院校学生学籍管理系统为例说明数据流图的画法。学籍管理系统要记录学生从入学到毕业整个在校期间的情况,学生毕业时把学生的情况提供给用人单位。

    ( 1 )初步确定基本元素。首先确定数据的源点和终点。根据系统的描述,确定数据的源点和终点分别为“招生部门”和“用人单位”。然后考虑数据流。“招生部门”为系统提供“新生名单”,经系统处理,提交“毕业生登记表”给“用人单位”。得到如图 4-10 所示的顶层图。

    图 4-10 学籍管理系统的顶层数据流图

    ( 2 )分解。接下来对顶层图进行细化,从而描述出系统的主要功能。学籍管理中包含学生学习成绩管理、学生奖惩管理、学生变动管理、毕业生管理等部分。由此,将图 4-10 展开成图 4-11 。图 4-10 中的数据流都必须反映在图 4-11 中。“学籍表”记载了学生的基本情况,如学籍变动情况、各学期课程的学习成绩、在校期间的奖惩记录等。

    图 4-11学籍管理系统的第一层数据流图

    可对图 4-11 进一步分解。例如,分析“成绩管理”,进入此处理的数据流有“学期成绩单”与“补考成绩单”,因此可分解为“分析学期成绩”与“分析补考成绩”两个处理,并且还要进行学期成绩登记与补考成绩登记。根据对学期成绩的分析,得出留退名单、获奖名单以及成绩统计表。这样, P2 框“成绩管理”扩展为图 4-12 。

    图 4-12 “成绩管理”的展开

    对图 4-12 中的一些处理,还可以进一步展开。如分析学期成绩,要登记“成绩一览表”,根据“成绩一览表”评出成绩优秀奖,决定留级、退学建议名单,给学生发送成绩单等。这样,图 4-12 中“分析学期成绩( P2.1 )”展开为图 4-13 。

    展开全文
  • 如何画数据流图

    千次阅读 2013-11-16 08:50:43
    数据流图的画法 数据流图也称为数据流程date flow diagram , DFD,是一种便于用户理解和分析系统数据流程的图形工具,他摆脱了系统和具体内容,精确的在逻辑上描述系统的功能、输入、输出和数据存储等,是系统...
  • 软件工程——数据流图

    千次阅读 2013-06-10 13:12:04
    数据流图的画法 数据流图也称为数据流程date flow diagram , DFD,是一种便于用户理解和分析系统数据流程的图形工具,他摆脱了系统和具体内容,精确的在逻辑上描述系统的功能、输入、输出和数据存储等,是系统...
  • 软件工程的数据流图,盒

    千次阅读 2019-12-10 19:43:50
    数据流图中有四要素:源点终点,数据流,数据存储,处理 (图形表达不唯一,以下只介绍我一般用的) 以例子来说明:自学考试报名过程中有个“记录报名单”的加工。该加工主要是根据报名表(姓名、 性别...
  • 软件工程中的数据流图

    万次阅读 多人点赞 2018-03-28 15:23:23
    数据流图(DFD)是结构化系统分析方法的主要表达工具,数据流图,主要是为了说明在一个项目中,数据的处理与流动情况。 一:数据流图的基本成分: (1)数据加工: 表示对数据进行的操作, 如“处理选课单” 、...
  • 软件设计师笔记之数据流图

    千次阅读 2019-06-02 14:13:30
    数据流图的改错,包括修正数据流名称、数据流的起点与终点、删除多余数据流。 目录 一、数据流图技术 1. 数据流图的基本元素 2. 分层数据流图(DFD) 3. 数据字典 4. 数据平衡原则 二、作答技巧 1. 补充...
  • 一、数据流图与流程的区别 数据流程是以图形的方式表达在问题中信息的变换和传递过程。它把系统看成是由数据流联系的各种概念的组合,用分解及抽象手段来控制需求分析的复杂性,采用分层的数据流程来表示一个...
  • 1、软件设计的启发规则有那些? 答:1.改进软件结构提高模块独立性 2. 模块规模应该适中 ...​ 层次模块结构主要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系,而并...
  • 数据流图的画法

    万次阅读 多人点赞 2015-06-28 09:48:30
    值得注意的是,数据流图中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有一个合适的名字,以反映该数据流的含义。 加工:加工描述了输
  • 画数据流图应该注意的问题汇总

    千次阅读 2012-04-24 16:07:05
     数据流软件设计师考试必考的题目之一,下面是画数据流图时应该注意的问题,希望对大家有所帮助。 1) 适当地为数据流、加工、数据存储、外部实体命名,名字应该反应该成分的实际含义,避免空洞的名字。 2)...
  • 数据流图(DFD)数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。下是一个飞机机票...
  • 数据流图什么?应该怎么

    千次阅读 2020-09-17 18:47:55
    数据流图什么?很多人都是一知半解,对此并不了解。但是大企业数量庞大且复杂的部门管理,其信息和数据的流动很大程度上都要归功于数据流图。接下来就带大家了解一下什么数据流图什么数据流图呢? 数据...
  • 软件工程】数据流图

    千次阅读 2017-10-12 16:42:04
    加工:描述了输入数据流到输出数据流之间的转换,每个加工都有一个名字和编号,编号反映该加工位于分层DFD中哪个层次和那张图中。c.数据储存:用来表示存储的数据,每个数据存储都有一个名字d.外部实体:指出系统...
  • 1.软件工程—数据流图

    千次阅读 多人点赞 2020-03-17 08:23:11
    1.某高校学生选课系统有如下功能:学生根据开课情况和培养方案填写选课单,选课系统对每个学生的选课单进行处理。选课系统根据教学计划检查学生学分情况,计算上课...请分层出该系统的顶层和1层的数据流图。 ...
  • 软件工程(数据流图例题详解)

    千次阅读 2021-03-23 12:55:26
    假设一家工厂的采购部每天需要一张订货报表...数据流图有4种成分: 1、源点和终点 2、处理 3、数据存储 4、数据流 因此,第一步可以从问题描述中提取数据流图的4种成分: ①首先考虑数据的源点和终点,从上面对系
  • 数据流图

    万次阅读 2018-08-11 13:11:31
    数据流图软件系统看成是由数据流联系的各种功能的组合,在需求分析的过程中,可以用来建立目标系统的逻辑模型。 目的 数据流图的目的是在用户和系统开发人员之间提供语义的桥梁。结构化需求...
  • 软件工程——数据流图(DFD)

    千次阅读 2020-11-03 15:02:56
    在《软件工程——系统流程符号及案例》中我们知道了系统流程描述的是物理系统,那么数据流图则是用来描述系统的逻辑模型,在数据流图中没有任何具体的物理元素,只是描绘信息在系统中的流动和处理情况。...
  • 软件工程-数据流图

    万次阅读 多人点赞 2019-01-10 08:39:57
    阅读以下说明和,回答问题1至问题3。 某时装邮购提供商拟开发订单处理系统,用于处理客户通过电话、传真、邮件或 Web站点所下订单。其主要功能如下: (1)增加客户记录。将新客户信息添加到客户文件,并分配一个客户...
  • 软考——画数据流图应注意的问题

    千次阅读 热门讨论 2015-05-17 15:56:44
    画数据流而不画控制流 每条数据流的输入或者输出是加工 一个加工的输出数据流不应与输入数据流同名,即使他们的组成成分相同。 允许一个加工有多条数据流流向另外一个加工,也允许一个加工有两个相同的输出数据流,...
  • 软件设计 -- 数据流图,数据字典,ER

    千次阅读 多人点赞 2019-05-08 20:54:56
    数据流图的基本元素(DFD:data flow diagram数据流图) 包括:数据流,加工,文件,源或宿**。其中**数据流,加工,文件用于构建软件系统内部的数据处理模型。源或宿表示存在于系统之外的对象,帮助我们理解系统数据...
  • 采用什么工具绘制软件数据流图最方便与快捷? icy?
  • 软件工程-分层数据流图的画法

    千次阅读 多人点赞 2020-10-26 14:35:49
    数据流图 Data Flow Diagram(简称DFD):描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模,基本元素包括: 数据流图示例: 数据流图的扩充符号 描述一个加工的多个数据流之间
  • 好东西大家分享: 怎么画数据流图

    千次阅读 2009-08-26 14:17:00
    数据流图(Data Flow Diagram,简称DFD) 是一种最常用的结构化分析工具,它从数据传 递和加工角度,以图形的方式刻画系统内的数据运动情况。数据流图中具有四种基本成分,如1.3所示。 1.3 数据流图的基本成分...
  • 软件工程中的:流程,数据流图

    万次阅读 2017-06-29 10:43:17
    最近在学习这方面的知识,为了可以不必...软件工程中的那些:系统流程,程序流程数据流图 软件工程看完后,开始着手写有关机房收费系统的软工文档。可是其中的各种把我搞得头疼,于是我把软件工程中提
  • 出图书预定系统的各层数据流图
  • 软件工程之数据流图和数据字典

    万次阅读 热门讨论 2015-08-02 08:51:03
    再看软工视频的时候总是听见主讲人说数据流图和数据字典,通过看视频我来总结一下,在说DFD和DD之前,首先看看结构化分析方法。  1、 结构化分析方法:  结构化分析方法最初只是着眼于数据流,自顶向下,逐层分解...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,978
精华内容 31,991
关键字:

什么软件能画数据流图