什么是结构化设计结构化设计的步骤?

2024-05-16

1. 什么是结构化设计结构化设计的步骤?

  结构化设计是一种面向资料流的设计方法,目的在于确定软体的结构。那么你对结构化设计了解多少呢?以下是由我整理关于什么是结构化设计的内容,希望大家喜欢! 
     结构化设计的基本原理和相关概念  
    抽象化:常用的抽象化手段有过程抽象、资料抽象和控制抽象 
 
    ● 过程抽象:任何一个完成明确功能的操作都可被使用者当做单位的实体看待,尽管这个操作时机上可能由一系列更低阶的操作来完成。 
 
    ● 资料抽象:与过程抽象一样,允许设计人员在不同层次上描述资料物件的细节。 
 
  
 
    ● 与过程抽象和资料抽象一样,控制抽象可以包含一个程式控制机制而无须规定其内部细节。 
 
    自顶向下,逐步细化:将软体的体系结构按自顶向下方式,对各个层次的过程细节和资料细节逐层细化,直到用程式设计语言的语句能够实现为止,从而最后确立整个的体系结构。 
 
    模组化:将一个待开发的软体分解成若干个小的简单的部分——模组,每个模组可独立地开发、测试,最后组装成完整的程式。这是一种复杂问题的“分而治之”的原则。模组化的目的是使程式结构清晰,容易阅读,容易理解,容易测试,容易修改。 
 
    控制层次:表明了程式构件***模组***的组织情况。控制层次往往用程式的层次结构***树形或网型***来表示。 
 
    ● 深度:程式结构的层次数,可以反映程式机构的规模和复杂程度。 
 
    ● 宽度:同一层模组的最大模组个数 
 
    ● 模组的扇出:一个模组呼叫***或控制***的其他模组数 
 
    ● 模组的扇入:呼叫***或控制***一个给定模组的模组个数 
 
    资讯遮蔽:将每个程式的成分隐蔽或封装在一个单一的设计模组中,定义每一个模组时尽可能少的显露其内部的处理,可以提高软体的可修改性,可测试性和可移植性。 
 
    模组独立:每个模组完成一个相对特定独立的子功能,并且与其他模组之间的联络简单。衡量度量标准有两个:模组间的耦合和模组的内聚。模组独立性强必须做到高内聚低耦合。 
 
    ● 耦合:模组之间联络的紧密程度,耦合度越高模组的独立性越差。耦合度从低到高的次序为:非直接耦合、资料耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。 
 
    ● 内聚是指内部各元素之间联络的紧密程度,内聚度越低模组的独立性越差。内聚度从低到高依次是:偶然内聚、逻辑内聚、瞬时内聚、过程内聚、通讯内聚、顺序内聚、功能内聚。 
     结构化设计的基本步骤  
    分为概要设计和详细设计两个阶段。 
 
    概要设计 
 
    概要设计也称为结构设计或总体设计,主要任务是把系统的功能需求分配给软体结构,形成软体的模组结构图。 
 
    概要设计的基本任务:设计软体系统结构:划分功能模组,确定模组间呼叫关系;资料结构及资料库设计:实现需求定义和规格说明过程中提出的资料物件的逻辑表示;编写概要设计文件: 包括概要设计说明书、资料库设计说明书,整合测试计划等;概要设计文件评审:对设计方案是否完整实现需求分析中规定的功能、效能的要求,设计方案的可行性等进行评审。 
 
    概要设计工具:结构图***SC: Structure Chart ***,反映系统的功能实现以及模组与模组之间的联络与通讯,即反映了系统的总体结构。注意:资料流DFD是软体生命周期的定义阶段中的需求分析方法中结构化分析方法的一种,此外还有资料字典***DD***、判定树和判定表,而SC是开发阶段中概要设计使用的方法。 
 
    详细设计 
 
    详细设计的目的:为软体结构图***SC***中的每 一个模组确定采用的演算法,模组内资料结构,用某种选定的表达工具***如N-S图等***给出清晰的描述。 结构化设计的步骤

什么是结构化设计结构化设计的步骤?

2. 什么是结构化设计方法?


3. 结构化设计是一种面向什么的设计方法?

1,结构化设计是一种面向数据流的设计方法。
2,结构化设计是数据模型和过程模型的结合。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。
3,结构化设计的步骤如下:
(1)评审和细化数据流图;
(2)确定数据流图的类型;
(3)把数据流图映射到软件模块结构,设计出模块结构的上层;
(4)基于数据流图逐步分解高层模块,设计中下层模块;
(5)对模块结构进行优化,得到更为合理的软件结构;
(6)描述模块接口。

