【软件设计师】——8.结构化与数据流图

目录

8.1 结构化分析

8.2 结构化设计

8.3 数据流图DFD

8.4 数据字典


8.1 结构化分析

  • 结构化分析是面向数据流进行需求分析的方法,采用结构化方法进行系统分析时,根据分解与抽象原则,按照系统中数据处理的流程,用(数据流图 )建立系统的逻辑模型,完成分析工作

  • 结构化分析将数据、处理作为分析对象,数据的分析结果表示了现实世界中实体的属性及其之间的相互关系,而处理结果展现了系统对数据的加工、转换

  • 需求分析阶段的输出是结构化分析模型,包括数据流图、数据字典、实体联系图、状态迁移图。结构化分析的输出包括数据流图、数据字典、加工逻辑,结构化分析的结果为结构化设计提供最基本的输入信息,确定软件体系结构在软件设计阶段进行

  • 结构化分析方法在实施阶段强调的是分析对象的数据流

8.2 结构化设计

  • 设计活动:包括4个既独立又相互联系的活动(金字塔模型)

    1. 数据设计:数据库设计,主要包含数据库设计、数据包含的核心表设计。根据数据字典、实体关系图进行,基于实体联系图确定软件涉及的文件系统结构、数据库表结构

    2. 体系结构设计:开发的系统中包含哪些部件,部件与部件间的关系就是体系结构设计;根据数据流图进行,定义软件的主要结构元素及关系

    3. 接口设计:用于子系统和模块间、内部系统和外部系统间的各种交互,如功能描述、输入输出定义、错误处理设计;根据数据流图进行,描述用户界面、软件、其他硬件设备、其他软件系统、使用人员的外部接口、各种构件间的内部接口

    4. 过程设计:模块详细设计,主要是详细模块的实现算法、模块所使用的数据结构。根据加工规格说明、控制规格说明进行,确定软件各个组成部分内的算法、内部数据结构,并选定某种过程的表达形式来描述各种算法

8.3 数据流图DFD

  • 理解

    1. 面向数据流建模是目前仍被广泛使用的方法之一,DFD是面向数据流建模中的重要工具,它将系统建模成输入一处理一输出的模型,即流入软件的数据对象经处理转换,最后以结果数据对象的形式流出软件

    2. 数据流图是分析过程中描述数据处理过程的工具,只反映系统必须完成的逻辑功能,是一种功能模型,是需求分析阶段产生的成果

    3. 是一种便于用户理解、分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出、数据存储等,是系统逻辑模型的重要组成部分,是结构化分析方法的重要模型

    4. 是一种最常用的结构化分析工具,从数椐传递、加工角度,以图形方式刻画系统内数据的运动情况

    5. 数据流图、流程图是结构化建模中使用的重要工具,能帮助开发人员更好地分析设计系统,增强系统开发

    6. 在采用结构化开发方法进行软件开发时,设计阶段接口设计主要依据需求分析阶段的数据流图

