第1页:本章导言与目录
- 第5章详细设计
- 理解详细设计的目的与任务
- 理解面向数据结构的Jackson方法
- 熟练掌握结构化的详细设计方法及其设计工具
第2页:第5章详细设计 本节目录
- 第5章详细设计
- 5.1详细设计的目的与任务
- 5.2详细设计方法
- 5.3详细设计工具
- 5.4习题
第3页:第5章详细设计 本节目录
- 第5章详细设计
- 5.1详细设计的目的与任务
- 5.2详细设计方法
- 5.3详细设计工具
- 5.4习题
第4页:详细设计的目的与任务
- 根本目标:应该‘怎样具体地实现’系统?详细设计是软件设计的重要阶段,主要确定每个模块的具体执行过程,也称为“过程设计”。Note:
- 任务:设计程序的“蓝图”;
- 详细设计≠编写程序;
- 详细设计结果决定着程序代码的质量。5.1详细设计的目的与任务
第5页:该阶段工作具体包括以下几方面
- 该阶段工作具体包括以下几方面:
- 1.处理方式的设计
- (1)数据结构的设计。对于需求分析、总体设计确定的概念性的数据类型进行确切地定义。
- (2)算法设计。用某种图形、表格、语言等工具将模块处理过程的详细算法描述出来,并为实现软件系统的功能需求确定所必须的算法,评估算法的性能。
- (3)性能设计。为满足软件系统的性能需求确定所必须的算法和模块间的控制方式。包括:周转时间、响应时间、吞吐量、精度。
- (4)确定外部信号的接收/发送形式。5.1详细设计的目的与任务
第6页:该阶段工作具体包括以下几方面
- 该阶段工作具体包括以下几方面:
- 2.为数据库进行物理设计为数据库进行物理设计,确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。
- 3.其它设计
- (1)输入/输出格式设计:针对各个功能,根据界面设计风格,设计各类界面的样式。
- (2)人机对话设计:对于一个实时系统,用户与计算机频繁对话,因此要进行对话方式、内容及格式的具体设计。
- (3)编写详细设计说明书。5.1详细设计的目的与任务
第7页:第5章详细设计 本节目录
- 第5章详细设计
- 5.1详细设计的目的与任务
- 5.2详细设计方法
- 5.3详细设计工具
- 5.4习题
第8页:详细设计(方法)
- 5.2详细设计方法进行详细设计典型方法是结构化程序设计(Struc-tured Programming,SP)方法。进行详细设计应该遵循以下三个原则:
- (1)在保证正确可靠的前提下,尽量提高算法的可读性。
- (2)结构化设计方法是实现详细设计目标的关键技术之一。
- (3)用工具来描述模块算法。
第9页:结构化程序设计(方法)
1966年Bohm和Jacopini证明,只用3种基本的控制结构就能实现任何单入口单出口的程序。
这3种基本控制结构分别是“顺序”、“选择”和“循环”。
Bohm和Jacopini的证明给结构程序设计奠定了理论基础。
(a)(b)(c)图5.1程序流程图的3种基本结构(a)顺序结构(b)选择结构(c)当型循环结构和直到型循环结构5.2.1结构化程序设计方法
第10页:其他结构5.2.1结构化程序设计方法
其他结构5.2.1结构化程序设计方法
第11页:结构化程序设计经典定义
- 结构化程序设计的经典定义
- 如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。结构化程序设计的更全面的定义:尽可能少用GO TO语句的程序设计方法,最好仅在检测出错误时才使用GO TO语句,而且应该总使用前向GO TO语句。结构化程序设计的本质:不是不用goto语句的编程方法,而是一种使程序代码容易阅读、容易理解的编程方法。5.2.1结构化程序设计方法
第12页:结构化程序设计方法的基本思路
- 结构化程序设计方法的基本思路:
- 1.自顶向下、逐步细化自顶向下、逐步细化的设计方法的过程是将问题求解由抽象到逐步具体化的过程。用这种方法便于验证算法的正确性,在向下一层展开之前应仔细检查本层设计是否正确,只有上一层是正确的才能向下细化。检查时也是由上而下逐层检查。这样思路清楚,可以有条不紊地一步步进行,既严谨又方便。5.2.1结构化程序设计方法
第13页:结构化程序设计方法的基本思路
- 结构化程序设计方法的基本思路:
- 2.模块化设计在程序设计中常采用模块设计的方法。根据程序模块的功能将它划分为若干个子模块,如果子模块规模大,还可以继续划分为更小的模块。这个过程采用自顶向下的方法来实现。
- 3.结构化编码在设计好一个结构化的算法之后,还要善于使用高级语言进行结构化编码最终能够正确地实现算法。5.2.1结构化程序设计方法
第14页:面向数据结构的设计(方法)
面向数据流的设计方法→软件结构面向数据结构的设计方法→程序处理过程面向数据结构的设计方法:在完成了软件结构设计之后对每个模块处理过程的设计,其最终目标就是得出对程序处理过程的描述。
5.2.2面向数据结构的设计方法
第15页:面向数据结构的设计方法是以信息对象及其操
- 面向数据结构的设计方法是以信息对象及其操作为核心,认为复合信息对象具有层次结构,而这种层次结构又可以分解成多种结构对象,最终可以映射为程序结构。面向数据结构的设计方法中最著名的方法有:
- Jackson方法;
- Warnier方法。5.2.2面向数据结构的设计方法一种软件开发方法,该方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,以得到完整的程序结构图。该方法适用于输入、输出结构明确的中小型系统。
第16页:Jackson图Jackson图是J
1.Jackson图Jackson图是Jackson方法的描述工具,在程序结构中使用的数据元素之间往往有逻辑关系,这些逻辑关系分别是顺序、选择和重复三种。
5.2.2面向数据结构的设计方法
第17页:Jackson图
- 1.Jackson图
- (1)顺序结构的Jackson图表示5.2.2面向数据结构的设计方法
第18页:选择结构的Jackson图表示5.2
(2)选择结构的Jackson图表示5.2.2面向数据结构的设计方法
第19页:重复结构的Jackson图表示5.2
(3)重复结构的Jackson图表示5.2.2面向数据结构的设计方法
第20页:改进的Jackson图(a)顺序结构
2.改进的Jackson图(a)顺序结构(不能是选择或重复出现的元素) (b)选择结构(c)可选结构(d)重复结构第i个分支条件循环结束条件编号*5.2.2面向数据结构的设计方法
第21页:面向数据结构的设计(方法)
举例:Jackson图符号的运用一列火车最多有两个火车头。
只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。
火车头既可能是内燃机车也可能是电气机车。
车厢分为硬座车厢、硬卧车厢和软卧车厢3种。
硬座车厢在所有车厢的前面,软卧车厢在所有车厢的后面。
此外,在硬卧车厢和软卧车厢之间还有一节餐车。
5.2.2面向数据结构的设计方法
第22页:Jackson方法步骤与举例
- 3.Jackson方法
- 分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构;
- 找出输入数据结构和输出数据结构中有对应关系的数据单元;
- 从描绘输入、输出数据结构的Jackson图导出描绘程序结构的Jackson图(3条规则)
- 列出基本操作和条件,并且把它们分配到程序结构图的适当位置;
- 用伪码表示程序。5.2.2面向数据结构的设计方法
第23页:为每对有对应关系的数据单元
- 为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框(注意);
- 根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框;
- 根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。5.2.2面向数据结构的设计方法
第24页:面向数据结构的设计(方法)
举例:P57一个正文文件由若干个记录组成,每个记录是一个字符串。
要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。
要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。
5.2.2面向数据结构的设计方法
第25页:Jackson方法步骤与举例
- 处理流程:
- (1)确定输入和输出数据结构;
- (2)找有直接因果关系、可以同时处理的单元(重复的次序、次数均相同)的输入输出数据单元;5.2.2面向数据结构的设计方法
第26页:从数据结构图导出程序结构图(把有对应
(3)从数据结构图导出程序结构图(把有对应关系的单元合为一个处理框,画在相应的层次中(不同层以低层为准))。
5.2.2面向数据结构的设计方法
第27页:列出所有操作和条件
(4)列出所有操作和条件,并且把它们分配到程序结构图的适当位置;5.2.2面向数据结构的设计方法
第28页:用伪码表示程序
(5)用伪码表示程序。
统计空格seq打开文件读入字符串totalsum∶=0程序体iter until文件结束处理字符串seq印字符串seq印出字符串印字符串end… ………统计空格end5.2.2面向数据结构的设计方法
第29页:Jackson图相比传统结构化设计工
- Jackson图相比传统结构化设计工具的优点:
- 便于表示层次结构,而且是对结构进行自顶向下分解的有力工具;
- 形象直观可读性好;
- 既能表示数据结构也能表示程序结构。5.2.2面向数据结构的设计方法
第30页:Jackson图与层次图的比较(1)Ja
- Jackson图与层次图的比较
- (1)Jackson图是对层次方框图的精化
- (2)Jackson图与层次图在描述程序结构时的含义不同:
- 矩形框:层次图:代表一个模块;Jackson图:代表几个语句。
- 表现出来的关系:层次图:表现的是调用关系;Jackson图:表现的是组成关系。
第31页:第5章详细设计 本节目录
- 第5章详细设计
- 5.1详细设计的目的与任务
- 5.2详细设计方法
- 5.3详细设计工具
- 5.4习题
第32页:详细设计工具
5.3详细设计工具
第33页:程序流程图
程序流程图中使用的符号5.3.1程序流程图
第34页:(a)(b)(c)图5.1程序流程图
(a)(b)(c)图5.1程序流程图的3种基本结构(a)顺序结构(b)选择结构(c)当型循环结构和直到型循环结构5.3.1程序流程图
第35页:其他结构5.3.1程序流程图
其他结构5.3.1程序流程图
第36页:程序流程图
优点:对控制流程的描绘很直观—>缺点:不能逐步求精,可理解性差;可随意转移控制,违背结构程序设计的原则;不易表示数据结构。
5.3.1程序流程图
第37页:5.3.2 盒图(N-S图)
- 1973年,美国学者Nassi和Shneiderman共同提出了盒图,也称N-S图、CHAPIN图。
- 基本单元:矩形框;
- 算法:矩形框的组装。N-S图适合结构化程序设计方法,对于非结构化程序无法表示。5.3.2盒图
第38页:图5.13盒图的基本符号(a)顺序型
图5.13盒图的基本符号(a)顺序型;(b)IF选择型;(c)CASE型多分支;(d)循环型;(e)调用子程序5.3.2盒图
第39页:5.3.2 盒图(N-S图)
优点:不能任意转移控制;功能域(特定控制结构的作用域)明确;很容易确定局部和全程数据的作用域;很容易表现嵌套关系,也可表示模块的层次结构。
5.3.2盒图
第40页:5.3.2 盒图(N-S图)
举例:5.3.2盒图
第41页:画出下列伪码程序的程序流程图和盒图
画出下列伪码程序的程序流程图和盒图。
STARTIF P THENWHILE q DOfEND DOELSEBLOCKgnEND BLOCKEND IFSTOP5.3.2盒图
第42页:使用二维树形结构的图来表示程序的控制流
使用二维树形结构的图来表示程序的控制流。
将这种图翻译成程序代码比较容易。
5.3.3PAD图—问题分析图
第43页:PAD图的基本符号5.3.3PAD图
- PAD图的基本符号5.3.3PAD图—问题分析图
- T
- F
第44页:使用PAD图提供的定义功能来逐步求精的例
使用PAD图提供的定义功能来逐步求精的例子5.3.3PAD图—问题分析图
第45页:5.3.3 PAD图
- 优点:
- 所描绘程序结构清晰,易读、易懂、易记;
- 支持自顶向下、逐步求精方法的使用。
- 容易转换成高级语言源程序;5.3.3PAD图—问题分析图
第46页:5.3.3 PAD图
x4TFDo-Untilx5ighfkx1TFbDo-Untilx6ajx21cDo-Whilex323dek:P67习题11:N-S图向PAD的转换
第47页:5.3.3 PAD图
- 开始
- 结束
- ajUntilx5iUntilx6bx1kfx4ghdefkx2de123Whilex3c
第48页:过程设计语言PDL是一种用于描述功能
5.3.4过程设计语言PDL是一种用于描述功能模块的算法设计和加工细节的语言,称为设计程序用语言,它是一种伪码。
伪码的语法规则分为“外语法”和“内语法”。
PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它使用自然语言的词汇表示实际操作和条件的内语法。
PDL不能被编译。
第49页:过程设计语言
例如,If登录成功then跳转到管理页else出错5.3.4过程设计语言
第50页:应具备以下(特点)
- 应具备以下特点:
- ①有固定的外语法(keyword);
- ③有数据说明,例如:TYPEnumberIS STRING LENGTH
- (12)TYPEtableISINSTANCE OFsymbol_table
- ④有子程序定义与调用机制,例如:PROCEDURE <子程序名> <属性:内部\外部,编程语言等等>INTERFACE <参数表:I\O等等>pseudocode lines
- END调用时可用:PERFORM<子程序名>USING<参数表>
- ②内语法用自然语言描述;抽象类型
第51页:PDL的特点
- PDL的特点:
- (1)关键字采用固定语法,并支持结构化构件、数据说明机制和模块化;
- (2)处理部分采用自然语言描述;
- (3)允许说明简单和复杂的数据结构;
- (4)子程序的定义与调用规则不受具体接口方式的影响。5.3.4过程设计语言
第52页:判定表与判定树判定表的构成
5.3.5判定表与判定树判定表的构成:左上:条件;左下:动作;右上:条件组合矩阵;右下:组合对应的动作。
第53页:判定表与判定树
- 判定表绘制的步骤如下:
- (1)分析决策问题涉及几个条件;
- (2)分析每个条件有几个取值区间;
- (3)画出条件取值分析表,分析条件的各种可能组合;
- (4)分析决策问题涉及几个决策方案;
- (5)画出有条件组合的决策表;
- (6)决定各种条件组合的决策方案,填写决策规则;
- (7)合并化简决策表。5.3.5判定表与判定树
第54页:如果年龄不满18岁
- 例如,某公司为本科以上学历的人重新分配工作,分配原则如下:
- 如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作;学历是硕士不分男女,任课题组组长;
- 如果年龄满18岁不满50岁,学历本科,不分男女,任中层领导职务,学历是硕士不分男女,任课题组组长;
- 如果年龄满50岁,学历本科,男性任科研人员,女性则担任资料员,学历是硕士不分男女,任课题组组长。5.3.5判定表与判定树
第55页:判定条件可能取值表
判定条件可能取值表:下表列出相关数据。
判定条件可能取值表| 条件名称 | 取值 | 符号 | 取值数 |
|---|
| 性别 | 男 | M | M1=2 |
|---|
| 性别 | 女 | F | M1=2 |
|---|
| 年龄 | 不满18岁 | C | M2=3 |
|---|
| 年龄 | 满18岁小于50岁 | Y | M2=3 |
|---|
| 年龄 | 超过50岁 | L | M2=3 |
|---|
| 文化程度 | 硕士 | G | M3=2 |
|---|
| 文化程度 | 本科 | U | M3=2 |
|---|
第56页:计算组合数2*3*2=12
- (2)计算组合数2*3*2=12;
- (3)初步判定表121110987654321FFFFFFMMMMMM性别UUUGGGUUUGGG文化程度CYLCYLCYLCYL年龄√√√√√√组长√√领导√科研√行政√资料员√考研5.3.5判定表与判定树
第57页:简化后的判定表121065
(4)简化后的判定表121065,1141,2,37,8,9FFM--M--性别UUUUUG文化程度CLCYL--年龄√组长√领导√科研√行政√资料员√考研5.3.5判定表与判定树
第58页:可清晰地表示复杂的条件组合与应做的动
- 特点:
- (1)可清晰地表示复杂的条件组合与应做的动作之间的对应关系。
- (2)能够简洁而无歧义地描述处理规则。
- (3)可进行校验或化简。5.3.5判定表与判定树
第59页:判定表与判定树
判定树:判定树是一种图形工具,适合于描述加工中具有多个策略,而且每个策略和若干条件有关的逻辑功能。
5.3.5判定表与判定树
第60页:判定表与判定树
5.3.5判定表与判定树
第61页:判定表与判定树
特点:判定树具有直观、形式简单,易于掌握和使用;数据元素重复次数多的缺点;画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响,而判定表不存在这样的问题。
5.3.5判定表与判定树
第62页:本章结束页
The End