数据流程图和数据结构是需求分析中不可缺少的一环

简介:

数据流程图和数据结构是需求分析中不可缺少的一环

需求分析活动要完成4项任务,分别是:

  • 问题识别
  • 评价和综合
  • 形成规格说明
  • 评审规格说明

这4项任务中,“问题识别”是要识别出用户提出软件需求要解决的问题;“评价和综合”是要评价数据信息的流程和数据结构,对软件功能逐步细化,阐明接口特性,揭示设计约束,并将其综合成一个总的用户问题的解法;“形成规格说明”和“评审规格说明”,顾名思义,这里不再赘述。

这4个任务中,主要的需求分析活动集中在“评价和综合”;而评价数据流程图和数据结构又是“评价和综合”中重要的一环。

首先,建立数据结构有助于发现软件功能的全貌,防止功能遗漏。

典型的数据结构如下图。

典型的数据结构

建立这样的结构是一个自顶向下逐层分解的过程。在每一层分解完成时,通过验证分解部分的总和是否覆盖上层院模块的所有功能,就可以有效地避免功能遗漏。如果不建立这样的数据结构,直接开始对功能的逐个描述,就有可能遗漏某个功能而不自知。

其次,建立数据流程图有助于分析软件的内外部接口。

数据流程图是一种描述信息流和变换的图示技术,当数据从输入流动到输出时就要应用这些变换。它的基本形式如下图。

数据流程图

在数据流程图中,软件元素被描述成为一个带有输入和输出数据的单个泡,而这些输入和输出数据分别由进入的箭头和出去的箭头来表示。这些数据路径同时也表明了软件元素之间的接口。当把整个软件元素及其之间的数据流都用数据流程图表现出来,实际上,软件的内部、外部接口也就表达得很清楚了。

所以,在需求分析的时候先建立数据结构和数据流程图,对于做好功能描述、接口分析会有很大帮助。

在GJB438B的需求规格说明书的内容要求中,并没有数据流程图和数据结构。这样使得一些依据438B标准编写需求规格说明,进行需求分析的软件设计师,只知道按照模版要求,在描述完软件运行状态和方式之后,就开始逐条描述软件功能了。由此就可能带来前面所说的遗漏需求等问题。要避免这样的问题,又要符合438B模版的要求,做法很简单,就是在“1.2系统概述”中增加数据流程图和数据结构。因为“系统概述”的内容是介绍系统和软件的用途,而数据流程图和数据结构所展现的软件的总体功能、数据信息,就是软件的总体介绍,与这一章节的内容很契合。


本文作者:王小双

来源:51CTO

相关文章
|
9月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
738 0
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——封装统一返回的数据结构
本文介绍了在Spring Boot中封装统一返回的数据结构的方法。通过定义一个泛型类`JsonResult<T>`,包含数据、状态码和提示信息三个属性,满足不同场景下的JSON返回需求。例如,无数据返回时可设置默认状态码"0"和消息"操作成功!",有数据返回时也可自定义状态码和消息。同时,文章展示了如何在Controller中使用该结构,通过具体示例(如用户信息、列表和Map)说明其灵活性与便捷性。最后总结了Spring Boot中JSON数据返回的配置与实际项目中的应用技巧。
1061 0
|
设计模式 安全 Java
HashMap底层原理:数据结构+put()流程+2的n次方+死循环+数据覆盖问题
假如有T1、T2两个线程同时对某链表扩容,他们都标记头结点和第二个结点,此时T2阻塞,T1执行完扩容后链表结点顺序反过来,此时T2恢复运行再进行翻转就会产生环形链表,即B.next=A;采用2的指数进行扩容,是为了利用位运算,提高扩容运算的效率。JDK8中,HashMap采用尾插法,扩容时链表节点位置不会翻转,解决了扩容死循环问题,但是性能差了一点,因为要遍历链表再查到尾部。例如15(即2^4-1)的二进制为1111,31的二进制为11111,63的二进制为111111,127的二进制为1111111。
HashMap底层原理:数据结构+put()流程+2的n次方+死循环+数据覆盖问题
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
399 5
|
存储 数据格式 运维
开发与运维C++问题之更改数据模型为通用数据结构如何解决
开发与运维C++问题之更改数据模型为通用数据结构如何解决
199 1
|
存储 JavaScript 前端开发
JavaScript中的数组是核心数据结构,用于存储和操作序列数据
【6月更文挑战第22天】JavaScript中的数组是核心数据结构,用于存储和操作序列数据。创建数组可以使用字面量`[]`或`new Array()`。访问元素通过索引,如`myArray[0]`,修改同样如此。常见方法包括:`push()`添加元素至末尾,`pop()`移除末尾元素,`shift()`移除首元素,`unshift()`添加到开头,`join()`连接为字符串,`slice()`提取子数组,`splice()`进行删除、替换,`indexOf()`查找元素位置,`sort()`排序数组。还有其他如`reverse()`、`concat()`等方法。
298 2
|
存储 数据可视化 数据处理
`geopandas`是一个开源项目,它为Python提供了地理空间数据处理的能力。它基于`pandas`库,并扩展了其对地理空间数据(如点、线、多边形等)的支持。`GeoDataFrame`是`geopandas`中的核心数据结构,它类似于`pandas`的`DataFrame`,但包含了一个额外的地理列(通常是`geometry`列),用于存储地理空间数据。
`geopandas`是一个开源项目,它为Python提供了地理空间数据处理的能力。它基于`pandas`库,并扩展了其对地理空间数据(如点、线、多边形等)的支持。`GeoDataFrame`是`geopandas`中的核心数据结构,它类似于`pandas`的`DataFrame`,但包含了一个额外的地理列(通常是`geometry`列),用于存储地理空间数据。
【海贼王的数据航海】栈和队列
【海贼王的数据航海】栈和队列
173 0
|
设计模式 Java C++
数据结构篇:数据拷贝、深拷贝、重载与移动构造
数据结构篇:数据拷贝、深拷贝、重载与移动构造
303 0

热门文章

最新文章