组成元素说明图元
数据流由一组固定成分的数据组成,表示数据流向。每个数据流通常有一个合适的名词,反映数据流的含义
加工描述输入数据流到输出数据流间的变换,输入数据流做什么处理后变成输出数据流◯ ▢
数据存储(文件)表示暂时存储的数据,每个文件都有名字。数据流流向文件表示写,流出表示读ㄈ=
外部实体存在于系统外的人员或组织,指出系统所需数据的发源地、系统产生数据的归宿地

  • 数据流图、流程图区别

    1. 数据流图作为一种图形化工具,说明业务处理过程、系统边界内所包含的功能、系统中的数据流,适用于系统分析中的逻辑建模阶段;流程图以图形化方式展示应用程序从数据输入到获得输出为止的逻辑过程,描述处理过程的控制流,往往涉及具体技术、环境,适用于系统设计中的物理建模阶段

    2. 数据流图的处理过程可并行;流程图在某时间点只能处于一个处理过程

    3. 数据流图展现系统的数据流;流程图展现系统的控制流

    4. 数据流图展现全局处理过程,过程间遵循不同的计时标准;流程图的处理过程遵循一致的计时标准

  • 分类

    1. 分层数据流图:必须保持父、子图平衡,父图的输入/输出数据流与子图的输入/输出数据流一致,有时看起来不一致,但经查验数据字典可能发现是一致的。每个加工必须有输入、输出数据流。数据流图中的每个基本加工,需要有一个加工规格说明,描述把输入数据流变换为输出数据流的加工规则,但不需要描述实现加工的具体流程

    2. 顶层数据流图:只含有一个加工处理表示整个管理信息系统;输入、输出数据流为系统的输入、输出数据,表明系统的范围、与外部环境的数据交换关系

  • 分层和编号

    1. 对一个软件系统,其数据流图可能有多层,每层又有许多张图。为区分不同加工、不同DFD子图,应对每张图、每个加工编号,以利于管理

    2. 父图与子图:若分层数据流图的某张图A中的某个加工可用另一张图B来分解,则称图A是图B的父图,图B是图A的子图。一张图中,有些加工需进一步分解,有些加工则不必分解。若父图中有n个加工,那么它可以有位于同一层的0~n张子图,但每张子图都只对应于一张父图

    3. 编号:顶层图只有一张,图中的加工也只有一个,所以不必编号;0层图只有一张,图中的加工号可分别是0.1、0.2。子图号就是父图中被分解的加工号;图的加工号由图号、圆点、序号组成

  • 数据流图注意事项/建模原则

    1. 数据流图从数据传递、加工角度,以图形方式刻画数据流从输入到输出的移动变换过程,是对软件所要处理数据的抽象,其基础是功能分解。对一些复杂的实际问题,在数据流图中常常出现许多加工,看起来不直观,也不易理解,因此用分层的数据流图来建模

    2. 按系统层次结构逐步分解,以分层的数据流图反映这种结构关系。在分层的数据流图中,各层数据流图之间保持“平衡”关系,输入、输出数据流在各层保持一致

    3. 数据流图平衡原则(默写):

      ① 父图、子图平衡。父图中某加工的输入/输出数据流必须与它子图的输入/输出数据流在数量、名字上相同,在数据字典中的定义必须一致,数据流/数据项既不能多也不能少。父图的一个输入、输出数据流对应子图中几个输入、输出数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍是平衡的

      ② 子图内平衡

    4. 保持数据守恒:一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或通过该加工能产生的数据

    5. 数据流只能和加工相关,即从加工流向加工、数据源流向加工、加工流向数据源;每条数据流的输入、输出必须是加工,即至少有一端是加工;每个加工必须既有输入数据流,又有输出数据流

    6. 画数据流而不要画控制流;分解尽可能均匀,一个加工不适合有过多的数据流;一幅图中的图元个数控制在7+2以内

    7. 适当为数据流、加工、数据存储、外部实体命名,名字应反映该成分实际含义,避免名字空洞;一个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同

    8. 允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同加工

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

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

    11. 每个数据流、数据存储都要在数据字典中定义,数据字典将包括各层数据流图中数据元素的定义

    12. 数据流图中最底层的加工处理必须有加工处理说明

    13. 加工处理说明和数据流图中加工处理涉及的元素保持一致。如,在加工处理说明中,输入数据流必须说明其如何使用,输出数据流说明如何产生或选取,数据存储说明如何选取、使用、修改

  • 绘制数据流图加工的错误(默写)

    1. 黑洞:只有输入而无输出

    2. 奇迹:只有输出而无输入

    3. 灰洞:输入数据流无法通过加工产生输出数据流

    4. 输入数据流与输出数据流名称相同

    5. 外部实体没有经过加工处理,直接到数据存储

    6. 部实体之间没有加工处理,存在直接数据流

  • 答题技巧

    1. 补充实体

      ① 人物角色:客户、管理员、主管、经理、老师、学生 ② 组织机构:银行、供应商、慕捐机构 ③ 外部系统:银行系统、工资系统、后台数据库(开发中间件时)

    2. 补充存储:存储的文字特征:xx文件、xx表、xx库、xx清单、xx档案

    3. 补充数据流

      ① 数据平衡原则

      a. 顶层图与0层图对比,是否有顶层图有、但0层图无的数据流,或反之

      b. 检查图中每个加工,是否存在只入没出,或只出没入,或根据输入数据无法产生对应输出的情况

      ② 按题目说明与图匹配:说明中的每一句话,都能与图中有对应关系,当把说明中的实体与数据流标识出来后,容易缩小对应范围,找出纰漏

    4. 补充加工名

      加工用于处理数据流,补充加工名可以把该加工涉及到的数据流,在说明中标识出,再在数据流名称所在句子中,找“动词 + 名词”的结构,分析是否可作为加工。如:生成报告,发出通知,批改作业,记录分数,物流跟踪、用户管理

