软件工程。

news2024/11/12 21:26:35

UML

数据流图(DFD)

1,数据流图概念

描绘信息流和数据从输入移动到输出的过程中所经受的变换。
也就是 数据流+图
数据流图以图形的方式描绘数据在系统中流动和处理的过程

数据流图(DFD,Data Flow Diagram)也称分层数据流图,是在需求分析阶段用到的一种工具,在结构化的需求分析中,DFD的使用频度极高。

在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。也就是数据流图中没有 分支条件或循环。
数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。
通常在数据流图中忽略出错处理,也不包括诸如打开或关闭文件之类的内务处理,数据流图的基本要点是描绘 “做什么”,而不考虑 “怎样做”。

2,数据流图特征

1)抽象性 数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况;

2)概括性 数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体。

3,数据流图基本元素

数据流基本元素:数据流;加工;数据存储;外部实体(源点或终点)

数据流图有4种基本符号:
正方形(或立方体)表示数据的源点或终点;
圆角矩形(或圆形)代表变换数据的处理;
开口矩形(或两条平行横线)代表数据存储;
箭头表示数据流,即特定数据的流动方向。

外部实体是指存在于软件系统外的人员,组织或物品,还可以是其他的系统。
在这里插入图片描述
数据流基本符号:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4,数据流图的层次结构

(1)分层数据流图

自顶向下分解,按照层次结构绘制,每张图中的加共个数可大致控制在“7加减2”的范围内

顶层图:描述了软件系统与外界之间的数据流,只有一张图,一个加工。(代表整个软件系统)

0层图:顶层图中的加工经过分解之后的图,也只有一张。

中间层:除了顶层、0层、底层的其他图

底层图:处于最底层的图,底层图中所有的加工不能再分解。

(2)图和加工的编号

在这里插入图片描述

(3)分层数据流图审查

判断绘制的数据流图是否存在问题。
1,父图与子图的平衡。
父图与子图平衡是指任何一张DFD的子图边界上的输入/输出数据,必须与其父图中对应的输入/输出数据流保持一致。
(如下的图是错误的)
在这里插入图片描述
2,数据流图的完整性
(1)每个加工至少有一个输入数据流和一个输出数据流
(3.1.2没有输出数据流。3.1.3只有输出,没有输入。 这两种情况都是错误的)
(2)在整套分层数据流图中,每个数据存储应至少有一个加工对其进行读操作,另一个加工对其进行写操作。
对于某一张DFD来说,可以只读不写或者只写不读。
(3)分层数据流中,每个数据流和文件都必须命名。
数据流:名词或形容词+名词
加工:动词或动宾
数据存储:名词
外部实体:可以用实际的人或组织的名称来命名。

绘制DFD数据流图

DFD的绘制是一个自顶向下、由外到里的过程,通常按照以下几个步骤进行:

1)画系统的输入和输出。

2)画DFD的内部。

3)为每一个数据流命名。

4)为每一个加工命名,采用动宾短语。

画分层数据流图的步骤:
(1)构建顶层DFD。(输入+软件系统+输出)。
(2)对顶层DFD图进行细化,构建0层DFD。(比如1个加工,2个加工,3个加工)(加工,主要寻找系统中的功能)
(3)逐层细化。(根据上一层,也就是加工上面的加工分解)

绘制顶层数据流图(顶层DFD)的要素:
1,输入、输出(也可称为源点/终点,外部实体。 一般是人/组织)
2,软件系统
3,数据流

注意事项
1)所有图形符号只有数据流、加工、数据存储和外部实体4种,并且都要有名字。

2)每个加工至少有一个输入数据流和输出数据流,只有输入没有输出,或者只有输出没有输入都不对。

3)加工的输入数据流和输出数据流名字不能相同,即使组成完全一样。

4)外部实体不能直接关联数据存储,只能通过加工。

5)整套DFD中,数据存储必须既有读的数据流,又有写的数据流,但在具体的某张子图中,不受这个限制。

6)子图必须与它的上层加工对应。

7)DFD中可以加入物质流,但不能夹带控制流。

数据流图案例

证券交易平台

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

工厂订单报表

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

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

相关文章

机器学习—为什么我们需要激活函数

如果我们使用神经网络中每个神经元的线性激活函数,回想一下这个需求预测示例,如果对所有节点使用线性激活函数,在这个神经网络中,事实证明,这个大神经网络将变得与线性回归没有什么不同,所以这将挫败使用神…

Java基础使用②Java数据变量和类型+小知识点

目录 1. Java小知识点 1.1 Java注释 1.2 Java标识符命名 1.3 Java关键字 2. 字面常量和数据变量 2.1 字面常量 2.2 数据类型 3.变量 3.1 变量概念 3.2 语法格式 3.3 整型变量 3.4 浮点型变量 3.5 字符型变量 3.6 布尔型变量 3.7 类型转换 3.8 类型提升 4. 字符…

Blender 几何、线框猴头的构建 笔记

一、学习blender视频教程链接 案例7:猴头构建_建模动画_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Bt4y1E7qn?spm_id_from333.788.videopod.episodes&vd_sourced0ea58f1127eed138a4ba5421c577eb1&p23 二、几何节点基础教程 1.首先添加几何节…

