结构化分析方法

简介: 1.概述结构化方法是世界上第一个软件开发方法学,用来指导从需求分析、到设计开发各个阶段该怎么样做,采用什么样的方法,产出什么样的结果,从而保证整个软件开发周期可控。

1.概述

结构化方法是世界上第一个软件开发方法学,用来指导从需求分析、到设计开发各个阶段该怎么样做,采用什么样的方法,产出什么样的结果,从而保证整个软件开发周期可控。

结构化方法分为:

  • 结构化分析
  • 结构化设计

其中结构化分析是最核心的,因为在结构化方法中,结构化分析的结果是十分贴近实现的,一旦分析的较好,设计实现是很容易的事情。

结构化分析核心思想是将一个大问题自顶向下逐层分解为一个个不可再分的小问题。

如何将一个大问题拆成一个个小问题?结构化方法中提出了一整套的标准流程来实现整个过程。这个流程就是:

数据流图——>结构图

先产出“数据流图”,然后将“数据流图”转化为“结构图”,结构图是一种对软件的结构进行清晰描述的图,十分贴近代码实现,一旦产出合理的结构图后后序的设计实现都是水到渠成。结构图就是结构化分析要产出的最终、最核心的内容。


当然整个过程中为了使得描述更加清晰可以选择性加入“数据字典”、“加工说明”来辅助进行说明。

2.数据流图

数据流图,一种建模方式,在数据流图的世界观里,所有的计算系统都是信息的处理和转换,总是有一些输入经过计算系统,在系统内流转后进行输出。

数据流图有两套符号体系,DeMarco-Yourdon和Gane-Sarson:

6bafef9c1dca4bcfb8c4e59a56a3fd3c.png

外部实体:数据的产生者或消费者,可以是人、设备、另一个计算机系统等。

过程:数据的转换器,如计算纳税金额、计算面积、显示图表等。

数据流:就是指向数据流转方向的箭头并且组织起数据结构。

数据存储:存储数据的介质,数据库、磁盘等。

3.结构图

结构图是树状的,用来表示模块而之间的依赖关系、信息传递。结构图可以由数据流图转化而来,其更加贴近代码实现,更加便于后续的构造活动,所以说数据流图转结构图是结构化设计的关键。

结构图的符号:

4e561c5ad7e64830a00ddcae5b8f9ac2.png

4.一个例子

4.1.需求

设计一个高考录取统分子系统,该系统需要具备以下功能

  • 计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件。
  • 计算录取线:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。

4.2.数据流图

首先甄别出各个实体:

外部实体:考生

过程:计算标准分、计算录取线

数据存储:标准分、录取线、招生计划文件

可以得出如下数据流图:

c89f5bb572414cc7b047362714e5388e.png

4.3.结构图

结构图可以从数据流图转化而来,转化的过程很简单,数据流图已经描述好了输入、处理过程、输出,结构图其实也分为三部分,输入、处理、输出。

于是先根据数据流图归纳好输入模块、处理模块、输出模块:


输入:


原始分输入

招生文件输入

处理:


分数处理

计算标准分

计算录取线

输出:


存入考生分数

存入录取线

各个模块儿间的信息传递,在数据流图中也可以知道,就是各结点间流转的数据,于是可以做出结构图:


顶层结点是整个系统,输入向整个系统输入数据,处理模块处理数据,输出模块输出、存储数据。数据信息沿着调用线走。

361636bff54842459e882ecb5201029f.png

5.辅助工具

有时候单纯用“数据流图”、“结构图”无法描述清楚,这时候可以用一些辅助的工具,进行描述。主要的辅助工具有:

  • 数据字典
  • 加工说明

5.1.数据字典

数据流图中结点间流转的数据如果组成比较复杂,可以通过数据字典来进一步描述。

数据字典中的逻辑操作符:

a48c910df3b44a659d3ec09ccfcab420.png

示例:

销售的商品=商品名+商品编号+价格

现金额=非负数

查询要求=[商品编号|商品名]

5.2.加工说明

加工说明,即简单描述加工节点需要做什么,说清楚就行,可以用纯文字,表格,也可以用伪代码的形式来展现,比如说:

if 后买数量>10

then 6折

else 9折


目录
相关文章
|
2月前
|
自然语言处理 算法 数据挖掘
长绳方法
进一步提高语言模型(LLM)的性能,通过扩展其上下文窗口至超过200万个标记,从而实现更深入的语境理解。本文将对这一成果进行深入解读,探讨其意义和潜在应用。
15 2
|
15天前
|
算法 数据安全/隐私保护
常用的有限元网格生成方法
本文介绍了三种常见的有限元网格生成方法:映射法、四(八)叉树法和Delaunay三角化法。映射法通过坐标变换将物理域映射到规则参数域,适合生成结构化和非结构化网格,但处理复杂区域时较困难。四(八)叉树法基于栅格,通过递归细分逼近边界,适用于非结构化网格,但内部和边界网格的相容剖分较复杂。Delaunay三角化法通过保证外接圆特性生成高质量网格,适用于凸区域,但在凹区域需进行边界恢复。前沿推进法则从边界开始逐步向内生成网格,边界质量好,但数据结构设计和推进规则制定有一定挑战。这些方法各有优缺点,常结合使用以优化网格剖分。
296 1
|
10月前
|
SQL 数据库
SqlCommand.ExecuteNonQuery 方法
SqlCommand的一个类,用于包含update、insert、delete、select的Transact-sql 语句中来修改数据库中的数据,并返回结果。
|
10月前
|
C#
C#中的方法
C#中的方法
50 0
|
C语言 C++
求公因数的方法(C/C++)
求公因数的方法(C/C++)
260 0
求公因数的方法(C/C++)
|
安全 Java
浅析ThreadList的runcheckpoint方法
浅析ThreadList的runcheckpoint方法
90 0
|
测试技术 C#
分享几个实用的方法
  今天主要和大家分享的是本人总结的分页执行方法,也可以说就是分批执行;该篇采用java8新增的表达式来操作,希望能给各位带来好的帮助和在日常工作中提供便利;同样的操作流程和逻辑之前用C#代码写过一次,有需要的朋友可以看以前的博文; 分页方式拆分List为多个子集List方法 执行统一方法-无...
1176 0
|
Android开发
两个方法搞定透明状态栏
两个方法搞定透明状态栏
1442 0
|
数据库 Go
统计数据库大小的方法
原文:统计数据库大小的方法     一台服务器上所有数据库(也可能是部分数据库)的大小是我们经常需要了解的,它不仅能让我们知道目前数据库使用磁盘的比例, 而且定期搜集这些信息,还能了解数据库一段时间的数据增量,更为常用的是在做数据迁移和升级时,方便规划新服务器磁盘容量。
1246 0