8.4 数据字典

  • 数据字典

    1.数据流图描述了系统分解,但没有对图中各成分进行说明。数据字典用于描述数据流图中的每个数据流、文件、加工、组成数据流或文件的数据项

    2.4类条目:数据流、数据项、数据存储、加工

    • 基本加工条目用来说明DFD中基本加工的处理逻辑,由于下层的基本加工是由上层加工分解而来,只要有了基本加工的说明就可理解其他加工

    • 对每一个基本加工, 都应该有一个加工逻辑来说明

    • 加工描述了输入数据流到输出数据流之间的编号,即输入数据流经过什么处理后变成输出数据流

    • 加工逻辑对其进行说明,描述了该过程的加工规则。加工逻辑位于需求分析阶段,此时并没有设计具体的数据结构、算法。常用加工逻辑描述方法有结构化语言、判定表、判定树

    3.数据字典管理:指把字典条目按某种格式组织后存储在字典中并提供排序、查找、统计等功能

    符号含义举 例 说 明
    =被定义为
    +x = a + b,表示x由a和b组成
    [... , ...] 或 [... | ...]x = [a ,b],x = [a|b],表示x由a或由b组成
    {...}重复x = {a},表示x由0个或多个a组成
    (...)可选x = (a),表示a可在x中出现,也可以不出现

    例如:机票 = 姓名 + 日期 + 航班号 + 起点 + 终点 + 费用;终点 = [长沙|上海|北京|西安 ]

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

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

相关文章

【Linux环境搭建实战手册】:打造高效开发空间的秘籍

文章目录 🚀Linux环境搭建💥1. 设备要求❤️2. 了解虚拟机🚀3. 安装VMware🌈4. 终端基础信息解读 🚀Linux环境搭建 💥1. 设备要求 处理器(CPU):至少具有1 GHz的处理能力&…

VSCode中snippets(代码模板)的使用

首先安装Vue VSCode Snippets,在组件库中搜索并安装。 然后打开插件文件夹 文件夹名是 "作者名.vscode-插件名-版本号"组成的. C:\Users\Administrator\.vscode\extensions\sdras.vue-vscode-snippets-3.1.1\snippets 打开vue.json "prefix"…

【机器学习】SUTRA引领多语言处理

在人工智能的浪潮中,自然语言处理(NLP)技术一直是备受瞩目的焦点。随着全球化和信息时代的到来,多语言处理能力成为了评估NLP技术优劣的重要标准。近期,一款名为SUTRA的多语言大型语言模型架构引起了业界的广泛关注。它…

【Linux】线程操作

文章目录 前言一、线程相关操作函数1. pthread_create2. pthread_join3. pthread_exit4. pthread_cancel5. pthread_detach6. 示例代码 前言 在 Linux 中并不存在真正意义上的线程, 而是通过复用进程的结构来实现的, 叫做轻量级进程. 线程是一个进程内部的一个执行流, 而一个进…

521源码-免费游戏源码下载-闯梦江湖Q萌复古全网通手游服务端H5全攻略

闯梦江湖H5:Q萌复古全网通手游服务端全攻略 一、概述 闯梦江湖H5 是一款结合Q萌画风与复古情怀的全网通H5手游。我们为您提供了最新打包的Windows服务端,并附带了通用视频架设教程和GM网页授权后台工具,让您轻松搭建并管理自己的游戏世界。 …

Kubernetes中的节点选择方法

在Kubernetes集群中,节点选择是一个重要的环节,它决定了Pod将被调度到哪个节点上运行。Kubernetes提供了多种节点选择的方法,以满足不同的部署需求和资源优化。本文将介绍Kubernetes中的几种节点选择方法,并附带相关代码示例。 目…

python技巧梳理

背景 在开发中,经常会遇到,同时存在多个值,依次判断上述值,选择第一个非空、True的值作为整个表达式的值进行返回,这个时候会用到or这个关键词,下面讲一下用法。 方法 value1 None value2 0 value3 H…

斯洛文尼亚普利雅玛城堡:吉尼斯世界纪录认证的世界最大溶洞城堡

