软件工程第六讲详细设计剖析课件

上传人:无*** 文档编号:241809819 上传时间:2024-07-26 格式:PPT 页数:98 大小:622KB
返回 下载 相关 举报
软件工程第六讲详细设计剖析课件_第1页
第1页 / 共98页
软件工程第六讲详细设计剖析课件_第2页
第2页 / 共98页
软件工程第六讲详细设计剖析课件_第3页
第3页 / 共98页
点击查看更多>>
资源描述
1第六章第六章 详细设计详细设计中南大学信息科学与工程学院中南大学信息科学与工程学院控制工程系控制工程系雷雷 琪琪2详细设计的目标详细设计的目标o详细设计阶段的根本目段的根本目标是是:确定怎确定怎样具体地具体地实现所要所要求的系求的系统,也就是,也就是说,经过这个个阶段的段的设计工作,工作,应该得出得出对目目标系系统的精确描述,从而在的精确描述,从而在编码阶段可以把段可以把这个描述直接翻个描述直接翻译成用某种程序成用某种程序设计语言言书写的程序。写的程序。3详细设计的目标详细设计的目标o在在详细设计过程中,需要完成的工作是:程中,需要完成的工作是:(1)确定确定软件各个件各个组成部分内的算法以及各部分的内部数据成部分内的算法以及各部分的内部数据组织。(2)选定某种定某种过程的表达形式来描述各种算法。可程的表达形式来描述各种算法。可选用的用的过程表达程表达形式有:流程形式有:流程图、盒、盒图、PAD图、Jackson图等。等。(3)编写写详细设计说明明书。(4)制定制定单元元测试计划。划。(5)进行行详细设计评审。4本章纲要o6.1 结构程序构程序设计o6.2 人机界面人机界面设计o6.3 过程程设计的工具的工具o6.4 面向数据面向数据结构的构的设计方法方法o6.5 程序复程序复杂度的定量度量度的定量度量56.1 结构程序设计结构程序设计o结构程序构程序设计的概念最早由的概念最早由E.W.Dijkstra提出。提出。o1965年,他在一次会年,他在一次会议上指出:上指出:“可以从高可以从高级语言中取言中取消消GOTO语句句”,“程序的程序的质量与程序中所包含的量与程序中所包含的GOTO语句的数量成反比句的数量成反比”。o1966年年Bohm和和Jacopini证明了,只用三种基本的控制明了,只用三种基本的控制结构就能构就能实现任何任何单入口入口单出口的程序。出口的程序。这三种基本的控三种基本的控制制结构是构是“顺序序”、“选择”和和“循循环”。o1972年年IBM公司的公司的Mills进一步提出,一步提出,程序程序应该只有一个只有一个入口和一个出口入口和一个出口,从而,从而补充了充了结构程序构程序设计的的规则。6三种基本的控制结构三种基本的控制结构 o顺序序结构,先构,先执行行A再再执行行BoIF_THEN_ELSE型型选择(分支)(分支)结构构oDO_WHILE型循型循环结构:构:n在循在循环控制条件成立控制条件成立时,重复,重复执行特定的加工。行特定的加工。o实际上用上用顺序序结构和循构和循环结构(又称构(又称DO_WHILE结构)完构)完全可以全可以实现选择结构(又称构(又称IF_THEN_ELSE结构),因此,构),因此,理理论上最基本的控制上最基本的控制结构只有两种构只有两种。7结构程序设计结构程序设计 理论上,最基本的控制结构只有两种:顺序、理论上,最基本的控制结构只有两种:顺序、循环结构(选择结构可由其两者构造)。循环结构(选择结构可由其两者构造)。学界认识到,不是简单去掉学界认识到,不是简单去掉Goto语句的问题,语句的问题,而是要创立一种新的程序设计方法。而是要创立一种新的程序设计方法。结构化程序设计(结构化程序设计(IBM率先成功运用)率先成功运用)。8结构程序设计的定义结构程序设计的定义 o结构程序构程序设计是一种是一种设计程序的技程序的技术,它采用自,它采用自顶向向下逐步求精的下逐步求精的设计方法和方法和单入口入口单出口的控制出口的控制结构。构。n在在总体体设计阶段采用自段采用自顶向下逐步求精的方法:把一个复向下逐步求精的方法:把一个复杂问题的解法分解和的解法分解和细化成一个由化成一个由许多模多模块组成的成的层次次结构的构的软件系件系统。n详细设计或或编码阶段采用自段采用自顶向下逐步求精的方法:可以把向下逐步求精的方法:可以把一个模一个模块的功能逐步分解的功能逐步分解细化化为一系列具体的一系列具体的处理步理步骤或某或某种高种高级语言的言的语句。句。9结构程序设计的优点结构程序设计的优点 1.可以可以显著提高著提高软件开件开发工程的成功率和生工程的成功率和生产率率。2.程序有清晰的程序有清晰的层次次结构,因此容易构,因此容易阅读和理解。和理解。3.开开发时比比较容易保容易保证程序的正确性,即使出程序的正确性,即使出现错误也比也比较容容易易诊断和断和纠正。正。4.源程序清晰流源程序清晰流畅,易,易读易懂而且容易易懂而且容易测试。5.程序清晰和模程序清晰和模块化使得在修改和重新化使得在修改和重新设计一个一个软件件时可以重可以重用的代用的代码量最大。量最大。6.程序的程序的逻辑结构清晰,有利于程序正确性构清晰,有利于程序正确性证明。明。10扩充的控制结构扩充的控制结构经经 典典 的的 结结 构构 程程 序序 设设 计计:只只 允允 许许 使使 用用 顺顺 序序、IF_THEN_ELSE选择和选择和DO_WHILE循环;循环;扩扩展展的的结结构构程程序序设设计计:除除了了三三种种基基本本控控制制结结构构,还还使使用用DO_CASE和和DO_UNTIL循环;循环;修修正正的的结结构构程程序序设设计计:除除了了三三种种基基本本控控制制结结构构和和两两种种扩充结构,还使用扩充结构,还使用BREAK等结构。等结构。11扩充的控制结构扩充的控制结构126.2 人机界面设计人机界面设计o人机界面人机界面设计是接口是接口设计的一个重要的的一个重要的组成部分成部分 。o人机界面的人机界面的设计质量,直接影响用量,直接影响用户对软件件产品的品的评价,从而影响价,从而影响软件件产品的品的竞争力和寿命,因此,争力和寿命,因此,必必须对人机界面人机界面设计给予足予足够重重视。13621 设计问题设计问题o在在设计人机界面的人机界面的过程中,几乎程中,几乎总会遇到下述会遇到下述4 4个个问题:系系统响响应时间、用、用户帮助帮助设施、出施、出错信息信息处理和命令交互。理和命令交互。o许多多设计者直到者直到设计过程后期才开始考程后期才开始考虑这些些问题,这样做往往做往往导致出致出现不必要的不必要的设计反复、反复、项目延期目延期和用和用户产生挫折感。最好在生挫折感。最好在设计初期就把初期就把这些些问题作作为重要的重要的设计问题来考来考虑,这时修改比修改比较容易,容易,代价也低。代价也低。141系统响应时间系统响应时间o定定义:系系统响响应时间指从用指从用户完成某个控制完成某个控制动作作(例如,按例如,按回回车键或点或点击鼠鼠标),到,到软件件给出出预期的响期的响应(输出信息或做出信息或做动作作)之之间的的这段段时间。o系系统响响应时间有两个重要属性,分有两个重要属性,分别是是长度和易度和易变性:性:长度度:如果系:如果系统响响应时间过长,用,用户就会感到就会感到紧张和沮和沮丧。系系统响响应时间过短也不好,短也不好,这会迫使用会迫使用户加快操作加快操作节奏,从奏,从而可能会犯而可能会犯错误。易易变性性指系指系统响响应时间相相对于平均响于平均响应时间的偏差。即使系的偏差。即使系统响响应时间较长,响,响应时间易易变性低也有助于用性低也有助于用户建立起建立起稳定的工作定的工作节奏。奏。152用户帮助设施用户帮助设施o常常见的帮助的帮助设施可分施可分为集成的和附加的两集成的和附加的两类。1、集成的帮助、集成的帮助设施从一开始就施从一开始就设计在在软件里面,通常,件里面,通常,它它对用用户工作内容是敏感的,因此用工作内容是敏感的,因此用户可以从与可以从与刚刚完成的操作有关的主完成的操作有关的主题中中选择一个一个请求帮助。求帮助。显然,然,这可以可以缩短用短用户获得帮助的得帮助的时间,增加界面的,增加界面的友好性。友好性。如:如:office的帮助的帮助 2、附加的帮助、附加的帮助设施是在系施是在系统建成后再添加到建成后再添加到软件中的,件中的,在多数情况下它在多数情况下它实际上是一种上是一种查询能力有限的能力有限的联机机用用户手册。手册。如:如:MSDN 16o具体具体设计帮助帮助设施施时,必,必须解决下述的一系列解决下述的一系列问题(1)在用在用户与系与系统交互期交互期间,是否在任何,是否在任何时候都能候都能获得关于系得关于系统任何功能的帮助信息任何功能的帮助信息?有两种有两种选择;提供部分功能的帮助信;提供部分功能的帮助信息和提供全部功能的帮助信息。息和提供全部功能的帮助信息。(2)用用户怎怎样请求帮助求帮助?有有3种种选择:帮助菜:帮助菜单,特殊功能,特殊功能键和和HELP命令。命令。17(3)(3)怎怎样显示帮助信息示帮助信息?有有3 3种种选择,在独立的窗口中,指出参考,在独立的窗口中,指出参考某个文档某个文档(不理想不理想)和在屏幕固定位置和在屏幕固定位置显示示简短提示。短提示。(4)(4)用用户怎怎样返回到正常的交互方式中返回到正常的交互方式中?有两种有两种选择:屏幕上的:屏幕上的返回按返回按钮和功能和功能键。(5)(5)怎怎样组织帮助信息帮助信息?有有3 3种种选择:平面:平面结构构(所有信息都通所有信息都通过关关键字字访问),信息的,信息的层次次结构构(用用户可在可在该结构中构中查到更到更详细的信息的信息)和超文本和超文本结构。构。183出错信息处理出错信息处理o出出错信息和警告信息,是出信息和警告信息,是出现问题时交互式系交互式系统给出的出的“坏消息坏消息”。出。出错信息信息设计得不好,将向用得不好,将向用户提供无用的甚至提供无用的甚至误导的信息,反而会加重用的信息,反而会加重用户的挫的挫折感。折感。o应该具有下述属性具有下述属性(1)信息信息应该用用用用户可以理解的可以理解的术语描述描述问题。(2)信息信息应该提供有助于从提供有助于从错误中恢复的建中恢复的建设性意性意见。19(3)信息信息应该指出指出错误可能可能导致哪些致哪些负面后果面后果(例如,破坏数例如,破坏数据文件据文件),以便用,以便用户检查是否出是否出现了了这些些问题,并在确,并在确实出出现问题时及及时解决。解决。(4)信息信息应该伴随着听伴随着听觉上或上或视觉上的提示,例如,在上的提示,例如,在显示示信息信息时同同时发出警告出警告铃声,或者信息用声,或者信息用闪烁方式方式显示,示,或者信息用明或者信息用明显表示出表示出错的的颜色色显示。示。(5)信息不能信息不能带有指有指责色彩,也就是色彩,也就是说,不能,不能责怪用怪用户。204命令交互命令交互o命令行曾命令行曾经是用是用户和系和系统软件交互的最常用的件交互的最常用的方式,并且也曾方式,并且也曾经广泛地用于各种广泛地用于各种应用用软件中。件中。现在,面向窗口的、点在,面向窗口的、点击和拾取方式的界面已和拾取方式的界面已经减少了用减少了用户对命令行的依命令行的依赖,但是,但是,许多高多高级用用户仍然偏仍然偏爱面向命令行的交互方式。在多面向命令行的交互方式。在多数情况下,用数情况下,用户既可以从菜既可以从菜单中中选择软件功能,件功能,也可以通也可以通过键盘命令序列命令序列调用用软件功能。件功能。o必必须考考虑下列下列设计问题 21(1)是否每个菜是否每个菜单选项都有都有对应的命令的命令?(2)采用何种命令形式采用何种命令形式?有有3种种选择:控制序列:控制序列(例如,例如,Ctrl十十P),功能,功能键和和键入命令。入命令。(3)学学习和和记忆命令的命令的难度有多大度有多大?忘忘记了命令怎么了命令怎么办?(4)用用户是否可以定制或是否可以定制或缩写命令写命令?o在越来越多的在越来越多的应用用软件中,人机界面件中,人机界面设计者都提供了者都提供了“命令宏机制命令宏机制”o在理想的情况下,所有在理想的情况下,所有应用用软件都有一致的命令使用方件都有一致的命令使用方法。法。22622 设计过程设计过程o用用户界面界面设计是一个迭代的是一个迭代的过程,也就是程,也就是说,通常先,通常先创建建设计模型,再用原型模型,再用原型实现这个个设计模型,并由用模型,并由用户试用和用和评估,然后根据用估,然后根据用户意意见进行修改。行修改。o运用下述运用下述评估估标准准对界面界面设计进行早期复行早期复审(1)系系统及其界面的及其界面的规格格说明明书的的长度和复度和复杂程度。程度。(2)命令或命令或动作的数量、命令的平均参数个数或作的数量、命令的平均参数个数或动作中作中单个操作的个数。个操作的个数。(3)设计模型中包含的模型中包含的动作、命令和系作、命令和系统状状态的数量。的数量。(4)界面界面风格、帮助格、帮助设施和出施和出错处理理协议。23623 人机界面设计指南人机界面设计指南o用用户界面界面设计主要依靠主要依靠设计者的者的经验 o介介绍3类人机界面人机界面设计指南。指南。1一般交互指南一般交互指南2信息信息显示指南示指南3数据数据输入指南入指南241一般交互指南一般交互指南o一般交互指南涉及信息一般交互指南涉及信息显示、数据示、数据输入和系入和系统整体控制整体控制(1)保持一致性。保持一致性。应该为人机界面中的菜人机界面中的菜单选择、命令、命令输入、数据入、数据显示以及众多的其他功能,使用一致的格式。示以及众多的其他功能,使用一致的格式。(2)提供有意提供有意义的反的反馈。应向用向用户提供提供视觉的和听的和听觉的反的反馈,以保,以保证在用在用户和系和系统之之间建立双向通信。建立双向通信。(3)在在执行有行有较大破坏性的大破坏性的动作之前要求用作之前要求用户确确认。如果如果用用户要要删除一个文件,或覆盖一些重要信息,或除一个文件,或覆盖一些重要信息,或终止一止一个程序的运行,个程序的运行,应该给出出“您是否确您是否确实要要”的信息,的信息,以以请求用求用户确确认他的命令。他的命令。25(4)允允许取消取消绝大多数操作。大多数操作。UNDO或或REVERSE功能曾功能曾经使众多使众多终端用端用户避免了大量避免了大量时间浪浪费。每个交互式系。每个交互式系统都都应该能方便地取消已完成的操作。能方便地取消已完成的操作。(5)减少在两次操作之减少在两次操作之间必必须记忆的信息量。的信息量。不不应该期望用期望用户能能记住在下一步操作中需使用的一大串数字或住在下一步操作中需使用的一大串数字或标识符。符。应该尽量减少尽量减少记忆量。量。(6)提高提高对话、移、移动和思考的效率。和思考的效率。应该尽量减少用尽量减少用户击键的次数,的次数,设计屏幕布局屏幕布局时应该考考虑尽量减少鼠尽量减少鼠标移移动的的距离,距离,应该尽量避免出尽量避免出现用用户问“这是什么意思是什么意思?”的情的情况。况。26(7)允允许犯犯错误。系系统应该能保能保护自己不受自己不受严重重错误的破坏。的破坏。(8)按功能按功能对动作分作分类,并据此,并据此设计屏幕布局。屏幕布局。下拉菜下拉菜单的的一个主要一个主要优点就是能按点就是能按动作作类型型组织命令。命令。实际上,上,设计者者应该尽力提高命令和尽力提高命令和动作作组织的的“内聚性内聚性”。(9)提供提供对用用户工作内容敏感的帮助工作内容敏感的帮助设施施(参参见621节)。(10)用用简单动词或或动词短短语作作为命令名。命令名。过长的命令名的命令名难于于识别和和记忆,也会占用,也会占用过多的菜多的菜单空空间。272信息显示指南信息显示指南o如果人机界面如果人机界面显示的信息是不完整的、含糊的示的信息是不完整的、含糊的或或难于理解的,可以用多种不同方式于理解的,可以用多种不同方式“显示示”信息:用文字、信息:用文字、图形和声音;按位置、移形和声音;按位置、移动和和大小;使用大小;使用颜色、分辨率和省略。色、分辨率和省略。o关于信息关于信息显示的示的设计指南指南(1)只只显示与当前工作内容有关的信息。示与当前工作内容有关的信息。(2)不要用数据淹没用不要用数据淹没用户,应该用便于用用便于用户迅速吸迅速吸取信息的方式来表示数据。取信息的方式来表示数据。28(3)使用一致的使用一致的标记、标准的准的缩写和可写和可预知的知的颜色。色。显示示的含的含义应该非常明确,用非常明确,用户无无须参照其他信息源就能理参照其他信息源就能理解。解。(4)允允许用用户保持可保持可视化的化的语境。境。(5)产生有意生有意义的出的出错信息信息(参参见621节)。(6)使用大小写、使用大小写、缩进和文本分和文本分组以帮助理解。以帮助理解。(7)使用窗口分隔不同使用窗口分隔不同类型的信息。型的信息。29(8)使用使用“模模拟”显示方式表示信息,以使信息更容易被示方式表示信息,以使信息更容易被用用户提取。例如,提取。例如,显示示炼油厂油厂储油罐的油罐的压力力时,如果,如果简单地用数字表示地用数字表示压力,力,则不易引起用不易引起用户注意。但是,如注意。但是,如果用果用类似温度似温度计的形式来表示的形式来表示压力,用垂直移力,用垂直移动和和颜色色变化来指示危化来指示危险的的压力状况,就容易引起用力状况,就容易引起用户的警的警觉,因因为这样做做为用用户提供了提供了绝对和相和相对两方面的信息。两方面的信息。(9)高效率地使用高效率地使用显示屏。当使用多窗口示屏。当使用多窗口时,应该有足有足够的空的空间使得每个窗口至少都能使得每个窗口至少都能显示出一部分。此外,屏示出一部分。此外,屏幕大小幕大小应该选得和得和应用系用系统的的类型相配套型相配套(这实际上是上是一个系一个系统工程工程问题)。303数据输入指南数据输入指南(1)尽量减少用尽量减少用户的的输入入动作。作。(2)保持信息保持信息显示和数据示和数据输入之入之间的一致性。的一致性。(3)允允许用用户自定自定义输入。入。(4)交互交互应该是灵活的,并且可是灵活的,并且可调整成用整成用户最喜最喜欢的的输入入方式。方式。(5)使在当前使在当前动作作语境中不适用的命令不起作用。境中不适用的命令不起作用。(6)让用用户控制交互流。控制交互流。(7)对所有所有输入入动作都提供帮助作都提供帮助(8)消除冗余的消除冗余的输入。入。316.3 详细设计的工具详细设计的工具o程序流程程序流程图o盒盒图(N-S图)oPAD图o判定表判定表o判定判定树o过程程设计语言(言(PDL)326.3.1 程序流程图程序流程图o程序流程程序流程图又称又称为程序框程序框图,它是,它是历史最悠久史最悠久使用最广泛的描述使用最广泛的描述软件件设计的方法,然而它也的方法,然而它也是用得最混乱的一种方法。是用得最混乱的一种方法。o从从20世世纪40年代末到年代末到70年代中期,程序流程年代中期,程序流程图一直是一直是软件件设计的主要工具。的主要工具。33例子例子34程序流程图的优缺点程序流程图的优缺点o主要主要优点:点:n对控制流程的描控制流程的描绘很直很直观,便于初学者掌握。,便于初学者掌握。o主要缺点:主要缺点:1.程序流程程序流程图本本质上不是逐步求精的好工具,它上不是逐步求精的好工具,它诱使程序使程序员过早地考早地考虑程序的控制流程,而不去考程序的控制流程,而不去考虑程序的全局程序的全局结构。构。2.程序流程程序流程图中用箭中用箭头代表控制流,因此程序代表控制流,因此程序员不受任何不受任何约束,束,可以完全不可以完全不顾结构程序构程序设计的精神,随意的精神,随意转移控制。移控制。3.程序流程程序流程图不易表示数据不易表示数据结构。构。356.3.2 盒图(盒图(N_S图)图)o出于要有一种不允出于要有一种不允许违背背结构程序构程序设计精神的精神的图形工具的考形工具的考虑,Nassi和和Shneider-man提出了提出了盒盒图,又称,又称为N_S图。36顺序结构顺序结构37IF_THEN_ELSE型分支型分支38CASE型多分支结构型多分支结构 39循环结构循环结构40调用子程序调用子程序 41例子例子42N-S图的特点图的特点o功能域功能域(即,一个特定控制即,一个特定控制结构的作用域构的作用域)明确,明确,可以从盒可以从盒图上一眼就看出来。上一眼就看出来。o不可能任意不可能任意转移控制。移控制。o很容易确定局部和全程数据的作用域。很容易确定局部和全程数据的作用域。o很容易表示嵌套关系,也可以表示模很容易表示嵌套关系,也可以表示模块的的层次次结构。构。o盒盒图没有箭没有箭头,因此不允,因此不允许随意随意转移控制。移控制。436.3.3 PAD图图 oPAD是是问题分析分析图(Problem Analysis Diagram)的英文)的英文缩写,自写,自1973年由日本日立年由日本日立公司公司发明以后,已得到一定程度的推广。明以后,已得到一定程度的推广。o它用二它用二维树形形结构的构的图来表示程序的控制流,来表示程序的控制流,将将这种种图翻翻译成程序代成程序代码比比较容易。容易。44基本控制结构基本控制结构45基本控制结构基本控制结构46基本控制结构基本控制结构47例子例子48PAD图的主要优点图的主要优点(1)o使用表示使用表示结构化控制构化控制结构的构的PAD符号所符号所设计出出来的程序必然是来的程序必然是结构化程序。构化程序。oPAD图所描所描绘的程序的程序结构十分清晰。构十分清晰。n图中最左面的中最左面的竖线是程序的主是程序的主线,即第一,即第一层结构。构。n随着程序随着程序层次的增加,次的增加,PAD图逐逐渐向右延伸,每增向右延伸,每增加一个加一个层次,次,图形向右形向右扩展一条展一条竖线。nPAD图中中竖线的的总条数就是程序的条数就是程序的层次数。次数。49PAD图的主要优点图的主要优点(2)o用用PAD图表表现程序程序逻辑,易,易读、易懂、易、易懂、易记。nPAD图是二是二维树形形结构的构的图形,程序从形,程序从图中最左中最左竖线上端的上端的结点开始点开始执行,自上而下,从左向右行,自上而下,从左向右顺序序执行,遍行,遍历所有所有结点。点。o容易将容易将PAD图转换成高成高级语言源程序。言源程序。n这种种转换可用可用软件工具自件工具自动完成,从而可省去人工完成,从而可省去人工编码的工作,有利于提高的工作,有利于提高软件可靠性和件可靠性和软件生件生产率。率。50PAD图的主要优点图的主要优点(3)o既可用于表示程序既可用于表示程序逻辑,也可用于描,也可用于描绘数据数据结构。构。oPAD图的符号支持自的符号支持自顶向下、逐步求精方法向下、逐步求精方法的使用。的使用。n开始开始设计者可以定者可以定义一个抽象的程序,随着一个抽象的程序,随着设计工工作的深入而使用作的深入而使用def符号逐步增加符号逐步增加细节,直至完成,直至完成详细设计。51PAD图例子:o画出下面由伪码写出的程序的PAD图AWhile a DOBIf b0 then C1 else C2 EndifCase of Case d1 then D1 Case d2 then D2 else D3END CaseEEnd WhileFPDLABFEdefWhile aC1C2D1D2D3Td1b0Case ofFd2else526.3.4 判定表判定表o当算法中包含多重嵌套的条件当算法中包含多重嵌套的条件选择时,用程序,用程序流程流程图、盒、盒图、PAD图或后面即将介或后面即将介绍的的过程程设计语言(言(PDL)都不易清楚地描述。)都不易清楚地描述。o然而判定表却能然而判定表却能够清晰地表示复清晰地表示复杂的条件的条件组合合与与应做的做的动作之作之间的的对应关系。关系。53判定表组成判定表组成o一一张判定表由判定表由4部分部分组成。成。o左上部列出所有条件,左下部是所有可能的左上部列出所有条件,左下部是所有可能的动作。作。o右上部是表示各种条件右上部是表示各种条件组合的一个矩合的一个矩阵,右下,右下部是和每种条件部是和每种条件组合相合相对应的的动作。作。o判定表右半部的每一列判定表右半部的每一列实质上是一条上是一条规则,规定了与特定的条件定了与特定的条件组合相合相对应的操作。的操作。54例子:计算行李费例子:计算行李费o假假设某航空公司某航空公司规定,乘客可以免定,乘客可以免费托运重量不托运重量不超超过30公斤的行李。公斤的行李。o当行李重量超当行李重量超过30公斤公斤时:n对头等等舱的国内乘客超重部分每公斤收的国内乘客超重部分每公斤收费4元;元;n对其他其他舱的国内乘客超重部分每公斤收的国内乘客超重部分每公斤收费6元;元;n对外国乘客超重部分每公斤收外国乘客超重部分每公斤收费比国内乘客多一倍;比国内乘客多一倍;n对残疾乘客超重部分每公斤收残疾乘客超重部分每公斤收费比正常乘客少一半。比正常乘客少一半。55用判定表表示计算行李费算法用判定表表示计算行李费算法566.3.5 判定树判定树o判定判定树是判定表的是判定表的变种,也能清晰地表示复种,也能清晰地表示复杂的条件的条件组合与合与应做的做的动作之作之间的的对应关系。关系。o判定判定树的的优点在于,它的形式点在于,它的形式简单到不需任何到不需任何说明,一眼就可以看出其含明,一眼就可以看出其含义,因此易于掌握,因此易于掌握和使用。和使用。o多年来判定多年来判定树一直受到人一直受到人们的重的重视,是一种比,是一种比较常用的系常用的系统分析和分析和设计的工具。的工具。57用判定树表示计算行李费算法用判定树表示计算行李费算法58提问?o如何画判定树,使得行李计算费问题有16片树叶?596.3.6 过程设计语言(过程设计语言(PDL)oPDL也称也称为伪码,这是一个是一个笼统的名称,它是的名称,它是用正文形式表示数据和用正文形式表示数据和处理理过程的程的设计工具。工具。o一般一般说来来PDL是一种是一种“混混杂”语言,它使用一言,它使用一种种语言(通常是某种自然言(通常是某种自然语言)的言)的词汇,同,同时却使用另一种却使用另一种语言(某种言(某种结构化的程序构化的程序设计语言)的言)的语法。法。60PDL(作为一种设计工具)的特点(作为一种设计工具)的特点o关关键字的固定字的固定语法,它提供了法,它提供了结构化控制构化控制结构、构、数据数据说明和模明和模块化的特点。化的特点。为了使了使结构清晰和构清晰和可可读性好,通常在所有可能嵌套使用的控制性好,通常在所有可能嵌套使用的控制结构的构的头和尾都有关和尾都有关键字。字。o自然自然语言的自由言的自由语法,它描述法,它描述处理特点。理特点。o数据数据说明的手段。明的手段。应该既包括既包括简单的数据的数据结构,构,又包括复又包括复杂的数据的数据结构。构。o模模块定定义和和调用的技用的技术,应该提供各种接口描提供各种接口描述模式。述模式。61PDL(作为一种设计工具)的优点(作为一种设计工具)的优点o可以作可以作为注注释直接插在源程序中直接插在源程序中间。这样做能做能促使促使维护人人员在修改程序代在修改程序代码的同的同时也相也相应地地修改修改PDL注注释,因此有助于保持文档和程序的,因此有助于保持文档和程序的一致性,提高了文档的一致性,提高了文档的质量。量。o可以使用普通的正文可以使用普通的正文编辑程序或文字程序或文字处理系理系统,很方便地完成很方便地完成PDL的的书写和写和编辑工作。工作。o已已经有自有自动处理程序存在,而且可以自理程序存在,而且可以自动由由PDL生成程序代生成程序代码。62PDL的缺点的缺点o不如不如图形工具形象直形工具形象直观;o描述复描述复杂的条件的条件组合与合与动作作间的的对应关系关系时,不如判定表清晰不如判定表清晰简单。636.4 面向数据结构的设计方法面向数据结构的设计方法 o面向数据面向数据结构的构的设计方法就是用数据方法就是用数据结构作构作为程序程序设计的基的基础。o这种方法的最种方法的最终目目标是得出是得出对程序程序处理理过程的程的描述,最适合于在描述,最适合于在详细设计阶段使用,段使用,也就是也就是说,在完成了,在完成了软件件结构构设计之后,可以使用面之后,可以使用面向数据向数据结构的方法来构的方法来设计每个模每个模块的的处理理过程。程。o使用面向数据使用面向数据结构的构的设计方法,当然首先需要方法,当然首先需要分析确定数据分析确定数据结构,并且用适当的工具清晰地构,并且用适当的工具清晰地描述数据描述数据结构。构。646.4.1 Jackson程序设计方法程序设计方法oJackson图、改、改进的的Jackson图描述描述Jackson方法的工具方法的工具oJackson方法方法65逻辑数据结构逻辑数据结构 o虽然程序中然程序中实际使用的数据使用的数据结构种构种类繁多,但繁多,但是它是它们的数据元素彼此的数据元素彼此间的的逻辑关系却只有三关系却只有三类:n顺序序结构构n选择结构构n重复重复结构构n可可选结构构66顺序结构顺序结构o顺序结构的数据由一个或多个数据元素组成,每个元素顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。按确定次序出现一次。oA由由B、C、D三个元素顺序组成。三个元素顺序组成。67顺序结构对应的伪码顺序结构对应的伪码o顺序序结构构对应的的伪码,其中,其中seq和和end是关是关键字:字:A seq B C DA end68选择结构选择结构o选择结构的数据包含两个或多个数据元素,每次使用这选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。个数据时按一定条件从这些数据元素中选择一个。o根据条件根据条件A是是B或或C或或D中的某一个。中的某一个。69选择结构对应的伪码选择结构对应的伪码o选择结构构对应的的伪码,其中,其中select、or和和end是关是关键字,字,cond1、cond2和和cond3分分别是是执行行B、C或或D的条件:的条件:A select cond1 BA or cond2 CA or cond3 DA end70重复结构重复结构o重复结构的数据,根据使用时的条件由一个数据元素出重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。现零次或多次构成。oA由由B出现出现N次(次(N0)组成或)组成或A由由B循环组成,结束条循环组成,结束条件的编号是件的编号是i。71重复结构对应的伪码重复结构对应的伪码o重复重复结构构对应的的伪码,其中,其中iter、until、while和和end是关是关键字(重字(重复复结构有构有until和和while两种形式),两种形式),cond是条件:是条件:A iter until(或(或while)condBA end72可选结构可选结构oA由元素由元素B或者出现或者不出现组成或者出现或者不出现组成73Jackson图的优点图的优点 o便于表示便于表示层次次结构,而且是构,而且是对结构构进行自行自顶向向下分解的有力工具;下分解的有力工具;o形象直形象直观可可读性好;性好;o既能表示数据既能表示数据结构也能表示程序构也能表示程序结构。构。74Jackson图与层次方框图的比较图与层次方框图的比较oJackson图实质上是上是对层次方框次方框图(P92)的精化。的精化。o但两者含但两者含义很不相同:很不相同:n层次次图中的一个方框通常代表一个模中的一个方框通常代表一个模块;Jackson图即使在描即使在描绘程序程序结构构时,一个方框也并不代表一个,一个方框也并不代表一个模模块,通常一个方框只代表几个,通常一个方框只代表几个语句。句。n层次次图表表现的是的是调用关系,通常一个模用关系,通常一个模块除了除了调用用下下级模模块外,外,还完成其他操作;完成其他操作;Jackson图表表现的是的是组成关系,成关系,也就是也就是说,一个方框中包括的操作,一个方框中包括的操作仅仅由它下由它下层框中的那些操作框中的那些操作组成。成。756.4.2Jackson方法方法(1)oJackson结构程序构程序设计方法的五个步方法的五个步骤:1.分析并确定分析并确定输入数据和入数据和输出数据的出数据的逻辑结构,并用构,并用Jackson图描描绘这些数据些数据结构。构。2.找出找出输入数据入数据结构和构和输出数据出数据结构中有构中有对应关系的关系的数据数据单元。元。所所谓有有对应关系是指有直接的因果关系,在程序中关系是指有直接的因果关系,在程序中可以同可以同时处理的数据理的数据单元(元(对于重复出于重复出现的数据的数据单元必元必须重复的次序和次数都相同才可能有重复的次序和次数都相同才可能有对应关系)关系)。76Jackson方法方法(2)3.用下述三条用下述三条规则从描从描绘数据数据结构的构的Jackson图导出描出描绘程序程序结构的构的Jackson图:n为每每对有有对应关系的数据关系的数据单元,按照它元,按照它们在数据在数据结构构图中的中的层次在程序次在程序结构构图的相的相应层次画一个次画一个处理框(注意,如果理框(注意,如果这对数据数据单元在元在输入数据入数据结构和构和输出数据出数据结构中所构中所处的的层次不次不同,同,则和它和它们对应的的处理框在程序理框在程序结构构图中所中所处的的层次与它次与它们之中在数据之中在数据结构构图中中层次低的那个次低的那个对应););n根据根据输入数据入数据结构中剩余的每个数据构中剩余的每个数据单元所元所处的的层次,在程次,在程序序结构构图的相的相应层次分次分别为它它们画上画上对应的的处理框;理框;n根据根据输出数据出数据结构中剩余的每个数据构中剩余的每个数据单元所元所处的的层次,在程次,在程序序结构构图的相的相应层次分次分别为它它们画上画上对应的的处理框。理框。77Jackson方法方法(3)4.列出所有操作和条件(包括分支条件和循列出所有操作和条件(包括分支条件和循环结束条件),并且把它束条件),并且把它们分配到程序分配到程序结构构图的适的适当位置。当位置。5.用用伪码表示程序。表示程序。78例子例子o一个正文文件由若干个一个正文文件由若干个记录组成,每个成,每个记录是是一个字符串。一个字符串。n要求要求统计每个每个记录中空格字符的个数,以及文件中中空格字符的个数,以及文件中空格字符的空格字符的总个数。个数。n要求的要求的输出数据格式是,每复制一行出数据格式是,每复制一行输入字符串之入字符串之后,另起一行印出后,另起一行印出这个字符串中的空格数,最后印个字符串中的空格数,最后印出文件中空格的出文件中空格的总个数。个数。79用用Jackson方法进行程序设计方法进行程序设计1.用用Jackson图描绘的输入输出数据结构。图描绘的输入输出数据结构。80用用Jackson方法进行程序设计方法进行程序设计2.找有找有对应关系的关系的单元:元:a.经过程序的程序的处理由正文文件得到理由正文文件得到输出表格。出表格。n输出数据出数据总是通是通过对输入数据的入数据的处理而得到的,因理而得到的,因此在此在输入入输出数据出数据结构最高构最高层次的两个次的两个单元(在元(在这个例子中是个例子中是“正文文件正文文件”和和“输出表格出表格”)总是是有有对应关系的。关系的。n这一一对单元将和程序元将和程序结构构图中最中最顶层的方框(代表的方框(代表程序)相程序)相对应。81用用Jackson方法进行程序设计方法进行程序设计o找有找有对应关系的关系的单元:元:b.“字符串字符串”和和“串信息串信息”。n每每处理理输入数据中一个入数据中一个“字符串字符串”之后,就可以得之后,就可以得到到输出数据中一个出数据中一个“串信息串信息”,它,它们都是重复出都是重复出现的数据的数据单元,而且出元,而且出现次序和重复次数都完全相同。次序和重复次数都完全相同。n因此,因此,“字符串字符串”和和“串信息串信息”也是一也是一对有有对应关关系的系的单元元n提提问:图6.12(a)中的中的“字符串字符串”和和(b)中的中的“字字符串符串”名字相同,它名字相同,它们是不是是不是对应关系?关系?82用用Jackson方法进行程序设计方法进行程序设计3.从数据结构图导从数据结构图导出程序结构图。出程序结构图。83用用Jackson方法进行程序设计方法进行程序设计o从数据从数据结构构图导出程序出程序结构构图:a.在描在描绘程序程序结构的构的Jackson图的最的最顶层画一个画一个处理框理框“统计空格空格”,它与,它与“正文文件正文文件”和和“输出表格出表格”这对最最顶层的数据的数据单元相元相对应。84用用Jackson方法进行程序设计方法进行程序设计b.接下来接下来还不能立即画与另一不能立即画与另一对数据数据单元(元(“字字符串符串”和和“串信息串信息”)相)相对应的的处理框。理框。o在在输出数据出数据结构中构中“串信息串信息”的上的上层还有有“表表格体格体”和和“空格空格总数数”两个数据两个数据单元,在程序元,在程序结构构图的第二的第二层应该有与有与这两个两个单元元对应的的处理框理框“程序体程序体”和和“总数数”。o在程序在程序结构构图的第三的第三层才是与才是与“字符串字符串”和和“串信息串信息”相相对应的的处理框理框“处理字符串理字符串”。85用用Jackson方法进行程序设计方法进行程序设计c.在程序在程序结构构图的第四的第四层似乎似乎应该是和是和“字符串字符串”、“字符字符”及及“空格数空格数”等数据等数据单元元对应的的处理框理框“印字印字符串符串”、“分析字符分析字符”及及“印空格数印空格数”,这三个三个处理理是是顺序序执行的。行的。o但是,但是,“字符字符”是重复出是重复出现的数据的数据单元,因此元,因此“分析分析字符字符”也也应该是重复是重复执行的行的处理。理。o改改进的的Jackson图规定定顺序序执行的行的处理中不允理中不允许混有重混有重复复执行或行或选择执行的行的处理,所以在理,所以在“分析字符分析字符”这个个处理框上面又增加了理框上面又增加了“分析字符串分析字符串”处理框。理框。86用用Jackson方法进行程序设计方法进行程序设计4.列出所有操作和条件,并且把它列出所有操作和条件,并且把它们分配到程序分配到程序结构构图的适当位置。的适当位置。(1)停止)停止(2)打开文件)打开文件(3)关)关闭文件文件(4)印出字符串)印出字符串(5)印出空格数目)印出空格数目(6)印出空格)印出空格总数数(7)sum:=sum1 /sum是保存空格个数的是保存空格个数的变量量(8)totalsum:=totalsumsum/totalsum保存空格保存空格总数数(9)读入字符串入字符串(10)sum:=0(11)totalsum:=0(12)pointer:=1 /指示当前分析的字符在字符串中的位置指示当前分析的字符在字符串中的位置(13)pointer:=pointer1 I(1)文件文件结束、束、I(2)字符串字符串结束束 S(3)字符是空格字符是空格87用用Jackson方法进行程序设计方法进行程序设计o经过简单分析不经过简单分析不难把这些操作难把这些操作和条件分配到和条件分配到程序结构图的程序结构图的适当位置。适当位置。88用用Jackson方法进行程序设计方法进行程序设计5.用用伪码表示程序表示程序处理理过程。程。统计空格空格seq 打开文件打开文件 读入字符串入字符串 totalsum:=0 程序体程序体iter until文件文件结束束 处理字符串理字符串seq 印字符串印字符串seq 印出字符串印出字符串 印字符串印字符串end sum:=0 .统计空格空格seq89例子o高考后将考生的基本情况文件(高考后将考生的基本情况文件(简称考生基本情况文件)称考生基本情况文件)和考生高考成和考生高考成绩文件(文件(简称考分文件)合并成一个新文称考分文件)合并成一个新文件(件(简称考生新文件)。考生基本情况文件和考分文件称考生新文件)。考生基本情况文件和考分文件都是由考生都是由考生记录组成的。成的。为简便起便起见,考生基本情况文,考生基本情况文件中的考生件中的考生记录内容包括:准考内容包括:准考证号、姓名、通号、姓名、通讯地址。地址。考分文件中的考生考分文件中的考生记录内容包括:准考内容包括:准考证号和各号和各门考分。考分。合并后的考生新文件自然也是由考生合并后的考生新文件自然也是由考生记录组成,内容包成,内容包括:准考括:准考证号、姓名、通号、姓名、通讯地址和各地址和各门考分。考分。o使用使用Jackson设计方法,把操作和条件分配到程序方法,把操作和条件分配到程序结构构图的相的相应位置。位置。90()91910111514131246327154(8)9 产生新文件产生新文件10 分析考生记录分析考生记录11 处理考生记录处理考生记录*12 产生准考证号产生准考证号13 产生姓名产生姓名14 产生通讯地址产生通讯地址15 产生考分产生考分1 停止停止2 打开两个输入文件打开两个输入文件3 建立输出文件建立输出文件4 从输入文件中各读一条记录从输入文件中各读一条记录5 生成一条新记录生成一条新记录6 将新记录写入输出文件将新记录写入输出文件7 关闭全部文件关闭全部文件8 条件条件I(1)文件结束文件结束926.5 程序复杂程度的定量度量程序复杂程度的定量度量o定量度量程序复定量度量程序复杂程度的方法很有价程度的方法很有价值:n把程序的复把程序的复杂程度乘以适当常数即可估算出程度乘以适当常数即可估算出软件中件中故障的数量以及故障的数量以及软件开件开发需要用的工作量,需要用的工作量,n定量度量的定量度量的结果可以用来比果可以用来比较两个不同的两个不同的设计或两或两个不同算法的个不同算法的优劣;劣;n程序的定量的复程序的定量的复杂程度可以作程度可以作为模模块规模的精确限模的精确限度。度。93651 McCabe方法方法o使用使用McCabe方法首先需要画出程序方法首先需要画出程序图,所,所谓程程序序图可以看成是可以看成是“退化了的退化了的”程序流程程序流程图,也,也就是把程序流程就是把程序流程图中每个中每个处理符号都退化成一理符号都退化成一个点,原来个点,原来连接不同接不同处理符号的箭理符号的箭头变成成连接接不同点的有向弧,不同点的有向弧,这样得到的有向得到的有向图就称就称为程程序序图。9495环形复杂度的计算方法环形复杂度的计算方法o可以用下列任何一种方法可以用下列任何一种方法计算算环形复形复杂度度1、流、流图中的区域数等于中的区域数等于环形复形复杂度度2、流、流图G的的环形复形复杂度度V(G)=E-N+2,其中,其中,E是是流流图中中边的条数,的条数,N是是结点数。点数。3、流、流图G的的环形复形复杂度度V(G)=P+1,其中,其中,P是流是流图中判定中判定结点的数目。点的数目。上上图中的的中的的环形复形复杂度度为396环行复杂度的用途环行复杂度的用途o程序的程序的环形复形复杂度取决于程序控制流的复度取决于程序控制流的复杂程程度,也即是取决于程序度,也即是取决于程序结构的复构的复杂程度。当程程度。当程序内分支数或循序内分支数或循环个数增加个数增加时,环形复形复杂度也度也随之增加,因此它是随之增加,因此它是对测试难度的一种定量度度的一种定量度量,也能量,也能对软件最件最终的可靠性的可靠性给出某种出某种预测。o实践表明,模践表明,模块规模以模以V(G)10为宜,也就宜,也就是是说,V(G)10是模是模块规模的一个更科学更模的一个更科学更精确的上限。精确的上限。97652 Halstead方法方法oHalstead方法根据程序中运算符和操作数的方法根据程序中运算符和操作数的总数来度量程序的复数来度量程序的复杂程度。程度。o令令N1为程序中运算符出程序中运算符出现的的总次数,次数,N2为操作数出操作数出现的的总次数,次数,程序程序长度度N定定义为:N N1十十N2o详细设计完成之后,可以知道程序中使用的不同运算符(包括关完成之后,可以知道程序中使用的不同运算符(包括关键字)的个数字)的个数n1,以及不同操作数(,以及不同操作数(变量和常数)的个数量和常数)的个数n2。Halstead给出出预测程序程序长度的公式如下:度的公式如下:H n1log2n1十十n2log2n2 o多次多次验证都表明,都表明,预测的的长度度H与与实际长度度N非常接近。非常接近。oHalstead还给出了出了预测程序中包含程序中包含错误的个数的公式如下:的个数的公式如下:E N log2(n1+n2)300098Thanks!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!