您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 软件工程_6_详细设计
教学目标掌握常用的详细设计工具、了解人机界面设计问题、了解Jackson结构程序设计技术。教学重点各种详细设计工具的使用。教学难点Jackson结构程序设计技术。第6章详细设计详细设计的基本目的就是回答“详尽、精确地描述系统各模块的具体实现方法”。详细设计的结果基本决定了最终程序代码的质量,其中包括:正确性、可读性、效率。第6章详细设计第6章详细设计6.1结构程序设计6.2人机界面设计6.3过程设计的工具6.4面向数据结构的设计方法6.5程序复杂程度的定量度量6.6小结及作业结构程序设计的经典定义:“如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。”消灭GOTO语句!仅用3种基本结构,称为经典的结构程序设计;若还允许使用DO-CASE(多分支循环)、DO-UNTIL(直到型循环),成为扩展结构程序设计;如果在允许使用LEAVE(或BREAK,中断)结构,则称为修正结构程序设计。6.1结构程序设计6.2人机界面设计对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命。人机界面目前所占的工作量越来越大。在设计人机界面常会遇到下述4个问题:系统响应时间用户帮助设施出错信息处理命令交互上述问题,最好在设计初期作为重要的设计问题来考虑,这时修改比较容易,代价也低。6.2.1设计问题系统响应时间是指从用户完成某个控制动作(例如,按回车键或点击鼠标),到软件给出预期的响应(输出信息或做动作)之间的这段时间。系统响应时间有两个重要属性,分别是长度和易变性。响应时间过长,会感到沮丧;响应时间过短,会迫使用户加快节奏,会犯错。易变性指系统响应时间相对于平均响应时间的偏差。一般稳定较好,若发生变化,用户往往比较敏感,担心系统工作出现了异常。1.系统响应时间几乎交互式系统的每个用户都需要帮助,大多数现代软件都提供联机帮助设施,这使得用户无须离开用户界面就能解决自己的问题。常见的帮助设施可分为集成的(根据当前的应用进行的帮助)和附加的(需查询使用)两类。集成的帮助优于附加的帮助设施。具体设计帮助设施时,必须解决下述的一系列问题。(1)帮助的程度:全部还是部分;(2)如何实现帮助:菜单、功能键和HELP命令;(3)怎样显示帮助信息:独立窗口、指出参考某个文档(不理想)、显示简短;2.用户帮助设施(4)使用帮助后,如何返回原交互方式中:返回按钮、功能键;(5)如何组织帮助信息:平面结构、信息的层次结构和超文本结构。2.用户帮助设施交互式系统的出错信息或警告信息,应该具有下述属性:(1)信息应该使用用户可以理解的术语描述问题;(2)信息应该提供有助于从错误中恢复的建设性意见;(3)信息应该指出错误可能导致哪些负面后果(例如,破坏数据文件);(4)信息应该伴随着听觉上或视觉上的提示,强化出现异常;(5)信息不能带有指责用户的内容。当确实出现了问题的时候,有效的出错信息能提高交互式系统的质量,减轻用户的挫折感。3.出错信息处理在多数情况下,用户既可以从菜单中选择软件功能,也可以通过键盘命令序列调用软件功能。在提供命令交互方式时,必须考虑下列设计问题:(1)是否每个菜单选项都有对应的命令;(2)采用何种命令形式:控制序列(如Ctrl+P)、功能键、键入命令。(3)命令的难度有多大,忘记了命令怎么办;(4)用户是否可以定制或缩写命令。4.命令交互用户界面设计是一个迭代的、原型实现过程,各种用于界面设计和原型开发的软件工具较多,它们为简化窗口、菜单、设备交互、出错信息、命令及交互环境的许多其他元素的创建,提供了各种例程或对象。使用评估的程序,直到用户满意为止。早期评价用户界面的几个方面:(1)界面的规格说明书的长度和复杂程度,预示了用户学习使用该系统所需要的工作量。(2)命令或动作的数量、命令的平均参数个数或动作中单个操作的个数,预示了系统的交互时间和总体效率。6.2.2设计过程(3)设计模型中包含的动作、命令和系统状态的数量,预示了用户学习使用该系统时需要记忆的内容的多少。(4)界面风格、帮助设施和出错处理协议,预示了界面的复杂程度及用户接受该界面的程度。6.2.2设计过程1.一般交互指南2.信息显示指南3.数据输入指南讲解详细,便于自学。6.2.3人机界面设计指南6.3过程设计的工具描述程序处理过程的工具称为过程设计的工具。一般有图形、表格和语言3种。6.3.1程序流程图程序流程图的主要缺点如下:(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。(2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。(3)程序流程图不易表示数据结构。6.3.1程序流程图6.3.2盒图(N-S图)6.3.2盒图(N-S图)出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。它有下述特点:(1)功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。(2)不可能任意转移控制。(3)很容易确定局部和全程数据的作用域。(4)很容易表现嵌套关系,也可以表示模块的层次结构。6.3.3PAD图任务1任务2任务3顺序结构WHILE型条件循环体先判定型循环结构条件then部分else部分选择结构TFUNTIL型条件循环体后判定型循环结构控制变量任务1任务2任务n多分支选择结构值1值2值nPAD图基本结构6.3.3PAD图PAD(problemanalysisdiagram,问题分析图)自1973年由日本日立公司发明以后,已得到一定程度的推广,该图翻译成程序代码比较容易。PAD图的主要优点如下:(1)使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。6.3.3PAD图(2)便于描绘程序结构,图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。6.3.3PAD图(3)程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点,易读、易懂、易记。(4)容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。(5)即可用于表示程序逻辑,也可用于描绘数据结构。6.3.3PAD图(6)PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计,如图所示。例1:对数组X进行排序。“自顶而下,逐步求精”1、循环一次,排好一个X[h]排好第H个X[h]找X[J]=MAX(X[h]…X[n])交换X[J]和X[h]2、细化(a)(b)(b)(a)3、连接各图,构成完整的PAD图H:=1,n-1排好第h个X[h]H:=1,n-1H:=1,n-1W:=X[h]X[h]:=X[j]X[j]:=wJ:=hk:=h+1,nX[k]X[J]J:=kH:=1,n-1H:=1,n-1H:=1,n-16.3.4判定表对于多重嵌套的条件选择,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。例如:假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。利用判定表则可清晰地描述。6.3.判定表6.3.5判定树判定表含义不是一眼就能看出来的。PDL(ProgramDesignLanguage)程序设计语言,这是一种结构化的语言。是非形式化比较灵活的语言,用于描述模块内部过程的具体算法,以便在开发人员之间比较精确的进行交流。PDL的语法是开放式的,其外层语法是确定的,而内层语法则不确定。外层语法描述控制结构它用类似于一般程序设计语言控制结构的关键字:IF-THEN-ELSEWHILE-DOREPEAT-UNTILDOCASEDOWHILE等表示。有时还用关键字反排,表示控制结构结束:DO-ODIF-FI6.3.6过程设计语言PDL例如:ifXisnotnegativethenreturn(squarerootofXasarealnumber);elsereturn(squarerootof-Xasanimaginarynumber);外层语法IF-THEN-ELSE是确定的,内层操作“squarerootofX”是不确定的。6.4面向数据结构的设计方法面向数据结构的设计方法是按输入和输出以及内部存储信息的数据结构进行设计,然后再把数据结构的描述变换为对软件结构的描述。Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法,本节结合一个简单例子扼要地介绍Jackson方法,目的是使读者对面向数据结构的设计方法有初步了解。31主要适用范围面向数据结构的设计最终目标工作基础面向数据流的设计设计方法在详细设计阶段确定部分或全部模块的逻辑过程。在概要设计阶段用SD方法确定软件的结构。以数据结构为基础。从问题的数据结构出发导出它的程序结构。以数据流图为基础。在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构。两种方法的共同点:1.遵循“由顶向下、逐步细化”的原则;2.服从“程序结构必须适应问题结构”的原则。程序的过程性描述。软件的最终SC图面向数据结构的设计与面向数据流的设计的异同Jackson图是作为Jackson方法配套使用的表达工具,可以作为需求分析和程序设计阶段的表达工具。Jackson图的优点:便于表示层次结构,是对结构进行自顶向下分解的有力工具;形象直观,可读性好;既能表达程序的结构,也可表达问题的数据结构。6.4.1Jackson图33重复结构选择结构ABCAB0C0AB*ABCAB0C0sAB*IA由B、C两部分顺序组成A可以包含B或C(S代表选择)A由B重复任意次(含零次)构成(I代表重复)注:改进的Jackson图规定顺序执行的处理中不许混有选择执行和重复执行。顺序结构Jackson图表达符号Jackson图是层次图的一种精化,两者的图形类似,但有着许多区别,表现在:层次图主要描绘软件结构,而Jackson图除描绘软件结构外,也能描绘数据结构;层次图中的一个方框代表一个模块,而Jackson图即使在描绘程序结构时,一个方框也不表示一个模块,而只代表几个语句;层次图表现的是调用关系,通常一个模块除了调用下级模块外还完成其它操作;而Jackson图表现的是组织关系,一个方框中包括的操作仅仅由它下层框中的哪些操作组成。Jackson图与层次图的区别Jackson图中三种结构对应的伪代码如下(凡带下划线的字均为关键字)Jackson伪代码重复结构伪代码选择结构伪代码AseqBCendAAselectcond1Borcond2CendAABCAB0C0SAB*IuntilAitercondwhileBendA顺序结构伪代码姓名类别津贴表头表体教职工名册6.4.1Jackson图名册栏名行表名行表头表体行*姓名类别津贴工龄津贴0教龄津贴0IS教职工名册的数据结构6.4.1Jackson图产生名册文件产生栏名行产生表名行产生表头产生表体产生行*产生姓名产生类别产生津贴产生工龄津贴0产生教龄津贴0SI教职工名册的程序结构6.4.1Jackson图程序分析详细设计结构设计程序设计Jackson方法映射数据结构(Jackson图)程序结构(Jackson图)程序的过程描述(Jackson伪代码)SD方法映射问题结构(DFD)软件结构(SC图)模块的过程表示(PD
本文标题:软件工程_6_详细设计
链接地址:https://www.777doc.com/doc-153322 .html