除了著名的波斯托伊纳溶洞(Postojna Cave),普利雅玛城堡(Predjama Castle)也是波斯托伊纳洞穴公园(Postojna Cave Park)不容错过的景点之一。这座城堡坐落在斯洛文尼亚(Slovenia&…

【编译原理】LR(0)分析

一、实验目的 LR(0)分析法是一种移进归约过程,能根据当前分析栈中的符号串,同时也不用向右查看输入串的符号就可唯一确定分析器的动作。通过对给定的文法构造LR(0)分析表和实现某个符号串的分析掌握LR(0)分析法的基本思想。 二、实验要求 实现LR(0)分…

用(华为)三层交换技术解决不同vlan间通信问题

用三层交换技术解决不同vlan间通信问题 一、网络拓扑: 二、配置思路:自下而上配置 1.PC端配置基本IP信息包括网关 2.接入交换机S1上划分三个vlan,分别是VLAN 10 VLAN 20 VLAN 30 并且将对应的接口加入指定的vlan 3.给接入交换机配置trunk链路…

IT技术 | 电脑蓝屏修复记录DRIVER_IRQL_NOT_LESS_OR_EQUAL

我的台式机是iMac 2015年的,硬盘是机械的,时间久了运行越来越慢。后来对苹果系统失去了兴趣,想换回windows,且想换固态硬盘,就使用winToGo 搞了双系统,在USB外接移动固态硬盘上安装了win10系统。 最近&…

C++ 虚函数和纯虚函数

虚函数 #include <iostream> using namespace std; class Vehicle //交通工具 { public:void run() const{cout << "run a vehicle. " << endl;} }; class Car : public Vehicle //汽车 { public:void run() const{cout << "run a c…

Android studio版本和Android gradle plugin版本对应表

1.Android studio 版本的升级&#xff0c;一个方面上看主要是升级对AGP最高版本的支持 2.那为什么AGP要出高版本呢&#xff0c;主要支持高版本的API&#xff0c;真是一环扣一环

将YOLO格式数据集转换为YOLO-Mamba等特定工具指定的数据集格式

目录 克隆Github YOLO-Mamba源码YOLO-Mamba数据集格式下载的公开数据集目录边界框坐标文件类别标签文件 数据集格式转换代码转换格式的效果展示 今天为大家解析YOLO-Mamba这篇论文开源的代码&#xff0c;首先讲解YOLO格式数据集转换为YOLO-Mamba等特定工具指定的数据集格式的操…

GoogLeNet论文解读—Going deeper with convolutions2015(V1)

GoogLeNet论文解读—Going deeper with convolutions2015 说明&#xff1a;本文只解读GooleNet的14年参赛的v1版本&#xff0c;之后的改进版本可能在日后的学习中继续更新 研究背景 更深的卷积神经网络 认识数据集&#xff1a;ImageNet的大规模图像识别挑战赛 LSVRC-2014&…

Java面试八股之Thread类中的yeild方法有什么作用

Thread类中的yeild方法有什么作用 谦让机制&#xff1a;Thread.yield()方法主要用于实现线程间的礼让或谦让机制。当某个线程执行到yield()方法时&#xff0c;它会主动放弃当前已获得的CPU执行权&#xff0c;从运行状态&#xff08;Running&#xff09;转变为可运行状态&#…

快速失败“fail-fast”和安全失败“fail-safe”

目录 快速失败——fail-fast 异常原因 正常原因 安全失败“fail-safe” 快速失败——fail-fast java的快速失败机制是java集合框架中的一种错误检测机制&#xff0c;当多个线程对集合中的内容进行修改时可能就会抛出ConcurrentModificationException异常。不仅仅在多线程状态…

网络安全等级保护2.0(等保)是什么

等保的全称是信息安全等级保护&#xff0c;是《网络安全法》规定的必须强制执行的&#xff0c;保障公民、社会、国家利益的重要工作。 通俗来讲就是&#xff1a;公司或者单位因为要用互联网&#xff0c;但是网上有坏人&#xff0c;我们不仅要防御外部坏人&#xff0c;还要看看…

2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟

注意开浮点数 ​​​​ import java.util.Scanner;public class Main {static Scanner scnew Scanner(System.in);public static void main(String[] args) {double t0;int cnt0;double distance1000;while(distance>1){//相撞时间tdistance/60.0;distance-t*20;cnt;}Syste…