《软件工程学》第05章 详细设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结结构构化化程程序序设设计计的的更本全质面:的定义:
尽不可是能不少用用goGtoO语T句O的语编句程的方程法序,设而计是方一法种, 最使好程仅序在代检码测容出易错阅误读时、才容使易理用解GO的编TO程语方句法,。而 且应该总使用前向GO TO语句。
5.2.1 结构化程序设计方法
GOTO语句的结果:
面向数据结构的设计方法中最著名的方法有:
Jackson方法; Warnier方法。
一种软件开发方法,该方法从目 标系统的输入、输出数据结构入 手,导出程序框架结构,再补充 其他细节,以得到完整的程序结 构图。该方法适用于输入、输出 结构明确的中小型系统。
5.2.2 面向数据结构的设计方法
1.Jackson图
进行详细设计应该遵循以下三个原则:
(1)在保证正确可靠的前提下,尽量提高算法的可读性。 (2)结构化设计方法是实现详细设计目标的关键技术之一。 (3)用工具来描述模块算法。
5.2.1 结构化程序设计方法
1966年Bohm和Jacopini证明,只用3种基本的控制结 构就能实现任何单入口单出口的程序。这3种基本控制 结构分别是“顺序”、“选择”和“循环”。Bohm和 Jacopini的证明给结构程序设计奠定了理论基础。
A
F exp T
exp
B
B
A
A
A
F exp T
(a)
(b)
(c)
图5.1 程序流程图的3种基本结构
(a)顺序结构 (b)选择结构 (c)当型循环结构和直到型循环结构
5.2.1 结构化程序设计方法
其他结构
5.2.1 结构化程序设计方法
结构化程序设计的经典定义:
如果一个程序的代码块仅仅通过顺序、选 择和循环这三种基本控制结构进行连接,并且每 个代码块只有一个入口和一个出口,则称这个程 序是结构化的。
5.3.2 盒图
举例:
=1 P3
b c
a
P1 P2
=2
=3
d
F
P4
T
e
f
DO-UNTIL
P5
g
5.3.3 PAD图—问题分析图
使用二维树形结构的图来表示程 序的控制流。将这种图翻译成程序代 码比较容易。
5.3.3 PAD图—问题分析图
A
A T
P
While P
S
B
B F
(a)
(b)
(c)
Until P
(4)确定外部信号的接收/发送形式。
5.1 详细设计的目的与任务
该阶段工作具体包括以下几方面:
2.为数据库进行物理设计 为数据库进行物理设计,确定数据库的物理结构。物理结
构主要指数据库的存储记录格式、存储记录安排和存储方法, 这些都依赖于具体所使用的数据库系统。
3.其它设计 (1)输入/输出格式设计:针对各个功能,根据界面设计风
5.2.1 结构化程序设计方法
结构化程序设计方法的基本思路:
1.自顶向下、逐步细化
自顶向下、逐步细化的设计方法的过程是将问题求 解由抽象到逐步具体化的过程。用这种方法便于验证算 法的正确性,在向下一层展开之前应仔细检查本层设计 是否正确,只有上一层是正确的才能向下细化。检查时 也是由上而下逐层检查。这样思路清楚,可以有条不紊 地一步步进行,既严谨又方便。
A iter until(或while)
Cond
B
A end B*
A是由B出现N次组成
循环结构对应的伪码
5.2.2 面向数据结构的设计方法
2.改进的Jackson图
5.2.2 面向数据结构的设计方法
2.改进的Jackson图
第i个分 支条件
循环结束 条件编号
(a)顺序结构(不能是选择或重复出现的元素) (b)选择结构 (c)可选结构 (d)重复结构
5.2.1 结构化程序设计方法
结构化程序设计方法的基本思路:
2.模块化设计
在程序设计中常采用模块设计的方法。根据程序模 块的功能将它划分为若干个子模块,如果子模块规模大 ,还可以继续划分为更小的模块。这个过程采用自顶向 下的方法来实现。
3.结构化编码
在设计好一个结构化的算法之后,还要善于使用高 级语言进行结构化编码最终能够正确地实现算法。
5.3.1 程序流程图
其他结构
5.3.1 程序流程图
1
优点:
2
对控制流程的描绘很直观 —>
3
缺点:
不能逐步求精,可理解性差;
4
6
5
7
8
可随意转移控制,违背结构程序设计的原则;
不易表示数据结构。
5.3.2 盒图
1973年,美国学者Nassi(纳西)和Shneiderman( 施奈德曼)共同提出了盒图,也称N-S图、CHAPIN图
起止端点 数据输入输出
处理
预定义处 准备或预处理 理或既定
处理
条件判断 循环上界
循环下界 文件或文档 控制流
流线
虚线
省略线
并行方式 注解或注释
程序流程图中使用的符号
5.3.1 程序流程图
A
F exp T
exp
B
B
A
A
Biblioteka Baidu
A
F exp T
(a)
(b)
(c)
图5.1 程序流程图的3种基本结构
(a)顺序结构 (b)选择结构 (c)当型循环结构和直到型循环结构
5.2.2 面向数据结构的设计方法
Jackson图相比传统结构化设计工具的优点:
便于表示层次结构,而且是对结构进行自 顶向下分解的有力工具;
形象直观可读性好; 既能表示数据结构也能表示程序结构。
Jackson图与层次图的比较
(1)Jackson图是对层次方框图的精化 (2)Jackson图与层次图在描述程序结构时 的含义不同:
用伪码表示程序。
5.2.2 面向数据结构的设计方法
为每对有对应关系的数据单元,按照它们在数 据结构图中的层次在程序结构图的相应层次画一 个处理框(注意); 根据输入数据结构中剩余的每个数据单元所处 的层次,在程序结构图的相应层次分别为它们画 上对应的处理框; 根据输出数据结构中剩余的每个数据单元所处 的层次,在程序结构图的相应层次分别为它们画 上对应的处理框。
S
(d)
A1
def
1
2
A2
P=
(f)
(g)

