资源描述
第六章第六章 详细设计详细设计(Program Design Coding)详细设计的任务:详细设计的任务:功能设计、算法设计功能设计、算法设计数据结构设计、物理设计数据结构设计、物理设计其他设计:代码设计、输入其他设计:代码设计、输入/输出设计、界面输出设计、界面设计设计编写详细设计说明书编写详细设计说明书评审评审第六章第六章 详细设计详细设计(Program Design Coding)1. 结构化程序设计结构化程序设计特点:特点: 自顶向下,逐步求精自顶向下,逐步求精 具有单入口、单出口的控制结构具有单入口、单出口的控制结构 尽可能少用尽可能少用GOTO语句,最好在检测出错误才用,语句,最好在检测出错误才用,而且总是使用前向而且总是使用前向GOTO 经典结构化程序设计:经典结构化程序设计:3种基本控制结构种基本控制结构 扩展结构化程序设计:扩展结构化程序设计:5种基本控制结构种基本控制结构( (1) 1) 顺序结构顺序结构( (sequential structure)(2) (2) 选择结构选择结构(selective structure)ABPBAFT(3) (3) 先判定型循环结构先判定型循环结构(while-loop structure)(4) (4) 后判定型循环结构后判定型循环结构(until-loop structure)TPSFFSTP(5) (5) 多情况选择多情况选择(case structure)TA1FP=1TA2FP=2TAnFP=n5种基本控制结构种基本控制结构1. 结构化程序设计结构化程序设计2. 人机界面设计人机界面设计 对于许多计算机化的信息系统的用户来说,挫折对于许多计算机化的信息系统的用户来说,挫折和焦虑是他们日常生活的一部分。他们努力地学习和焦虑是他们日常生活的一部分。他们努力地学习命令语言和菜单选择系统以帮助他们更好地完成工命令语言和菜单选择系统以帮助他们更好地完成工作。有些人甚至对计算机、终端和网络产生了恐惧,作。有些人甚至对计算机、终端和网络产生了恐惧,因而刻意地回避计算机化的系统。因而刻意地回避计算机化的系统。 用户界面的设计要求在研究用户界面的设计要求在研究技术技术问题的同时对问题的同时对人人加以研究。用户是什么样的人?用户怎样学习与新加以研究。用户是什么样的人?用户怎样学习与新的计算机系统交互?用户怎样解释系统产生的信息?的计算机系统交互?用户怎样解释系统产生的信息?用户对系统有那些期望?用户对系统有那些期望?1、设计问题:、设计问题: 四个四个系统响应时间:属性(长度、易变性)系统响应时间:属性(长度、易变性)用户帮助设施:两类(集成、附加)用户帮助设施:两类(集成、附加)出错信息处理出错信息处理命令交互命令交互2.人机界面设计人机界面设计(1)系统响应时间:系统响应时间:系统响应时间是指从用户开始执行动作系统响应时间是指从用户开始执行动作(比如按比如按“回回车车”键或点鼠标键或点鼠标)到软件给出预期的响应的等待时到软件给出预期的响应的等待时间。间。 两个属性两个属性: 长度、易变性长度、易变性长度:如果系统响应时间过长,用户就会感到不安和沮长度:如果系统响应时间过长,用户就会感到不安和沮丧,过快的系统响应时间有时也会成为问题,因为这会丧,过快的系统响应时间有时也会成为问题,因为这会迫使用户加快操作节奏,从而导致错误。迫使用户加快操作节奏,从而导致错误。 易变性:响应时间相对于平均响应时间的偏差。易变性:响应时间相对于平均响应时间的偏差。 即使响应时间比较长,低的响应时间易变性也有助于用即使响应时间比较长,低的响应时间易变性也有助于用户建立稳定的节奏。例如,稳定在户建立稳定的节奏。例如,稳定在1秒的响应时间比从秒的响应时间比从0.1到到2.5秒不定的响应时间要好。秒不定的响应时间要好。2.人机界面设计人机界面设计(2) 用户帮助设施:用户帮助设施: 在多数情况下,现代的软件均提供联机帮助,用户可在多数情况下,现代的软件均提供联机帮助,用户可以不离开界面就解决自己的问题。以不离开界面就解决自己的问题。两类:集成、附加两类:集成、附加 集成集成的帮助设施是一开始就设计在软件里面的,它通常的帮助设施是一开始就设计在软件里面的,它通常与语境相关,用户可以直接选择与所要执行操作相关的主与语境相关,用户可以直接选择与所要执行操作相关的主题。可以缩短用户获得帮助的时间,增加界面的友好性。题。可以缩短用户获得帮助的时间,增加界面的友好性。 附加附加的帮助设施是在系统建好以后再加进去的,多数情的帮助设施是在系统建好以后再加进去的,多数情况下,这种帮助是一种查询能力较弱的联机帮助,况下,这种帮助是一种查询能力较弱的联机帮助, 交互期间,用户能获得多少帮助?全部交互期间,用户能获得多少帮助?全部/部分部分2.人机界面设计人机界面设计用户怎样请求帮助?用户怎样请求帮助? 三种选择:帮助菜单、特殊功能键、三种选择:帮助菜单、特殊功能键、HELP命令命令怎样显示帮助信息?怎样显示帮助信息? 三种选择:独立窗口、固定位置、指出参考文档三种选择:独立窗口、固定位置、指出参考文档怎样返回交互方式?怎样返回交互方式? 两种选择:屏幕上的返回键和功能键或控制序列两种选择:屏幕上的返回键和功能键或控制序列怎样组织帮助信息?怎样组织帮助信息? 三种选择:平面式三种选择:平面式(所有信息均通过一个关键词所有信息均通过一个关键词来访问来访问)、分层式、分层式(用户可以进一步查询得到更详用户可以进一步查询得到更详细的信息细的信息)和超文本式和超文本式 2.人机界面设计人机界面设计(3)出错信息处理:出错信息处理:出错信息和警告是指出现问题时系统给出的坏消息。出错信息和警告是指出现问题时系统给出的坏消息。如果做不好的话,出错信息和警告会给出无用或误如果做不好的话,出错信息和警告会给出无用或误导的信息,反而增加了用户的沮丧感。导的信息,反而增加了用户的沮丧感。例:很少有用户没有遇到类似以下的出错信息:例:很少有用户没有遇到类似以下的出错信息: SEVERE SYSTEM FAILURE14A 应该在某处有对错误应该在某处有对错误14A的解释,否则设计者为什么的解释,否则设计者为什么会指出会指出14A呢?但出错信息并没有指出是什么错误呢?但出错信息并没有指出是什么错误或从何处可以找到进一步的信息。或从何处可以找到进一步的信息。类似上面的出错信息既不能减轻用户的焦虑感也不能类似上面的出错信息既不能减轻用户的焦虑感也不能解决问题。解决问题。2.人机界面设计人机界面设计通常,出错信息和警告应具备以下特征:通常,出错信息和警告应具备以下特征:信息以用户可以理解的术语信息以用户可以理解的术语描述描述问题。问题。信息应提供如何从错误中信息应提供如何从错误中恢复恢复的建设性意见。的建设性意见。信息应指出错误可能导致哪些不良信息应指出错误可能导致哪些不良后果后果(比如破坏数据比如破坏数据),以便用户检查是否出现了这些情况,或帮助用户进行改以便用户检查是否出现了这些情况,或帮助用户进行改正。正。信息应伴随着视觉或听觉上的信息应伴随着视觉或听觉上的提示提示。即显示信息时应该。即显示信息时应该伴随警告声,或信息用闪烁方式显示,或信息用明显的伴随警告声,或信息用闪烁方式显示,或信息用明显的表示错误的颜色显示。表示错误的颜色显示。信息不能带有判决色彩,即不能指责用户。信息不能带有判决色彩,即不能指责用户。 由于没有人喜欢坏消息,无论出错信息代表了什么,也很少有由于没有人喜欢坏消息,无论出错信息代表了什么,也很少有用户喜欢出错信息,但从道理上讲,在出现问题时有效的出用户喜欢出错信息,但从道理上讲,在出现问题时有效的出错信息能够提高交互式系统的质量、减少用户的沮丧感。错信息能够提高交互式系统的质量、减少用户的沮丧感。2.人机界面设计人机界面设计(4)命令交互:命令交互: 命令行曾经是用户和系统交互的主要方式,命令行曾经是用户和系统交互的主要方式,并广泛用于各种应用程序中。并广泛用于各种应用程序中。 现在,面向窗口的采用点击现在,面向窗口的采用点击(point)和拾取和拾取(pick)方式的界面减少了用户对命令行的依赖,方式的界面减少了用户对命令行的依赖,但许多高级用户仍然喜欢面向命令的交互方但许多高级用户仍然喜欢面向命令的交互方式。式。 在许多软件中,用户既可以从菜单中选择在许多软件中,用户既可以从菜单中选择一个命令,也可以用键盘输入命令序列。一个命令,也可以用键盘输入命令序列。2.人机界面设计人机界面设计在提供命令交互方式时,必须考虑以下问题:在提供命令交互方式时,必须考虑以下问题: 每一个菜单选项是否都有对应命令?每一个菜单选项是否都有对应命令? 以何种方式提供命令?有三种选择:控制序列以何种方式提供命令?有三种选择:控制序列(比如比如P)、功能键和键入命令。、功能键和键入命令。 学习和记忆命令的难度有多大?命令忘了怎么学习和记忆命令的难度有多大?命令忘了怎么办?办? 用户是否可以定制和缩写命令?用户是否可以定制和缩写命令?2.人机界面设计人机界面设计 在越来越多的应用中,界面设计者提供在越来越多的应用中,界面设计者提供“命令宏机制命令宏机制”,以用户定义的名字代表一,以用户定义的名字代表一个常用的命令序列,用户不必分别输入这些个常用的命令序列,用户不必分别输入这些命令,只需输入命令宏就可以执行其代表的命令,只需输入命令宏就可以执行其代表的命令序列。命令序列。 在理想情况下,所有的应用程序应有通用在理想情况下,所有的应用程序应有通用的命令使用方法。如果在一个应用中的命令使用方法。如果在一个应用中D表示表示复制一个图形对象,而在另一个应用中复制一个图形对象,而在另一个应用中D表表示删除一个图形对象,这就会使用户感到困示删除一个图形对象,这就会使用户感到困惑,并往往会导致错误,潜在的错误是明显惑,并往往会导致错误,潜在的错误是明显的。的。2.人机界面设计人机界面设计2、界面设计指南、界面设计指南 (1)一般交互的指南:一般交互的指南:一致一致性。菜单选择、命令输入、数据显示以性。菜单选择、命令输入、数据显示以及无数其他功能都应使用一致的格式。及无数其他功能都应使用一致的格式。提供有意义的提供有意义的反馈反馈。向用户提供视觉和听觉。向用户提供视觉和听觉的反馈,以保证在用户和界面间建立双向联的反馈,以保证在用户和界面间建立双向联系。系。在执行有较大在执行有较大破坏破坏性的动作前要求确认。如性的动作前要求确认。如果用户要删除一个文件,或覆盖一些重要信果用户要删除一个文件,或覆盖一些重要信息,或请求停止一个程序,应该给出类似息,或请求停止一个程序,应该给出类似“您确实要您确实要?”的信息。的信息。2.人机界面设计人机界面设计减少在动作间必须记忆的信息数量。不应期望用减少在动作间必须记忆的信息数量。不应期望用户能记住一大串数字或名字,以便在下一步的功户能记住一大串数字或名字,以便在下一步的功能中使用,能中使用,记忆量记忆量应尽量减少。应尽量减少。允许允许取消取消大多数操作。大多数操作。UNDO或或REVERSE功能使功能使成千上万的用户免受成百万小时的挫折。每个交成千上万的用户免受成百万小时的挫折。每个交互式应用都应允许取消已完成的操作。互式应用都应允许取消已完成的操作。在对话、移动和思考中提高在对话、移动和思考中提高效率效率。击键次数应尽。击键次数应尽量减少,设计屏幕布局时应考虑鼠标移动的距离,量减少,设计屏幕布局时应考虑鼠标移动的距离,用户问用户问“下面怎么办?下面怎么办?”的时候应尽量减少。的时候应尽量减少。允许错误。系统应保护自己不受致命错误的破坏。允许错误。系统应保护自己不受致命错误的破坏。2.人机界面设计人机界面设计按功能对动作分类,并据此安排屏幕布局。下拉按功能对动作分类,并据此安排屏幕布局。下拉菜单的一个优点就是按类型组织命令。实际上,菜单的一个优点就是按类型组织命令。实际上,设计者应努力提高命令和动作组织的设计者应努力提高命令和动作组织的内聚性内聚性。提供语境相关的提供语境相关的帮助帮助机制。机制。命令命令用简单的动词或动词短语命名。过长的命令用简单的动词或动词短语命名。过长的命令名难以识别和记忆,也会占据过多的菜单位置。名难以识别和记忆,也会占据过多的菜单位置。2.人机界面设计人机界面设计(2)信息显示的指南:信息显示的指南:只显示与当前语境环境相关的信息。用户在获取只显示与当前语境环境相关的信息。用户在获取有关某特定系统功能的信息时,不必看到其他的有关某特定系统功能的信息时,不必看到其他的数据、菜单和图形。数据、菜单和图形。不要用数据将用户包围,使用便于用户迅速吸取不要用数据将用户包围,使用便于用户迅速吸取信息的方式表现数据。可以用各种图形取代巨大信息的方式表现数据。可以用各种图形取代巨大的表格。的表格。使用一致的标记、标准的缩写和可预测的颜色。使用一致的标记、标准的缩写和可预测的颜色。显示信息的含义应该非常明确,用户不必再参照显示信息的含义应该非常明确,用户不必再参照其他信息源。其他信息源。2.人机界面设计人机界面设计允许用户维持可视化的语境。如果图形表示可以允许用户维持可视化的语境。如果图形表示可以伸缩,原来的图像应一直显示着伸缩,原来的图像应一直显示着(比如以缩小的形比如以缩小的形式放在屏幕的一角式放在屏幕的一角),以使得用户可以知道自己观,以使得用户可以知道自己观察的部分在原图中的相对位置。察的部分在原图中的相对位置。产生有意义的出错信息。产生有意义的出错信息。使用大小写、缩进和文本来辅助理解。使用大小写、缩进和文本来辅助理解。HCI显示显示的大部分信息是文字,文字的布局和形式对用户的大部分信息是文字,文字的布局和形式对用户从中吸取信息影响很大。从中吸取信息影响很大。使用窗口分隔不同类型的信息。窗口使得用户可使用窗口分隔不同类型的信息。窗口使得用户可以方便地保存多种不同类型的信息。以方便地保存多种不同类型的信息。2.人机界面设计人机界面设计如果采用如果采用“模拟模拟”的明显方式表示信息,更容易的明显方式表示信息,更容易被用户理解,则应采用模拟方式。被用户理解,则应采用模拟方式。 例如,显示炼油厂储油罐的压力时,简单的数字例如,显示炼油厂储油罐的压力时,简单的数字表示难以被用户理解。如果用类似温度计的方式表示难以被用户理解。如果用类似温度计的方式来表示,用垂直的运动和颜色变化来表示危险的来表示,用垂直的运动和颜色变化来表示危险的压力状况,就比较容易理解,因为这样为用户提压力状况,就比较容易理解,因为这样为用户提供了绝对和相对两方面的信息。供了绝对和相对两方面的信息。高效地使用显示器的显示空间。如果采用多窗口,高效地使用显示器的显示空间。如果采用多窗口,应该为每个窗口都留一些显示空间。此外,屏幕应该为每个窗口都留一些显示空间。此外,屏幕的大小应该适合于应用程序的大小应该适合于应用程序(这实际上是一个系统这实际上是一个系统工程的问题工程的问题)。2.人机界面设计人机界面设计(3)数据输入的指南:数据输入的指南:减少用户输入动作的数量。最主要的是减少击键减少用户输入动作的数量。最主要的是减少击键的数量,可用以下方式实现:用鼠标选择菜单代的数量,可用以下方式实现:用鼠标选择菜单代替击键;用滑动标尺输入一定范围内的值;使用替击键;用滑动标尺输入一定范围内的值;使用宏,用一次击键代表复杂的输入数据。宏,用一次击键代表复杂的输入数据。维护信息显示和数据输入的一致性。显示的视觉维护信息显示和数据输入的一致性。显示的视觉特征特征(比如文字的大小、颜色和位置比如文字的大小、颜色和位置)应与输入域应与输入域一致。一致。允许用户自定义输入。专家用户可能需要定义用允许用户自定义输入。专家用户可能需要定义用户命令或省去警告信息及动作确认。户命令或省去警告信息及动作确认。HCI应该允应该允许这样做。许这样做。2.人机界面设计人机界面设计交互应该是灵活的,并可调整到用户最喜欢的输交互应该是灵活的,并可调整到用户最喜欢的输入方式。入方式。用户类型用户类型有助于确定用户喜欢的输入模有助于确定用户喜欢的输入模式。秘书可能很喜欢键盘输入,经理可能会喜欢式。秘书可能很喜欢键盘输入,经理可能会喜欢鼠标一类的点击设备。鼠标一类的点击设备。在当前动作的语境中使不合适的命令不起作用。在当前动作的语境中使不合适的命令不起作用。这使得用户不会使用哪些肯定会导致错误的动作。这使得用户不会使用哪些肯定会导致错误的动作。让用户控制交互流。用户应该能够跳过不必要的让用户控制交互流。用户应该能够跳过不必要的动作、改变所需动作的顺序动作、改变所需动作的顺序(如果应用的语境环如果应用的语境环境允许的话境允许的话)以及在不退出系统的情况下从错误以及在不退出系统的情况下从错误状态恢复。状态恢复。2.人机界面设计人机界面设计为所有的输入动作提供帮助。为所有的输入动作提供帮助。消除冗余输入。消除冗余输入。不要要求用户指定工程输入的不要要求用户指定工程输入的单位单位(除非不除非不这样会产生含混这样会产生含混);不要要求用户在整钱数后加不要要求用户在整钱数后加.00可能的话要提供缺省值可能的话要提供缺省值绝不要让用户提供程序中可以自动获得或计绝不要让用户提供程序中可以自动获得或计算出来的信息。算出来的信息。2.人机界面设计人机界面设计3. 过程设计的过程设计的 工具工具 1、程序流程图、程序流程图(Program Flow Chart) 程序流程图,又称程序框图,是描程序流程图,又称程序框图,是描述程序逻辑结构的工具。它使用的符号述程序逻辑结构的工具。它使用的符号与系统流程图的符号很多相同,但是,与系统流程图的符号很多相同,但是,箭头符号代表控制流而不是数据流。箭头符号代表控制流而不是数据流。 5种基本控制结构:种基本控制结构:( (1) 1) 顺序结构顺序结构( (sequential structure)(2) (2) 选择结构选择结构(selective structure)ABPBAFT(3) (3) 先判定型循环结构先判定型循环结构(while-loop structure)(4) (4) 后判定型循环结构后判定型循环结构(until-loop structure)TPSFFSTP(5) (5) 多情况选择多情况选择(case structure)TA1FP=1TA2FP=2TAnFP=n3. 过程设计的过程设计的 工具工具 任何复杂的程序流程图都应由以上五种基本结任何复杂的程序流程图都应由以上五种基本结构组合而成。构组合而成。 优点:直观清晰,易于使用,容易掌握,且历优点:直观清晰,易于使用,容易掌握,且历史史“悠久悠久”,使用广泛。,使用广泛。 ISO 认可的规定符号:认可的规定符号:P.83 图图 5.33. 过程设计的过程设计的 工具工具 缺点:缺点:转移控制太方便。转移控制太方便。易造成非结构化的程序结构,易造成非结构化的程序结构,编码时不加限制的使用编码时不加限制的使用GOTO语句,导致基本控语句,导致基本控制块多入多出口,与软件设计的原则相违背制块多入多出口,与软件设计的原则相违背。本质上不具备逐步求精的特点。本质上不具备逐步求精的特点。诱使过早考虑诱使过早考虑程序的控制流程,而不去考虑程序的全局结构。程序的控制流程,而不去考虑程序的全局结构。对于提高大型系统的可理解性作用甚微;对于提高大型系统的可理解性作用甚微;不易表示数据结构不易表示数据结构。 趋势:停止使用趋势:停止使用3. 过程设计的过程设计的 工具工具SequentialABPFTABSelectivePFT BDo-While PSWhileDo-Until PSUntilCaseP12nA1A2AnCall subroutineA2、盒图、盒图(Box Diagram): Nassi &Shneiderman 1973年提出,年提出,又称为又称为N-S Charts。Chapin 1974年作扩充,故年作扩充,故也称为也称为Chapin charts.3. 过程设计的过程设计的 工具工具x4TFDo-Until x5ighfkx1TFbDo-Until x6ajx21cDo-While x323dek :例:例:3. 过程设计的过程设计的 工具工具特点:特点:所有的程序结构均用方框来表示,程序结构所有的程序结构均用方框来表示,程序结构清晰。只能表达结构化的程序逻辑,遵守结构化清晰。只能表达结构化的程序逻辑,遵守结构化程序设计的规定。程序设计的规定。 没有箭头,不允许随意转移控制;没有箭头,不允许随意转移控制; 每个矩形框每个矩形框(Case中条件取值例外中条件取值例外)都是一个功能都是一个功能域域(即一个特定结构的作用域即一个特定结构的作用域),结构表示明确;,结构表示明确; 局部及全程数据的作用域易见;局部及全程数据的作用域易见; 易表现嵌套关系易表现嵌套关系(embedded structure)以及模块的层以及模块的层次结构。次结构。缺点:缺点:当程序内嵌套的层数增多时,内层的方框将越来越小,当程序内嵌套的层数增多时,内层的方框将越来越小,从而增加绘图的难度,并使图形的清晰性受影响。从而增加绘图的难度,并使图形的清晰性受影响。3. 过程设计的过程设计的 工具工具ABSequential While PS Until PSLoopsPABTHENELSESelectiveP =A1A2CaseAn12nStatement IndexdefDefinition3、PAD(Problem Analysis Diagram):日立公司,日立公司,19733. 过程设计的过程设计的 工具工具x4TFDo-Until x5ighfkx1TFbDo-Until x6ajx21cDo-While x323dek :例:例:N-S图与图与PAD的转换的转换3. 过程设计的过程设计的 工具工具开始开始 结束结束 aj Until x5i Until x6bx1kfx4ghdefkx2de123 While x3c3. 过程设计的过程设计的 工具工具特点:特点: 结构清晰,层次分明,易读易写,使用方结构清晰,层次分明,易读易写,使用方便;便; 支持逐步求精的设计思想,支持结构化的支持逐步求精的设计思想,支持结构化的程序设计原理;程序设计原理; 容易将容易将PAD自动转换为高级语言源程序。自动转换为高级语言源程序。3. 过程设计的过程设计的 工具工具4、判定表、判定表 & 判定树判定树(Decision Table & Tree) 表示复杂的条件表示复杂的条件(input)组合与应做动作组合与应做动作(output)之间的对应关系。之间的对应关系。 3. 过程设计的过程设计的 工具工具例:例:P.86 航空行李托运费的算法航空行李托运费的算法按规定:重量不超过按规定:重量不超过30公斤的行李可免费托运。公斤的行李可免费托运。重量超过重量超过30公斤时,对超运部分,头等公斤时,对超运部分,头等舱国内乘客收舱国内乘客收4元元/公斤;其它舱位国内公斤;其它舱位国内乘客收乘客收6元元/公斤;外国乘客收费为国内公斤;外国乘客收费为国内乘客的乘客的2倍;残疾乘客的收费为正常乘倍;残疾乘客的收费为正常乘客的客的1/2。 3. 过程设计的过程设计的 工具工具123456789国内乘客国内乘客T T T T FFFF头等舱头等舱T F T F T F T F残疾乘客残疾乘客FF T T FF T T行李重量行李重量 W 30T FFFFFFFF免费免费 (W-30) 2 (W-30) 3 (W-30) 4 (W-30) 6 (W-30) 8 (W-30) 12 用判定表表示计算行李费的算法用判定表表示计算行李费的算法RulesRule numbers Condition rowsAction rows3. 过程设计的过程设计的 工具工具行李费行李费算法算法行李重量行李重量W 30行李重量行李重量W 30免费免费国内乘客国内乘客外国乘客外国乘客头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客(W-30) 2(W-30) 4残疾乘客残疾乘客正常乘客正常乘客(W-30) 3(W-30) 6头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客(W-30) 4(W-30) 8残疾乘客残疾乘客正常乘客正常乘客(W-30) 6(W-30) 12用判定树表示计算行李费的算法用判定树表示计算行李费的算法注:判定表与判定树并注:判定表与判定树并不适用于作为一种通用不适用于作为一种通用的设计工具,通常将之的设计工具,通常将之用于辅助测试用于辅助测试3. 过程设计的过程设计的 工具工具5、PDL(Program Design Language):过程设计语言,又:过程设计语言,又称称 Pseudocode。 是一种用于描述模块算法设计和处理细节的是一种用于描述模块算法设计和处理细节的语言。语言。 分内外两层语言。外层具有严格的关键字语分内外两层语言。外层具有严格的关键字语法,内层表示实际操作和条件的自然语言,语法法,内层表示实际操作和条件的自然语言,语法自由。自由。 程序结构有:顺序结构、选择结构、重复结程序结构有:顺序结构、选择结构、重复结构、出口结构、扩充结构(模块定义、模块调用、构、出口结构、扩充结构(模块定义、模块调用、数据定义、输入数据定义、输入/输出)等。输出)等。3. 过程设计的过程设计的 工具工具PROCEDURE spell_check IS BEGIN Split document into single words Look up words in dictionary Display words which are not in dictionary Create a new dictionary END spell_checkExternal statementsInternalstatements例例1:文字拼写检查:文字拼写检查3. 过程设计的过程设计的 工具工具例例2:用户登录:用户登录 PROCEDURE 登录()登录()清屏;清屏;显示显示系统用户界面;系统用户界面;PUT(“请输入用户口令:请输入用户口令:”);GET(password);IF password系统口令系统口令 提示告警信息;提示告警信息; 退出运行;退出运行;ENDIF显示本系统主菜单;显示本系统主菜单;WHILE(true) 接收用户选择接收用户选择ABC; IF ABC=“退出退出” Break; ENDIF 调用相应下层模块完成用户选择功能;调用相应下层模块完成用户选择功能;ENDWHILE;清屏;清屏;RETURN END3. 过程设计的过程设计的 工具工具具备以下特点:具备以下特点: 有固定的外语法有固定的外语法(keyword); 有数据说明,例如:有数据说明,例如: TYPE number IS STRING LENGTH (12) TYPE table IS INSTANCE OF symbol_table 内语法用自然语言描述;内语法用自然语言描述;抽象类型抽象类型3. 过程设计的过程设计的 工具工具优点:易于实现由优点:易于实现由PDL到源代码的自动转换。到源代码的自动转换。缺点:不够直观。缺点:不够直观。3. 过程设计的过程设计的 工具工具有子程序定义与调用机制,例如:有子程序定义与调用机制,例如: PROCEDURE INTERFACE pseudocode lines END 调用时可用:调用时可用:PERFORM USING项目名称:项目名称: 模块名称:模块名称:开发人员:开发人员: 完成日期:完成日期:模块简述:模块简述:任任 务务起起始始日日期期完完成成日日期期设设 计计编编 码码单单元元测测试试集集成成测测试试修修改改日日期期代代码码长长度度3. 过程设计的过程设计的 工具工具6、文件夹:记录模块开发过程的文、文件夹:记录模块开发过程的文档。建议各组建立自己的文件夹。档。建议各组建立自己的文件夹。ABCBCA =ABoCoSA =SCBA = BAB*I4. Jackson System Development(JSD) 与与SD的由的由DFD导出结构设计不同,导出结构设计不同,JSD是以是以数据结构数据结构(data structure)为基础设计每个模块的处为基础设计每个模块的处理过程。理过程。1、Jackson Diagram:注意:注意:H中的方框表示中的方框表示模块,而模块,而JD中的中的方框代表几个语方框代表几个语句构成的简单操句构成的简单操作;作;H表现调用关系,表现调用关系,而而JD表现组成关表现组成关系。系。4. JSD 例:例:(P.91)一个正文文件由若干个记录组成,一个正文文件由若干个记录组成,每个记录是一个字符串。每个记录是一个字符串。 要求统计每个记录中空格字符的个数,要求统计每个记录中空格字符的个数, 以及文件中空格字符的总个数。以及文件中空格字符的总个数。 要求的输出数据格式是:要求的输出数据格式是: 每复制一行输入字符串之后,每复制一行输入字符串之后, 另起一行另起一行打打印出这个字符串中的空格数,印出这个字符串中的空格数, 最后最后打打印出文件中空格的总个数。印出文件中空格的总个数。2、Jackson方法:方法:第第1 1步:用步:用JacksonJackson图描述图描述 IO 的数据结构的数据结构正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS输入输入输出表格输出表格表格体表格体串信息串信息*字符串字符串空格数空格数I输出输出空格总数空格总数4. JSD第第2 2步:在两个图中指出有直接因果关系步:在两个图中指出有直接因果关系(causality)、可以同时处理的单元(重复的次序,次数均相同)可以同时处理的单元(重复的次序,次数均相同)4. JSD正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS输入输入输出表格输出表格表格体表格体串信息串信息*字符串字符串空格数空格数I输出输出空格总数空格总数? 经过程序处理由经过程序处理由正文文件正文文件得到得到输出表格输出表格。 每处理输入中一个每处理输入中一个字符串字符串后就后就得到输出中一个得到输出中一个串信息串信息,二者重,二者重复次序和次数均相同。复次序和次数均相同。 字符字符不与多字符组成的不与多字符组成的字符串字符串对应。对应。 单个单个空格空格不能决定不能决定空格数空格数。4. JSD正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS输入输入输出表格输出表格表格体表格体串信息串信息*字符串字符串空格数空格数I输出输出空格总数空格总数统计空格统计空格处理字符串处理字符串*I程序体程序体打印总数打印总数打印字符串打印字符串打印空格数打印空格数分析字符分析字符*分析字符分析字符*I分析字符串分析字符串处理空格处理空格o处理非空格处理非空格oS注:顺序执行的处理中不允许混有注:顺序执行的处理中不允许混有重复执行或选择执行的处理重复执行或选择执行的处理。第第3步:步:Data structure Program structure把有对应关系的单元合为一个处理框,画把有对应关系的单元合为一个处理框,画在相应的层次中(不同层以低层为准)在相应的层次中(不同层以低层为准)第第4 4步:列出所有操作条件,步:列出所有操作条件,并分配到上幅程序结构图中并分配到上幅程序结构图中统计空格统计空格处理字符串处理字符串*I(1)程序体程序体打印总数打印总数打印字符串打印字符串打印空格数打印空格数分析字符分析字符*I分析字符串分析字符串处理空格处理空格o处理非空格处理非空格oS231454. JSD例例:(部分部分列举,详列举,详见见P.93)打开文件打开文件读入字符串读入字符串空格总数空格总数totalsum=0关闭文件关闭文件停止停止I 文件结束文件结束第第5步:用步:用Pseudocode 表示程序表示程序(详见(详见P.94 -95)5.程序复杂程度的定量度量程序复杂程度的定量度量(Measuring Program Complexity)1、mcCabes Theory (Thomas mcCabe , 1976) based on CFG第第1步:将程序流程图转化为程序图步:将程序流程图转化为程序图(CFG, Control Flow Graph)TOTAL=TOTAL+AK+输入输入A输出输出K, L, TOTAL停止停止T开始开始K=0L=0TOTAL=0输入输入ADo While TOTAL0TL+Fa(开始(开始)b(入口(入口)cdefghij(出口(出口)k(停止(停止)abcdefghijk 符号符号点点 程序图程序图 有向图有向图5.程序复杂程度的定量度量程序复杂程度的定量度量第第2步:计算步:计算CFG的环形复杂度的环形复杂度 (CC, Cyclomatic Complexity)已知公式:已知公式:V(G) = m - n + p其中其中:V(G) =强连通有向图强连通有向图G中线性无关环中线性无关环(independent paths)的个数的个数(称为称为 cyclomatic number of G);m = 边数边数 (number of edges) ; n = 节点数节点数(number of nodes);p = G中连通集的数目中连通集的数目(number of connected components)。a(开始(开始)b(入口(入口)cdefghij(出口(出口)k(停止(停止)注:注: 对于一个正对于一个正常的程序,常的程序,其其CFG应是应是连通的,即连通的,即p = 1. 对于平对于平面图面图G, V(G) =G在平面在平面上围成上围成的区域的区域的个数。的个数。 31911V(G)5.程序复杂程度的定量度量程序复杂程度的定量度量CFG通常不通常不是强连通的,是强连通的,故须从出口到故须从出口到入口画一条虚入口画一条虚弧,使其成为弧,使其成为强连通图。强连通图。 分支或循环增多时,分支或循环增多时,CC也随之增大,也随之增大, CC值实际上是为软件值实际上是为软件测试测试的难易度提供了一个的难易度提供了一个定量度量的方法定量度量的方法, 间接表示了软件的间接表示了软件的可靠性可靠性。 CC是可加的:是可加的:2模块的总复杂度模块的总复杂度 = 各自各自CC之和。之和。 实践经验表明,对于实践经验表明,对于CC10的程序,应分成几个的程序,应分成几个小程序处理,以降低出错率。小程序处理,以降低出错率。 缺点:缺点: 有些控制结构不能区分,例如有些控制结构不能区分,例如 IF 与与 LOOP,嵌套,嵌套 IF 与与 CASE 等;等; 不能区分一个多行顺序结构与一个单行程序的复不能区分一个多行顺序结构与一个单行程序的复杂性。杂性。5.程序复杂程度的定量度量程序复杂程度的定量度量McCabe 环形复杂度的特点:环形复杂度的特点:2. Halsteads Theory (M. Halstead, 1977) based on source code measurements The primitive measures are n1 不同的不同的运算符个数运算符个数(the number of distinct operators that appear in a program) n2 不同的操作数个数不同的操作数个数( the number of distinct operands that appear in a program) N1 运算符总个数运算符总个数(the total number of operator occurrences) N2 操作数总个数操作数总个数 (the total number of operand occurrences)注:成对出现的运算符,如注:成对出现的运算符,如 BEGINEND, IFTHENELSE 等都算等都算1 1个运算符个运算符。5.程序复杂程度的定量度量程序复杂程度的定量度量 Halsteads laws:(1)实际程序长度实际程序长度(program length): N = N1 + N2(2) 程序词汇表程序词汇表(program vocabulary): n = n1 + n2(3) 预测程序长度预测程序长度(estimated length): H = n1log2n1 + n2log2n2 注意:注意:H可由词汇表算出,即程序长度可通过词汇表预估。可由词汇表算出,即程序长度可通过词汇表预估。(4) ) 程序量程序量(program volume):V = N log2n minimum # of bits required to specify a program.5.程序复杂程度的定量度量程序复杂程度的定量度量(5) 程序级别程序级别(program level):L = V * / V 其中其中 potential volume V * = (2+n2*)log2 (2+n2*), n2* 为为I/O变量的个数变量的个数 。这里这里V * 是是V 的最小值,的最小值, 2 2表示程序中至少有表示程序中至少有2 2个运算符个运算符 赋值符和调用符。赋值符和调用符。 L 体现了抽象程度,编码语言越高级,体现了抽象程度,编码语言越高级,L 越接近越接近1。5.程序复杂程度的定量度量程序复杂程度的定量度量(6) 工作量工作量(effort):E=V / L。(7) 潜在错误潜在错误(potential error): B = N Log2 n /3000 。
展开阅读全文