【文档说明】软件工程06-详细设计.pptx,共(93)页,726.888 KB,由精品优选上传
转载请保留链接:https://www.ichengzhen.cn/view-290958.html
以下为本文档部分文字说明:
个人成果,妥善保存,请勿传播软件工程岐兵Email:qib@epsoft.com.cn个人成果,妥善保存,请勿传播软件定义软件开发软件使用与维护软件生命周期个人成果,妥善保存,请勿传播软件设计的任务◼从工程管理的角度来
看,软件设计分两步完成–总体设计(概要设计),将软件需求转化为数据结构和软件的系统结构。–详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。个人成果,妥善保存,请勿传播软件设计的任务◼一般
交互式软件系统的设计内容–体系结构设计–数据设计–接口设计–人机界面设计–过程设计个人成果,妥善保存,请勿传播课程内容提纲◼第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程
度的定量度量个人成果,妥善保存,请勿传播详细设计的任务ProgramDesign≠Coding◼为SC图的每个模块确定算法和数据结构◼进行详细设计的原则–在保证正确可靠前提下,尽量提高算法可读性–采用结构化设计方法,改善控制结构,降低程序复杂度,提高可测试性和可维护性◼自顶向下逐步求精;◼具有单
入、单出的控制结构(取消GOTO语句)–用工具无二义的描述模块算法个人成果,妥善保存,请勿传播详细设计的任务◼详细设计过程1.确定每个模块的算法◼选择适当工具表达算法执行过程2.确定每一个模块的数据组织3.为每一个模块设计一组测试用例◼输入数据、预期输出结果4.编写《详细设计说明书》5.设计评
审个人成果,妥善保存,请勿传播详细设计的任务◼详细设计内容–用图表列出系统的每个程序,包括每个模块和子程序名称、标识符、层出结构关系–对程序的功能、性能、输入、输出、算法、流程、接口等进行描述–内容包括◼程序描述:程序简要描述,意义和特点◼功
能:程序应具备的功能◼性能:精度、灵活性和时间特性等◼输入项◼输出项个人成果,妥善保存,请勿传播详细设计的任务◼详细设计内容–内容包括◼算法:具体的计算步骤和过程◼接口:模块的隶属关系、调用方式和参数、与模块直接关联的数据结
构(如数据库表、文件等)◼存储分配(根据需要)◼注释设计:程序注释说明◼限制条件:程序运行中所受的限制条件个人成果,妥善保存,请勿传播详细设计的任务◼详细设计优化–在不考虑时间因素的前提下开发并精化软件结构–选出最耗时的模块,仔细设计处理算法–孤立出大量占有处理机资源的模块–必要时重新设计或用依
赖于机器的语言重写大量占有资源的模块个人成果,妥善保存,请勿传播课程内容提纲◼第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程度的定量度量个人
成果,妥善保存,请勿传播结构程序设计◼1结构程序设计的提出–结构程序设计概念最早1965年由E.W.Dijkstra提出◼“可以从高级语言中取消GOTO语句”◼“程序的质量与程序中所包含的GOTO语句的数量
成反比”–1966年bohm和Jacopini证明了:◼只用三种基本的控制结构能实现任何单入口单出口的程序–1968年人们认识要创立一种新的程序设计思想◼以显著地提高软件生产率和降低软件维护代价个人成果,妥善保存,请勿传播结构
程序设计◼1结构程序设计的提出–1971年IBM公司成功地使用了结构程序设计技术◼纽约时报信息库管理系统◼美国宇航局空间实验室飞行模拟系统–1972年IBM公司的Mills进一步补充了结构程序设计的规则结构程序设计是尽可能少用GOTO语句的程序设计方法。最好仅在检测出错误时
才使用GOTO语句,而且应该总是使用前向GOTO语句个人成果,妥善保存,请勿传播结构程序设计◼2结构程序设计分类–只允许使用顺序、IF-THEN-ELSE分支和DO-WHILE型循环这三种基本控制结构
,称为经典的结构程序设计–还允许使用DO-CASE多分支结构和DO-UNTIL循环结构,称为扩展的结构程序设计–如果再加上允许使用LEAVE(或BREAK)结构,称为修正的结构程序设计个人成果,妥善保存,请勿传播课程内容
提纲◼第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程度的定量度量个人成果,妥善保存,请勿传播人机界面设计◼人机界面的设计四个方面–系统
响应时间–用户帮助设施–出错信息处理–命令交互1.系统响应时间–系统响应时间指◼从用户完成某个控制动作(例如,按回车键或点击鼠标),到软件给出预期响应(输出信息或做动作)之间的时间个人成果,妥善保存,请勿传播人机界面设计1.系统响应时间系
统响应时间有两个重要属性–响应长度◼系统响应时间过长,用户就会感到紧张和沮丧◼系统响应时间过短,会迫使用户加快操作节奏,从而可能会犯错误–易变性(系统响应时间的更重要的属性)◼指系统响应时间相对于平均响应时间的偏差◼响应时间易
变性低也有助于用户建立起稳定的工作节奏–例如,稳定在1秒的响应时间比从0.1秒到2.5秒变化的响应时间要好个人成果,妥善保存,请勿传播人机界面设计2.用户帮助设施–常见的帮助设施可分为集成的和附加的两类–集成的帮助设施从
一开始就设计在软件里面◼它对用户工作内容是敏感的◼可缩短用户获得帮助的时间,增加界面的友好性–附加的帮助设施是在系统建成后再添加到软件中的◼实际是一种查询能力有限的联机用户手册◼人们普遍认为,集成的帮助设施优于附加的帮助设施个
人成果,妥善保存,请勿传播人机界面设计◼设计帮助设施时必须解决下述问题(1)交互期间是否在任何时候都能获得关于任何功能的帮助?◼有两种选择:提供功能的帮助信息和提供全部功能的帮助信息(2)用户怎样请求帮助?◼有3种选择:帮助菜单,特殊功能键和HEL
P命令(3)怎样显示帮助信息?◼有3种选择:在独立的窗口中,指出参考某个文档和在屏幕固定位置显示简短提示(4)用户怎样返回到正常的交互方式中?◼有两种选择:屏幕上的返回按钮和功能键(5)怎样组织帮助信息
?◼有3种选择:平面结构(所有信息都通过关键字访问),信息的层次结构(用户可在该结构中查到更详细的信息)和超文本结构个人成果,妥善保存,请勿传播人机界面设计3.出错信息处理–出错信息和警告信息◼是出现问题时交互式系统给出
的“坏消息”–一般说来,交互式系统给出的出错信息或警告信息,应该具有下述属性:(1)应该用用户可以理解的术语描述问题(2)应该提供有助于从错误中恢复的建设性意见个人成果,妥善保存,请勿传播人机界面设计(3)信息应该指出错误可能导致哪些负面后果(4)信息应该伴随着听觉上或视觉上的提示
–例如,在显示信息时同时发出警告铃声–或者信息用闪烁方式显示–或者用明显表示出错的颜色显示(5)信息不能带有指责色彩–也就是说,不能责怪用户个人成果,妥善保存,请勿传播人机界面设计4.命令交互–在提供命令交互方式时,必须考虑下列设计问题(1)是否每个菜单选项都有对应的命令?(2)
采用何种命令形式?–有3种选择:控制序列(例如,Ctrl+P),功能键和键入命令。(3)学习和记忆命令的难度有多大?忘记了怎么办?(4)用户是否可以定制或缩写命令?个人成果,妥善保存,请勿传播人机界面设计◼人机界面设计过程–用户界面设计是一个迭代的
过程◼创建设计模型->再用原型实现这个设计模型->由用户试用和评估->根据用户意见进行修改–用于界面设计和原型开发的软件工具◼用户界面工具箱或用户界面开发系统–用户界面的评估周期如下所述◼完成初步设计
之后就创建第一级原型;◼用户试用并评估该原型,向设计者表述对界面的评价◼设计者根据用户意见修改设计并实现下一级原型个人成果,妥善保存,请勿传播人机界面设计◼人机界面设计过程–运用下述评估标准对设计进行早期复审:(1)系统及其界面的规格说
明书的长度和复杂程度–预示了用户学习使用该系统所需要的工作量(2)命令或动作的数量、命令的平均参数个数或动作中单个操作的个数–预示了系统的交互时间和总体效率(3)动作、命令和系统状态的数量–预示了用户学习使用该系统时需要记忆的内容的多少(4)
界面风格、帮助设施和出错处理协议–预示了界面的复杂程度及用户接受该界面的程度个人成果,妥善保存,请勿传播人机界面设计◼人机界面设计指南–一般交互指南涉及信息显示、数据输入和系统整体控制(1)保持一致性–应该为
人机界面中的菜单选择、命令输入、数据显示以及众多的其他功能,使用一致的格式(2)提供有意义的反馈–应向用户提供视觉的和听觉的反馈,以保证在用户和系统之间建立双向通信。(3)在执行有破坏性的动作之前要求用户确认个人成果,妥善保存,请勿传播人机界面设计◼人机界
面设计指南1一般交互指南(4)允许取消绝大多数操作–UNDO或REVERSE功能曾经使众多终端用户避免了大量时间浪费。(5)减少在两次操作之间必须记忆的信息量–不应该期望用户能记住在下一步操作中需使用的一大串数字或标识符(6)提高对话、移动和思考的效率–应该尽量减少用
户击键的次数–设计屏幕布局时应该考虑尽量减少鼠标移动的距离–应该尽量避免出现用户问“这是什么意思?”的情况个人成果,妥善保存,请勿传播人机界面设计◼人机界面设计指南1一般交互指南(续上页)(7)允许犯错误–系统应该能保护自己不受严重错误的破坏。(8
)按功能对动作分类,并据此设计屏幕布局–设计者应该尽力提高命令和动作组织的“内聚性”(9)提供对用户工作内容敏感的帮助设施(10)用简单动词或动词短语作为命令名个人成果,妥善保存,请勿传播人机界面设计◼人机界面设计指南2信息显示指南(1)只显示与当前工作内容有关的信息–用户在获得有关功能的信息时
,不必看到与之无关的数据、菜单和图形。(2)不要用数据淹没用户–应该用便于用户迅速吸取信息的方式来表示数据–例如,可以用图形或图表来取代庞大的表格。(3)使用一致标记、标准的缩写和可预知的颜色–显示的含义应该非常明确,用户无须参照其他信息源就能理解。个人成果,妥善保存,请勿传播人机界面
设计◼人机界面设计指南2信息显示指南(续上页)(4)允许用户保持可视化的语境(5)产生有意义的出错信息(6)使用大小写、缩进和文本分组以帮助理解(7)使用窗口分隔不同类型的信息(8)使用“模拟”显示表示信息,以使信息更容易被用户提取(9)高效率地使用显示屏
个人成果,妥善保存,请勿传播人机界面设计◼人机界面设计指南3数据输入指南(1)尽量减少用户的输入动作–最重要的是减少击键次数(2)保持信息显示和数据输入之间的一致性–显示的视觉特征(例如文字大小、颜色和位置)应与输入域一致(3)允许用户自定义输入(4)交互
应该是灵活的,并且可调整成用户最喜欢的输入方式个人成果,妥善保存,请勿传播人机界面设计◼人机界面设计指南3数据输入指南(续上页)(5)使在当前动作语境中不适用的命令不起作用(6)让用户控制交互流–用户应该能够跳过不必要的动作–改变所需做的动作的顺序
(在应用环境允许的前提下)–以及在不退出程序的情况下从错误状态中恢复正常(7)对所有输入动作都提供帮助(8)消除冗余的输入–不要要求用户指定输入数据的单位–尽可能提供默认值–绝对不要要求用户提供程序可以自动获得或计算出来的信
息。个人成果,妥善保存,请勿传播课程内容提纲◼第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程度的定量度量个人成果,妥善保存,请勿传播过程设计工具在详细设计阶段,要决定各个模块的实现算法,并
精确地表达这些算法。表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类:➢图形工具➢表格工具➢语言工具个人成果,妥善保存,请勿传播过程设计工具1.程序流程图–在40年代末到70年代中期,程序流程图一直是软件设计的工具–它以对控制流程的描绘直观、易
于掌握而被设计人员青睐依据国家标准(GB1526-89),列出有关程序流程图的基本符号个人成果,妥善保存,请勿传播过程设计工具[数据处理待处理准备判断循环上、下界连接端点符注解符流线虚线省略符并行方式多出口判断换页连接控制流个人成果,妥善保存,请勿
传播过程设计工具–程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:个人成果,妥善保存,请勿传播示例个人成果,妥善保存,请勿传播循环的标准符号注解的使用个人成果,妥善保存,请勿传播多出口判断个人成果,妥善保存,请勿传播过程设计工具缺点:本质上不具备逐步求精的特点
,对于提高大型系统的可理解性作用甚微;不易表示数据结构;转移控制太方便。趋势:仃止使用优点:容易掌握,且历史“悠久”,使用广泛。◼程序流程图个人成果,妥善保存,请勿传播过程设计工具2.盒图(N-S图)–N-S图是Nassi和Shneiderman提出来
的,它体现了结构程序设计精神,是目前过程设计中广泛使用的一种图形工具。–基本符号个人成果,妥善保存,请勿传播过程设计工具2.盒图(N-S图)第1个任务第2个任务第n个任务TF条件ELSE部分THEN部
分CASE条件值1CASE1部分值2CASE2部分值nCASEn部分循环条件DO-WHILE部分循环条件DO-UNTIL部分A个人成果,妥善保存,请勿传播示例abx1FTCasexiFTx2x3x4x5
cdeghix7x8jfx6abx1x2x5fcx3x4deghix6x7x8j个人成果,妥善保存,请勿传播N-S图的嵌套定义形式个人成果,妥善保存,请勿传播过程设计工具◼N-S图的特点–优点◼功能域(一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。◼没有箭头不允许随意转移控制,不
可能任意转移控制。◼很容易确定局部和全程数据的作用域。◼很容易表现嵌套关系,也可以表示模块的层次结构。–缺点◼随着程序内嵌套的层数增多时,内层方框越来越小,这样不仅会增加画图的难度,还会影响图形的清晰度。个人成果,妥善保存,请勿传播过程设计工具3.PAD图–PAD(ProblemAnal
ysisDiagram)问题分析图–日立公司中央研究所在1973年研究开发–使用二维树形结构图描述程序的逻辑–PAD图的优点:◼程序一定是结构化的,PAD图中竖线的总条数就是程序中的层次数,既表示程序逻辑,也描绘数据结构个人成果
,妥善保存,请勿传播过程设计工具ABSequentialWhilePSUntilPSLoopsPABTHENELSESelectiveP=A1A2CaseAn12n…StatementIndexdefDefinition个人
成果,妥善保存,请勿传播ajUNTILX8bx1fx6UNTILX7ghideWHILEX5cxi=x2x3x4abx1x2x5fcx3x4deghix6x7x8j个人成果,妥善保存,请勿传播x4TFDo-Untilx5
ighfkx1TFbDo-Untilx6ajx21cDo-Whilex323dek:例:N-S图与PAD的转换过程设计工具个人成果,妥善保存,请勿传播开始→结束→ajUntilx5iUntilx6bx1kfx4ghdefk
x2de123Whilex3c个人成果,妥善保存,请勿传播过程设计工具4判定表–判定表能够清晰地表示复杂的条件组合与所产生的动作之前的关系。–一张判定表由四部分组成:◼左上部列出所有的条件Ⅰ◼左下部是所有可能的操作Ⅲ◼右上部是各种条件的组合矩阵Ⅱ◼右下部是每种条件组合对应的动作Ⅳ个人成果,妥善保存
,请勿传播过程设计工具4判定表–一张判定表由四部分组成:◼左上部列出所有的条件Ⅰ◼左下部是所有可能的操作Ⅲ◼右上部是各种条件的组合矩阵Ⅱ◼右下部是每种条件组合对应的动作ⅣⅠ条件Ⅲ操作Ⅱ条件组合矩阵Ⅳ动作个人成果,妥善保存
,请勿传播过程设计工具4判定表–例:◼某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量超过30公斤时,头等舱国内乘客超重部分每公斤收费4元,其他舱的国内乘客超重部分每公斤收费6元,对于外国乘客超重部分每公斤收费比国内乘客多一倍,对于残疾乘客超重部分
每公斤收费比正常乘客减少一半。个人成果,妥善保存,请勿传播国内乘客TTTTFFFF头等仓TFTFTFTF残疾乘客FFTTFFTT行李重量30TFFFFFFFF免费√(W-30)*2√(W-30)*3√(W-30)*4√√(W-30)*6√√(
W-30)*8√(W-30)*12√个人成果,妥善保存,请勿传播过程设计工具5判定树–表示复杂的条件组合与应做的动作之间的对应关系–判定树形式简单,长期以来一直受到重视–判定树的简洁性不如判定表◼经常出现同一个值重
复写多遍◼且叶端重复次数急剧增加–由于判定树的分枝次序对于最终画出的判定树的简洁程度有较大影响◼所以选择哪一个条件作为第一个分枝是至关重要的个人成果,妥善保存,请勿传播残疾乘客(w-30)*2正常乘客(w-30)*4残疾乘客(w-30)*3正常乘客(w-30)*6残疾乘客(
w-30)*4正常乘客(w-30)*8残疾乘客(w-30)*6正常乘客(w-30)*12头等舱其它舱头等舱其它舱国内乘客国外乘客行李重量>30公斤行李重量30公斤行李费算法免费个人成果,妥善保存,请勿传播过
程设计工具6伪码和过程设计语言(PDL)–是一种“混杂式语言”◼采用了某种语言(如英语或自然语言)的词汇◼另一种语言(某种结构化程序设计语言)的全部语法–具有数据说明、子程序、分程序、顺序控制、输入和输出结构个人成果,妥善保存,请勿传播过程设计工具6伪码和过程设
计语言(PDL)–示例PROCEDUREspell_checkISBEGINSplitdocumentintosinglewordsLookupwordsindictionaryDisplaywordswhicharenotindictionary
CreateanewdictionaryENDspell_checkExternalstatementsInternalstatements个人成果,妥善保存,请勿传播过程设计工具6伪码和过程设计语言(PDL)–PDL应该具有下述特点:(1)关键字的固定语
法◼它提供了结构化控制结构、数据说明和模块化的特点◼为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字,例如,if...fi(或endif)等(2)自然语言的自由语法,它描述处理特点(3)数据说
明的手段(4)模块定义和调用的技术,提供各种接口描述模式个人成果,妥善保存,请勿传播过程设计工具6伪码和过程设计语言(PDL)–PDL作为一种设计工具有如下一些优点:◼可以作为注释直接插在源程序中间◼可以使用普通的正文编辑程序或文字处理系统,很
方便地完成PDL的书写和编辑工作。◼已经有自动处理程序存在,而且可以自动由PDL生成程序代码。–PDL的缺点是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单个人成果,妥善保存,请勿传播过程设计工具6伪码和过程设计语言(PDL)–declard〈数
据名〉as〈限定词〉–procedure〈子程序名interface〈参数表〈分程序或PDL语句returnend〈子程序名〉个人成果,妥善保存,请勿传播过程设计工具6伪码和过程设计语言(PDL)–begin〈分程序名〈PDL语句end〈分程序名〉–(1
)if〈条件〉then〈PDL语句else〈PDL语句endif个人成果,妥善保存,请勿传播过程设计工具6伪码和过程设计语言(PDL)–(2)WHILEloopwhile〈条件〈PDL语句endloop(3)UNTIL
loopuntil〈条件〈PDL语句组endloop个人成果,妥善保存,请勿传播过程设计工具6伪码和过程设计语言(PDL)–◼(4)CASEcase〈选择因子〉of〈标号〉{,〈标号〉}:〈PDL……:[<PDL语句>endcase◼(5)输入/一般采用pri
ntreaddisplayinputoutput等常见语句个人成果,妥善保存,请勿传播例1是PDLnbeginnexecuteprocessanloopuntilconditionx8nbeginnexecute
processbnifconditionx1thennbeginnexecuteprocessfnifconditionx6thennloopuntilconditionx7nexecuteprocessinendloopnelsenbeginnexecuteprocessgnexec
uteprocesshnendnabx1x2x5fcx3x4deghix6x7x8j个人成果,妥善保存,请勿传播nendifnendnelsencasexiofnx2:loopwhileconditionx5nexecuteprocesscnen
dloopnx3:executeprocessdnx4:executeprocessenendcasenendifnendnendloopnexceuteprocessjnendabx1x2x5fcx3x4deghi
x6x7x8j个人成果,妥善保存,请勿传播课程内容提纲◼第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程度的定量度量个人成果,妥善保存,请勿传播面向数据结构的设计方法◼面向数据结构的设计方法的目标–目标
是得出对程序处理过程的描述–这种方法最适合于在详细设计阶段使用◼两个面向数据结构的设计方法–Jackson方法和Warnier方法个人成果,妥善保存,请勿传播面向数据结构的设计方法◼分析确定数据结构–数据元素彼此间的逻辑关系有◼顺序、选择和重复◼因此,逻辑数据结构也只有这3类◼描述
数据结构的工具-Jackson图个人成果,妥善保存,请勿传播面向数据结构的设计方法◼描述数据结构的工具-Jackson图–◼顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。ACBDAseqBCDAend个人成果,妥善保存,请勿传播面向数据结构的设计方
法◼描述数据结构的工具-Jackson图–◼选择结构的数据包含两个或多个数据元素,每次按一定的条件从这些数据元素中选择一个使用,具体分为:(1)选择结构,(2)可选结构ACBDS(i)AB-S(i)Aselectcond1BAorcond2CAorcond3DAendAselectcondB
Aend个人成果,妥善保存,请勿传播面向数据结构的设计方法◼描述数据结构的工具-Jackson图–◼重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。AB*I(i)Aiteruntil(while)condB
Aend个人成果,妥善保存,请勿传播面向数据结构的设计方法◼描述数据结构的工具-Jackson图个人成果,妥善保存,请勿传播面向数据结构的设计方法◼描述数据结构的工具-Jackson图个人成果,妥善保存,请勿传播面向数据结构的设计方法◼Jac
kson方法–Jackson结构化设计方法基本上由下述五个1分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构2找出输入数据结构和输出数据结构中有对应关3从描绘数据结构的Jackson图导出描绘程序结
构的Jackson图–按照在数据结构图中的层次,在程序结构图的相应层次,为每对有对应关系的数据单元画一个处理框个人成果,妥善保存,请勿传播面向数据结构的设计方法◼Jackson方法–根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图相应层次分别为它们画上对
应的处理框–根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图相应层次分别为它们画上对应的处理框–若在构成顺序结构的元素中出现了重复或选择元素,需在Jackson图中增加一个中间层次的处理框。4列出
所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位5个人成果,妥善保存,请勿传播面向数据结构的设计方法◼Jackson方法–◼一个正文文件由若干个记录组成,每个记录是一个字符串
。要求统计每个记录中空格字符的个数,以及文件中空格字符的总数。输出数据的格式为,每复制一行输入字符串后,另起一行印出这个字符串的空格数,最后印出文件中空格的总个数。个人成果,妥善保存,请勿传播第1步:用J
ackson图描述输入/输出的数据结构正文文件I字符串*字符*空格O非空格OIS输入输出表格表格体串信息*字符串空格数I输出空格总数第2步:在两个图中指出有直接因果关系、可以同时处理的单元(重复的次序,次数
均相同)个人成果,妥善保存,请勿传播正文文件I字符串*字符*空格O非空格OIS输入输出表格表格体串信息*字符串空格数I输出空格总数??•经过程序处理由正文文件得到输出表格。•每处理输入中一个字符串后就得到输出中一个串信息,二者重
复次序和次数均相同。•字符不与多字符组成的字符串对应。•单个空格不能决定空格数。个人成果,妥善保存,请勿传播正文文件I字符串*字符*空格O非空格OIS输入输出表格表格体串信息*字符串空格数I输出空格总数统计空格处理字符串*I程序体
印总数印字符串印空格数分析字符*分析字符*I分析字符串处理空格o处理非空格oS注:顺序执行的处理中不允许混有重复执行或选择执行的处理。第3步:DatastructureProgramstructure把有对应关系的单元合为一个处理
框,画在相应的层次中(不同层以低层为准)个人成果,妥善保存,请勿传播第4步:列出所有操作条件,并分配到上幅程序结构图中统计空格处理字符串*I(1)程序体印总数印字符串印空格数分析字符*I分析字符串处理空格o处理非空格oS23145例:(部分列举,详见P.125)⑴打开文件⑵读
入字符串⑶空格总数totalsum=0⑷关闭文件⑸仃止I⑴文件结束第5步:用Pseudocode表示程序。(详见P.125-126)个人成果,妥善保存,请勿传播课程内容提纲◼第6章:“详细设计”–详细设计任务–结构程序设计–人机界面设计–过程设计工具–面向数据结构的设计方法–程序复杂程度的定
量度量个人成果,妥善保存,请勿传播程序复杂程度的定量度量◼McCabe方法–McCabe方法的核心是◼通过定量分析程序中分支个数或循环个数,对软件测试难度进行定量度量,对软件最终的可靠性进行预测。–以下我们介绍定量度量的过程。个人成果,妥善保存,请勿传
播程序复杂程度的定量度量◼McCabe方法–流图◼McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。◼流图实质上是“退化了的’’程序流程图–它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。个人成果
,妥善保存,请勿传播程序复杂程度的定量度量◼McCabe方法–流图◼在流图中用圆表示结点,一个圆代表一条或多条语句◼程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点◼流图中的箭头线称为边,代表控制流,在流图中一条边必须终止于一个
结点,即使这个结点并不代表任何语句(实际上相当于一个空语句)◼由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。个人成果,妥善保存,请勿传播程序复杂程度的定量度量◼McCabe方法–流图◼当过程设计中包含复合条件时,生成流图的方法稍微复杂一些。◼
所谓复合条件,就是在条件中包含了一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)。◼在这种情况下,应该把复合条件分解为若干个简单条件,每个简单条件对应流图中一个结点。个人成果,妥善保存,请勿传播程序复杂程度的定量度量◼McCabe
方法–计算环形复杂度的方法◼可以用下述3种方法中的任何一种来计算环形复杂度。–(1)流图中的区域数等于环形复杂度。–(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。–(3)流图G的环形
复杂度V(G)=P+1,其中,户是流图中判定结点的数目。例如,使用上述任何一种方法,都可以计算出图6.16所示流图的环形复杂度为4。个人成果,妥善保存,请勿传播1234567891012,34,567891011R1R2R3R4P1P
2P3◼V(G)=11-9+2=4(E=11,N=9)◼V(G)=R1+R2+R3+R4=4◼V(G)=P1+P2+P3+1=4个人成果,妥善保存,请勿传播◼环形复杂度的用处–程序的环形复杂度取决于程序控制流的复杂程度,即取决于程序结构的复杂程
度–当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。–McCabe研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序–实践表明,模块规模
以V(G)≤10为宜,V(G)=10是模块规模的一个更科学更精确的上限。程序复杂程度的定量度量个人成果,妥善保存,请勿传播◼Halstead方法-Halstead方法也称为文本复杂性度量,它根据程序中运算符和操作数的总数来度量程序的复杂程度-运算符
是通常语法中的象+,-,>,<,if-then-else,while-do等这样一些语法元素-操作数是指那些变量、常量等。至于注解、说明和其他的非执行语句并不计入在内程序复杂程度的定量度量个人成果,妥善保存,请勿传播程
序复杂程度的定量度量◼Halstead方法–程序长度N的计算◼N=N1+N2–N1为程序中运算符出现的总次数–N2为程序中操作符出现的总次数–Halstead方法预测程序长度H的计算◼H=n1log2n1+
n2log2n2–n1为程序中使用不同运算符的个数–n2为程序中使用不同操作符的个数◼实践表明,预测长度H和实际长度N很接近个人成果,妥善保存,请勿传播程序复杂程度的定量度量◼Halstead方法–Halstead方法预测程序中错误E的个数◼E=Nlog2(n1+n2)/3000◼误差在8%以内
个人成果,妥善保存,请勿传播本章结束-下一章节导读:“编码与实现”