结构化设计

结构化设计

目录导航

基本内容

 结构化设计结构化设计 结构化设计是运用一组标准的准则和工具帮助系统设计员确定软件系统是由哪些模块组成的,这些模块用什么方法联结在一起,才能构成一个最优的软件系统结构。

  结构化设计是由美国IBM公司的Constantine等人花了十几年时间研究出来的一种用于概要设计的一套方法,与结构化分析方法结合使用。该方法的要点是:

  (1) 自顶向下、逐步求精的功能划分;

  (2) 模块化;

  (3) 软件结构化准则是模块独立性;模块内聚性高,模块间的耦合性低;

  (4) 用软件结构图来描述软件结构。

基本要点

  1.采用自顶向下,逐步求精的程序设计方法

  在需求分析,概要设计中,都采用了自顶向下,逐层细化的方法。

  2.使用三种基本控制结构构造程序

  任何程序都可由顺序、选择、重复三种基本控制结构构造。

  (1)用顺序方式对过程分解,确定各部分的执行顺序。

  (2)用选择方式对过程分解,确定某个部分的执行条件。

  (3)用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。

  (4)对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。

  3. 主程序员组的组织形式指开发程序的人员组织方式应采用由一个主程序员(负责全部技术活动)、一个后备程序员(协调、支持主程序员)和一个程序管理员(负责事务性工作,如收集、记录数据,文档资料管理等)三个为核心,再加上一些专家(如通信专家、数据库专家)、其他技术人员组成小组。

设计方法

       自顶向下

  程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

  逐步细化

  对复杂问题,应设计一些子目标作为过渡,逐步细化。

  模块化设计

  一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。

  限制使用goto语句

  结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。作为争论的结论,1974年Knuth发表了令人信服的总结,并证实了:

  (1)GOTO语句确实有害,应当尽量避免;

  (2)完全避免使用GOTO语句也并非是个明智的方法,有些地方使用GOTO语句,会使程序流程更清楚、效率更高;

  (3)争论的焦点不应该放在是否取消GOTO语句上,而应该放在用什么样的程序结构上。其中最关键的是,应在以提高程序清晰性为目标的结          构化方法中限制使用GOTO语句。

基本结构

顺序结构

  顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。

选择结构

 结构化设计结构化设计 选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。

循环结构

  循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环。

  当型循环:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处。因为是"当条件满足时执行循环",即先判断后执行,所以称为当型循环。

  直到型循环:表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断。因为是"直到条件为真时为止",所以称为直到型循环。

特点  结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。在程序的静态形式与动态执行流程之间具有良好的对应关系。

优点

 结构化设计结构化设计 由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。

  按照结构化程序设计的观点,任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合: 顺序结构、选择结构和循环结构来实现。

  结构化程序设计的基本思想是采用"自顶向下,逐步求精"的程序设计方法和"单入口单出口"的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;"单入口单出口"的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序来。

  ①整体思路清楚,目标明确。

 结构化设计结构化设计 ②设计工作中阶段性非常强,有利于系统开发的总体管理和控制。

  ③在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷。

缺点

  ①用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。

  ②用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。

  ③系统的开发周期长。

 

结构设计

基本概述

  结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它把系统作为一系列数据流的转换,输入数据被转换为期望的输出值,通过模块化来完成自顶而下实现的文档化,并作为一种评价标准在软件设计中起指导性作用,通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。结构化设计所使用的工具有结构图和伪代码。结构图是一种通过使用矩形框和连接线来表示系统中的不同模块以及其活动和子活动的工具。SD方法尤其适用于变换型结构和事务型结构的目标系统。结构化设计是数据模型和过程模型的结合。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。结构化设计的步骤如下:①评审和细化数据流图;②确定数据流图的类型;③把数据流图映射到软件模块结构,设计出模块结构的上层;④基于数据流图逐步分解高层模块,设计中下层模块;⑤对模块结构进行优化,得到更为合理的软件结构;⑥描述模块接口。

  结构化设计方法的设计原则

  使每个模块执行一个功能(坚持功能性内聚)

  每个模块用过程语句(或函数方式等)调用其他模块

  模块间传送的参数作数据用

  模块间共用的信息(如参数等)尽量少

过程原则

  ◆ 软件需求:解决“做什么”。

  ◆ 软件设计:解决“怎么做”。

  ◆ 软件设计的任务:从软件需求规格说明书出发,形成软件的具体设计方案。(根据需求分析阶段确定的功能确定模块及每个模块算法和编写具体的代码)

  1、软件设计内容

  (1)软件设计定义

  软件设计是把软件需求(定义阶段)转换为软件的具体设计方案,即划分模块结构的过程,是软件开发阶段最重要的步骤。

  (2)软件设计划分

  