结构化设计是一种面向什么的设计方法?

4. 什么是结构化

结构化面试,也称标准化面试,是相对于传统的经验型面试而言的,是指按照事先制定好的面试提纲上的问题一一发问,并按照标准格式记下面试者的回答和对他的评价的一种面试方式。
  结构化面试,是根据所制定的评价指标,运用特定的问题、评价方法和评价标准,严格遵循特定程序,通过测评人员与应聘者面对面的言语交流,对应聘者进行评价的标准化过程。由于吸收了标准化测验的优点,也融合了传统的经验型面试的优点,结构化面试的测验结果比较准确和可靠。

5. 什么是结构化?

所谓结构化,是指将逐渐积累起来的知识加以归纳和整理,使之条理化、纲领化,做到纲举目张。知识是逐渐积累的,但在头脑中不应该是堆积的。心理学研究已发现,优生和差生的知识组织存在明显差异。优生头脑中的知识是有组织、有系统的,知识点按层次排列,而且知识点之间有内在联系,具有结构层次性。

结构:
结构,汉语词汇,读音为jié gòu,意思由组成整体的各部分的搭配和安排;建筑物承重部分的构造;构筑;建造等意思。晋·葛洪《抱朴子·勖学》:“文梓干云而不可名台榭者,未加班输之结构也。”唐·刘禹锡《白侍郎大尹自河南寄示兼命同作》诗:“结搆疎林下,夤缘曲岸隈。”

什么是结构化?

6. 什么叫结构设计

工程结构是指房屋建筑和土木工程的建筑物、构筑物及其相关组成部分的总称。
建筑结构指工业与民用建筑工程包括基础在内的承重骨架体系;为房屋建筑工程结构的简称。
结构设计,就是保证该承重骨架体系可靠,即安全性、适用性、耐久性。是个通过计算保证抗力大于效应(荷载)的过程。(个人愚见,待高人指点)

7. 什么叫结构化程序设计

结构化程序设计的定义:结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。结构化程序设计就是用高级语言编写的具有分支、循环结构的程序。要完成一件工作,需要先设计,然后再将设计具体实现。例如,施工图纸就是一个设计,工程师制作图纸的过程就是设计的过程,而工人根据图纸施工的过程就是实现的过程。
结构化程序设计(STRUCTUREDPROGRAMING,简称SP)思想是最早由E.W.Dijikstra在1965年提出的,结构化程序设计思想确实使程序执行效率提高。程序的出错率和维护费用大大减少结构程序设计就是一种进行程序设计的原则和方法,按照这种原则和方法可设计出结构清晰、容易理解、容易修改、容易验证的程序结构化程序设计的目标在于使程序具有一个合理结构,以保证和验证程序的正确性,从而开发出正确、合理的程序。
结构化程序设计的三种基本结构如下: 1、顺序结构:顺序结构是一种线性、有序的结构,它依次执行各语句模块。  2、循环结构:循环结构是重复执行一个或几个模块,直到满足某一条件为止。 3、选择结构:选择结构是根据条件成立与否选择程序执行的通路。





什么叫结构化程序设计

8. 什么是结构化程序设计?

程序设计主要方法有面向结构的方法和面向对象的方法。
结构化程序设计

   随着计算机的价格不断下降,硬件环境不断改善,运行速度不断提升。程序越写越大,功能越来越强,讲究技巧的程序设计方法已经不能适应需求了。记得是哪本书上讲过,一个软件的开发成本是由:程序设计 30% 和程序维护 70% 构成。这是书上给出的一个理论值,但实际上,从我十几年的工作经验中,我得到的体会是:程序设计占 10%,而维护要占 90%。也许我说的还是太保守了,维护的成本还应该再提高。下面这个程序,提供了两种设计方案,大家看看哪个更好一些那?

   题目:对一个数组中的100个元素,从小到大排序并显示输出。(BASIC)

   方法1:冒泡法排序,同时输出。 


FOR I=1 TO 100
  FOR J=I+1 TO 100
   IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=T
  NEXT J
  ? A[I]
NEXT I

   方法2:冒泡法排序,然后再输出。


FOR I=1 TO 100
FOR J=I+1 TO 100
IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=T
NEXT
NEXT

