【软件工程】一文学会数据流图画法教程(内含案例说明)

目录

前言

数据流图

概念

优点

基本组成

基本图形组成(重点)

箭头

矩形

双横线 / 半框形矩形

圆形 / 圆角矩形/椭圆形(核心)

数据流图 ( DFD ) 分层

1、分层说明

2、顶层数据流图

3、中层数据流图

4、底层数据流图

数据流图设计原则

父图-子图平衡原则

数据守恒原则

守恒加工原则

实际案例

家庭保安系统

第一步

第二步

第三步

第四步

图书预定系统

第一步:顶层数据流图

第二步:细化

第三步:逐步细化

机票预订系统

其他案例

自行实践案例

参考资料:


前言

在拿到项目业务等信息之后,需要向需求规格说明书中添加数据流图和数据库关系图ER图,数据表之间的数据流图等

仅做个人记录学习所用,如有侵权,请联系我删除

数据流图

概念

数据流图(DFD) 是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。

优点

在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。即用于建立功能模型的数据流图。

数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具。此外,设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。

基本组成

  1. 数据流:是由一组固定成分的数据组成,表示数据的流向,除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有一个合适的名字,以反映该数据流的含义

数据字典 : 数据流箭头上只标明了 “账号信息” , 没有具体的格式内容 , 是只有账号 , 还是有账号/密码/验证码等信息 , 这些数据详细格式 , 都在 数据字典中定义 ;

  1. 加工:加工描述了输入数据流到输出数据之间的变换,也就是输入数据流经过什么处理后变成了输出数据
  2. 数据存储:数据存储表示暂时存储的数据,每个数据存储都有一个名字
  3. 外部实体:外部实体是存在于软件系统之外的人员或组织

基本图形组成(重点)

箭头

表示数据流 , 箭头所指的方向 , 代表了数据流向 ;

矩形

表示外部实体

双横线 / 半框形矩形

表示数据存储

圆形 / 圆角矩形/椭圆形(核心)

表示加工


数据流图 ( DFD ) 分层

1、分层说明

数据流图分层 , 最上层是 顶层数据流图 , 第二层是 0 00 层数据流图 , ⋯ \cdots⋯ , 最底层是 底层数据流图 ,

“顶层数据流图” 与 “底层数据流图” 之间是若干 中层数据流图 ,

中层数据流图 需要进行编号 , 从 0 开始编号 ;

2、顶层数据流图

顶层数据流图 : 中间的椭圆 是需要开发的 系统 , 周边的矩形 表示的是 外部实体人或组织 , 外部实体 与 系统 之间 , 有数据传输关系 ;

一个形象的说明是 多个人吃火锅 , 外层周边是人 , 中心位置火锅是系统 ;

顶层数据流图 能够表达的信息是非常有限的 , 其 将整个系统 , 使用一个节点表示 ,

其可以体现出 系统与外界实体之间的交互 ,

但是 系统内部的情况 , 系统内部模块之间的数据交换 是没有体现的 ;

3、中层数据流图

将 “顶层数据流图” 进行细化 , 细化后的 0层数据流图 ,

与 顶层数据流图 比较没有变化的部分 : 外部实体 , 外部实体与系统之间的数据流 , 是没有变化的 ;

变化部分 : 有变化的部分是系统内部 , 系统内部进行了细化 , 原来系统是一个节点 , 在 中层数据流图 中 , 会将一个节点 拆分成 多个节点 , 这些节点就是系统中的数据处理部件 , 即 加工 ;

这些数据处理部件 ( 加工 ) 之间会有数据流的交互 ,

4、底层数据流图

针对每个加工 节点 , 将其拆分 , 绘制其中的更详细的数据流转情况 ;

数据流图 ( DFD ) 分层 , 是从 顶层 -> 中层 -> 底层 , 逐层进行分解 , 这种分解思路 , 与结构化的开发方法 , 是完全匹配的 ;

因此 , 数据流图 是 结构化 开发

### 绘制单个角色顶层数据流图的方法 在软件工程中,绘制仅涉及单角色的顶层数据流图(DFD, Data Flow Diagram),有助于理解系统的高层次功能及其与外部实体的数据交换过程。以下是关于如何创建这种图表的具体说明: #### 1. 明确目标和范围 定义要建模的过程或子系统的确切边界以及它将处理的主要活动是什么。对于只有个参与者的情况,重点在于描述此个体与应用程序之间发生的交互。 #### 2. 确定外部实体 识别所有参与信息流动但不属于被分析系统的部分的对象——即所谓的“外部实体”。即使存在唯的行为者,在某些情况下也可能有其他类型的外部实体,比如文件存储或其他服务接口[^1]。 #### 3. 描述主要流程 记录由选定的角色触发的关键操作序列,并指出这些动作产生的任何输出或所需的输入资源。这步骤的结果应该是系列清晰表述的功能单元,它们共同构成了整个业务逻辑的核心框架。 #### 4. 建立连接关系 使用箭头表示进出各个组件的信息路径;每条边都应附带标签指明传输的内容类型。确保所有的流入流出都被充分覆盖,从而形成个封闭循环,展示完整的端到端视图。 #### 5. 添加必要的细节 如果有必要的话,可以引入辅助元素如决策节点、条件分支等来增加表达力。不过要注意保持图形简洁易懂,避免过度复杂化设计。 下面是个简单的例子,展示了个人类用户登录网站并检索个人信息这场景下的顶层 DFD: ```mermaid graph TD; A[User] --> B{Login Request}; C[(Database)] -.->|Credentials| B; B --> D[Authentication Service]; E[Personal Info Page] <-- F{(Session)}; G[User Details]-.->|Data Fetch Query|E; H[Displayed User Profile] <-.|Rendered HTML/CSS| E; ``` 在这个示例中,`User` 是唯的行动方,而 `Database`, `Authentication Service`, 和页面本身则作为不同的外设发挥作用。通过这种方式,能够直观地看到各要素间的关系及其实现机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值