划分 名称
按工程管理角度 概要设计
详细设计
按技术观点划分 结构设计
数据设计
接口设计
过程设计

 一般过程:是一个迭代过程,先进行高层次结构设计;再进行低层次过程设计;穿插数据设计和接口设计。

  (3)软件设计过程

  2、软件设计原则

  为了开发出高质量低成本的软件,在软件开发过程中必须遵循下列软件工程原则:

  (1)抽象(abstraction)

  抽取事物最基本的特性和行为,忽略非基本的细节。采用分层次抽象的办法可以控制软件开发过程的复杂性,有利于软件的可理解性和开发过程的管理。

  (2)信息隐藏(informationhiding)

  信息隐蔽:采用封装技术,将程序模块的实现细节(过程或数据)隐藏起来,对于不需要这些信息的其它模块来说是不能访问的,使模块接口尽量简单。

  按照信息隐藏的原则,系统中的模块应设计成“黑箱”,模块外部只能使用模块接口说明中给出的信息,如操作、数据类型等等。

  (3)模块化(modularity)

  使程序有许多个逻辑上相对独立的模块组成。模块(module)是程序中逻辑上相对独立的单元;模块的大小要适中;高内聚、低耦合。

  (4)一致性(consistency)

  整个软件系统(包括文档和程序)的各个模块均应使用一致的概念、符号和术语;程序内部接口应保持一致;软件与硬件接口应保持一致;系统规格说明与系统行为应保持一致;实现一致性需要良好的软件设计工具(如数据字典、数据库、文档自动生成与一致性检查工具等等)、设计方法和编码风格的支持。

软件设计

划分 名称
按工程管理角度 概要设计
详细设计
按技术观点划分 结构设计
数据设计
接口设计
过程设计

词条图册

  1、软件设计的方法

  开发阶段设计软件时所使用的方法。注意区别:结构化分析方法是定义阶段需求分析过程中所使用的方法。

  2、软件设计的方法的种类

  结构化设计方法、面向对象的设计方法。

  3、结构化设计方法(SD-- Structured Design)

  结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础发展起来的。

  基本思想:将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段。

  ◆ 结构化设计过程的概要设计阶段的描述工具是:结构图(SC- Structure Chart )。

  (1)概要设计也称为结构设计或总体设计,主要任务是把系统的功能需求分配给软件结构,形成软件的模块结构图。

  (2)概要设计的基本任务。设计软件系统结构:划分功能模块,确定模块间调用关系;数据结构及数据库设计:实现需求定义和规格说明过程中提出的数据对象的逻辑表示;编写概要设计文档: 包括概要设计说明书、数据库设计说明书,集成测试计划等;概要设计文档评审:对设计方案是否完整实现需求分析中规定的功能、性能的要求,设计方案的可行性等进行评审。

  (3)结构化设计的目的与任务。结构化设计的目的:使程序的结构尽可能反映要解决的问题的结构。结构化设计的任务:把需求分析得到的数据流图DFD等变换为系统结构图(SC)。

  4、概要设计工具——结构图(SC: Structure Chart )

  (1)作用

  软件结构概要设计阶段的工具。反映系统的功能实现以及模块与模块之间的联系与通信,即反映了系统的总体结构。

  ◆ 注意:数据流DFD是软件生命周期的定义阶段中的需求分析方法中结构化分析方法的一种,此外还有数据字典(DD)、判定树和判定表,而SC是开发阶段中概要设计使用的方法。

  (2)结构图基本组成成分:模块、数据和调用

  (3)结构图基本图符

  (4)结构图的基本术语

  ◆ 深度:模块结构的层次数(控制的层数)。

  ◆ 宽度:同一层模块的最大模块数。

  ◆ 扇出:一个模块直接调用的其他模块数目。

  ◆ 扇入:调用一个给定模块的模块个数。(被调用的次数)

  好的软件结构应该是顶层扇出比较多,中层扇出较少,底层扇入多。

  5、概要设计任务的实现--数据流图到结构图的变换

  在软件工程的需求分析阶段,信息流是一个关键考虑,通常用数据流图描绘信息在系统中加工和流动的情况,面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。典型的信息流类型:变换型和事务型。

  (1)典型的信息流类型:变换型和事务型

  ① 变换型

  信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统,当数据流具有这些特征时,这种信息流就叫变换流。

  ② 事务型

  数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,当数据流图具有这些特征时,这种信息流称为事务流。它被用于识别一个系统的事务类型并把这些事务类型用作为设计的组成部分。分析事务流是设计事务处理程序的一种策略,采用这种策略通常有一个在上层事务中心,其下将有多个事务模块,每个模块只负责一个事务类型,转换分析将会分别设计每个事务。

  6、详细设计及工具

  (1)详细设计的目的

  为软件结构图(SC)中的每 一个模块确定采用的算法,模块内数据结构,用某种选定的表达工具(如N-S图等)给出清晰的描述。

  (2)详细设计的设计工具种类

  ◆ 图形工具:程序流程图(PFD)、N-S图,问题分析图(PAD图)。

  ◆ 表格工具:类似于判定表。

  ◆ 语言工具:过程设计语言(PDL)。

  ①程序流程图(PFD: Program Flow Diagram))

  ◆ 流程图:是用一些图框表示各种操作,直观形象,易于理解。

  ◆ 特点:直观、清晰、易于掌握。

  ② 盒图(N-S图)

  为避免流程图在描述程序逻辑时的随意性与灵活性,1973提出用方框代替传统的程序流程图,通常也把这种图称为N-S图,有5种的控制结构。

  ◆ 盒图具有以下特点:过程的作用域明确;盒图没有箭头,不能随意转移控制;容易表示嵌套关系和层次关系;强烈的结构化特征。

  ③问题分析图(PAD:Problem Analysis Diagram)

  是继流程图和方框图之后,又一种描述详细设计的工具,有5种结构。

  ④ 过程设计语言(PDL)

  过程设计语言(PDL)也称结构化的英语或伪码语言,它是一种混合语言,采用英语的词汇和结构化程序设计语言的语法,它描述处理过程怎么做,类似编程语言。

相关百科
返回顶部
产品求购 求购