IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 结构化方法 -> 正文阅读

[C++知识库]结构化方法

结构化方法

???????结构化方法(SD方法)是一种传统的软件开发方法,它是由结构化程序设计、结构化分析和结构化设计三部分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。本篇博文将逐一介绍这三部分。

1、结构化程序设计

1.1、结构化编程

???????结构化编程是一种编程范式,这种范式规定了我们在写程序时候的一些要求,其目的是使我们能够编出来的程序可读性、可维护性、可扩展性更佳,避免写出面条式的代码(面条式代码是一种对结构化不好的代码的形象比喻,代码直接相互交迭、相互跳转,所有代码都揉在一起,就如面条一样)。

1.2、非纯粹结构化编程

???????结构化编程确实可以使得程序变得更清晰可读,但严格的限制也使得了有些时候编程会变得很不方便,因此也有人提出了反对的意见。如著名计算机科学家高德纳便提出了使用goto指令可以使得程序更清楚而有效率,也不会牺牲程序的可读性。在我们如今许多的程序设计里面,最常见的几个非结构化但又是相当有用的程序设计思路有如下两个。
???????程序多出口,即一个过程或函数里面有多个return,或循环里面的continue或者break。这样的设计允许了我们能在多重的嵌套中直接退出,或者提早退出循环。虽然这些违反了结构化设计的原则,并且可以使用纯粹的结构化设计实现,但是比起纯粹的结构化设计会节省许多的代码,并且不会非常影响程序的可读性。
???????错误处理,即像java里面的try-catch语句。因为没一条语句都有可能产生错误,因此在try-catch里面每一条语句都有可能是出口,相当于多出口,但只是错误处理里面出口并不是显式定义。错误处理在编程里面是非常必要的,因此错误处理也是一个合理的例外。

2、结构化分析

???????结构化分析一般指利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表以及判定树、E-R图等。

2.1、数据流图

???????数据流图(Data Flow Diagram):简称DFD,它也称为数据流程图。强调数据传递和加工角度
???????数据流图画法
???????(一)确定系统的输入输出
???????由于系统究竟包括哪些功能可能一时难于弄清楚,可使范围尽量大一些,把可能有的内容全部都包括进去
???????(二)由外向里画系统的顶层数据流图
???????首先,将系统的输入数据和输出数据用一连串的加工连接起来。在数据流的值发生变化的地方就是一个加工。接着,给各个加工命名。然后,给加工之间的数据命名。最后,给文件命名。
???????(三)自顶向下逐层分解,绘出分层数据流图
???????对于大型的系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示

???????举个栗子:
在这里插入图片描述
???????其中=表示数据存储,椭圆表示数据进程,箭头表示直接连接线和动态连接线。

2.2、数据字典

???????数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。在这里插入图片描述

2.3、结构化语言

???????结构化语言的显著特征是代码和数据的分离。如果开发了一些分离很好的函数,在引用时我们仅需要知道函数做什么,不必知道它如何做。exp,c语言。

2.4、判定表

???????判定表方法是黑盒测试方法的一种,主要用于输入和输出比较多,功能逻辑比较复杂的情况,通过画出判定表缕清需求中的功能逻辑。
在这里插入图片描述

???????判定表通常有以下四个部分组成:

  • 1)条件桩(Condition Stub):在左上部,列出了问题的所有条件。通常认为列出的条件的次序无关紧要。
  • 2)动作桩(Action Stub):在左下部,列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
  • 3)条件项(Condition Entry):在右上部,列出针对它左列条件的取值。在所有可能情况下的真假值。
  • 4)动作项(Action Entry):在右下部,列出在条件项的各种取值情况下应该采取的动作。

???????举个栗子:在这里插入图片描述

???????判定表的优点和缺点

  • 优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可以避免遗漏。

  • 缺点:不能表达重复执行的动作,例如循环结构。

2.5、判定树

???????判断树(Decision Tree)判又称决策树,是判断表的变形,一般比判断表更直观、易于理解。判定树是描述基本处理逻辑功能的有效工具。

???????举个栗子:
在这里插入图片描述

2.6、E-R图

???????E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 它是描述现实世界关系概念模型的有效方法。 是表示概念关系模型的一种方式。

???????举个栗子:
**加粗样式**

3、结构化设计

???????如果说结构化分析做的是需求分析,描述的是开发软件过程中做什么的问题,那么结构化设计(Structured Design)做的就是系统设计,描述的是开发软件过程中怎么做的问题。是一种面向数据流的设计方法。

  • 基本思想是:根据结构化分析方法中的数据流图建立一个良好的模块结构图(例如SC图或软件层次方框图);运用模块化的设计原理控制系统的复杂性,即设计出模块相对独立的,模块结构图深度,宽度都适当的,单入口单出口的,单一功能的模块结构的软件结构图或软件层次方框图。此方法提供了描述软件系统的工具,提出了评价模块结构图质量的标准,即模块之间的联系越松散越好,而模块内各成分之间的联系越紧凑越好。
  • 结构化设计的目的:使程序的结构尽可能反映要解决的问题的结构。
  • 结构化设计的任务:把需求分析得到的数据流图DFD等变换为系统结构图(SC)。

举个栗子:

在这里插入图片描述

4、参考

1.百度百科-结构化设计
2.结构化方法
3.结构化语言
4.数据流图
5.数据字典
6.[ 黑盒测试方法 ] 判定表驱动法
7.判定树和判定表

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:19:43  更:2021-09-04 17:20:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:46:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码