标题：详细设计
简介
详细设计的工具 详细设计的基本任务 详细设计说明书
任务
详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。详细设计的目标有两个：实现模块功能的算法要逻辑上正确和算法描述要简明易懂。
方法
传统软件开发方法的详细设计主要是用结构化程序设计法。详细设计的表示工具有图形工具和语言工具。图形工具有业务流图、程序流程图、PAD（Problem Analysis Diagram）图、NS（由 Nassi和 Shneidermen开发，简称 NS）图。语言工具有伪码和PDL（Program Design Language）等。
设计工具
1．图形工具 
利用图形工具可以把过程的细节用图形描述出来。
2．表格工具 
可以用一张表来描述过程的细节，在这张表中列出了各种可能的操作和相应的条件。
3．语言工具 
用某种高级语言（称之为伪码）来描述过程的细节。概要设计和详细设计的区别与联系。
基本任务
(1)为每个模块进行详细的算法设计。用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来。
(2)为模块内的数据结构进行设计。对于需求分析、概要设计确定的概念性的数据类型进行确切的定义。
(3)为数据结构进行物理设计，即确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法，这些都依赖于具体所使用的数据库系统。
(4)其他设计：根据软件系统的类型，还可能要进行以下设计：
①代码设计。为了提高数据的输入、分类、存储、检索等操作，节约内存空间，对数据库中的某些数据项的值要进行代码设计。
②输入/输出格式设计。
③人机对话设计。对于一个实时系统，用户与计算机频繁对话，因此要进行对话方式、内容、格式的具体设计。
(5)编写详细设计说明书。
(6)评审。对处理过程的算法和数据库的物理结构都要评审。区别软件设计采用自顶向下、逐次功能展开的设计方法，首先完成总体设计，然后完成各有机组成部分的设计。
根据工作性质和内容的不同，软件设计分为概要设计和详细设计。概要设计实现软件的总体设计、模块划分、用户界面设计、数据库设计等等；详细设计则根据概要设计所做的模块划分，实现各模块的算法设计，实现用户界面设计、数据结构设计的细化，等等。联系概要设计是详细设计的基础，必须在详细设计之前完成，概要设计经复查确认后才可以开始详细设计。概要设计，必须完成概要设计文档，包括系统的总体设计文档、以及各个模块的概要设计文档。每个模块的设计文档都应该独立成册。
详细设计必须遵循概要设计来进行。详细设计方案的更改，不得影响到概要设计方案；如果需要更改概要设计，必须经过项目经理的同意。详细设计，应该完成详细设计文档，主要是模块的详细设计方案说明。和概要设计一样，每个模块的详细设计文档都应该独立成册。
概要设计里面的数据库设计应该重点在描述数据关系上，说明数据的来龙去脉，在这里应该结合我们的一下结果数据，说明这些结果数据的源点，我们这样设计的目 的和原因。详细设计里的数据库设计就应该是一份完善的数据结构文档，就是一个包括类型、命名、精度、字段说明、表说明等内容的数据字典。
概要设计里的功能应该是重点在功能描述，对需求的解释和整合，整体划分功能模块，并对各功能模块进行详细的图文描述，应该让读者大致了解系统作完后大体的 结构和操作模式。详细设计则是重点在描述系统的实现方式，各模块详细说明实现功能所需的类及具体的方法函数，包括涉及到的sql语句等。
1.详细设计的基本任务是什么？有哪几种描述方法？
详细设计的基本任务：
(1)为每个模块进行详细的算法设计。
(2)为每个模块内的数据结构进行设计。
(3)对数据库进行设计，即确定数据库的物理结构。
(4)其他设计：
a.代码设计
b.输入/输出格式设计。
c.人机对话设计。
(5)编写详细设计说明书。
(6)评审。
描述方法（三种）：
a.程序流程图
b.PAD图
C.过程设计语言
2.结构化程序设计基本要求要点是什么？
a.采用自顶向下、逐步求精的程序设计方法
b.使用三种基本程序控制结构构造程序
1).用顺序方式对过程分解，确定各部分的执行顺序。
2).用选择方式对过程分解，确定某个部分的执行条件。
3).用循环方式对过程分解，确定某个部分重复的开始和结束的条件。
c.主程序员组的组织形式。
3.简述Jackson 方法的设计步骤。
Jsp 方法一般通过以下5个步骤来完成设计：
a.分析并确定输入/出数据的逻辑结构，并用Jackson 结构图表示这些数据结构。
b.找出输入数据结构和输出数据结构中有对应关系的数据单元。
c.按一定的规则由输入、输出的数据结构导出程序结构。
d.列出基本操作与条件，并把它们分配到程序结构图的适当位置。
e.用伪码写出程序。
4.请使用流程图、PAD图各PDL语言描述下列程序的算法。
(1)在数据A（1）-A（10）中求最大数和次大数。
(2)输入三个正整数作为边长、判断该三条边构成的三角形是等边、等腰或一般三角形。
答：
(1)
1）流程图：
2）PAD图
3）PDL语言
定义 n1=n2=0
输入A(1).......A(10)
n1=n2=A(1)
while i>10
if A(i)>=n1
n2=n1
n1=A(i)
end while
5.用PAD图描述下面问题的控制结构。
有一个表A(1)、A(2)、........A(n),按递增顺序排列。给定一个Keyw值，在表中用折半查找。若找到将表位置i送入x,否则将零送到x,同时将Key值插入表中。
算法： 1)置初值H=1(表头),T=N（表尾）。
2)置i=[(H+T)/2](取整).
3)若Key=A(i),则找到，i送到x;若Key>A(i),则Key在表的后半部分，i+1送入H；
若Key<A(i),则能Key在表的前半部分，i-1送入T，重复第三步查找直到H>T为止。
4)查不到时，将A(i),....,A(N)移到A(i+1),.....A(N+1),Key 值送入A(i)中。
6.数据记录和输出
一个正文文件由若干记录组成，每个记录是一个字符串，要求统计每个记录中空格字符的个数及文件中空格字符的总个数。要求输出数据格式是每复制一行这符串后，另起一行打印出这个字符中的空格数，最后打印出文件空格的总个数，用Jackson方法设计该程序结构。
附加题：
1、假设对顾客的订货单按如下原则处理：
将顾客的信用度分三个档次： 
欠款时间不超过30天； 
欠款时间超过30天但不超过100天； 
欠款时间超过100天。 
对于上述三种情况，分别根据库存情况来决定对顾客订货的态度。
情况之一(欠款时间≤30天)，如果需求数≤库存量，则立即发货，如果需求数>库存量，则只发现有库存，不足部分待进货后补发。
情况之二 (30天<欠款时间≤100天)，如果需求数≤库存量，则要求先付款再发货，如果需求数>库存量，则不发货。
情况之三(欠款时间>100天)，则通知先付欠款，再考虑是否发货。 
试用判定树的形式予以描述(设欠款时间D，需求数N，库存量Q)。
说明书
1、引言
1.1、编写目的　说明编写这份详细设计说明书的目的，指出预期的读者。
1.2、背景说明：
a． 待开发软件系统的名称；
b． 本项目的任务提出者、开发者、用户和运行该程序系统的计算中心。
1.3、定义　列出本文件中用到专门术语的定义和外文首字母组词的原词组。
1.4、参考资料
列出有关的参考资料，如：
a． 本项目的经核准的计划任务书或合同、上级机关的批文；
b． 属于本项目的其他已发表的文件；
c． 本文件中各处引用到的文件资料，包括所要用到的软件开发标准。列出这些文件的标题、文件编号、发表日期和出版单位，说明能够取得这些文件的来源。
2、程序系统的结构
用一系列图表列出本程序系统内的每个程序（包括每个模块和子程序）的名称、标识符和它们之间 的层次结构关系。
3、程序1（标识符）设计说明
从本章开始，逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。对于一个具体的模块，尤其是层次比较低的模块或子程序，其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同，在这种情况下，只要简单地说明这一点即可。
3.1、程序描述
给出对该程序的简要描述，主要说明安排设计本程序的目的意义，并且，还要说明本程序的特点（如 是常驻内存还是非常驻？是否子程序？是可重入的还是不可重入的？有无覆盖要求？是顺序处理还是并发处理等）。
3.2、功能
说明该程序应具有的功能，可采用IPO图（即输入一处理一输出图）的形式。
3.3、性能
说明对该程序的全部性能要求，包括对精度、灵活性和时间特性的要求。
3.4、输入项
给出对每一个输入项的特性，包括名称、标识、数据的类型和格式、数据值的有效范围、输入的方式。数量和频度、输入媒体、输入数据的来源和安全保密条件等等。
3.5、输出项
给出对每一个输出项的特性，包括名称、标识、数据的类型和格式，数据值的有效范围，输出的形式、数量和频度，输出媒体、对输出图形及符号的说明、安全保密条件等等。
3.6、算法
详细说明本程序所选用的算法，具体的计算公式和计算步骤。
3.7、流程逻辑
用图表（例如流程图、判定表等）辅以必要的说明来表示本程序的逻辑流程。
3.8、接口
用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一层模块、子程序，说明参数赋值和调用方式，说明与本程序相直接关联的数据结构（数据库、数据文卷）。
3.9、存储分配
根据需要，说明本程序的存储分配。
3.10、注释设计
说明准备在本程序中安排的注释，如：
a． 加在模块首部的注释；
b． 加在各分枝点处的注释；
c． 对各变量的功能、范围、缺省条件等所加的注释；
d． 对使用的逻辑所加的注释等等。
3.11、限制条件
说明本程序运行中所受到的限制条件。
3.12、测试计划
说明对本程序进行单体测试的计划，包括对测试的技术要求、输入数据、预期结果、进度安排、人员职责、设备条件驱动程序及桩模块等的规定。
3.13、尚未解决的问题
说明在本程序的设计中尚未解决而设计者认为在软件完成之前应解决的问题。
4、程序2（标识符）设计说明
用类似F．3的方式，说明第2个程序乃至第N个程序的设计考虑。