已阅读5页,还剩75页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教学目标掌握常用的详细设计工具、了解人机界面设计问题、了解Jackson结构程序设计技术。教学重点各种详细设计工具的使用。教学难点Jackson结构程序设计技术。,第6章详细设计,详细设计的基本目的就是回答“详尽、精确地描述系统各模块的具体实现方法”。详细设计的结果基本决定了最终程序代码的质量,其中包括:正确性、可读性、效率。,第6章详细设计,第6章详细设计,6.1结构程序设计6.2人机界面设计6.3过程设计的工具6.4面向数据结构的设计方法6.5程序复杂程度的定量度量6.6小结及作业,详细设计,4,结构程序设计的经典定义:“如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。”消灭GOTO语句!仅用3种基本结构,称为经典的结构程序设计;若还允许使用DO-CASE(多分支循环)、DO-UNTIL(直到型循环),成为扩展结构程序设计;如果在允许使用LEAVE(或BREAK,中断)结构,则称为修正结构程序设计。,6.1结构程序设计,第6章详细设计,6.1结构程序设计6.2人机界面设计6.3过程设计的工具6.4面向数据结构的设计方法6.5程序复杂程度的定量度量6.6小结及作业,6.2人机界面设计,对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命。人机界面目前所占的工作量越来越大。,在设计人机界面常会遇到下述4个问题:系统响应时间用户帮助设施出错信息处理命令交互上述问题,最好在设计初期作为重要的设计问题来考虑,这时修改比较容易,代价也低。,6.2.1设计问题,系统响应时间是指从用户完成某个控制动作(例如,按回车键或点击鼠标),到软件给出预期的响应(输出信息或做动作)之间的这段时间。系统响应时间有两个重要属性,分别是长度和易变性。响应时间过长,会感到沮丧;响应时间过短,会迫使用户加快节奏,会犯错。易变性指系统响应时间相对于平均响应时间的偏差。一般稳定较好,若发生变化,用户往往比较敏感,担心系统工作出现了异常。,1.系统响应时间,几乎交互式系统的每个用户都需要帮助,大多数现代软件都提供联机帮助设施,这使得用户无须离开用户界面就能解决自己的问题。常见的帮助设施可分为集成的(根据当前的应用进行的帮助)和附加的(需查询使用)两类。集成的帮助优于附加的帮助设施。,2.用户帮助设施,具体设计帮助设施时,必须解决下述的一系列问题(1)帮助的程度:全部还是部分;(2)如何实现帮助:菜单、功能键和HELP命令;(3)怎样显示帮助信息:独立窗口、指出参考某个文档(不理想)、显示简短;(4)使用帮助后,如何返回原交互方式中:返回按钮、功能键;(5)如何组织帮助信息:平面结构、信息的层次结构和超文本结构。,2.用户帮助设施,交互式系统的出错信息或警告信息,应该具有下述属性:(1)信息应该使用用户可以理解的术语描述问题;(2)信息应该提供有助于从错误中恢复的建设性意见;(3)信息应该指出错误可能导致哪些负面后果(例如,破坏数据文件);(4)信息应该伴随着听觉上或视觉上的提示,强化出现异常;(5)信息不能带有指责用户的内容。当确实出现了问题的时候,有效的出错信息能提高交互式系统的质量,减轻用户的挫折感。,3.出错信息处理,在多数情况下,用户既可以从菜单中选择软件功能,也可以通过键盘命令序列调用软件功能。在提供命令交互方式时,必须考虑下列设计问题:(1)是否每个菜单选项都有对应的命令;(2)采用何种命令形式:控制序列(如Ctrl+P)、功能键、键入命令。(3)命令的难度有多大,忘记了命令怎么办;(4)用户是否可以定制或缩写命令。,4.命令交互,用户界面设计是一个迭代的、原型实现过程,各种用于界面设计和原型开发的软件工具较多,它们为简化窗口、菜单、设备交互、出错信息、命令及交互环境的许多其他元素的创建,提供了各种例程或对象。使用评估的程序,直到用户满意为止。,6.2.2设计过程,早期评价用户界面的几个方面:(1)界面的规格说明书的长度和复杂程度,预示了用户学习使用该系统所需要的工作量。(2)命令或动作的数量、命令的平均参数个数或动作中单个操作的个数,预示了系统的交互时间和总体效率。(3)设计模型中包含的动作、命令和系统状态的数量,预示了用户学习使用该系统时需要记忆的内容的多少。(4)界面风格、帮助设施和出错处理协议,预示了界面的复杂程度及用户接受该界面的程度。,6.2.2设计过程,详细设计,15,1.一般交互指南2.信息显示指南3.数据输入指南,6.2.3人机界面设计指南,第6章详细设计,6.1结构程序设计6.2人机界面设计6.3过程设计的工具6.4面向数据结构的设计方法6.5程序复杂程度的定量度量6.6小结及作业,6.3过程设计的工具,描述程序处理过程的工具称为过程设计的工具。一般有图形、表格和语言3种。6.3.1程序流程图,判断闰年的算法流程图表示,程序流程图的主要缺点如下:(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。(2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。(3)程序流程图不易表示数据结构。,6.3.1程序流程图,出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。,6.3.2盒图(N-S图),6.3.2盒图(N-S图),判断闰年的算法NS图表示,6.3.2盒图(N-S图),特点:(1)功能域(即一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。(2)不可能任意转移控制。(3)很容易确定局部和全程数据的作用域。(4)很容易表现嵌套关系,也可以表示模块的层次结构。,6.3.2盒图(N-S图),6.3.3PAD图,被4整除,6.3.3PAD图,UNTILy2500,2000=y,F,T,y不是闰年,被100整除,F,T,y是闰年,被400整除,F,T,y不是闰年,y是闰年,判断闰年的算法PAD图表示,y+1=y,PAD(problemanalysisdiagram,问题分析图)自1973年由日本日立公司发明以后,已得到一定程度的推广,该图翻译成程序代码比较容易。,6.3.3PAD图,PAD图的主要优点如下:(1)使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。,(2)便于描绘程序结构,图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。,6.3.3PAD图,(3)程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点,易读、易懂、易记。(4)容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。(5)即可用于表示程序逻辑,也可用于描绘数据结构。,6.3.3PAD图,(6)PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计,如图所示。,6.3.3PAD图,6.3.4判定表,对于多重嵌套的条件选择,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。判定表能清晰表示复杂的条件组合与所产生的动作之间的关系。,判定表能清晰表示复杂的条件组合与所产生的动作之间的关系。一张判定表由四部分组成:,I条件,II可能的操作,III条件组合矩阵,IV对应的动作,6.3.4判定表,例如:假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。利用判定表则可清晰地描述。,6.3.判定表,6.3.5判定树,判定表含义不是一眼就能看出来的。,PDL(ProgramDesignLanguage)也称为伪码,是一种“混杂”语言,采用了某种语言(如英语或自然语言)的词汇,另一种语言(某种结构化程序设计语言)的全部语法。具有数据说明、子程序、分程序、顺序控制、输入和输出结构。PDL的语法是开放式的,其外层语法是确定的,而内层语法则不确定。外层语法描述控制结构它用类似于一般程序设计语言控制结构的关键字:IF-THEN-ELSEWHILE-DOREPEAT-UNTILDOCASEDOWHILE等表示。有时还用关键字反排,表示控制结构结束:DO-ODIF-FI,6.3.6过程设计语言PDL,详细设计,35,例如:ifXisnotnegativethenreturn(squarerootofXasarealnumber);elsereturn(squarerootof-Xasanimaginarynumber);外层语法IF-THEN-ELSE是确定的,内层操作“squarerootofX”是不确定的。,详细设计,36,将下面的伪码转换为PAD图。(10分)begins1;ifx5thens2;elses3;whiley3thens4;elses5;whilew0thens6;s7;ends8ifu0thens9;s10;end;,详细设计,37,第6章详细设计,6.1结构程序设计6.2人机界面设计6.3过程设计的工具6.4面向数据结构的设计方法6.5程序复杂程度的定量度量6.6小结及作业,6.4面向数据结构的设计方法,面向数据结构的设计方法是按输入和输出以及内部存储信息的数据结构进行设计,然后再把数据结构的描述变换为对软件结构的描述。在完成了软件结构设计之后,可以使用面向数据结构的方法来设计每个模块的处理过程。Jackson方法是最著名的面向数据结构的设计方法,本节结合两个简单例子扼要地介绍Jackson方法,目的是使大家对面向数据结构的设计方法有初步了解。,Jackson图是作为Jackson方法配套使用的表达工具,由模块映射为程序结构的一种方法详细设计Jackson图的优点:便于表示层次结构,是对结构进行自顶向下分解的有力工具;形象直观,可读性好;既能表达程序的结构,也可表达问题的数据结构。,6.4.1Jackson图,41,重复结构,选择结构,A,B,C,A,Bo,Co,A,B*,A,B,C,A,Bo,Co,S(i),A,B*,I(i),A由B、C两部分顺序组成,A可以包含B或C(S代表选择),A由B重复任意次(含零次)构成(I代表重复),注:改进的Jackson图规定顺序执行的处理中不许混有选择执行和重复执行。,顺序结构,Jackson图表达符号,Jackson图中三种结构对应的伪代码如下(凡带下划线的字均为关键字),Jackson伪代码,A,B,C,A,S(i),Bo,Co,Jackson图是层次图的一种精化,两者的图形类似,但有着许多区别,表现在:层次图主要描绘软件结构,而Jackson图除描绘软件结构外,也能描绘数据结构;层次图中的一个方框代表一个模块,而Jackson图即使在描绘程序结构时,一个方框也不表示一个模块,而只代表几个语句;层次图表现的是调用关系,通常一个模块除了调用下级模块外还完成其它操作;而Jackson图表现的是组织关系,一个方框中包括的操作仅仅由它下层框中的哪些操作组成。,Jackson图与层次图的区别,Jackson方法的步骤分析并确定输入数据和输出数据的逻辑结构,用Jackson图描绘这些数据结构。用Jackson图表示数据结构时,省略与解题无关的多余信息,仅保留需要用到的数据单元。找出输入数据结构和输出数据结构中有对应关系的数据单元(即有因果关系,在程序中可以同时处理的数据单元)。从描绘数据结构的Jackson图到处描绘程序结构的Jackson图。,6.4.3Jackson方法,(1)为每一对在输入结构和输出结构中有对应关系的单元画一个处理框;(2)为输入数据结构中每一剩余的数据单元画一个处理框;(3)为输出数据结构中每一剩余的数据单元画一个处理框;(4)若在构成顺序结构的元素中出现了重复或者选择元素,需在Jackson图中增加一个中间层次的处理框。,6.4.3Jackson方法,写出程序的过程性表示:列出所有操作和条件,并把它们分配到程序结构图的适当位置。用Jackson伪代码写出与程序结构图对应的过程性表示。,6.4.3Jackson方法,一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。,6.4.3Jackson方法举例,1用Jackson图描绘输入、输出数据结构输入数据的格式为:若干记录构成文件若干字符构成一条记录字符是由空格与非空格两类元素组成的输出数据的格式为:一行字符串本行字符串中的空格数文件中空格的总数,6.4.3Jackson方法举例,(a)输入数据结构(b)输出数据结构,6.4.3Jackson方法举例,2找出输入/输出数据结构中有对应关系的元素,用虚线连接,6.4.3Jackson方法举例,3从数据结构图导出程序结构图,(1)数据结构Jackson图中的“正文文件”和“输出表格”对应程序结构Jackson图中的“统计空格”,属于第一层。(2)数据结构Jackson图中的“表格体”和“空格总数”对应程序结构Jackson图中的“程序体”和“印总数”,属于第二层。(3)数据结构Jackson图中的“字符串”和“串信息”对应程序结构Jackson图中的“处理字符串”,属于第三层。,6.4.3Jackson方法举例,(4)由于数据结构Jackson图中的“字符”是重复出现的数据单元,则与之对应的程序结构Jackson图中的“分析字符”也应是重复处理,这不符合改进Jackson图对顺序结构的约定。所以增加了处理框“分析字符串”,“字符”和“空格数”对应程序结构Jackson图中的“印字符串”,“分析字符串”和“印空格数”,属于第四层。(5)增加了中间结构层之后,“分析字符”被映射到程序结构Jackson图的第五层。(6)数据结构Jackson图中的“空格”和“非空格”对应程序结构Jackson图中的“处理空格”和“处理非空格”,属于第六层。,6.4.3Jackson方法举例,6.4.3Jackson方法举例,4列出所有操作和条件,分配它们到程序结构图的适当地方。统计空格个数需要的全部操作条件为:(1)停止(10)sum:=0(2)打开文件(11)totalsum:=0(3)关闭文件(12)pointer:=1(4)印出字符串(13)pointer:=pointer+1(5)印出空格数目(14)I(1)文件结束(6)印出空格总数(15)I(2)字符串结束(7)sum:=sum+1(16)S(3)字符是空格(8)totalsum:=totalsum+sum(9)读入字符串,6.4.3Jackson方法举例,6.4.3Jackson方法举例,5用伪码表示程序,高考后将考生的基本文件(简称考生情况文件)和考生高考成绩文件(简称考分文件)合并成一个新文件。其中考生情况文件中包括准考证号、姓名、通信地址。考分文件包括准考证号和分数。,6.4.3Jackson方法举例,由题意知,合并后的新文件包括了准考证号、姓名、通讯地址、分数。新文件的形成是原文件考生情况文件和考分文件通过准考证号这一唯一关键字连接而成。,1.画出输入/输出数据结构的Jackson图。,6.4.3Jackson方法举例,2.找出输入/输出数据结构中有对应关系的数据单元。,6.4.3Jackson方法举例,3.从数据结构的Jackson图导出程序结构的Jackson图,6.4.3Jackson方法举例,6.4.3Jackson方法举例,4列出所有操作和条件,分配它们到程序结构图的适当地方。形成考生新文件所需要的全部操作为:(1)打开两个输入文件(2)建立输出文件(3)从输入文件中各读一条记录(4)生成一条新纪录(5)将新纪录全部写入输出文件印(6)关闭全部文件(7)停止(8)I(1)文件结束,6.4.3Jackson方法举例,4列出所有操作和条件,分配它们到程序结构图的适当地方。,5用伪码表示程序,产生新文件seq打开两个输入文件建立输出文件从输入文件中各读一条记录分析考生记录iteruntil文件结束处理考生记录seq产生准号证号产生姓名产生通信地址产生考分生成一条新纪录将新纪录写入输出文件从输入文件中各读一条记录处理考生记录end分析考生记录end关闭全部文件停止产生新文件end,某仓库存放多种零件,每个零件的每次进货、发货都有一张卡片作出记录,每月根据这样一叠卡片打印一张月报表。报表每行列出每种零件每月库存量的净变化,如下图所示。(15分)(1)简述Jackson方法的基本步骤。(5分)(2)利用Jackson方法画出仓库系统的程序结构。(10分,其中画出输入数据结构和输出数据结构共5分,程序结构图5分),第6章详细设计,6.1结构程序设计6.2人机界面设计6.3过程设计的工具6.4面向数据结构的设计方法6.5程序复杂程度的定量度量6.6小结及作业,6.5程序复杂程度的定量度量,定量度量程序复杂程度的方法的意义:程序的复杂程度乘以适当常数:估算软件中错误的数量、软件开发需要用的工作量;可用来比较不同的设计或不同算法的优劣;定量的复杂程度可以作为模块规模的精确限度。下面着重介绍使用得比较广泛的McCabe方法和Halstead方法。,McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度程序的环形复杂度。1.流图流图程序图,实质是“退化了的”程序流程图,仅描绘程序的控制流程。程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。在流图中用圆表示结点,一个圆代表一条或多条语句。程序流程图中连接不同框的箭头对应着程序图中的有向弧。流图中的有项弧称为边,代表控制流,终止于一个结点。由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。,6.5.1McCabe方法,6.5.1McCabe方法,图6.15程序流程图映射成流图,用任何方法表示的过程设计结果,都可以翻译成流图。图6.16是用PDL表示的处理过程及与之对应的流图。,6.5.1McCabe方法,图6.16由PDL翻译成的流图,2.计算环形复杂度的方法环形复杂度定量度量程序的逻辑复杂度。利用流图,可以用下述3种方法中的任何一种来计算环形复杂度。(1)流图中的区域数等于环形复杂度。(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。,6.5.1McCabe方法,(1)流图中的区域数等于环形复杂度;V(G)=4(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数;E=11,N=9,V(G)=4(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目;P=3,V(G)=4。,3.环形复杂度的用途程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。McCabe研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序。实践表明,模块规模以V(G)10为宜,也就是说,V(G)=10是模块规模的一个更科学更精确的上限。,6.5.1McCabe方法,下述用PDL描述了计算不超过100个在规定值域内的有效数字的平均值,同时计算有效数字的总和和个数。请将其翻译成流图(8分),并用两种不同的方法计算其环形复杂度(2分)。(共10分)PROCEDUREaverage;INTERFACERESULTSaverage,total.input,total.valid;INTERFACEACCEPTSvalue,minimum,maximum;TYPEvalue1100ISSCALARARRAY;TYPEaverage,total.input,total.valid,minimum,maximum,sumISSCALAR;TYPEiISSCALAR;1:i=1;to
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兰州银行2026届专项定制人才计划招聘70人备考题库附答案
- 中国铁路成都局集团有限公司2026年度招聘高校毕业生(二)历年真题汇编带答案解析
- 2026年西北大学附属初级中学教师招聘历年真题汇编带答案解析
- 2025年度湖南娄底市低空经济发展有限公司招聘笔试模拟试卷附答案解析
- 2025福建漳州常山中学代课教师招聘3人备考题库带答案解析
- 2025下半年广东深圳市坪山区教育局面向2026应届毕业生招聘教师76人备考题库附答案解析
- 2026中国安能建设集团有限公司校园招聘历年真题汇编附答案解析
- 2025安徽淮北市消防救援支队招聘政府专职消防队员86人历年真题库附答案解析
- 2025广西北海市中日友谊中学秋季学期教师招聘2人参考题库附答案解析
- 2025年下半年芜湖市眼科医院招聘事业编制工作人员4人模拟试卷附答案解析
- 公司增资-章程修正案范本
- 中国电子信息产业集团有限公司介绍
- 定额〔2025〕3号文-关于发布2023版西藏地区电网工程概预算定额价格水平调整的通知
- 《现场改善案例集》课件
- 液压与气压传动(江苏大学)知到智慧树章节测试课后答案2024年秋江苏大学
- 8《从猜想到验证》课件科学一年级上册
- 学前儿童体育与健康教育2
- 《植物的生殖》示范课教学课件【人教版八年级生物下册】
- 精神科护相关法律法规
- 大型企业财务管理制度手册
- 青海省2024年高中信息技术7月学业水平考试试题含解析
评论
0/150
提交评论