标题：结构化设计方法
概述
结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它把系统作为一系列数据流的转换，输入数据被转换为期望的输出值，通过模块化来完成自顶而下实现的文档化，并作为一种评价标准在软件设计中起指导性作用，通常与结构化分析方法衔接起来使用，以数据流图为基础得到软件的模块结构。结构化设计所使用的工具有结构图和伪代码。结构图是一种通过使用矩形框和连接线来表示系统中的不同模块以及其活动和子活动的工具。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）也称结构化的英语或伪码语言，它是一种混合语言，采用英语的词汇和结构化程序设计语言的语法，它描述处理过程怎么做，类似编程语言。