




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6章章 详细设计详细设计一一. 软件软件设计设计任务任务二二. 人机界面设计人机界面设计三三. 过程设计过程设计四四. 过过程设计程设计的工具的工具五五. 设计中需要处理的其他问题设计中需要处理的其他问题六六. 面向数据结构的设计方法面向数据结构的设计方法七七. 程序复杂程度的定量度量程序复杂程度的定量度量u分析模型分析模型 设计模型设计模型 设计文档设计文档u回答回答How to do?How to do?u可以分为总体设计、详细设计可以分为总体设计、详细设计1.1.总体设计总体设计(概要设计)(概要设计)(1 1)方案设计)方案设计 确定最佳方案;确定最佳方案;(2 2)体系结构设计)
2、体系结构设计 定义软件所包含的部件及其之间的关系;定义软件所包含的部件及其之间的关系;(3 3)数据设计)数据设计 将分析阶段创建的信息模型转变成实现软件所需要的数据结构;将分析阶段创建的信息模型转变成实现软件所需要的数据结构;(4 4)接口设计)接口设计 设计软件内部各模块之间、软件与协作系统之间以及软件与人之设计软件内部各模块之间、软件与协作系统之间以及软件与人之间的通信方式。间的通信方式。2.2.详细设计详细设计(1 1)过程设计)过程设计 设计软件体系结构中所包含的每个模块的实现算法。设计软件体系结构中所包含的每个模块的实现算法。(2 2)人机界面设计)人机界面设计一一. 软件软件设计
3、设计的任务的任务PSPEC过程设计数据对象描述CFDDFDE-RDDCSPEC 接口设计体系结构设计数据设计3. 分析与设计的关系分析与设计的关系(1 1)范围)范围 描述设计工作的整体范围,其大部分内容来自软件需求说明书。描述设计工作的整体范围,其大部分内容来自软件需求说明书。(2 2)体系结构设计)体系结构设计 说明从需求模型导出的软件体系结构,包括模块的层次结构。说明从需求模型导出的软件体系结构,包括模块的层次结构。(3 3)数据设计)数据设计 描述数据对象和形成的数据结构、外部文件和数据库结构、内描述数据对象和形成的数据结构、外部文件和数据库结构、内部数据结构等;部数据结构等;(4 4
4、)接口设计)接口设计 描述人机界面以及人机界面的设计规则,外部数据、系统或设描述人机界面以及人机界面的设计规则,外部数据、系统或设备接口,内部接口及其设计规则。备接口,内部接口及其设计规则。(5 5)模块的过程设计)模块的过程设计 描述每个模块的处理说明、设计语言描述、调用其他模块和内描述每个模块的处理说明、设计语言描述、调用其他模块和内部设计结构等。部设计结构等。(6 6)其他)其他 包括测试的考虑,确保设计满足所有需求,设计约束和一些特包括测试的考虑,确保设计满足所有需求,设计约束和一些特殊注解等内容。殊注解等内容。软件软件设计设计文档文档软件设计说明书软件设计说明书 人机界面设计是接口设
5、计的一个重要的组成部人机界面设计是接口设计的一个重要的组成部分。对于交互式系统来说,人机界面设计和数据设分。对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。计、体系结构设计及过程设计一样重要。1.指导规则指导规则 T.Mandel在在用户界面设计要素用户界面设计要素中,提出了中,提出了3条指导规则:条指导规则:u让用户驾驭软件,不是软件驾驭用户让用户驾驭软件,不是软件驾驭用户u减少用户的记忆减少用户的记忆u保持界面的一致性保持界面的一致性二二. 人机界面设计人机界面设计2. 应该考虑的设计问题应该考虑的设计问题(1) 系统响应时间系统响应时间 系统响应时间指从用户完
6、成某个控制动作系统响应时间指从用户完成某个控制动作(例如,按回车例如,按回车键或点击鼠标键或点击鼠标),到软件给出预期的响应,到软件给出预期的响应(输出信息或做动作输出信息或做动作)之间的这段时间。之间的这段时间。 系统响应时间有两个重要属性,分别是系统响应时间有两个重要属性,分别是长度长度和和易变性易变性。系统响应的时间长度应该适当,而且应该尽量稳定。系统响应的时间长度应该适当,而且应该尽量稳定。(2) 用户帮助设施用户帮助设施 常见的帮助设施有常见的帮助设施有集成集成的和的和附加附加的两类。的两类。 集成的帮助设施从一开始就设计在软件里面,通常它对集成的帮助设施从一开始就设计在软件里面,通
7、常它对用户工作内容是敏感的,因此用户可以从与刚刚完成的操作用户工作内容是敏感的,因此用户可以从与刚刚完成的操作有关的主题中选择一个请求帮助。显然,这可以缩短用户获有关的主题中选择一个请求帮助。显然,这可以缩短用户获得帮助的时间,增加界面的友好性。得帮助的时间,增加界面的友好性。 附加的帮助设施是在系统建成后再添加到软件中的,在附加的帮助设施是在系统建成后再添加到软件中的,在多数情况下它实际上是一种查询能力有限的联机用户手册。多数情况下它实际上是一种查询能力有限的联机用户手册。 人们普遍认为,集成的帮助设施优于附加的帮助设施。人们普遍认为,集成的帮助设施优于附加的帮助设施。(3) 出错信息处理出
8、错信息处理 一般说来,交互式系统给出的出错信息或警告信息,应一般说来,交互式系统给出的出错信息或警告信息,应该具有下述属性:该具有下述属性: 信息应该用用户可以理解的术语描述问题。信息应该用用户可以理解的术语描述问题。 信息应该提供有助于从错误中恢复的建设性意见。信息应该提供有助于从错误中恢复的建设性意见。信息应该指出错误可能导致哪些负面后果信息应该指出错误可能导致哪些负面后果(例如,破坏数例如,破坏数据文件据文件),以便用户检查是否出现了这些问题,并在确实出,以便用户检查是否出现了这些问题,并在确实出现问题时及时解决。现问题时及时解决。信息应该伴随着听觉上或视觉上的提示,例如,在显示信信息应
9、该伴随着听觉上或视觉上的提示,例如,在显示信息时同时发出警告铃声,或者信息用闪烁方式显示,或者信息时同时发出警告铃声,或者信息用闪烁方式显示,或者信息用明显表示出错的颜色显示。息用明显表示出错的颜色显示。信息不能带有指责色彩,也就是说,不能责怪用户。信息不能带有指责色彩,也就是说,不能责怪用户。(4) 命令交互命令交互 命令行现在仍然是许多高级用户偏爱的交互方式。在命令行现在仍然是许多高级用户偏爱的交互方式。在多数情况下,用户既可以从菜单中选择软件功能,也可以多数情况下,用户既可以从菜单中选择软件功能,也可以通过键盘命令序列调用软件功能。通过键盘命令序列调用软件功能。 在提供命令交互方式时,必
10、须考虑下列设计问题:在提供命令交互方式时,必须考虑下列设计问题:u是否每个菜单选项都有对应的命令是否每个菜单选项都有对应的命令?u采用何种命令形式采用何种命令形式?有有3种选择:控制序列种选择:控制序列(例如例如Ctrl+P),功能键和键入命令。功能键和键入命令。u学习和记忆命令的难度有多大学习和记忆命令的难度有多大?忘记了命令怎么办忘记了命令怎么办?u用户是否可以定制或缩写命令用户是否可以定制或缩写命令? 在理想的情况下,所有应用软件都有一致的命令使用在理想的情况下,所有应用软件都有一致的命令使用方法。方法。 用户界面设计是一个迭代的过程,也就是说,通常先用户界面设计是一个迭代的过程,也就是
11、说,通常先创建设计模型,再用原型实现这个设计模型,并由用户试创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改,直至满意为止。用和评估,然后根据用户意见进行修改,直至满意为止。 在创建了用户界面的设计模型之后,可以运用下述评在创建了用户界面的设计模型之后,可以运用下述评估标准对设计进行早期复审。估标准对设计进行早期复审。(1) 系统及其界面的规格说明书的长度和复杂程度,预示了系统及其界面的规格说明书的长度和复杂程度,预示了用户学习使用该系统所需要的工作量。用户学习使用该系统所需要的工作量。(2) 命令或动作的数量、命令的平均参数个数或动作中单个命令或动作的数量
12、、命令的平均参数个数或动作中单个操作的个数,预示了系统的交互时间和总体效率。操作的个数,预示了系统的交互时间和总体效率。(3) 设计模型中包含的动作、命令和系统状态的数量,预示设计模型中包含的动作、命令和系统状态的数量,预示了用户学习使用该系统时需要记忆的内容的多少。了用户学习使用该系统时需要记忆的内容的多少。(4) 界面风格、帮助设施和出错处理协议,预示了界面的复界面风格、帮助设施和出错处理协议,预示了界面的复杂程度及用户接受该界面的程度。杂程度及用户接受该界面的程度。3. 人机界面设计过程人机界面设计过程(1) 一般交互指南一般交互指南 一般交互指南涉及信息显示、数据输入和系统整体控一般交
13、互指南涉及信息显示、数据输入和系统整体控制,因此,这类指南是全局性的,忽略它们将承担较大风制,因此,这类指南是全局性的,忽略它们将承担较大风险。主要的一般交互指南为:险。主要的一般交互指南为:u保持一致性。保持一致性。u提供有意义的反馈。提供有意义的反馈。u在执行有较大破坏性的动作之前要求用户确认。在执行有较大破坏性的动作之前要求用户确认。u允许取消绝大多数操作。允许取消绝大多数操作。u减少在两次操作之间必须记忆的信息量。减少在两次操作之间必须记忆的信息量。u提高对话、移动和思考的效率。提高对话、移动和思考的效率。u允许用户犯错误。允许用户犯错误。u按功能对动作分类,并据此设计屏幕布局。按功能
14、对动作分类,并据此设计屏幕布局。u提供对用户工作内容敏感的帮助设施。提供对用户工作内容敏感的帮助设施。u用简单动词或动词短语作为命令名。用简单动词或动词短语作为命令名。4. 人机界面设计指南人机界面设计指南(2) 信息显示指南信息显示指南u只显示与当前工作内容有关的信息。只显示与当前工作内容有关的信息。u用便于用户迅速吸取信息的方式来显示数据。用便于用户迅速吸取信息的方式来显示数据。u使用一致的标记、标准的缩写和可预知的颜色。使用一致的标记、标准的缩写和可预知的颜色。u允许用户保持可视化的语境。允许用户保持可视化的语境。u产生有意义的出错信息。产生有意义的出错信息。u使用大小写、缩进和文本分组
15、以帮助理解。使用大小写、缩进和文本分组以帮助理解。u使用窗口分隔不同类型的信息。使用窗口分隔不同类型的信息。u使用使用“模拟模拟”方式显示信息。方式显示信息。u高效率地使用显示屏。高效率地使用显示屏。4. 人机界面设计指南人机界面设计指南(3) 数据输入指南数据输入指南u尽量减少用户的输入动作。尽量减少用户的输入动作。u保持信息显示和数据输入之间的一致性。保持信息显示和数据输入之间的一致性。u允许用户自定义输入。允许用户自定义输入。u交互应该是灵活的,可调整成用户喜欢的输入方式。交互应该是灵活的,可调整成用户喜欢的输入方式。u使在当前动作语境中不适用的命令不起作用。使在当前动作语境中不适用的命
16、令不起作用。u让用户控制交互流。让用户控制交互流。u对所有输入动作都提供帮助。对所有输入动作都提供帮助。u消除冗余的输入。消除冗余的输入。4. 人机界面设计指南人机界面设计指南1.过程设计的目的与任务过程设计的目的与任务u目的目的l确定模块采用的算法和块内数据结构,用某种确定模块采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述。选定的表达工具给出清晰的描述。 u任务:任务:编写软件的编写软件的“过程设计说明书过程设计说明书” l为每个模块确定采用的算法为每个模块确定采用的算法 (模块的详细过程性模块的详细过程性描述描述)l确定每一模块使用的数据结构确定每一模块使用的数据结构 l确定
17、模块接口的细节确定模块接口的细节 (包括对系统外部的接口和包括对系统外部的接口和用户界面,对系统内部其他模块的接口,以及关用户界面,对系统内部其他模块的接口,以及关于模块输入数据、输出数据及局部数据的全部细于模块输入数据、输出数据及局部数据的全部细节)节)三三. 过程设计过程设计2.过程设计的原则与方法过程设计的原则与方法u清晰第一的设计风格清晰第一的设计风格u结构化的控制结构结构化的控制结构结构程序设计的经典定义为:结构程序设计的经典定义为: “如果一个程序的代码块仅仅通过顺序、选择和循环这如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和种
18、基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。一个出口,则称这个程序是结构化的。” 结构程序设计技术是一种实现在逻辑上正确描述每个模结构程序设计技术是一种实现在逻辑上正确描述每个模块的功能,并且使设计出的处理过程尽可能简明易懂的关键块的功能,并且使设计出的处理过程尽可能简明易懂的关键技术,是过程设计的逻辑基础。技术,是过程设计的逻辑基础。u逐步细化的实现方法逐步细化的实现方法三三. 过程设计过程设计例:在一组数中找出其中的最大数例:在一组数中找出其中的最大数结构程序设计结构程序设计3种基本的控制结构种基本的控制结构DO-UNTIL和和DO-CASE控制结构
19、的流程图分别是:控制结构的流程图分别是:1. 程序流程图程序流程图 程序流程图又称为程序框图,它是历史最悠久、使用最程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法。图方法。图6.3(见书(见书115页)中列出了程序流程图中使用的各种页)中列出了程序流程图中使用的各种符号。符号。程序流程图的主要优点:程序流程图的主要优点: 对控制流程的描绘很直观,便于初学者掌握。对控制流程的描绘很直观,便于初学者掌握。程序流程图的主要缺点如下:程序流程图的主要缺点如下: (1) 程序流程图本质上不是逐步
20、求精的好工具,它诱使程序程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。员过早地考虑程序的控制流程,而不去考虑程序的全局结构。 (2) 程序流程图中用箭头代表控制流,因此程序员不受任何程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。约束,可以完全不顾结构程序设计的精神,随意转移控制。 (3) 程序流程图不易表示数据结构。程序流程图不易表示数据结构。四四. 过程设计的工具过程设计的工具N-S图有下述特点:图有下述特点:(1) 功能域功能域(即,一个特定控制结构的作用域即,一个特定控制结构的作
21、用域)明确,可以从明确,可以从盒图上一眼就看出来。盒图上一眼就看出来。(2) 不可能任意转移控制。不可能任意转移控制。(3) 很容易确定局部和全程数据的作用域。很容易确定局部和全程数据的作用域。(4) 很容易表现嵌套关系,也可以表示模块的层次结构。很容易表现嵌套关系,也可以表示模块的层次结构。2. 盒图盒图(N-S图图) PAD是问题分析图是问题分析图(problem analysis diagram)的英文缩的英文缩写,它用二维树形结构的图来表示程序的控制流,将这种写,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。图翻译成程序代码比较容易。PAD图的主要优点如下:图
22、的主要优点如下:(1) 使用表示结构化控制结构的使用表示结构化控制结构的PAD符号所设计出来的程序符号所设计出来的程序必然是结构化程序。必然是结构化程序。(2) PAD图所描绘的程序结构十分清晰。图所描绘的程序结构十分清晰。 (3) 用用PAD图表现程序逻辑,易读、易懂、易记。图表现程序逻辑,易读、易懂、易记。(4)可用软件工具自动将可用软件工具自动将PAD图转换成高级语言源程序,有图转换成高级语言源程序,有利于提高软件可靠性和软件生产率。利于提高软件可靠性和软件生产率。(5) 即可用于表示程序逻辑,也可用于描绘数据结构。即可用于表示程序逻辑,也可用于描绘数据结构。(6) PAD图的符号支持自
23、顶向下、逐步求精方法的使用。图的符号支持自顶向下、逐步求精方法的使用。3. PAD图图使用使用PAD图提供的定义功能图提供的定义功能来逐步求精的例子来逐步求精的例子判定表能够清晰地表示复杂的条件组合与应做判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。的动作之间的对应关系。4. 判定表判定表例:某公司为推销人员制定了奖励办法,把例:某公司为推销人员制定了奖励办法,把奖金与推销金额及预收货款的数额挂钩。凡每周推奖金与推销金额及预收货款的数额挂钩。凡每周推销金额不超过销金额不超过10000元,按预收货款是否超过元,按预收货款是否超过50%,分别奖励推销额的分别奖励推销额的6%或或4%
24、;若推销金额超过;若推销金额超过10000元,则按预收货款是否超过元,则按预收货款是否超过50%分别奖励推分别奖励推销额的销额的8%或或5%。对于月薪低于。对于月薪低于1000元的推销员,元的推销员,分别另发鼓励奖分别另发鼓励奖300、200和和500、300元。元。试用判定表描述上述问题。试用判定表描述上述问题。例:假设某航空公司规定,乘客可以免费托运重量例:假设某航空公司规定,乘客可以免费托运重量不超过不超过30kg的行李。的行李。当行李重量超过当行李重量超过30kg时,对头等舱的国内乘客超重时,对头等舱的国内乘客超重部分每公斤收费部分每公斤收费4元,对其他舱的国内乘客超重部元,对其他舱的
25、国内乘客超重部分每公斤收费分每公斤收费6元,对外国乘客超重部分每公斤收元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。收费比正常乘客少一半。用判定表表示与上述每种条件组合相对应的计算行用判定表表示与上述每种条件组合相对应的计算行李费的算法。(李费的算法。(P.118)5. 判定树判定树判定树是判定表的图形表示,也能清晰地表示复杂的判定树是判定表的图形表示,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。判定树的优点在条件组合与应做的动作之间的对应关系。判定树的优点在于,它的形式简单到不需任何说明
26、,一眼就可以看出其含于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。义,因此易于掌握和使用。用判定树表示计算行李费的算法用判定树表示计算行李费的算法过程设计语言(过程设计语言(PDL)也称为伪代码,它是用)也称为伪代码,它是用正文形式表示数据和处理过程的设计工具。正文形式表示数据和处理过程的设计工具。PDL具有严格的关键字外部语法,用于定义控具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,制结构和数据结构;另一方面,PDL表示实际操作表示实际操作和条件的内部语法通常又是灵活自由的,可以适应和条件的内部语法通常又是灵活自由的,可以适应各种工程项目的需要。
27、因此,一般说来,各种工程项目的需要。因此,一般说来,PDL是一是一种种“混杂混杂”语言,它使用一种语言语言,它使用一种语言(通常是某种自通常是某种自然语言然语言)的词汇,同时却使用另一种语言的词汇,同时却使用另一种语言(某种结构某种结构化的程序设计语言化的程序设计语言)的语法。的语法。6. 过程设计语言过程设计语言u协同设计协同设计l谁最合适设计系统的某一方面?谁最合适设计系统的某一方面? l如何使组内成员相互了解别人的设计?如何使组内成员相互了解别人的设计? l如何协调设计组件使整个系统统一?如何协调设计组件使整个系统统一? u并发系统设计并发系统设计 并发处理是一种允许两个活动同时发生而不
28、互并发处理是一种允许两个活动同时发生而不互相干扰的方法。它的最大问题是:相干扰的方法。它的最大问题是:l怎样确保同时执行的组件间对共享数据的一怎样确保同时执行的组件间对共享数据的一致性致性五五.设计中需要处理的其他问题设计中需要处理的其他问题例如,假设有一个栈例如,假设有一个栈X,组件,组件1和组件和组件2均使用均使用X的的元素。每个组件先检查元素。每个组件先检查X是否为空,如果非空就执是否为空,如果非空就执行出栈操作。则当下列事件顺序执行时,便会发生行出栈操作。则当下列事件顺序执行时,便会发生矛盾:矛盾:1、组件、组件1查询查询X是否为空。是否为空。2、组件、组件1被告知被告知X不为空。不为
29、空。3、组件、组件2查询查询X是否为空。是否为空。4、组件、组件2被告知被告知X不为空。不为空。5、组件、组件1执行出栈,删除最后一个元素。执行出栈,删除最后一个元素。6、组件、组件2想执行出栈,但想执行出栈,但X已为空,系统进入非法已为空,系统进入非法状态。状态。 在上述实例中使用互斥原则,可对事件作以下修改:在上述实例中使用互斥原则,可对事件作以下修改:1、组件、组件1询问栈询问栈X是否为空。是否为空。2、组件、组件1被告知栈被告知栈X不为空。不为空。3、组件、组件2询问栈询问栈X是否为空。是否为空。4、组件、组件2被告知栈被告知栈X不为空。不为空。5、组件、组件1执行出栈,删去最后一个元
30、素,并锁住栈执行出栈,删去最后一个元素,并锁住栈X。6、组件、组件2想执行出栈,但被告知想执行出栈,但被告知X已上锁。已上锁。7、另一个组件加了一个元素到栈、另一个组件加了一个元素到栈X中。中。8、组件、组件2被告知被告知X已开锁(由于外部进程或者因为组件已开锁(由于外部进程或者因为组件2 再再次尝试)次尝试)9、组件、组件2执行出栈。执行出栈。 一般地说,如果两个操作可能影响同一个共享对象一般地说,如果两个操作可能影响同一个共享对象的状态,它们就应该执行互斥机制。的状态,它们就应该执行互斥机制。一类侧重从数据结构方面去分析和表达软件需一类侧重从数据结构方面去分析和表达软件需求,进行软件设计的
31、方法。该方法从数据结构入手,求,进行软件设计的方法。该方法从数据结构入手,分析信息结构,并用数据结构图来表示,再在此基分析信息结构,并用数据结构图来表示,再在此基础上进行分析与设计,进而导出软件的结构。础上进行分析与设计,进而导出软件的结构。 Jackson 方法方法u实体动作实体动作u实体结构实体结构u初始建模初始建模u系统功能系统功能u系统时间系统时间u系统实现系统实现六六. 面向数据结构的设计方法面向数据结构的设计方法 虽然程序中实际使用的数据结构种类繁多,但是它们的虽然程序中实际使用的数据结构种类繁多,但是它们的数据元素彼此间的逻辑关系却只有顺序、选择和重复数据元素彼此间的逻辑关系却只
32、有顺序、选择和重复3类,因类,因此,逻辑数据结构也只有这此,逻辑数据结构也只有这3类。类。 Jackson表示法包括图形描述(表示法包括图形描述(Jackson图)和文本描述图)和文本描述( Jackson伪代码)两种表示方法。伪代码)两种表示方法。1. Jackson表示法表示法(1) Jackson图图顺序结构顺序结构顺序结构的数顺序结构的数据由一个或多个数据由一个或多个数据元素组成,每个据元素组成,每个元素按确定次序出元素按确定次序出现一次。现一次。例如例如A由由B、C、D 3个元素顺序组成个元素顺序组成(2) Jackson伪代码伪代码顺序结构顺序结构 A seqBCD Aend其中其
33、中seq、end 是关键字。是关键字。(1) Jackson图图 选择结构选择结构 选择结构的数选择结构的数据包含两个或多个据包含两个或多个数据元素,每次使数据元素,每次使用这个数据时按一用这个数据时按一定条件从这些数据定条件从这些数据元素中选择一个。元素中选择一个。 重复结构重复结构 重复结构的数重复结构的数据,根据使用时的据,根据使用时的条件由一个数据元条件由一个数据元素出现零次或多次素出现零次或多次构成。构成。(2) Jackson伪代码伪代码 选择结构选择结构A select cond1 BA or cond2 CA or cond3 DA end重复结构重复结构A iter unti
34、l(或或while) cond BA end 其中其中 select、or、iter、until、while 、end是关键字,是关键字,cond是条是条件。件。Jackson图的缺点是,图的缺点是,用这种图形工具表示选择用这种图形工具表示选择或重复结构时,选择条件或重复结构时,选择条件或循环结束条件不能直接或循环结束条件不能直接在图上表示出来,影响了在图上表示出来,影响了图的表达能力,也不易直图的表达能力,也不易直接把图翻译成程序,此外,接把图翻译成程序,此外,框间连线为斜线,不易在框间连线为斜线,不易在行式打印机上输出。行式打印机上输出。(3)改进的)改进的Jackson图图改进的改进的J
35、ackson图图Jackson结构程序设计方法基本上由下述结构程序设计方法基本上由下述5个步骤组成:个步骤组成:(1) 分析并确定输入数据和输出数据的逻辑结构,并用分析并确定输入数据和输出数据的逻辑结构,并用Jackson 图描绘这些数据结构。图描绘这些数据结构。(2) 找出输入数据结构和输出数据结构中有对应关系的数据单元。找出输入数据结构和输出数据结构中有对应关系的数据单元。 所谓有对应关系是指有直接的因果关系,在程序中可以同所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元时处理的数据单元(对于重复出现的数据单元必须重复的次序和对于重复出现的数据单元必须重复的次序和次数都相
36、同才可能有对应关系次数都相同才可能有对应关系)。2. Jackson方法的设计方法的设计步骤步骤(3) 用下述用下述3条规则从描绘数据结构的条规则从描绘数据结构的Jackson图导图导出描绘程序结构的出描绘程序结构的Jackson图:图:第一,为每对有对应关系的数据单元,按照它们在第一,为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一数据结构图中的层次在程序结构图的相应层次画一个处理框;个处理框;第二,为输入数据结构中剩余的每个数据单元画一第二,为输入数据结构中剩余的每个数据单元画一个对应的处理框;个对应的处理框;第三,为输出数据结构中剩余的每个数据单元画一第
37、三,为输出数据结构中剩余的每个数据单元画一个对应的处理框。个对应的处理框。(4) 列出所有操作和条件列出所有操作和条件(包括分支条件和循环结束包括分支条件和循环结束条件条件),并且把它们分配到程序结构图的适当位置。,并且把它们分配到程序结构图的适当位置。(5) 用伪码表示程序。用伪码表示程序。例一个正文文件由若干个记录组成,每个记录是一个例一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另要求的输出数据格式是,每
38、复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。的总个数。用用Jackson图描绘的输入输出数据结构:图描绘的输入输出数据结构:统计空格程序结构的统计空格程序结构的Jackson图图把操作和条件分配到程序结构图的适当位置把操作和条件分配到程序结构图的适当位置例例2信用卡购物季报程序。信用卡购物季报程序。某商店为了开展某商店为了开展“信用卡购物信用卡购物”业务,建立了业务,建立了两种帐册:顾客总帐和付款帐。两种帐册:顾客总帐和付款帐。付款帐记录每一顾客在本季度内每次付款的日付款帐记录每一顾客在本季度内每次付款
39、的日期和金额,由顾客帐号、日期和付款额组成;期和金额,由顾客帐号、日期和付款额组成;顾客总帐登记顾客在扣除本季度购物款后的余顾客总帐登记顾客在扣除本季度购物款后的余额,由顾客帐号和余额组成。余额为正值表示顾客额,由顾客帐号和余额组成。余额为正值表示顾客有积余,为负值表示积欠。有积余,为负值表示积欠。每季度末,要根据每季度末,要根据“顾客总帐顾客总帐”和和“付款帐付款帐”产生一份会计报表,报表包含帐号、日期、付款额、产生一份会计报表,报表包含帐号、日期、付款额、旧余额和新余额。旧余额和新余额。试用试用Jackson方法开发此程序。方法开发此程序。Jackson方法和方法和SD方法方法Jackso
40、n方法方法数据结构 映射 程序结构 程序的过程性表示 (Jackson图) (Jackson图) (Jackson伪代码) 程序分析 程序设计 SD 方法方法 问题结构 映射 软件结构 各模块的过程描述 (DFD图) (SC图) (PDL等工具) 概要设计 过程设计 定量度量程序复杂程度的价值在于:定量度量程序复杂程度的价值在于:把程序的复杂程度乘以适当常数即可估算出软把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量。件中错误的数量以及软件开发需要用的工作量。定量度量的结果可以用来比较两个不同的设计定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程
41、序的定量的复杂程度可或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。以作为模块规模的精确限度。七七. 程序复杂程度的定量度量程序复杂程度的定量度量 McCabe方法根据程序控制流的复杂程度定量度量程序的方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。复杂程度,这样度量出的结果称为程序的环形复杂度。(1) 流图流图 流图实质上是流图实质上是“退化了的退化了的”程序流程图,它仅仅描绘程序程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。具体条
42、件。 在流图中用圆表示结点,程序流程图中的一个顺序的处理在流图中用圆表示结点,程序流程图中的一个顺序的处理框序列或一个菱形判定框,可以映射成流图中的一个结点。流框序列或一个菱形判定框,可以映射成流图中的一个结点。流图中的箭头线称为边,代表控制流。在流图中一条边必须终止图中的箭头线称为边,代表控制流。在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句于一个结点,即使这个结点并不代表任何语句(实际上相当于实际上相当于一个空语句一个空语句)。由边和结点围成的面积称为区域,当计算区域。由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。数时应该包括图外部未被围起
43、来的那个区域。1. McCabe方法方法由由PDL翻译成的流图翻译成的流图7b:当过程设计中包含复合条件时,应该把复合条件当过程设计中包含复合条件时,应该把复合条件分解为若干个简单条件,每个简单条件对应流图中分解为若干个简单条件,每个简单条件对应流图中一个结点。一个结点。(2) 计算环形复杂度的方法计算环形复杂度的方法环形复杂度等于流图中的区域数。环形复杂度等于流图中的区域数。 流图流图G的环形复杂度的环形复杂度V(G)=E-N+2,其中,其中,E是流图是流图中边的条数,中边的条数,N是结点数。是结点数。 流图流图G的环形复杂度的环形复杂度V(G)=P+1,其中,其中,P是流图是流图中判定结点
44、的数目。中判定结点的数目。 在源代码中,在源代码中,IF 语句、语句、WHILE 循环或循环或 FOR 循循环都相当于环都相当于1个判断,而个判断,而CASE语句或其他多分支语语句或其他多分支语句相当的判断数等于可能的分支数减句相当的判断数等于可能的分支数减1 。3. 环形复杂度的用途环形复杂度的用途 程序的环形复杂度取决于程序控制流的复杂程程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。当程序内度,也即是取决于程序结构的复杂程度。当程序内分支数或循环个数增加时,环形复杂度也随之增加,分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也
45、能对软件因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。最终的可靠性给出某种预测。 McCabe研究大量程序后发现,环形复杂度高研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序。实践的程序往往是最困难、最容易出问题的程序。实践表明,模块规模以表明,模块规模以V(G)10为宜,也就是说,为宜,也就是说,V(G)=10是模块规模的一个更科学更精确的上限。是模块规模的一个更科学更精确的上限。Halstead方法根据程序中运算符和操作数的总数方法根据程序中运算符和操作数的总数来度量程序的复杂程度。来度量程序的复杂程度。令令N1为程序中运算符出现的总次数,为程
46、序中运算符出现的总次数,N2为操作数为操作数出现的总次数,程序长度出现的总次数,程序长度N定义为:定义为:N = N1 + N2若详细设计结果中使用的不同运算符若详细设计结果中使用的不同运算符(包括关键字包括关键字)的个数为的个数为n1,不同操作数,不同操作数(变量和常数变量和常数)的个数为的个数为n2,则,则Halstead方法预测程序长度为:方法预测程序长度为:H = n1log2n1 + n2log2n2实践表明,预测的长度实践表明,预测的长度 H 比较接近实际长度比较接近实际长度 N 。2. Halstead方法方法Halstead还给出了预测程序中包含错误的个数的公还给出了预测程序中
47、包含错误的个数的公式如下:式如下:E=N log2 (n1+n2)/3000有人曾对从有人曾对从300条到条到12000条语句范围内的程序核实条语句范围内的程序核实了上述公式,发现预测的错误数与实际错误数相比了上述公式,发现预测的错误数与实际错误数相比误差在误差在8%之内。之内。详细设计阶段的关键任务是确定怎样具体地实详细设计阶段的关键任务是确定怎样具体地实现用户需要的软件系统。除了应该保证软件的可靠现用户需要的软件系统。除了应该保证软件的可靠性之外,使将来编写出的程序可读性好、容易理解、性之外,使将来编写出的程序可读性好、容易理解、容易测试、容易修改和维护,是详细设计阶段最重容易测试、容易修改和维护,是详细设计阶段最重要的目标。结构程序设计技术是实现上述目标的基要的目标。结构程序设计技术是实现上述目标的基本保证,是进行详细设计的逻辑基础。本保证,是进行详细设计的逻辑基础。人机界面设计是接口设计的一个重要的组成部人机界面设计是接口设计的一个重要的组成部分。人机界面的质量直接影响用户对软件产品的接分。人机界面的质量直接影响用户对软件产品的接受程度。在设计人机界面的过程中,必须充分重视受程度。在设计人机界面的过程中,必须充分重视并认真处理好系统响应时间、用户帮助设施、出错并认真处理好系统响应时间、用户帮助设施、出错信息处理和命令交互等信息处理和命令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通信工程原理与实践试题及答案
- 邮政物流合作合同协议
- 连带担保合同协议从合同
- 招投标实务与合同管理
- 航空航天新材料研发及性能提升方案
- 猪圈拆迁协议书
- 新能源技术发展展望题库
- 路灯材料供应合同协议
- 激光手术协议书
- 委托贷款委托合同
- 轮胎检查微课市公开课一等奖课件省赛课获奖课件
- 电子版遗产继承协议书
- 家长对于儿童使用抗生素认知行为的调查分析
- 燃气设备安全操作规程
- 学院ma600飞机飞行训练大纲
- GB/T 24186-2022工程机械用高强度耐磨钢板和钢带
- 《膜分离技术》教学课件
- 第十七章-东欧封建社会的发展-(《世界古代史下册》课件)
- 高级会计师评审个人业绩报告(精选9篇)
- 一级病原微生物实验室危害评估报告
- 茶叶加工机械与设备(全套524张课件)
评论
0/150
提交评论