《软件工程06细节设计.ppt》由会员分享,可在线阅读,更多相关《软件工程06细节设计.ppt(93页珍藏版)》请在三一办公上搜索。
1、Details 细节structured programming 结构化程序设计Human-computer Interface 人机界面,Vocabulary,CH6 Details design,Nantong University 主讲人:程显毅,可行性分析:解决“为什么要做”软件需求:解决“做什么”软件设计:解决“怎么做”软件设计的任务 问题结构(软件需求)软件结构,从软件需求规格说明书出发,形成软件的具体设计方案。,这个项目怎么做?,这是总体设计和详细设计的任务要好好学习啦!,总体设计(概要设计、系统设计):确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。关注的是软件结构
2、,主要面向用户。(1)软件结构设计(2)数据设计 详细设计(技术设计):确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。关注的是系统的具体实现方法,主要面向开发人员。(3)人机界面设计(4)过程设计,软件设计分为两个阶段:,Contents,6.4 Design Method oriented Data structure,软件危机(1.2),6.5 The Measure of Program Complexity Degree,6.6 Summary,6.3 Tool of Procedure Design,6.2 Human-computer Interface Desi
3、gn,6.1 Structured programming,Structured programming采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。,1965年,E.W.Dijkstra在IFIP(国际信息处理联合会)会议上提出“可以从高级语言中取消GOTO语言”、“程序的质量与程序中所包含的GOTO语句的数量成反比”。但是当时并未引起很大反响。1966年Bohm和Jacopini证明了,只用三种基本的控制结构就能实现任何单入口单出口的程序,这个结论奠定了结构程序设计的理论基础。这三种基本的控制结构是“顺序”、“选择”、“循环”。1968年Dijkstra在ACM通讯上发表了短文“
4、GOTO statement considered harmful”再次建议从一切高级语言中取消GOTO语句,只使用三种基本控制结构写程序。经过讨论人们认识到,不是简单地去掉GOTO语句的问题,而是要创立一种新的程序设计思想、方法和风格,以显著地提高软件生产率和降低软件维护代价。1971年IBM公司在纽约时报信息库管理系统的设计中成功地使用了结构程序设计技术(以及主程序员组),随后在美国宇航局空间实验室飞行模拟系统的设计中,结构程序设计技术(也采用了主程序员组的形式)再次获得圆满成功。,(1)Structured programming发展历史,6.1 Structured programmi
5、ng,(2)三种基本的控制结构,1966年Bohm和Jacopini证明了,只用三种基本的控制结构就能实现任何单入口单出口的程序,这个结论奠定了结构程序设计的理论基础。这三种基本的控制结构是“顺序”、“选择”、“循环”。,虽然从理论上说只用上述三种基本控制结构就可以实现任何单入口单出口的程序,但是为了实际使用方便起见,常常还允许使用DO-UNTIL和DO-CASE两种控制结构,其流程图分别为:,常用以上五种基本构造,但是在遇到多层嵌套循环时,如果每层只允许一个出口,势必影响退出时的效率。所以需要立即从循环(甚至嵌套的循环)中转移出来,如果允许使用BREAK,则不仅方便而且会使效率提高很多。BR
6、EAK语句实质上是受限制的GOTO语句,用于转移到循环结构后面的语句。,(3)Structured programming特征,使用语言中的顺序、选择、重复等有限的基本控制 结构表示程序逻辑。选用的控制结构只准许有一个入口和一个出口。复杂结构应该用基本控制结构进行组合嵌套来实现。严格控制GOTO语句。,(3)怎么判断一个程序是否为结构化的?,如果对流程图中每一构件用“边框”圈起来,边界之间不出现交叉,则说明所有构件都为单入口单出口,则称此程序为结构化程序。,重写D,(4)自顶向下,逐步求精方法的优点,符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率。用先全局后局部,先整体后细节,
7、先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解。在同一层的节点上的细化工作相互独立。有利于编码、测试和集成。有利于设计的分工和组织工作。,Contents,6.4 Design Method oriented Data structure,软件危机(1.2),6.5 The Measure of Program Complexity Degree,6.6 Summary,6.3 Tool of Procedure Design,6.2 Human-computer Interface Design,6.1 Structured programming,软件是否
8、成功,不是由技术专家使用专业的标准来评判,而是由用户来评判,由用户是否认可、是否喜欢来评判。HID的设计质量,直接影响用户对软件的评价。,6.2 Human-computer Interface Design,6.2.0 HID基本概念,(1)用户的特性:用户是懒惰的。用户是笨的。用户是容易出错的。用户是健忘的。用户的注意力很容易涣散。用户的脾气不好。,(2)用户友好的概念 用户友好性一般属软件的性能,它独立于所有具体功能,却影响着所有功能的重用性。用户友好性应体现在:易学习性、可扩展性、健壮性、可操作性。用户友好性的根本目的是为了软件可重用性、可维护性。,(3)用户对计算机系统的要求,让用户
9、灵活地使用适应不同类型用户系统的行为及效果对用户透明用户对系统的期望和态度提供联机帮助功能人机交互尽可能和人际通信相似,(4)用户技能方面的使用需求,应让系统去适应用户使用易于理解、掌握的准自然语言一致性的系统设计用户对系统的期望和态度能通过系统学习系统提供演示及范例,(5)用户习性方面的使用需求,系统应让用户有耐心系统应很好地对付人的易犯错误系统应对不同用户提供不同交互方式,(6)用户经验、知识方面的使用需求,系统应能让未经专门训练的用户使用系统能对不同经验用户做出不同反应提供同一系统的一致性,建立标准化人-机界面系统必须适应用户在应用领域的知识变化,提供动态的自适应的设计,1、系统响应时间
10、(不是越短越好,与任务有关)2、用户帮助设施(什么时候帮助、怎样请求帮助、怎样 组织帮助信息3、出错信息处理(恢复建议、必要的声音)4、命令交互(必须的,热键),6.2.1 HID遇到的问题,6.2.2 HID过程,创建设计模式,实现原型,用户评价,满意,修改设计模式,Y,N,设计结束,1、界面的设计原则,(1)分析用户类型(2)应用程序和界面分离(3)一致性(在一个界面D表示复制图像,在另一个界面D表 示删除图像,用户就会迷茫)(4)尽量减少用户工作(命令的难度,忘记命令怎么办)(5)提供反馈(6)出错处理和帮助功能 信息应该用用户可以理解的术语描述出错信息;提供从错误中恢复的建设性意见;应
11、该指出错误可能导致哪些负面后果;应该伴随着听觉和视觉的提示;不能指责用户;(7)增加可视化图形表示,6.2.3 HID指南,(1)帮助方式:操作指南文档(植入系统、未植入系统)基于帮助文件的要求性帮助(命令级帮助)说明性帮助 嵌入系统的要求性帮助 嵌入培训功能的智能帮助系统(2)要解决的问题 什么时候提供帮助?(任何时候、特定环境)哪些功能提供帮助?(全部、部分)怎样请求帮助?(特殊功能建F1,HELP命令,HILP菜单)怎样显示帮助?(图形、声音、文字)怎样返回到正常交互状态?(功能键,按钮)怎样组织帮助?(平面,层次,超文本结构)提供多少帮助?(翻译、说明、实例),2、HELP系统设计,3
12、、一般的交互方式设计,(1)菜单 按显示形象分类:正文菜单 图标菜单 正文图标混合菜单 按屏幕位置和操作风格分类:固定 浮动 下拉式 嵌入式,(2)对话,对话形式:必须回答式:需要用户的确定认可或参数 无需回答式:只显示系统信息 警告式:一般为出错提示对话实现方式:标准对话:一般提示对话方式 定做式对话:按实际要求设定,(3)功能键(4)图符界面(5)填表界面(6)命令语言界面(7)查询语言界面(8)自然语言界面,4、控制界面的设计,(1)用控制对话选择操作命令(2)用菜单界面进行控制(3)用功能键定义操作命令(4)用图标表示对象或命令,5、数据输入界面设计,(1)减少用户的输入动作(下拉列表
13、);(2)保持显示数据和输入数据一致性;(3)明确输入(4)明确取消(5)确认删除(6)提供反馈(7)允许编辑(8)提供复原(Undo)(9)自由格式(10)提示输入的范围,6、数据显示界面设计,(1)只显示必要的数据(2)不要用数据淹没用户:显示出的数据应与用户执行的任务有关;每一屏数据的数量不应超过整个屏幕面积的30%;屏幕布局规则;使用图形,表格,模拟方式显示数据;(3)产生有意义的出错信息;(4)多个显示画面,应建立统一格式(5)提供明了的标题、标栏及其它提示信息(6)遵循用户习惯(7)采用颜色、字符大小、下划线、不同字体等方式强化重要数据,Contents,6.4 Design Me
14、thod oriented Data structure,软件危机(1.2),6.5 The Measure of Program Complexity Degree,6.6 Summary,6.3 Tool of Procedure Design,6.2 Human-computer Interface Design,6.1 Structured programming,6.3.1 程序流程图6.3.2 盒图(N-S图)6.3.3 问题分析图(PAD)6.3.4 判定表6.3.5 判定树6.3.6 过程设计语言(PDL)(伪码),6.3 Tool of Procedure Design,6.
15、3.1 程序流程图,1、程序流程图的标准符号,2、程序流程图使用的五种基本控制结构:,3、示例,4、程序流程图的主要缺点,(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员 过早地考虑程序的控制流程,而不去考虑程序的全局结构。(2)程序流程图中用箭头代表控制流,因此程序员不受任何约 束,可以完全不顾结构程序设计的精神,随意转移控制。(3)程序流程图不易表示数据结构。,6.3.2 N-S图,1、六种基本控制结构图示:,A,调用子程序A,2、示例,2、示例,3、N-S图的嵌套定义图式,4、N-S图的特点:,(1)功能域(即,一个特定控制结构的作用域)明确,可以 从盒图上一眼就看出来。(2)由
16、于只能从上边进入盒子然后从下面走出盒子,除此之 外没有其它的入口和出口,所以盒图限制了任意的控制 转移,保证程序有良好的结构。(3)很容易确定局部和全程数据的作用域。(4)很容易表现嵌套关系,也可以表示模块的层次结构。(5)盒图没有箭头,因此不允许随意转移控制。坚持使用盒 图作为详细设计的工具,可以使程序员逐步养成用结构 化的方式思考问题和解决问题的习惯。,6.3.3 问题分析图(PAD),1、PAD的六种基本控制结构图式,def,定义,2、PAD图的基本原理:,PAD是问题分析图(Problem Analysis Diagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度
17、的推广。它是由程序流程图演化而来,用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。采用自顶向下、逐步细化和结构化设计的原则,力求将模糊的问题解的概念逐步转换为确定的和详尽的过程,使之最终可采用计算机直接进行处理。,3、PAD描述的示例,4、PAD图的主要优点:,(1)使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。(2)PAD图所描绘的程序结构十分清晰。图中最左边的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。(3)用PAD图表现程序逻辑,易读、易懂
18、、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。(4)容易将PAD图转换成高级语言源程序,有利于提高软件可靠性和软件生产率。(5)既可用于表示程序逻辑,又可用于描绘数据结构。PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。,6.3.4 判定表,1、问题的提出 当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。然而判定表却能够清晰地表示复杂的条件组合与应做的动
19、作之间的对应关系。,2、判定表组成,3、例子:计算行李费,假设某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量超过30公斤时:对头等舱的国内乘客超重部分每公斤收费4元;对其他舱的国内乘客超重部分每公斤收费6元;对外国乘客超重部分每公斤收费比国内乘客多一倍;对残疾乘客超重部分每公斤收费比正常乘客少一半。,用判定表表示计算行李费算法,6.3.5 判定树,判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。判定树的优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。,用判定树表示计算行李费算法,6.3.6 PDL(Proced
20、ure Design Language),1、原理 PDL是一种用于描述功能模块的算法设计和加工细节的语言。它是一种伪码。PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。,2、示例:拼词检查程序,PROCEDURE spellcheck IS BEGIN split document into single words look up words in dictionary display words which are not in dictionary create a new dictionary END spellche
21、ck,2、示例:,3、PDL的特点,(1)提供全部结构化控制结构、数据说明和模块特征。能对PDL正 文进行结构分割,使之变得易于理解。(2)为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它 们为黑体字。,(3)内语法使用自然语言来描述处理特性。内语法比较灵活,只要 写清楚就可以,不必考虑语法错,以利于人们可把主要精力放 在描述算法的逻辑上。(4)有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表 和层次结构)的数据结构。(5)有子程序定义与调用机制,用以表达各种方式的接口说明。,Contents,6.4 Design Method oriente
22、d Data structure,软件危机(1.2),6.5 The Measure of Program Complexity Degree,6.6 Summary,6.3 Tool of Procedure Design,6.2 Human-computer Interface Design,6.1 Structured programming,1、Jackson方法概述 Jackson方法是一种典型的面向数据结构的分析与设计方法。简称JSP方法。JSP方法:信息 数据结构 程序结构,这三步曲减少了设计决策上的盲目性。但是,当把JSP方法用于大系统设计时,就会出现大量复杂的难以对付的结构冲
23、突。因此,M.J.Jackson提出了JSD方法,即Jackson系统开发方法。,6.4 Design Method oriented Data structure,2、JSP图,JSP图的本质就是“问题应当被分解为可以用三种结构形式表示的构件的层次结构。”Jackson所说的“结构形式”就是指顺序、选择和重复,实际上,它们就是过程性构造,并成为结构化程序设计方法基础。,Jackson提出的数据结构表示有三种基本的构造类型:,三种基本结构可以组合,形成更复杂的结构体系。如右图所示。这种数据结构图可以同样方便地应用于输入、输出和数据库结构。,3、JSP图的例子:信用卡记账,信用卡记账系统的输入数
24、据结构是两个实际的账册,它们对应的两个输入文件如图所示。,图(a)给出了信用卡记账系统的输出记账报告。,图(b)给出了根据输入和输出数据结构的对应关系建立的输出文件。,从图(b)所示的输出文件的Jackson数据结构图所导出的程序结构如下图所示。,说明 用JSP图得到的程序或程序结构图,一般都需要求精和优化。因为这种图是从输入输出数据结构导出程序结构图,因此有些中间处理过程在结构图中反映不出来。在求精过程中,可以对结构图进行改进和细化,使之完整和易于实现。,4、Jackson方法(5步),(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。(2)找出输入数据结构
25、和输出数据结构中有对应关系的数据单元。,(3)用下述三条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框(注意,如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应);根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框;根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。,(4)列出所有操作和条件(
26、包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。(5)用伪码表示程序。,5、JSP程序设计的例子,一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。,(1)用Jackson图描绘的输入输出数据结构。,(2)找有对应关系的单元:经过程序的处理由正文文件得到输出表格。输出数据总是通过对输入数据的处理而得到的,因此在输入输出数据结构最高层次的两个单元(在这个例子中是“正文文件”和“输出表格”)总是有对应关系的
27、。这一对单元将和程序结构图中最顶层的方框(代表程序)相对应。,找有对应关系“字符串”和“串信息”。每处理输入数据中一个“字符串”之后,就可以得到输出数据中一个“串信息”,它们都是重复出现的数据单元,而且出现次序和重复次数都完全相同。,(3)从数据结构图导出程序结构图。,“统计空格”,它与“正文文件”和“输出表格”这对最顶层的数据单元相对应。,接下来还不能立即画与另一对数据单元(“字符串”和“串信息”)相对应的处理框。在输出数据结构中“串信息”的上层还有“表格体”和“空格总数”两个数据单元,在程序结构图的第二层应该有与这两个单元对应的处理框“程序体”和“总数”。在程序结构图的第三层才是与“字符串
28、”和“串信息”相对应的处理框“处理字符串”。,在程序结构图的第四层似乎应该是和“字符串”、“字符”及“空格数”等数据单元对应的处理框“印字符串”、“分析字符”及“印空格数”,这三个处理是顺序执行的。但是,“字符”是重复出现的数据单元,因此“分析字符”也应该是重复执行的处理。改进的Jackson图规定顺序执行的处理中不允许混有重复执行或选择执行的处理,所以在“分析字符”这个处理框上面又增加了“分析字符串”处理框。,(4)列出所有操作和条件,并且把它们分配到程序结构图的适当位置。(1)停止(2)打开文件(3)关闭文件(4)印出字符串(5)印出空格数目(6)印出空格总数(7)sum:=sum1/su
29、m是保存空格个数的变量(8)totalsum:=totalsumsum/totalsum保存空格总数(9)读入字符串(10)sum:=0(11)totalsum:=0(12)pointer:=1/指示当前分析的字符在字符串中的位置(13)pointer:=pointer1 I(1)文件结束、I(2)字符串结束 S(3)字符是空格,经过简单分析不难把这些操作和条件分配到程序结构图的适当位置。,(5)用伪码表示程序处理过程统计空格seq 打开文件 读入字符串 totalsum:=0 程序体iter until文件结束 处理字符串seq 印字符串seq 印出字符串 印字符串end sum:=0.统计
30、空格seq,Contents,6.4 Design Method oriented Data structure,软件危机(1.2),6.5 The Measure of Program Complexity Degree,6.6 Summary,6.3 Tool of Procedure Design,6.2 Human-computer Interface Design,6.1 Structured programming,程序复杂性直接关联到软件开发费用的多少、可理解性、开发周期的长短和软件内部潜伏错误的多少。,1、复杂性度量需要满足的假设,(1)它可以用来计算任何一个程序的复杂性;(2
31、)对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算;(3)如果程序中指令条数、附加存储量、计算时间增多,不会减少程序的复杂性。,6.5 The Measure of Program Complexity Degree,2、代码行度量法,(1)源代码行数度量法基于两个前提:程序复杂性随着程序规模的增加不均衡地增长;控制程序规模的方法最好是采用分而治之的办法。将一个大程序分解成若干个简单的可理解的程序段。,(2)方法要点 方法的基本考虑是统计一个程序模块的源代码行数目,并以源代码行数做为程序复杂性的度量。设每行代码的出错率为每100行源程序中可
32、能有的错误数目。Thayer曾指出,程序出错率的估算范围是从0.047之间,即每100行源程序中可能存在0.047个错误。他还指出,每行代码的出错率与源程序行数之间不存在简单的线性关系。,Lipow指出,对于小程序,每行代码出错率为1.31.8;对于大程序,每行代码的出错率增加到2.73.2之间,这只是考虑了程序的可执行部分,没有包括程序中的说明部分。Lipow及其他研究者得出一个结论:对于少于100个语句的小程序,源代码行数与出错率是线性相关的。随着程序的增大,出错率以非线性方式增长。,3、McCabe度量法,McCabe度量法,又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法。它基
33、于一个程序模块的程序图中环路的个数,因此计算它先要画出程序图(也称流图)。程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。,增加虚线是网络保证程序图是强连通,程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作,以及分支和循环的具体条件。计算环路复杂性的方法:根据图论,在一个强连通的有向图G中,环的个数由以下公式给出:V(G)mn2其中,V(G)是有向图G中环路个数,m是图G中弧数(边数),n是图G中结点数。在例示中,结点数n11,弧数m12(不包含增加的1条)V(G)mn2121123.对于平面图而言,环路复杂度等于强连通的程序图在平面上围成的
34、区域的个数。,(1)McCabe度量法原理,(2)几点说明,环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环数目增加时其复杂度也增加。环路复杂度与程序中覆盖的路径条数有关。McCabe建议,对于复杂度超过10的程序,应分成几个小程序,以减少程序中的错误。McCabe环路复杂度隐含的前提是:错误与程序的判定加上例行子程序的调用数目成正比。加工复杂性、数据结构、录入与打乱输入卡片的错误可以忽略不计。,(3)McCabe度量法的缺点 对于不同种类的控制流的复杂性不能区分。简单IF语句与循环语句的复杂性同等看待。嵌套IF语句与简单CASE语句的复杂性是一样的。模块间接口当成一个简单分支一样
35、处理。一个具有1000行的顺序程序与一行语句的复杂性相同。,4、Halstead的软件科学,Halstead软件科学研究确定计算机软件开发中的一些定量规律,它采用以下一组基本的度量值。这些度量值通常在程序产生之后得出,或者在设计完成之后估算出。,(1)程序长度(预测的Halstead长度)令n1表示程序中不同运算符(包括保留字)的个数,n2表示程序中不同运算对象的个数(操作数),H表示“程序长度的预测值”,则有 H=n1log2 n1+n2 log2n2 定义中的运算符包括:算术运算符 赋值符(=或:=)逻辑运算符 分界符(,或;或:)关系运算符 括号运算符 子程序调用符 数组操作符 循环操作
36、符等。运算对象包括变量名和常数。,(2)实际的程序长度 设N1为程序中实际出现的运算符总个数,N2为程序中实际出现的运算对象总个数,N为程序长度,则有 N=N1+N2 多次验证表明:预测长度H与实际长度N非常接近。,(3)程序的词汇表 Halstead定义程序的词汇表为不同的运算符种类数n1和不同的运算对象种类数n2的总和。若令n为程序的词汇表,则有 n=n1+n2,(4)程序量 程序量 V 可用下式得到 V=N log2n 它表明了程序在词汇上的复杂性。其最小值为 V*=(2+n2*)log2(2+n2*)V 这里,2表明程序中至少有两个运算符:赋值符=和函数调用符 f(),n2*表示输入输
37、出变量个数。,(5)程序量比率(语言的抽象级别)L=V*/V 或 L=(2/n1)(n2/N2)它表明了一个程序的最紧凑形式的程序量与实际程序量之比,反映了程序的效率。其倒数D=1/L 表明了实现算法的困难程度。,(6)程序员工作量 E=V/L(7)程序的潜在错误 Halstead度量可以用来预测程序中的错误。预测公式为 B=(N1+N2)log2(n1+n2)/3000 B为该程序的错误数。它表明程序中可能存在的差错 B 应与程序量V成正比。,(8)Halstead的重要结论 程序的实际Halstead长度N可以由词汇表n算出。即使程序还未编制完成,也能预先算出程序的实际Halstead长度
38、N,虽然它没有明确指出程序中到底有多少个语句。这个结论非常有用。经过多次验证,预测的Halstead长度与实际的Halstead长度是非常接近的。,(9)Halstead度量的缺点,忽视了嵌套结构(嵌套的循环语句、嵌套IF语句、括号结构等)。一般地,运算符的嵌套序列,总比具有相同数量的运算符和运算对象的非嵌套序列要复杂得多。解决的办法是对嵌套结果乘上一个嵌套因子。,在允许混合运算的语言中,每种运算符与它的运算对象相关。,Contents,6.4 Design Method oriented Data structure,软件危机(1.2),6.5 The Measure of Program
39、Complexity Degree,6.6 Summary,6.3 Tool of Procedure Design,6.2 Human-computer Interface Design,6.1 Structured programming,(1)详细设计的任务是设计出程序的“蓝图”,并达到:“可 读性好、容易理解、容易测试、容易修改和维护”的目标。,(2)结构程序设计技术是实现上述目标的基本保证。(3)人机界面设计必须引起重视,是一个迭代过程。(4)过程设计在数据设计、总统设计(体系结构设计、接 口设计)之后。(5)对有明显层次结构的应用,可采用面向数据结构的设计 方法(Jackson方法)。(6)程序复杂度McCabe方法原理。(7)程序复杂性直接关联到软件开发费用的多少、可理解性、开发周期的长短和软件内部潜伏错误的多少。,6.6 Summary,详细设计,作业 分别设计等价的结构化程序(用N-S图和PAD图表示),并计算它们的McCabe复杂性。,Thats All!,
链接地址:https://www.31ppt.com/p-6610826.html