Kafka面试题解答(二)

1.怎么尽可能保证 Kafka 的可靠性 kafka是可能会出现数据丢失问题的,Leader维护了一个动态的in-sync replica set(ISR),意为和 Leader保持同步的FollowerLeader集合(leader:0,isr:0,1,2)。 如果Follower长…

用科技力量,重塑数字化园区新生态!

数字化园区的成功打造绝非易事,它需要在多个关键层面付出持之以恒的努力,而成都树莓集团在这一进程中无疑发挥着重要作用。 在数据的管理与应用方面,成都树莓集团更是展现出卓越的实力。集团运用先进的数据挖掘、分析技术,助力园区…

Mac上无法访问usr/local的文件

sudo chmod 755 /usr/loca 最后用百度提供的方法解决了

【Lucene】原理学习路线

基于《Lucene原理与代码分析完整版》,借助chatgpt等大模型,制定了一个系统学习Lucene原理的计划,并将每个阶段的学习内容组织成专栏文章,zero2hero 手搓 Lucene的核心概念和实现细节。 深入的学习和专栏计划,覆盖Lucen…

友思特应用 | 动态捕捉:高光谱相机用于移动产线上的食品检测

导读 高光谱成像技术能够为食品安全助力。以友思特BlackIndustry SWIR 1.7 Max 为代表的高光谱相机,完美解决了移动产线检测的应用难点。 高光谱技术:为食品安全保驾护航 食品安全一直是大众关心的热点话题,提供安全、高质量的食品需要对食…

HarmonyOS使用arkTS拉起指定第三方应用程序

HarmonyOS使用arkTS拉起指定第三方应用程序 前言代码及说明bundleName获取abilityName获取 前言 本篇只说采用startAbility方式拉起第三方应用,需要用到两个必备的参数bundleName,abilityName,本篇就介绍如何获取参数… 代码及说明 bundle…

Linux的基本指令(一)

1.ls指令 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及信息。 常用选项: -a列出目录下的所有文件,包括以 . 开头的隐含文件。 -l列出文件的详细信息 举例: rooti…

基于Springboot+Vue的博客系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…

华为OD机试真题-矩形绘制

题目描述 实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除 当新绘制的矩形与之前的图形重善时,对图形取并集 当新擦除的矩形与之前的图形重善时,对图形取差集 给定一系列矩形的绘制和擦除操作,计算最终图形的面积。下…

数据编排与ETL有什么关系?

数据编排作为近期比较有热度的一个话题,讨论度比较高,同时数据编排的出现也暗示着数字化进程的自动化发展。在谈及数据编排时,通常也会谈到ETL,这两个东西有相似点也有不同点。 数据编排和ETL(提取、转换、加载&#x…

【Golang】Go语言教程

Go语言教程 文章目录 Go语言教程一、Go语言教程二、Go语言特色三、Go语言用途四、第一个Go程序六、运行代码的两种方式七、go run和go buil的区别7.1、go run7.2、Go build 一、Go语言教程 Go全称Golang Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变…

【重装系统后重新配置2】pycharm 终端无法激活conda环境

pycharm 终端无法激活 conda 环境,但是 Windows本地终端是可以激活的 原因是pycharm 默认的终端是 Windows PowerShell 解决方法有两个: 一、在设置里,修改为cmd 二、下面直接选择

这是一个bug求助帖子--安装kali 遇坑

第一个报错 介质:kali-linux-2024.1-live-amd64 环境:Dell笔记本 i510代cpu 现象及操作 安装完以后 然后我换了个国内的源进行了以下操作 apt-get update:更新源列表 apt-get upgrade:更新所有可以更新的软件包 然后进行清理。…

教你在.Net8.0的WinForm中使用WebView2,实现C#和JavaScript的实时双向互操作

1. 前言 随着 Web 技术的发展,使用网页内容(HTML、JavaScript、CSS 等)作为桌面应用程序的一部分变得越来越常见。在 C# WinForm 中,Microsoft 提供的 WebView2 控件让我们可以轻松地嵌入 Chromium 浏览器,并实现 C# …

如何安装QT(linux/windows)

1. linux 1.1 下载安装程序 进入QT官网,点击右上角下载 Qt | Tools for Each Stage of Software Development Lifecycle​www.qt.io/ 然后选择下载linux版本,这里你需要填写一些信息,注册一些即可 填写之后会出现下面这个网页,…

PVE纵览-PVE与VM:谁才是你的最佳虚拟化选择?

PVE纵览-PVE与VM:谁才是你的最佳虚拟化选择? 文章目录 PVE纵览-PVE与VM:谁才是你的最佳虚拟化选择?摘要1 不同虚拟化平台的基础2 平台特性与功能3 性能与可靠性4 成本与经济性5 应用场景比较6 用户体验与支持7 结论与建议 关键字&…

C/C++语言基础--C++模板与元编程系列四(类型模板参数、整数、指针 、模板类型)

本专栏目的 更新C/C的基础语法,包括C的一些新特性 前言 模板与元编程是C的重要特点,也是难点,本人预计将会更新10期左右进行讲解,这是第四期,有些和前面三期重合,这一期也是为明天更新打下基础&#xff…