结构化方法

2021/9/3 23:09:15

本文主要是介绍结构化方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

  • 结构化方法
  • 1、结构化程序设计
    • 1.1、结构化编程
    • 1.2、非纯粹结构化编程
  • 2、结构化分析
    • 2.1、数据流图
    • 2.2、数据字典
    • 2.3、结构化语言
    • 2.4、判定表
    • 2.5、判定树
    • 2.6、E-R图
  • 3、结构化设计
  • 4、参考

结构化方法

       结构化方法(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.判定树和判定表



这篇关于结构化方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程