![第5章 详细设计_第1页](http://file4.renrendoc.com/view/222044da9b53a3f90bc6d2a1562f1d87/222044da9b53a3f90bc6d2a1562f1d871.gif)
![第5章 详细设计_第2页](http://file4.renrendoc.com/view/222044da9b53a3f90bc6d2a1562f1d87/222044da9b53a3f90bc6d2a1562f1d872.gif)
![第5章 详细设计_第3页](http://file4.renrendoc.com/view/222044da9b53a3f90bc6d2a1562f1d87/222044da9b53a3f90bc6d2a1562f1d873.gif)
![第5章 详细设计_第4页](http://file4.renrendoc.com/view/222044da9b53a3f90bc6d2a1562f1d87/222044da9b53a3f90bc6d2a1562f1d874.gif)
![第5章 详细设计_第5页](http://file4.renrendoc.com/view/222044da9b53a3f90bc6d2a1562f1d87/222044da9b53a3f90bc6d2a1562f1d875.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023/2/4第1页详细设计工具Jackson程序设计方法第五章详细设计
结构程序设计基本任务
回答的关键问题:“怎样具体地实现这个系统”
主要任务是设计出程序的“蓝图”,供程序员日后根据这个蓝图编写出实际的程序代码。
注意:设计程序的蓝图,不是具体地编写程序。
主要采用结构化的程序设计方法。软件工程2023/2/4第2页5.1详细设计概述
1、什么是详细设计?详细设计为软件结构图(SC:StructChart)图或系统层次图(HC:HierarchyChart)中的每一个模块确定采用的算法和定义模块内数据结构,并用某种选定的表达工具给出清晰的描述。假如在总体设计阶段,定义A模块的作用是对一个表进行排序,那么详细设计就要指明采用哪一种排序算法并描述此算法的处理过程。2、详细设计的目标:(1)能在逻辑上正确地实现每个模块的功能;(2)使设计出的处理过程清晰易读、好理解。软件工程2023/2/4第3页3、详细设计应完成的任务:
①确定软件各个组成部分内所采用的算法和各部分的内部数据组织形式;②对数据结构进行物理设计,如确定数据库的物理结构。物理结构主要指数据的存储记录格式、存储记录安排和存储方法等。
③确定模块接口的细节,包括对系统外部的接口和用户界面。对系统内部其他模块的接口,以及模块输入数据、输出数据和局部数据的全部细节。软件工程2023/2/4软件工程(工程硕士)第4页3、详细设计应完成的任务:
④选用某种图形、表格和语言等工具将每个模块处理过程的详细算法描述表达出来,编写详细设计说明书。⑤为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常包括测试输入数据、期望输出结果等内容。⑥在详细设计结束时,进行详细设计的评审。把上述结果写入详细设计说明书(程序规格说明书),并通过复审形成正式文档,作为下一阶段(编码)的工作依据。返回2023/2/4第5页4、详细设计的其它任务(1)少量的代码设计。虽然编码工作有待下一阶段进行,但为了提高数据的输入、分类、存储和检索等操作的效率,并节约内存空间,对数据库中某些数据项的值须进行专项代码设计,如数据库的触发器代码、存储过程的代码设计等。(2)输入/输出格式设计。对于涉及众多不同类型设备或具有网络交换功能的系统,需要特别详细地设计数据的输入/输出以及交换格式。(3)人机对话(界面)设计。实时系统中用户与计算机需要频繁对话,因此有必要进行对话方式、内容、格式和界面的具体设计。
软件工程2023/2/4第6页5.2结构化程序设计1、什么是结构化程序?
结构化程序可由若干个基本结构组成,虽然每一个基本结构可以包含一条或若干条语句,但任何程序都由顺序、选择、重复三种基本结构构造。这三种基本结构具有以下特点:①有一个入口,有一个出口;②结构中每一部分都有被执行到的机会,也就是说,每一部分都应当有一条从入口到出口的路径通过它(至少通过一次);③没有死循环(无终止的循环)。软件工程2023/2/4第7页2、什么是结构化程序设计结构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。逐步求精的含义(1)详细设计阶段逐步求精的含义:把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。(2)总体设计阶段逐步求精的含义:把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统。软件工程2023/2/4第8页3、结构程序设计技术的优越性(1)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。(2)用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。(3)不使用GOTO语句仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致,易于阅读和理解。软件工程2023/2/4第9页(4)控制结构有确定的逻辑模式,编写程序代码只限于很少几种直截了当的方式,因此源程序清晰流畅。(5)程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。(6)有利于程序正确性证明。软件工程2023/2/4第10页4、判断一个程序是不是结构化程序的方法(1)看是不是单入口单出口的控制结构;(2)能不能用NS图或PAD图表示。软件工程2023/2/4第11页5、非结构程序转化为结构化程序两种办法:(1)重新组合判定条件;讲究技艺(2)结构化定理(使用FLAG标置位)最可靠的方法,但比较繁锁参阅熊前兴,《结构化程序设计》软件工程2023/2/4第12页5.3详细设计工具什么是详细设计工具?
用于表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类:(1)图形工具──利用图形工具可以把过程的细节用图形描述出来。程序流程图、N-S图、PAD图、IPO图。(2)表格工具──用表格方式描述过程的细节,在中列出各种可能的操作和相应的条件。判定树、判定表。(3)语言工具──用某种高级语言(称之为伪码)来描述过程的细节。程序设计语言PDL。
从三个方面学习:1、符号2、实例3、特点软件工程2023/2/4第13页5.3.1程序流程图1、符号软件工程2023/2/4第14页2、实例:求头100个奇数平方和C语言源程序main(){ints,i;s=0;for(i=1;i<=100;i++)s=s+(2*i-1)*(2*i-1);printf(“Thesumis\n”,s);}s=0i=1i<=100s=s+(2*i-1)*(2*i-1)i=i+1开始结束软件工程2023/2/4第15页3、特点:优点:对控制流程的描绘很直观,便于初学者掌握。缺点:(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。(2)程序流程图中用箭头代表控制流,因此程序员不受约束,可以完全不顾结构程序设计的精神,随意转移控制。(3)程序流程图不易表示数据结构。软件工程2023/2/4第16页5.2.2盒图(N_S图)N-S图即盒状图或Chapin图,是由Nassi和Shneiderman提出的一种符合结构化程序设计原则的图形描述工具,其目标是开发一种不破坏结构化构成元素的过程设计表示。
软件工程2023/2/4第17页1、符号:软件工程2023/2/4第18页2、实例S=0i=1i<=100s=s+(2*i-1)*(2*i-1)i=i+1输出s软件工程2023/2/4第19页3、特点:(1)功能域(即一个特定控制结构的作用域)明确,很容易从盒图上看出。(2)盒图没有箭头,不可能任意转移控制。(3)很容易确定局部和全程数据的作用域。(4)很容易表现嵌套关系,也可以表示模块的层次结构软件工程2023/2/4第20页5.3.3PAD图PAD图(ProblemAnalysisDiagram)由日本日立公司在1979年发明,它用二维树型结构的图来表示程序的控制流,比较容易翻译成程序代码。1、符号:软件工程2023/2/4第21页2、实例:s=0i=1s=s+(2*i-1)*(2*i-1)i=i+1whilei<=100输出s软件工程2023/2/4第22页3、特点:(1)使用PAD图设计的程序必然是结构化程序(2)PAD图描绘的程序结构十分清晰。(3)用PAD图表现程序逻辑,易读、易懂、易记。(4)容易将PAD图转换成高级语言源程序(5)PAD图既可用于表示程序逻辑,也可用于描绘数据结构。(6)PAD图的符号支持自顶向下、逐步求精方法的使用。(7)PAD图面向高级语言。软件工程2023/2/4第23页5.3.4判定表
判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系,而其它的工具不易表示。1、表现形式:条件茬(cha)条件组合动作茬动作软件工程2023/2/4第24页2、实例:假设某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量超过30公斤时,对头等舱的国内乘客超重部分每公斤收费4元,对其它舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。试用判定树判定表表示上述每种组合相对应的动作。所有需要考虑的条件:(1)重量是否超过30公斤;(2)是否头等舱;(3)是否国内乘客;(4)是否残疾人。可能采取处理动作:(1)免费;(2)超出部分每公斤收费2元;(3)超出部分每公斤收费3元;(4)超出部分每公斤收费4元;(5)超出部分每公斤收费6元;(6)超出部分每公斤收费8元;(7)超出部分每公斤收费12元;软件工程2023/2/4第25页软件工程2023/2/4第26页实例:输出si=i+1s=s+(2*i-1)*(2*i-1)i=1s=0FTi<=100软件工程2023/2/4第27页3、特点:(1)容易表示条件组合;(2)不容易表示顺序和重复等处理;(3)不适合作通用程序设计工具,软件工程2023/2/4第28页
判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。
1、实例软件工程2023/2/4第29页2、特点:优点:形式简单,不需任何说明,易看出含义,易于掌握和使用。缺点:简洁性不如判定表,相同的数据元素往往要重复写多遍,而且越接近树的叶端重复次数越多。软件工程2023/2/4第30页5.3.6过程设计语言PDL
PDL也称为伪码,是用正文形式表示数据和处理过程的设计工具。1、表现形式:(1)关键字外部语法(固定),用于定义结构化控制结构和数据说明;(2)自然语言内部语法(自由),表示处理特点。软件工程2023/2/4第31页2、实例Procedurespellcheckis
BEGINsplitdocumentintosinglewordslookupwordsindictionarydisplaybad_spelledwordscreateanewdictionary
ENDspellcheck软件工程2023/2/4第32页Procedurespellcheckis
BEGIN*splitdocumentintosinglewords
LOOPgetnextwordaddwordtowordlistinsortedorderEXITwhenallwordsprocessed
ENDLOOP
软件工程2023/2/4第33页*lookupwordsindictionary
LOOPgetawordfromwordlist
IFwordnotindictionaryTHENdisplaytheword,promptonuser’sterminal
IFuserresponsesayword‘ok’THENaddwordtogoodwordlist
ELSEaddwordtobadwordlist
ENDIF
ENDIFEXITwhenallwordsprocessed
ENDLOOP软件工程2023/2/4第34页*displaybad_spelledwords
LOOPfetchwordsfrombadwordlistdisplayEXITwhenallbad_spelledwordsprocessed
ENDLOOP*createanewdictionarydictionary:=dictionary+goodwordlist
ENDspellcheck软件工程2023/2/4第35页3、特点:1.关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。2.自然语言的自由语法,它描述处理特点。3.数据说明的手段既包括简单的数据结构,又包括复杂的数据结构。4.模块定义和调用的技术,应该提供各种接口描述模式。优点:
1.可以作为注释直接插在源程序中间。
2.可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。
3.已经有自动处理程序存在,而且可以自动由PDL生成程序代码。软件工程2023/2/4第36页5.2Jackson程序设计方法
思想:出发点是数据结构用JACKSON图表示用JACKSON图表示用JACKSON伪码表示数据结构过程描述程序结构映射详细组织问题环境可执行的操作需完成的任务软件工程2023/2/4第37页(1)顺序结构顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序依次出现。软件工程5.2.1Jackson图2023/2/4第38页(2)选择结构选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。软件工程2023/2/4第39页(3)重复结构重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。Jackson图的优点。便于表示层次结构,而且是对结构进行自顶向下分解的有力工具。。形象直观可读性好。既能表示数据结构,也能表示程序结构软件工程2023/2/4第40页5.3.2改进的Jackson图
上面介绍的Jackson图的缺点:(1)不能直接在图上表示选择条件或循环结束条件,影响了图的表达能力,也不易直接把图翻译成程序;(2)框间连线为斜线,不易在行式打印机上输出。软件工程2023/2/4第41页Jackson伪码。
AseqBCDAendAselectcond1BAorcond2CAorcond3DAendAiteruntil(或while)condBAend软件工程2023/2/4第42页(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元。(3)用下述三条规则从描绘数据结构的Jackson图导出描述程序结构的Jackson图(4)列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。(5)用伪码表示程序。软件工程5.3.3Jackson方法2023/2/4第43页例子:一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。输出格式:原样输出字符串1,字符串1空格数原样输出字符串2,字符串2空格数……原样输出字符串n,字符串n空格数输出空格总数软件工程2023/2/4第44页第一步:绘出输入数据和输出数据的数据结构输出文件串信息*字符串空格数表格体空格总数正文文件字符*空格○非空格○字符串*IISI输入数据结构输出数据结构软件工程2023/2/4第45页第二步:分析确定在输入数据结构和输出数据结构中有对应关系的数据单元。输出文件串信息*字符串空格数表格体空格总数正文文件字符*空格○非空格○字符串*IISI输入数据结构输出数据结构软件工程2023/2/4第46页第三步:从数据结构图导出程序结构图。(1)为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框。注意:如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应。
(2)根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。(3)根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。
程序结构图统计空格处理字符串*处理空格○处理非空格○处理字符串表格体印总数I印字符串印空格数分析字符串分析字符*IS软件工程2023/2/4第47页第四步:列出所有操作和条件,并且把它们分配到程序结构图的适当位置。最后的程序结构图统计空格处理字符串*处理空格○处理非空格○程序体印总数I(文件结束)印字符串印空格数分析字符串分析字符*打开文件读入字符串Totalsum:=0关闭文件停止印出空格总数印出字符串sum:=0pointer:=1Totalsum:=Totalsum+sum读入字符串I(字符串结束)印出空格数目sum:=sum+1pointer:=pointer+1pointer:=pointer+1S(字符是空格)Sum:保存空格个数的变量;Totalsum:保存空格总数的变量;Pointer:当前分析的字符在字符串中的位置;软件工程2023/2/4第48页第五步:用伪码表示程序处理过程。从图5.14可以得出下列代码:统计空格seq
打开文件
读入字符串
totalsum:=0
程序体iteruntil文件结束处理字符串seq
印字符串seq
印出字符串印字符串end
sum:=0pointer:=1
分析字符串iteruntil字符串结束分析字符select字符是空格处理空格seq
sum:=sum+1pointer:=pointer+1
处理空格end
分析字符or字符不是空格处理非空格seq
pointer:=pointer+1
处理非空格end
分析字符end
分析字符串end
印空格数seq
印出空格数目印空格数end
totalsum:=totalsum+sum
读入字符串处理字符串end
程序体end
印总数seq
印出空格总数印总数end
关闭文件停止统计空格end软件工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国中国结纸吊历行业投资前景及策略咨询研究报告
- 在线音乐授权使用及免责声明合同
- 劳动合同的合同范本
- 电子产品采购合同模板:标准采购合同范本
- 环保设备销售代理合同
- 景观照明工程项目施工设计合同
- 数据传输技术服务及授权合同
- 广告投放合同协议书文档
- 股东变更合同范本及提交要求
- 跨区域房地产联合开发合同
- 浙江省杭州市2024年中考英语真题(含答案)
- 《静脉治疗护理技术操作规范》考核试题及答案(共140题)
- 英国文学8.2讲解Sonnet18
- GB/T 13470-1992通风机系统经济运行
- 公民个人信息安全的刑法保护论文
- 人事测评理论与方法-课件
- 最新卷宗的整理、装订(全)课件
- 人教版部编道德与法治三年级下册全册全套课件
- 信访事项受理、办理、复查、复核、听证程序课件
- 【北京】施工现场安全生产标准化管理图集
- 部编版小学道德与法治五年级下册教案(全册)
评论
0/150
提交评论