第3章结构化设计-02

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程第三章结构化设计(一)——详细设计平顶山学院软件学院高敬礼教学目的:了解结构程序设计,掌握过程设计的工具和面向数据结构的设计方法,掌握人机界面设计。并能将所学知识应用在实训课程中.教学重点:人机界面设计过程和实现原则、过程设计的工具、面向数据结构的设计方法、。教学难点:判定表、Jaclson方法。教具:多媒体教室、电子教案详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。因此,详细设计的结果基本上决定了最终的程序代码的质量。考虑程序代码的质量时必须注意,程序的“读者”有两个,那就是计算机和人。详细设计的任务在概要设计阶段,采用结构化设计方法可以把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统,即已经确定了软件系统的总体结构,给出了系统中各个组成模块的功能和模块间的接口。详细设计是对概要设计阶段建立的模型(即每个组成模块)再进行详细定义和说明,可以把一个模块的功能逐步分解细化为一系列具体的处理步骤。包括定义每一模块的详细功能、输入数据、使用文件及使用方式,确定输出内容及格式,模块实现的详细算法,每一模块的程序构成等。1.详细设计的任务与原则详细设计的任务具体主要有如下五点。确定每个模块的具体算法。确定每个模块的内部数据结构及数据库的物理结构。确定模块接口的具体细节。(即确定模块接口的详细信息,包括模块之间的接口信息、模块与系统外部的接口信息及用户界面等。为每个模块设计一组测试用例。编写文档,参加复审。详细设计的过程中应遵循以下原则(1)由于详细设计的蓝图是给其他人看的,所以模块的逻辑描述要清晰易读、正确可靠,这样别人才能读懂。这也是常说的清晰第一的设计风格。(2)采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性。其基本内容归纳为如下几点:①程序语言中应尽量少用GOTO语句,以确保程序结构的独立性。②使用单入口单出口的控制结构,确保程序的静态结构与动态执行情况相一致,保证程序易理解。③程序的控制结构一般采用顺序、选择、循环三种结构,确保结构简单。④用自顶向下逐步求精方法完成程序设计。结构化程序设计的缺点是存储容量和运行时间可增加10%~20%,但易读、易维护性好。⑤经典的控制结构有顺序、IFTHENELSE分支、DO-WHILE循环。扩展的还有多分支CASE、DO-UNTIL循环结构、固定次数循环DO-WHILE。2.过程设计的工具过程设计就是用顺序、选择和循环三种结构的有限次组合或嵌套,描述模块功能的实现算法。过程设计阶段的工具分为图形、表格和语言3类:流程图、N_S图、问题分析图(PAD图)、判定表、判定树、过程设计语言(PDL)等。不论是哪类工具,对它们的基本要求都是能提供对设计的无歧义的描述,也就是应该能指明控制流程、处理功能、数据组织以及其他方面的实现细节,从而在编码阶段能把对设计的描述直接翻译成程序代码。2.1流程图流程图符号2.1流程图流程图的三种基本结构:顺序、选择、循环。2.1流程图程序流程图的优点是:直观、易学、历史长、使用广泛。缺点是:诱使程序员过早地考虑控制流,容易忽略整体结构;控制流绘制时容易乱转移,破坏结构;不容易表示数据结构;不适于大型程序的设计仅适于小规模程序的设计;2.2盒图为了克服程序流程图的缺点,改善结构化特性,由Nassi和Shneiderman提出了盒式程序框图(N_S图)。盒图的符号2.2盒图【例】描述并打印N!,改为N_S图。开始结束读入N打印FM=NF=1M=1M=M+1F=F*M是否2.2盒图N-S盒式图的特点:功能表达明确,从图上可以直接看出;容易确定局部数据和全局数据的作用域;容易表达模块的层次与嵌套关系;容易培养程序员养成结构化分析问题和解决问题的习惯;没有控制流线,不可能任意转移控制;控制关系隐含、循环次数隐含;实际上是程序流程图去掉控制流线的变种。(3)PAD图它是问题分析图的缩写,1979年由日本日立公司提出的,并得到一定程度的推广,现已为国际标准化组织ISO认可。它用二维树形结构图来表示程序的控制流,易于进行代码的翻译。PAD图设置了五种基本控制结构的图式和三种扩充结构图式,见图所示。其中,P表示判定条件,A、B、S表示应执行的任务。AB顺序结构AB双选结构P定义A单选结构PA1多分支结构PA2An=1=2=nSWhilep/untilpWhile重复型和until重复型PAD图所表达的程序比程序流程图更容易阅读,特点如下:描述的程序易读、易懂、易记;程序结构清晰,每条纵线代表一个层次;设计出的程序必然是结构化程序,结构化程度高;既可以表示程序的逻辑,又可以描述层次型数据结构;易于将PAD图转换成高级程序设计语言的源程序,支持自顶向下逐步求精的设计方法,开始时可以定义一个抽象的程序,随着设计的深入,使用def符号逐步增加细节,直至完成详细设计;2.4判定表在进行软件设计时如遇到复杂的条件选择,有必要使用一种描述机制来清晰地表示复杂的条件组合与动作间的对应关系,判定表就是解决这一问题的有力工具。1.判定表的组成左上部列出所有条件。左下部列出所有可能做的工作。右上部每一列表示各种条件的一种可能组合,所有列表示条件组合的全部可能情况。右下部的每一列是和每一种条件组合所对应的应做的工作。2.判定表中的符号右上部用“T”表示条件成立,用“F”表示条件不成立,空白表示条件成立与否不影响。右下部画“X”表示做该行左边列出的那项工作,空白表示不做该项工作。2.4判定表【例】用判定表表示教师课时津贴费规定。某校对各种不同职称教师,根据其是本校专职教师还是外聘兼职教师,决定其讲课的课时津贴费。本校专职教师每课时津贴费:教授80元,副教授60元,讲师50元,助教40元。外聘兼职教师每课时津贴费:教授90元,副教授80元,讲师60元,助教50元。2.5判定树判定树实质上是判定表的一种变形,有时比判定表更加直观,易于理解。【例】用判定树表示教师课时津贴规定。2.6过程设计语言(PDL)PDL(ProcedureDesignLanguage)也称为结构英语或伪码,是所有正文形式的过程设计工具的统称。PDL经常表现为一种“混杂”的形式,允许自然语言(如英语)的词汇与某种结构化程序设计语言(如Pascal、C、Ada等)的语法结构交织在一起2.6过程设计语言(PDL)考察一个PDL的原型,它可以建立在任意一个通用的结构化程序设计语言之上。基本成分包括:子程序定义、界面描述、数据说明、块结构、分支结构、循环结构和I/O结构。数据说明的形式为:TYPE变量名IS限定词1限定词2其中:变量名——局部变量或全局变量;限定词1——某个特定关键字(例如,SCALAR,ARRAY,LIST,STRING,STRUTURE等);限定词2——说明此处定义的变量在该过程或整个程序中应如何使用。可进行抽象数据类型的定义,例如:TYPEtable_1ISINSTACEOFsymbol_table而symbol_table在另一处已定义如下:TYPEsymbol_tableISSTRUCTUREDEFINED2.6过程设计语言(PDL)该PDL的块结构描述一个过程元素,即一个块内的所有语句将作为一个整体执行,形式为BEGIN[块名]语句序列END该PDL的分支结构有if-then-else和case两种形式,分别为IF条件描述THEN块结构或语句ELSE块结构或语句ENDIF2.6过程设计语言(PDL)CASEOF情况变量名WHEN第1种情况SELECT块结构或语句WHEN第2种情况SELECT块结构或语句…WHEN最后一种情况SELECT块结构或语句DEFAULT:块结构或语句ENDCASE2.6过程设计语言(PDL)循环结构包括三类,表达形式分别为:DOWHILE条件描述块结构或语句ENDWHILEREPEATUNTIL条件描述块结构或语句ENDREPEATDOFOR循变=循变取值范围,表达式或序列块结构或语句ENDFOR2.6过程设计语言(PDL)此PDL还提供了NEXT和EXIT两种语句:EXIT语句,退出本层循环;NEXT语句强迫本次循环结束,新一轮循环开始。在该PDL中,子程序说明为:PROCEDURE子程序说明属性表INTERFACE参数表块结构或语句序列END其中属性表指明该子程序的引用特性(比如,是INTERNAL还是EXTERNAL模式)和其他依赖于实现(即程序设计语言)的特性。2.6过程设计语言(PDL)输入/输出说明部分常用的形式有READ/WRITETO设备I/O表或ASK询问ANSWER响应选择项后一种形式多用于人机交互部分的设计。2.6过程设计语言(PDL)PDL应该具有下述特点:(1)关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字,例如,if...fi(或endif)等等。(2)自然语言的自由语法,它描述处理特点。(3)数据说明的手段。应该既包括简单的数据结构(例如纯量和数组),又包括复杂的数据结构(例如,链表或层次的数据结构)。(4)模块定义和调用的技术,应该提供各种接口描述模式。2.6过程设计语言(PDL)PDL作为一种设计工具有如下一些优点:(1)可以作为注释直接插在源程序中间。这样做能促使维护人员在修改程序代码的同时也相应地修改PDL注释,因此有助于保持文档和程序的一致性,提高了文档的质量。(2)可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。(3)已经有自动处理程序存在,而且可以自动由PDL生成程序代码。PDL的缺点是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。2.6过程设计语言(PDL)各种工具的比较表示法准则伪码IPO判定树(表)流程图N-S图PAD易用性优中中优良良逻辑表达能力良良优中良良机器可读性中差差中中中易转换程序代码优差良良良良结构化良中差差优优易修改性良中良差良差数据表示能力中差中差中中易验证性中中中差中中使用频率高低低高低低过程设计的工具描述程序处理过程的工具称为过程设计工具,它们可以分为图形、表格、和语言3类。不论是哪类工具,对它们的基本要求都是能提供对设计的无歧义的描述。即:应该能指明控制流程、处理功能、数据组织,以及其他方面的实现细节,从而在编码阶段能把对设计的描述直接翻译成程序代码。描述工具程序流程图N-S图PAD图判定表判定树PDL伪代码3.面向数据结构的设计方法面向数据结构的设计方法的最终目标是得出对程序处理过程的描述。在完成了软件结构设计之后,可以使用面向数据结构的方法来设计每个模块的处理过程。Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法。使用面向数据结构的设计方法,当然首先需要分析确定数据结构,并且用适当的工具清晰地描绘数据结构。Jackson方法:是面向数据结构的设计方法。JSP方法定义了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软件的过程描述(即程序结构),而不是软件的体系结构,因此使用于详细设计。Jackson在JSD的基础上扩展成了一种系统的开发方法,简称JSD。JSD主要以活动事件为中心,通过一串活动顺序组合构成的进程,建立系统模型,最后实现该模型。(a)顺序结构ACBD(c)选择结构ACoBoDoS(i)(b)单可选结构ABo_oS(i)AB*(d)重复结构I(i)改进的Jackson图3.1Jackson图如何使用Jackson图A、表示数据结构用Jackson图表示下面的二维表格:姓名性别班级学号............表头表体学生名册上表首先声明了该学生名册

1 / 75
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功