结构化分析方法

简介: 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折


目录
相关文章
|
机器学习/深度学习 数据采集 SQL
【机器学习】数据清洗之处理重复点
【机器学习】数据清洗之处理重复点
823 2
|
小程序
微信小程序 - text 标签头部有空白间距
微信小程序 - text 标签头部有空白间距
565 0
|
测试技术
软件测试区分:条件组合覆盖、语句覆盖、判定覆盖、条件覆盖、路径覆盖
本文解释了软件测试中的不同覆盖标准,包括语句覆盖、判定覆盖、条件覆盖、条件组合覆盖和路径覆盖,并讨论了每种覆盖标准的特点、优点和缺点。
4321 62
|
机器学习/深度学习 人工智能 算法
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
|
10月前
|
设计模式 Java uml
01.面向对象设计思想
本内容系统讲解面向对象设计思想,涵盖从面向过程到面向对象的演变、面向对象的核心理念、编程实践、与面向过程的对比分析等。通过案例解析,帮助理解类与对象、封装、继承、多态等关键概念,提升代码的可维护性与扩展性。同时结合设计模式与UML建模工具,深入探讨面向对象分析与设计的方法与应用场景。适合希望掌握面向对象编程思想、提升软件设计能力的开发者学习与参考。
363 0
|
机器学习/深度学习 数据采集 存储
通义千问 Qwen 在智能文本分析中的应用实践
本文探讨了通义千问Qwen在智能文本分析的应用,涵盖文本分类、情感分析及关键信息提取,通过具体案例和代码实现,展示了Qwen的强大语言理解能力,为开发者和研究人员提供了实用参考。
|
数据处理 Python
轻松掌握Pandas数据美化:颜色背景渐变技巧分享
轻松掌握Pandas数据美化:颜色背景渐变技巧分享
577 0
|
安全 Java 数据库
Spring boot 入门教程-Oauth2,java面试基础题核心
Spring boot 入门教程-Oauth2,java面试基础题核心
|
自然语言处理 监控 供应链
项目十大管理(三)进度管理
项目进度管理是指在项目实施过程中,对各阶段的进展程度和项目最终完成的期限所进行的管理。它的目的是保证项目能在满足其时间的约束条件的前提下实现项目的总体目标。也就是**把项目按时完成,所必须的管理过程**
896 1
项目十大管理(三)进度管理
|
机器学习/深度学习 算法 测试技术
RAG应用程序的12种调优策略:使用“超参数”和策略优化来提高检索性能
本文从数据科学家的角度来研究检索增强生成(retrieve - augmented Generation, RAG)管道。讨论潜在的“超参数”,这些参数都可以通过实验来提高RAG管道的性能。与本文还将介绍可以应用的不同策略,这些策略虽然不是超参数,但对性能也会产生很大的影响。
866 1