n
An
(e)
PAD图的基本符号
5.3.3 PAD图—问题分析图
使用PAD图提供的定义功能来逐步求精的例子
5.3.3 PAD图—问题分析图
优点:
所描绘程序结构清晰,易读、易懂、易记; 竖线即主线,条数即曾次数; 从上到下,从左向右,遍历所有结点; 支持自顶向下、逐步求精方法的使用。 容易转换成高级语言源程序;
该阶段工作具体包括以下几方面:
1.处理方式的设计
(1)数据结构的设计。对于需求分析、总体设计确定的概念 性的数据类型进行确切地定义。
(2)算法设计。用某种图形、表格、语言等工具将模块处理 过程的详细算法描述出来,并为实现软件系统的功能需求确 定所必须的算法,评估算法的性能。
(3)性能设计。为满足软件系统的性能需求确定所必须的算 法和模块间的控制方式。包括:周转时间、响应时间、吞吐 量、精度。
P67 习题11:N-S图向PAD的转换
a
b
T
x1
F
f
T
x4
F
i
g
k
h Do-Until x5
Do-Until x6
j
k:
x2
1
2
3
Do-While x3
d
e
c
a
b
T
x1
F
f
T
x4
F
i
g
k
Do-Until
x5
h
Do-Until x6
(4)列出所有操作和条件,并且把它们分配到程序 结构图的适当位置;
5.2.2 面向数据结构的设计方法
(5)用伪码表示程序。
统计空格seq 打开文件 读入字符串 totalsum∶=0 程序体iter until文件结束 处理字符串seq 印字符串seq 印出字符串 印字符串end …… ……
统计空格 end
基本单元:矩形框; 算法:矩形框的组装。 N-S图适合结构化程序设计方法,对于非结构化 程序无法表示。
5.3.2 盒图
图5.13 盒图的基本符号 (a)顺序型;(b)IF选择型;(c)CASE型多分支;(d)循环型;(e)调用子程序
5.3.2 盒图
优点:
不能任意转移控制; 功能域(特定控制结构的作用域)明确; 很容易确定局部和全程数据的作用域; 很容易表现嵌套关系,也可表示模块的层次结构。
5.2.2 面向数据结构的设计方法
面向数据流的设计方法 → 软件结构 面向数据结构的设计方法 → 程序处理过程
面向数据结构的设计方法:在完成了软件结构设计 之后对每个模块处理过程的设计,其最终目标就是 得出对程序处理过程的描述。
5.2.2 面向数据结构的设计方法
面向数据结构的设计方法是以信息对象及其操 作为核心,认为复合信息对象具有层次结构,而这 种层次结构又可以分解成多种结构对象,最终可以 映射为程序结构。
5.1 详细设计的目的与任务
根本目标:
应该‘怎样具体地实现’系统?
详细设计是软件设计的重要阶段,主要确定每 个模块的具体执行过程,也称为“过程设计” Note:
任务:设计程序的“蓝图”,供编码时“翻译”使用; 详细设计≠编写程序; 详细设计结果决定着程序代码的质量; 让机器、人都看得懂。
5.1 详细设计的目的与任务
矩形框: 层次图:代表一个模块; Jackson图:代表几个语句。
表现出来的关系: 层次图:表现的是调用关系; Jackson图:表现的是组成关系。
第5章 详细设计
➢ 5.1详细设计的目的与任务 ➢ 5.2 详细设计方法 ➢ 5.3 详细设计工具 ➢ 5.4 习题
5.3 详细设计工具
5.3.1 程序流程图
处理流程:
(1)确定输入和输出数据结构;
(2)找有直接因果关系、可以同时处理的单元(重复 的次序、次数均相同)的输入输出数据单元;
5.2.2 面向数据结构的设计方法
(3)从数据结构图导出程序结构图 (把有对应关系的单
元合为一个处理框,画在相应层次中,不同层以低层为准)。
5.2.2 面向数据结构的设计方法
1、C/C++等高级编程语言中保留了goto语句, 但被建议不用或少用。
2、在更新的高级编程语言,如Java不提供goto 语句,它虽然指定goto作为关键字,但不支持它 的使用,使程序简洁易读
3、c#支持goto语句,好处是可以保证程序存在 唯一的出口,避免了过于庞大的if、for嵌套,避 免break 一层一层的跳出。
格,设计各类界面的样式。 (2)人机对话设计:对于一个实时系统,用户与计算机频繁
对话,因此要进行对话方式、内容及格式的具体设计。 (3)编写详细设计说明书。
第5章 详细设计
➢ 5.1 详细设计的目的与任务 ➢ 5.2 详细设计方法 ➢ 5.3 详细设计工具 ➢ 5.4 习题
5.2 详细设计方法
进行详细设计典型方法是结构化程序设计(Structured Programming,SP)方法。
Jackson图是Jackson方法的描述工具,在 程序结构中使用的数据元素之间往往有逻辑 关系,这些逻辑关系分别是顺序、选择和重 复三种。
5.2.2 面向数据结构的设计方法
1.Jackson图
(1)顺序结构的Jackson图表示
A
B
C
D
A由B、C、D顺序组成
A seq B C D
A end
顺序结构对应的伪码
5.2.2 面向数据结构的设计方法
3. Jackson方法
分析并确定输入数据和输出数据的逻辑结构,并 用Jackson图描绘这些数据结构;
找出输入数据结构和输出数据结构中有对应关系 的数据单元;
从描绘输入、输出数据结构的Jackson图导出描 绘程序结构的Jackson图(3条规则)
列出基本操作和条件,并且把它们分配到程序结 构图的适当位置;
5.2.2 面向数据结构的设计方法
举例:P57
一个正文文件由若干个记录组成,每个记录是 一个字符串。要求统计每个记录中空格字符的个数, 以及文件中空格字符的总个数。要求的输出数据格 式是,每复制一行输入字符串之后,另起一行印出 这个字符串中的空格数,最后印出文件中空格的总 个数。
5.2.2 面向数据结构的设计方法
5.2.2 面向数据结构的设计方法
(2)选择结构的Jackson图表示
A
Bo
Co
Do
根据条件A是B、C、D中的某一个
A select cond1 B
A or cond2 C
A or cond3 D
A end
选择结构对应的伪码
5.2.2 面向数据结构的设计方法
(3)重复结构的Jackson图表示
A
软件工程导论
天津市大学软件园
第5章 详细设计
➢ 理解详细设计的目的与任务 ➢ 理解面向数据结构的Jackson方法
➢ 熟练掌握结构化的详细设计方法及
其设计工具
第5章 详细设计
➢ 5.1 详细设计的目的与任务 ➢ 5.2 详细设计方法 ➢ 5.3 详细设计工具 ➢ 5.4 习题
第5章 详细设计
➢ 5.1 详细设计的目的与任务 ➢ 5.2 详细设计方法 ➢ 5.3 详细设计工具 ➢ 5.4 习题
相关文档
最新文档