FOR I=1 TO 100
? A[I]
NEXT 

   显然,“方法1”比“方法2”的效率要高,运行的更快。但是,从现在的程序设计角度来看,“方法2”更高级。原因很简单:(1)功能模块分割清晰——易读;(2)也是最重要的——易维护。程序在设计阶段的时候,就要考虑以后的维护问题。比如现在是实现了在屏幕上的输出,也许将来某一天,你要修改程序,输出到打印机上、输出到绘图仪上;也许将来某一天,你学习了一个新的高级的排序方法,由“冒泡法”改进为“快速排序”、“堆排序”。那么在“方法2”的基础上进行修改,是不是就更简单了,更容易了?!这种把功能模块分离的程序设计方法,就叫“结构化程序设计”。

面向对象的程序设计

   随着程序的设计的复杂性增加,结构化程序设计方法又不够用了。不够用的根本原因是“代码重用”的时候不方便。面向对象的方法诞生了,它通过继承来实现比较完善的代码重用功能。很多学生在应聘工作,面试的时候,常被问及一个问题“你来谈谈什么是面向对象的程序设计”,学生无言,回来问我,这个问题应该怎么回答。我告诉他,你只要说一句话就够了“面向对象程序设计是对数据的封装;范式(模板)的程序设计是对算法的封装。”后来再有学生遇到了这个问题,只简单的一句对答,对方就对这个学生就刮目相看了(学生后来自豪地告诉我的)。为什么那?因为只有经过彻底的体会和实践才能提炼出这个精华。

   面向对象的设计方法和思想,其实早在70年代初就已经被提出来了。其目的就是:强制程序必须通过函数的方式来操纵数据。这样实现了数据的封装,就避免了以前设计方法中的,任何代码都可以随便操作数据而因起的BUG,而查找修改这个BUG是非常困难的。那么你可以说,即使我不使用面向对象,当我想访问某个数据的时候,我就通过调用函数访问不就可以了吗?是的,的确可以,但并不是强制的。人都有惰性,当我想对 i 加1的时候,干吗非要调用函数呀?算了,直接i++多省事呀。呵呵,正式由于这个懒惰,当程序出BUG的时候,可就不好捉啦。而面向对象是强制性的,从编译阶段就解决了你懒惰的问题。

   巧合的是,面向对象的思想,其实和我们的日常生活中处理问题是吻合的。举例来说,我打算丢掉一个茶杯,怎么扔那?太简单了,拿起茶杯,走到垃圾桶,扔!注意分析这个过程,我们是先选一个“对象”------茶杯,然后向这个对象施加一个动作——扔。每个对象所能施加在它上面的动作是有一定限制的:茶杯,可以被扔,可以被砸,可以用来喝水,可以敲它发出声音......;一张纸,可以被写字,可以撕,可以烧......。也就是说,一旦确定了一个对象,则方法也就跟着确定了。我们的日常生活就是如此。但是,大家回想一下我们程序设计和对计算机的操作,却不是这样的。拿DOS的操作来说,我要删除一个文件,方法是在DOS提示符下:c:> del 文件名。注意看这个过程,动作在前(del),对象在后(文件名),和面向对象的方法正好顺序相反。那么只是一个顺序的问题,会带来什么影响那?呵呵,大家一定看到过这个现象:File not found. “啊~~~,我错了,我错了,文件名敲错了一个字母”,于是重新输入:c:> del 文件名2。不幸又发生了,计算机报告:File read only. 哈哈,痛苦吧:)。所以DOS的操作其实是违反我们日常生活中的习惯的(当然,以前谁也没有提出过异议),而现在由于使用了面向对象的设计,那么这些问题,就在编译的时候解决了,而不是在运行的时候。obj.fun(),对于这条语句,无论是对象,还是函数,如果你输入有问题,那么都会在编译的时候报告出来,方便你修改,而不是在执行的时候出错,害的你到处去捉虫子。

   同时,面向对象又能解决代码重用的问题——继承。我以前写了一个“狗”的类,属性有(变量):有毛、4条腿、有翘着的尾巴(耷拉着尾巴的那是狼)、鼻子很灵敏、喜欢吃肉骨头......方法有(函数):能跑、能闻、汪汪叫......如果它去抓耗子,人家叫它“多管闲事”。好了,狗这个类写好了。但在我实际的生活中,我家养的这条狗和我以前写的这个“狗类”非常相似,只有一点点的不同,就是我的这条狗,它是:卷毛而且长长的,鼻子小,嘴小......。于是,我派生一个新的类型,叫“哈巴狗类”在“狗类”的基础上,加上新的特性。好了,程序写完了,并且是重用了以前的正确的代码——这就是面向对象程序设计的好处。我的成功只是站在了巨人的肩膀上。当然,如果你使用VC的话,重用最多的代码就是MFC的类库。