软件工程06细节设计.ppt

上传人:re****.1 文档编号:568430148 上传时间:2024-07-24 格式:PPT 页数:93 大小:1.16MB
返回 下载 相关 举报
软件工程06细节设计.ppt_第1页
第1页 / 共93页
软件工程06细节设计.ppt_第2页
第2页 / 共93页
软件工程06细节设计.ppt_第3页
第3页 / 共93页
软件工程06细节设计.ppt_第4页
第4页 / 共93页
软件工程06细节设计.ppt_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《软件工程06细节设计.ppt》由会员分享,可在线阅读,更多相关《软件工程06细节设计.ppt(93页珍藏版)》请在金锄头文库上搜索。

1、软件工程Details Details 细节细节细节细节structured programming structured programming 结构化程序设计结构化程序设计结构化程序设计结构化程序设计Human-computer Interface 人机界面人机界面Vocabulary Vocabulary 软件工程 CH6 CH6 Details designDetails design Nantong University 主讲人:主讲人: 程显毅程显毅计算机导论软件工程可行性分析:解决可行性分析:解决“为什么要做为什么要做”软件需求:解决软件需求:解决“做什么做什么”软件设计:解决软

2、件设计:解决“怎么做怎么做”软件设计的任务软件设计的任务 问题结构问题结构( (软件需求软件需求) ) 软件结构软件结构 映射映射从软件需求规格说明书出发,从软件需求规格说明书出发,形成软件的具体设计方案。形成软件的具体设计方案。计算机导论软件工程这个项目怎么做?这是总体设计总体设计和详细设计详细设计的任务要好好学习啦!计算机导论软件工程F总体设计总体设计(概要设计、系统设计)(概要设计、系统设计): :F 确确定定软软件件的的结结构构以以及及各各组组成成成成分分(子子系系统统或或模模块块)之之间间的的相相互互关关系系。关注的是软件结构,主要面向用户。关注的是软件结构,主要面向用户。 (1)软

3、件结构设计软件结构设计 (2)数据设计数据设计 F详细设计详细设计 ( (技术设计技术设计) ):F 确确定定模模块块内内部部的的算算法法和和数数据据结结构构,产产生生描描述述各各模模块块程程序序过过程程的的详详细细文档。文档。关注的是系统的具体实现方法,主要面向开发人员。关注的是系统的具体实现方法,主要面向开发人员。F (3)人机界面设计人机界面设计F (4)过程设计过程设计软件设计分为两个阶段:软件设计分为两个阶段:计算机导论软件工程ContentsContents软件危机软件危机 (1.2)Structured programming采采用用自自顶顶向向下下逐逐步步求求精精的的设设计计方

4、方法法和和单单入入口口单单出出口口的的控控制结构。制结构。 计算机导论软件工程 19651965年年,E.W.DijkstraE.W.Dijkstra在在IFIPIFIP(国国际际信信息息处处理理联联合合会会)会会议议上上提提出出“ “可可以以从从高高级级语语言言中中取取消消GOTOGOTO语语言言” ”、“ “程程序序的的质质量量与与程程序序中中所所包包含含的的GOTOGOTO语句的数量成反比语句的数量成反比” ”。但是当时并未引起很大反响。但是当时并未引起很大反响。 19661966年年BohmBohm和和JacopiniJacopini证证明明了了,只只用用三三种种基基本本的的控控制制结

5、结构构就就能能实实现现任任何何单单入入口口单单出出口口的的程程序序,这这个个结结论论奠奠定定了了结结构构程程序序设设计计的的理理论论基基础础。这这三种基本的控制结构是三种基本的控制结构是“ “顺序顺序” ”、“ “选择选择” ”、“ “循环循环” ”。 19681968年年DijkstraDijkstra在在ACMACM通通讯讯上上发发表表了了短短文文“ “GOTO GOTO statement statement considered considered harmful”harmful”再再次次建建议议从从一一切切高高级级语语言言中中取取消消GOTOGOTO语语句句,只只使使用用三三种种基

6、基本本控控制制结结构构写写程程序序。经经过过讨讨论论人人们们认认识识到到,不不是是简简单单地地去去掉掉GOTOGOTO语语句句的的问问题题,而而是是要要创创立立一一种种新新的的程程序序设设计计思思想想、方方法法和和风风格格,以以显显著著地地提提高高软软件件生生产率和降低软件维护代价。产率和降低软件维护代价。 19711971年年IBMIBM公公司司在在纽纽约约时时报报信信息息库库管管理理系系统统的的设设计计中中成成功功地地使使用用了了结结构构程程序序设设计计技技术术(以以及及主主程程序序员员组组),随随后后在在美美国国宇宇航航局局空空间间实实验验室室飞飞行行模模拟拟系系统统的的设设计计中中,结

7、结构构程程序序设设计计技技术术(也也采采用用了了主主程程序序员员组组的的形形式式)再次获得圆满成功。再次获得圆满成功。 (1) (1) Structured programming发展历史发展历史6.1 Structured programming 计算机导论软件工程(2)(2)三种基本的控制结构三种基本的控制结构 19661966年年BohmBohm和和JacopiniJacopini证证明明了了,只只用用三三种种基基本本的的控控制制结结构构就就能能实实现现任任何何单单入入口口单单出出口口的的程程序序,这这个个结结论论奠奠定定了了结结构构程程序序设设计计的的理理论论基基础础。这这三三种种基基

8、本本的的控控制制结结构构是是“ “顺顺序序” ”、“ “选选择择” ”、“ “循环循环” ”。 计算机导论软件工程 虽虽然然从从理理论论上上说说只只用用上上述述三三种种基基本本控控制制结结构构就就可可以以实实现现任任何何单单入入口口单单出出口口的的程程序序,但但是是为为了了实实际际使使用用方方便便起起见见,常常常常还还允允许许使使用用DO-UNTILDO-UNTIL和和DO-CASEDO-CASE两两种种控控制制结构,其流程图分别为结构,其流程图分别为:计算机导论软件工程 常常用用以以上上五五种种基基本本构构造造,但但是是在在遇遇到到多多层层嵌嵌套套循循环环时时,如如果果每每层层只只允允许许一

9、一个个出出口口,势势必必影影响响退退出出时时的的效效率率。所所以以需需要要立立即即从从循循环环(甚甚至至嵌嵌套套的的循循环环)中中转转移移出出来来,如如果果允允许使用许使用BREAKBREAK,则不仅方便而且会使效率提高很多。,则不仅方便而且会使效率提高很多。 BREAKBREAK语语句句实实质质上上是是受受限限制制的的GOTOGOTO语语句句,用用于于转转移移到循环结构后面的语句。到循环结构后面的语句。计算机导论软件工程计算机导论软件工程(3) (3) Structured programming特征特征使用语言中的顺序、选择、重复等有限的基本控制使用语言中的顺序、选择、重复等有限的基本控制

10、 结构表示程序逻辑。结构表示程序逻辑。选用的控制结构只准许有一个入口和一个出口。选用的控制结构只准许有一个入口和一个出口。复杂结构应该用基本控制结构进行组合嵌套来实现。复杂结构应该用基本控制结构进行组合嵌套来实现。 严格控制严格控制GOTOGOTO语句。语句。计算机导论软件工程(3)(3)怎么判断一个程序是否为结构化的?怎么判断一个程序是否为结构化的? 如果对流程图中每一构件用如果对流程图中每一构件用“ “边框边框” ”圈起来,边界之间不出现交圈起来,边界之间不出现交叉,则说明所有构件都为单入口单出口,则称此程序为结构化程序。叉,则说明所有构件都为单入口单出口,则称此程序为结构化程序。重写重写

11、D D计算机导论软件工程(4)(4)自顶向下,逐步求精方法的优点自顶向下,逐步求精方法的优点符合人们解决复杂问题的普遍规律。可提高软件开发符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率。的成功率和生产率。用先全局后局部,先整体后细节,先抽象后具体的逐用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程步求精的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解。序容易阅读和理解。在同一层的节点上的细化工作相互独立。有利于编码、在同一层的节点上的细化工作相互独立。有利于编码、测试和集成。测试和集成。有利于设计的分工和组织工作。有利于设

12、计的分工和组织工作。计算机导论软件工程ContentsContents软件危机软件危机 (1.2) 软软件件是是否否成成功功,不不是是由由技技术术专专家家使使用用专专业业的的标标准准来来评评判判,而而是是由由用用户户来来评评判判,由由用用户户是是否否认认可可、是是否否喜喜欢欢来来评判。评判。 HIDHID的的设设计计质质量量,直直接接影影响响用用户户对对软软件的评价。件的评价。 计算机导论软件工程6.2 Human-computer Interface Design6.2.0 HID基本概念基本概念(1)用户的特性:)用户的特性: 用户是懒惰的。用户是懒惰的。 用户是笨的。用户是笨的。 用户是

13、容易出错的。用户是容易出错的。 用户是健忘的。用户是健忘的。 用户的注意力很容易涣散。用户的注意力很容易涣散。 用户的脾气不好。用户的脾气不好。计算机导论软件工程(2)用户友好的概念用户友好的概念 用户友好性一般属软件的用户友好性一般属软件的性能性能,它独立于所有具体功能,却影响着所有,它独立于所有具体功能,却影响着所有功能的重用性。功能的重用性。 用户友好性应体现在:易学习性、可扩展性、健壮性、可操作性。用户友好性应体现在:易学习性、可扩展性、健壮性、可操作性。 用户友好性的根本目的是为了软件可重用性、可维护性。用户友好性的根本目的是为了软件可重用性、可维护性。(3)(3)用户对计算机系统的

14、要求用户对计算机系统的要求让用户灵活地使用让用户灵活地使用适应不同类型用户适应不同类型用户系统的行为及效果对用户透明系统的行为及效果对用户透明用户对系统的期望和态度用户对系统的期望和态度提供联机帮助功能提供联机帮助功能人机交互尽可能和人际通信相似人机交互尽可能和人际通信相似计算机导论软件工程(4)(4)用户技能方面的使用需求用户技能方面的使用需求应让系统去适应用户应让系统去适应用户使用易于理解、掌握的准自然语言使用易于理解、掌握的准自然语言一致性的系统设计一致性的系统设计用户对系统的期望和态度用户对系统的期望和态度能通过系统学习能通过系统学习系统提供演示及范例系统提供演示及范例(5)(5)用户

15、习性方面的使用需求用户习性方面的使用需求系统应让用户有耐心系统应让用户有耐心系统应很好地对付人的易犯错误系统应很好地对付人的易犯错误系统应对不同用户提供不同交互方式系统应对不同用户提供不同交互方式(6)(6)用户经验、知识方面的使用需求用户经验、知识方面的使用需求系统应能让未经专门训练的用户使用系统应能让未经专门训练的用户使用系统能对不同经验用户做出不同反应系统能对不同经验用户做出不同反应提供同一系统的一致性,建立标准化人提供同一系统的一致性,建立标准化人-机界面机界面系统必须适应用户在应用领域的知识变化,提供动态的自适应的设计系统必须适应用户在应用领域的知识变化,提供动态的自适应的设计计算机

16、导论软件工程1 1、系统响应时间(不是越短越好,与任务有关)、系统响应时间(不是越短越好,与任务有关)2 2、用户帮助设施(什么时候帮助、怎样请求帮助、怎样、用户帮助设施(什么时候帮助、怎样请求帮助、怎样 组织帮助信息组织帮助信息3 3、出错信息处理(恢复建议、必要的声音)、出错信息处理(恢复建议、必要的声音)4 4、命令交互(必须的,热键)、命令交互(必须的,热键)6.2.1 HID6.2.1 HID遇到的问题遇到的问题计算机导论软件工程6.2.2 HID6.2.2 HID过程过程创建设计模式创建设计模式实现原型实现原型用户评价用户评价满意满意修改设计模式修改设计模式Y YN N设计结束设计

17、结束计算机导论软件工程1 1、界面的设计原则、界面的设计原则(1)(1)分析用户类型分析用户类型(2)(2)应用程序和界面分离应用程序和界面分离(3)(3)一致性(在一个界面一致性(在一个界面DD表示复制图像,在另一个界面表示复制图像,在另一个界面DD表表 示删除图像,用户就会迷茫)示删除图像,用户就会迷茫)(4)(4)尽量减少用户工作(命令的难度,忘记命令怎么办)尽量减少用户工作(命令的难度,忘记命令怎么办)(5)(5)提供反馈提供反馈(6)(6)出错处理和帮助功能出错处理和帮助功能 信息应该用用户可以理解的术语描述出错信息;信息应该用用户可以理解的术语描述出错信息; 提供从错误中恢复的建设

18、性意见;提供从错误中恢复的建设性意见; 应该指出错误可能导致哪些负面后果;应该指出错误可能导致哪些负面后果; 应该伴随着听觉和视觉的提示;应该伴随着听觉和视觉的提示; 不能指责用户;不能指责用户;(7)(7)增加可视化图形表示增加可视化图形表示6.2.3 HID6.2.3 HID指南指南计算机导论软件工程(1)帮助方式:帮助方式: 操作指南文档操作指南文档 (植入系统、未植入系统植入系统、未植入系统) 基于帮助文件的要求性帮助基于帮助文件的要求性帮助 (命令级帮助)命令级帮助) 说明性帮助说明性帮助 嵌入系统的要求性帮助嵌入系统的要求性帮助 嵌入培训功能的智能帮助系统嵌入培训功能的智能帮助系统

19、(2)要解决的问题要解决的问题 什么时候提供帮助?(任何时候、特定环境)什么时候提供帮助?(任何时候、特定环境) 哪些功能提供帮助?哪些功能提供帮助? (全部、部分)(全部、部分) 怎样请求帮助?(特殊功能建怎样请求帮助?(特殊功能建F1,HELP命令,命令,HILP菜单)菜单) 怎样显示帮助?(图形、声音、文字)怎样显示帮助?(图形、声音、文字) 怎样返回到正常交互状态?(功能键,按钮)怎样返回到正常交互状态?(功能键,按钮) 怎样组织帮助?(平面,层次,超文本结构)怎样组织帮助?(平面,层次,超文本结构) 提供多少帮助?(翻译、说明、实例)提供多少帮助?(翻译、说明、实例)2 2、 HEL

20、P系统设计系统设计计算机导论软件工程3 3、一般的交互方式设计、一般的交互方式设计(1) 菜单菜单 按显示形象分类按显示形象分类: 正文菜单正文菜单 图标菜单图标菜单 正文图标混合菜单正文图标混合菜单 按屏幕位置和操作风格分类按屏幕位置和操作风格分类: 固定固定 浮动浮动 下拉式下拉式 嵌入式嵌入式计算机导论软件工程(2)(2)对话对话对话形式对话形式: 必须回答式必须回答式:需要用户的确定认可或参数需要用户的确定认可或参数 无需回答式:只显示系统信息无需回答式:只显示系统信息 警告式:一般为出错提示警告式:一般为出错提示对话实现方式对话实现方式: 标准对话:一般提示对话方式标准对话:一般提示

21、对话方式 定做式对话:按实际要求设定定做式对话:按实际要求设定(3)(3)功能键功能键(4)(4)图符界面图符界面(5)(5)填表界面填表界面(6)(6)命令语言界面命令语言界面(7)(7)查询语言界面查询语言界面(8)(8)自然语言界面自然语言界面计算机导论软件工程4 4、控制界面的设计、控制界面的设计(1)用控制对话选择操作命令用控制对话选择操作命令(2)用菜单界面进行控制用菜单界面进行控制(3)用功能键定义操作命令用功能键定义操作命令(4)用图标表示对象或命令用图标表示对象或命令计算机导论软件工程5 5、数据输入界面设计、数据输入界面设计(1)减少用户的输入动作(下拉列表);减少用户的输

22、入动作(下拉列表);(2)保持显示数据和输入数据一致性;保持显示数据和输入数据一致性;(3)明确输入明确输入(4)明确取消明确取消(5)确认删除确认删除(6)提供反馈提供反馈(7)允许编辑允许编辑(8)提供复原(提供复原(Undo)(9)自由格式自由格式(10)提示输入的范围提示输入的范围计算机导论软件工程6 6、数据显示界面设计、数据显示界面设计(1)只显示必要的数据只显示必要的数据(2)不要用数据淹没用户:不要用数据淹没用户: 显示出的数据应与用户执行的任务有关;显示出的数据应与用户执行的任务有关; 每一屏数据的数量不应超过整个屏幕面积的每一屏数据的数量不应超过整个屏幕面积的30%; 屏幕

23、布局规则;屏幕布局规则; 使用图形,表格,模拟方式显示数据;使用图形,表格,模拟方式显示数据;(3)产生有意义的出错信息;产生有意义的出错信息;(4)多个显示画面,应建立统一格式多个显示画面,应建立统一格式(5)提供明了的标题、标栏及其它提示信息提供明了的标题、标栏及其它提示信息(6)遵循用户习惯遵循用户习惯(7)采用颜色、字符大小、下划线、不同字体等方式强化重要数据采用颜色、字符大小、下划线、不同字体等方式强化重要数据计算机导论软件工程ContentsContents软件危机软件危机 (1.2)计算机导论软件工程6.3.1 6.3.1 程序流程图程序流程图6.3.2 6.3.2 盒图盒图(N

24、-S(N-S图图) )6.3.3 6.3.3 问题分析图问题分析图(PAD)(PAD)6.3.4 6.3.4 判定表判定表6.3.5 6.3.5 判定树判定树6.3.6 6.3.6 过程设计语言过程设计语言(PDL)(PDL)(伪码伪码) )6.3 Tool of Procedure Design计算机导论软件工程6.3.1 6.3.1 程序流程图程序流程图1 1、程序流程图的标准符号、程序流程图的标准符号计算机导论软件工程2 2、程序流程图使用的五种基本控制结构、程序流程图使用的五种基本控制结构: :计算机导论软件工程 3 3、示例、示例计算机导论软件工程4 4、程序流程图的主要缺点、程序流

25、程图的主要缺点(1)(1)程程序序流流程程图图本本质质上上不不是是逐逐步步求求精精的的好好工工具具,它它诱诱使使程程序序员员 过早地考虑程序的控制流程,而不去考虑程序的全局结构。过早地考虑程序的控制流程,而不去考虑程序的全局结构。(2)(2)程程序序流流程程图图中中用用箭箭头头代代表表控控制制流流,因因此此程程序序员员不不受受任任何何约约 束,可以完全不顾结构程序设计的精神,随意转移控制。束,可以完全不顾结构程序设计的精神,随意转移控制。(3)(3)程序流程图不易表示数据结构。程序流程图不易表示数据结构。计算机导论软件工程6.3.2 N6.3.2 N- -S S图图1 1、六种基本控制结构图示

26、:、六种基本控制结构图示:A A调用子程序调用子程序A A计算机导论软件工程2 2、示例、示例计算机导论软件工程2 2、示例、示例计算机导论软件工程3 3、N-SN-S图的嵌套定义图式图的嵌套定义图式计算机导论软件工程4 4、N-SN-S图的特点:图的特点:(1)(1)功能域(即,一个特定控制结构的作用域)明确,可以功能域(即,一个特定控制结构的作用域)明确,可以 从盒图上一眼就看出来。从盒图上一眼就看出来。(2)(2)由于只能从上边进入盒子然后从下面走出盒子,除此之由于只能从上边进入盒子然后从下面走出盒子,除此之 外没有其它的入口和出口,所以盒图限制了任意的控制外没有其它的入口和出口,所以盒

27、图限制了任意的控制 转移,保证程序有良好的结构。转移,保证程序有良好的结构。(3)(3)很容易确定局部和全程数据的作用域。很容易确定局部和全程数据的作用域。(4)(4)很容易表现嵌套关系,也可以表示模块的层次结构。很容易表现嵌套关系,也可以表示模块的层次结构。(5)(5)盒图没有箭头,因此不允许随意转移控制。坚持使用盒盒图没有箭头,因此不允许随意转移控制。坚持使用盒 图作为详细设计的工具,可以使程序员逐步养成用结构图作为详细设计的工具,可以使程序员逐步养成用结构 化的方式思考问题和解决问题的习惯。化的方式思考问题和解决问题的习惯。 计算机导论软件工程6.3.3 6.3.3 问题分析图问题分析图

28、(PAD)(PAD)1 1、PADPAD的六种基本控制结构图式的六种基本控制结构图式defdef定义定义计算机导论软件工程2 2、PADPAD图的基本原理:图的基本原理: PADPAD是是问问题题分分析析图图(Problem Problem Analysis Analysis DiagramDiagram)的的英英文文缩缩写写,自自19731973年年由由日日本本日日立立公公司司发发明明以以后后,已已得得到到一一定定程程度度的的推推广广。它它是是由由程程序序流流程程图图演演化化而而来来,用用二二维维树树形形结结构构的的图图来来表表示示程程序序的的控控制制流流,将将这这种种图图翻翻译译成成程程序

29、序代代码码比比较较容易。容易。 采采用用自自顶顶向向下下、逐逐步步细细化化和和结结构构化化设设计计的的原原则则,力力求求将将模模糊糊的的问问题题解解的的概概念念逐逐步步转转换换为为确确定定的的和和详详尽尽的的过过程程,使之最终可采用计算机直接进行处理。使之最终可采用计算机直接进行处理。计算机导论软件工程3 3、PADPAD描述的示例描述的示例计算机导论软件工程计算机导论软件工程4 4、PADPAD图的主要优点:图的主要优点:(1)(1)使用表示结构化控制结构的使用表示结构化控制结构的PADPAD符号设计出来的程序必然是结构化程序。符号设计出来的程序必然是结构化程序。(2)PAD(2)PAD图图

30、所所描描绘绘的的程程序序结结构构十十分分清清晰晰。图图中中最最左左边边的的竖竖线线是是程程序序的的主主线线,即即第第一一层层结结构构。随随着着程程序序层层次次的的增增加加,PADPAD图图逐逐渐渐向向右右延延伸伸,每每增增加加一一个个层层次次,图形向右扩展一条竖线。图形向右扩展一条竖线。PADPAD图中竖线的总条数就是程序的层次数。图中竖线的总条数就是程序的层次数。(3)(3)用用PADPAD图图表表现现程程序序逻逻辑辑,易易读读、易易懂懂、易易记记。PADPAD图图是是二二维维树树形形结结构构的的图图形形,程程序序从从图图中中最最左左竖竖线线上上端端的的结结点点开开始始执执行行,自自上上而而

31、下下,从从左左向向右右顺顺序序执执行,遍历所有结点。行,遍历所有结点。(4)(4)容容易易将将PADPAD图图转转换换成成高高级级语语言言源源程程序序,有有利利于于提提高高软软件件可可靠靠性性和和软软件件生生产产率。率。(5)(5)既可用于表示程序逻辑,又可用于描绘数据结构。既可用于表示程序逻辑,又可用于描绘数据结构。PADPAD图图的的符符号号支支持持自自顶顶向向下下、逐逐步步求求精精方方法法的的使使用用。开开始始时时设设计计者者可可以以定定义义一一个个抽抽象象的的程程序序,随随着着设设计计工工作作的的深深入入而而使使用用defdef符符号号逐逐步步增增加加细细节节,直直至至完完成详细设计。

32、成详细设计。计算机导论软件工程6.3.4 6.3.4 判定表判定表1 1、问题的提出、问题的提出 当当算算法法中中包包含含多多重重嵌嵌套套的的条条件件选选择择时时,用用程程序序流流程程图图、盒盒图图、PADPAD图图或或后后面面即即将将介介绍绍的的过过程程设设计计语语言言(PDLPDL)都都不不易清楚地描述。易清楚地描述。 然然而而判判定定表表却却能能够够清清晰晰地地表表示示复复杂杂的的条条件件组组合合与与应应做做的的动作之间的对应关系。动作之间的对应关系。计算机导论软件工程2 2、判定表组成、判定表组成各各各各种种种种条条条条件件件件组组组组合合合合的的的的一一一一个个个个矩阵矩阵矩阵矩阵每

33、每每每种种种种条条条条件件件件组组组组合合合合相相相相对对对对应应应应的动作的动作的动作的动作每每每每一一一一列列列列实实实实质质质质上上上上是是是是一一一一条条条条规则规则规则规则所有条件所有条件所有条件所有条件所有动作所有动作所有动作所有动作计算机导论软件工程3 3、例子:计算行李费、例子:计算行李费假假设设某某航航空空公公司司规规定定,乘乘客客可可以以免免费费托托运运重重量量不不超超过过3030公公斤斤的行李。的行李。当行李重量超过当行李重量超过3030公斤时:公斤时:对头等舱的国内乘客超重部分每公斤收费对头等舱的国内乘客超重部分每公斤收费4 4元;元;对其他舱的国内乘客超重部分每公斤收

34、费对其他舱的国内乘客超重部分每公斤收费6 6元;元;对外国乘客超重部分每公斤收费比国内乘客多一倍;对外国乘客超重部分每公斤收费比国内乘客多一倍;对残疾乘客超重部分每公斤收费比正常乘客少一半。对残疾乘客超重部分每公斤收费比正常乘客少一半。 计算机导论软件工程用判定表表示计算行李费算法用判定表表示计算行李费算法计算机导论软件工程6.3.5 6.3.5 判定树判定树 判判定定树树是是判判定定表表的的变变种种,也也能能清清晰晰地地表表示示复复杂杂的的条条件件组组合与应做的动作之间的对应关系。合与应做的动作之间的对应关系。 判判定定树树的的优优点点在在于于,它它的的形形式式简简单单到到不不需需任任何何说

35、说明明,一一眼就可以看出其含义,因此易于掌握和使用。眼就可以看出其含义,因此易于掌握和使用。 计算机导论软件工程用判定树表示计算行李费算法用判定树表示计算行李费算法计算机导论软件工程6.3.6 PDL (Procedure Design Language)6.3.6 PDL (Procedure Design Language)1 1、原理、原理 PDLPDL是是一一种种用用于于描描述述功功能能模模块块的的算算法法设设计计和和加加工工细细节节的语言。它是一种伪码。的语言。它是一种伪码。 PDLPDL具具有有严严格格的的关关键键字字外外语语法法,用用于于定定义义控控制制结结构构和和数数据据结结构

36、构,同同时时它它的的表表示示实实际际操操作作和和条条件件的的内内语语法法可可使使用自然语言的词汇。用自然语言的词汇。计算机导论软件工程2 2、示例、示例: : 拼词检查程序拼词检查程序PROCEDURE PROCEDURE spellcheckspellcheck IS IS BEGINBEGIN split document into single words split document into single words look up words in dictionary look up words in dictionary display words which are not

37、in dictionary display words which are not in dictionary create a new dictionary create a new dictionary END END spellcheckspellcheck计算机导论软件工程2 2、示例、示例: :计算机导论软件工程 3 3、PDLPDL的特点的特点(1)(1)提供全部结构化控制结构、数据说明和模块特征。能对提供全部结构化控制结构、数据说明和模块特征。能对PDLPDL正正 文进行结构分割,使之变得易于理解。文进行结构分割,使之变得易于理解。(2)(2)为了区别关键字,规定关键字一律大写,

38、其它单词一律小写。为了区别关键字,规定关键字一律大写,其它单词一律小写。 或者规定关键字加下划线,或者规定它或者规定关键字加下划线,或者规定它 们为黑体字。们为黑体字。(3)(3)内语法使用自然语言来描述处理特性。内语法比较灵活,只要内语法使用自然语言来描述处理特性。内语法比较灵活,只要 写清楚就可以,不必考虑语法错,以利于人们可把主要精力放写清楚就可以,不必考虑语法错,以利于人们可把主要精力放 在描述算法的逻辑上。在描述算法的逻辑上。(4)(4)有有数数据据说说明明机机制制,包包括括简简单单的的( (如如标标量量和和数数组组) )与与复复杂杂的的( (如如链链表表 和层次结构和层次结构) )

39、的数据结构。的数据结构。(5)(5)有子程序定义与调用机制,用以表达各种方式的接口说明。有子程序定义与调用机制,用以表达各种方式的接口说明。计算机导论软件工程ContentsContents软件危机软件危机 (1.2)计算机导论软件工程1 1、JacksonJackson方法概述方法概述 JacksonJackson方方法法是是一一种种典典型型的的面面向向数数据据结结构构的的分分析析与与设设计计方法。简称方法。简称JSPJSP方法。方法。 JSPJSP方方法法: :信信息息 数数据据结结构构 程程序序结结构构,这这三三步步曲曲减减少了设计决策上的盲目性。少了设计决策上的盲目性。 但但是是,当当

40、把把JSPJSP方方法法用用于于大大系系统统设设计计时时,就就会会出出现现大大量量复复杂杂的的难难以以对对付付的的结结构构冲冲突突。因因此此,M.J.JacksonM.J.Jackson提提出出了了JSDJSD方法,即方法,即JacksonJackson系统开发方法。系统开发方法。6.4 Design Method oriented Data structure计算机导论软件工程2 2、 JSPJSP图图 JSPJSP图图的的本本质质就就是是“ “问问题题应应当当被被分分解解为为可可以以用用三三种种结结构构形式表示的构件的层次结构。形式表示的构件的层次结构。” ” JacksonJackson

41、所所说说的的“ “结结构构形形式式” ”就就是是指指顺顺序序、选选择择和和重重复复,实实际际上上,它它们们就就是是过过程程性性构构造造,并并成成为为结结构构化化程程序序设设计计方方法基础。法基础。 JacksonJackson提出的数据结构表示有三种基本的构造类型提出的数据结构表示有三种基本的构造类型: :计算机导论软件工程 三三种种基基本本结结构构可可以以组组合合,形形成成更更复复杂杂的的结结构构体体系系。如如右右图图所所示示。这这种种数数据据结结构构图图可可以以同同样样方方便便地地应应用用于于输输入入、输出和数据库结构。输出和数据库结构。 计算机导论软件工程3 3、JSPJSP图的例子:信

42、用卡记账图的例子:信用卡记账 信信用用卡卡记记账账系系统统的的输输入入数数据据结结构构是是两两个个实实际际的的账账册册,它它们们对对应应的的两两个输入文件如图所示。个输入文件如图所示。计算机导论软件工程图图 (a) (a) 给出了信用卡记账系统的输出记账报告。给出了信用卡记账系统的输出记账报告。 计算机导论软件工程图图(b) (b) 给给出出了了根根据据输输入入和和输输出出数数据据结结构构的的对对应应关关系系建建立立的的输出文件。输出文件。计算机导论软件工程 从从图图 (b) (b) 所所示示的的输输出出文文件件的的JacksonJackson数数据据结结构构图图所所导导出出的的程序结构如下图

43、所示。程序结构如下图所示。 计算机导论软件工程说明说明 用用JSPJSP图图得得到到的的程程序序或或程程序序结结构构图图,一一般般都都需需要要求求精精和和优优化化。因因为为这这种种图图是是从从输输入入输输出出数数据据结结构构导导出出程程序序结结构构图图,因因此此有有些些中中间间处处理理过过程程在在结结构构图图中中反反映映不不出出来来。在在求求精精过过程程中中,可可以以对对结结构构图图进进行行改改进进和和细细化化,使使之之完完整和易于实现。整和易于实现。计算机导论软件工程4 4、JacksonJackson方法方法(5(5步步) )(1)(1)分分析析并并确确定定输输入入数数据据和和输输出出数数

44、据据的的逻逻辑辑结结构构,并并用用JacksonJackson图图描描绘绘这这些些数据结构。数据结构。(2)(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。找出输入数据结构和输出数据结构中有对应关系的数据单元。所所谓谓有有对对应应关关系系是是指指有有直直接接的的因因果果关关系系,在在程程序序中中可可以以同同时时处处理理的的数数据据单单元元(对对于于重重复复出出现现的的数数据据单单元元必必须须重重复复的的次次序序和和次次数数都都相相同才可能有对应关系)。同才可能有对应关系)。(3)(3)用下述三条规则从描绘数据结构用下述三条规则从描绘数据结构的的JacksonJackson图导出描绘

45、程序结构的图导出描绘程序结构的JacksonJackson图:图: 为为每每对对有有对对应应关关系系的的数数据据单单元元,按按照照它它们们在在数数据据结结构构图图中中的的层层次次在在程程序序结结构构图图的的相相应应层层次次画画一一个个处处理理框框(注注意意,如如果果这这对对数数据据单单元元在在输输入入数数据据结结构构和和输输出出数数据据结结构构中中所所处处的的层层次次不不同同,则则和和它它们们对对应应的的处处理理框框在在程程序序结结构构图图中中所所处处的层次与它们之中在数据结构图中层次低的那个对应);的层次与它们之中在数据结构图中层次低的那个对应); 根根据据输输入入数数据据结结构构中中剩剩余

46、余的的每每个个数数据据单单元元所所处处的的层层次次,在在程程序序结结构构图图的的相应层次分别为它们画上对应的处理框;相应层次分别为它们画上对应的处理框; 根根据据输输出出数数据据结结构构中中剩剩余余的的每每个个数数据据单单元元所所处处的的层层次次,在在程程序序结结构构图图的的相应层次分别为它们画上对应的处理框。相应层次分别为它们画上对应的处理框。 (4)(4)列列出出所所有有操操作作和和条条件件(包包括括分分支支条条件件和和循循环环结结束束条条件件),并并且且把把它它们们分配到程序结构图的适当位置。分配到程序结构图的适当位置。(5)(5)用伪码表示程序。用伪码表示程序。计算机导论软件工程5 5

47、、JSPJSP程序设计的例子程序设计的例子 一一个个正正文文文文件件由由若若干干个个记记录录组组成成,每每个个记记录录是是一一个个字字符符串。串。 要要求求统统计计每每个个记记录录中中空空格格字字符符的的个个数数,以以及及文文件件中中空空格格字字符符的的总总个个数。数。 要要求求的的输输出出数数据据格格式式是是,每每复复制制一一行行输输入入字字符符串串之之后后,另另起起一一行行印印出这个字符串中的空格数,最后印出文件中空格的总个数。出这个字符串中的空格数,最后印出文件中空格的总个数。 计算机导论软件工程(1)(1)用用JacksonJackson图描绘的输入输出数据结构。图描绘的输入输出数据结

48、构。计算机导论软件工程(2)(2)找有对应关系的单元:找有对应关系的单元: 经过程序的处理由正文文件得到输出表格。经过程序的处理由正文文件得到输出表格。 输输出出数数据据总总是是通通过过对对输输入入数数据据的的处处理理而而得得到到的的,因因此此在在输输入入输输出出数数据据结结构构最最高高层层次次的的两两个个单单元元(在在这这个个例例子子中中是是“ “正文文件正文文件” ”和和“ “输出表格输出表格” ”)总是有对应关系的。)总是有对应关系的。 这这一一对对单单元元将将和和程程序序结结构构图图中中最最顶顶层层的的方方框框(代代表表程程序序)相对应。相对应。 找有对应关系找有对应关系“ “字符串字

49、符串” ”和和“ “串信息串信息” ”。 每每处处理理输输入入数数据据中中一一个个“ “字字符符串串” ”之之后后,就就可可以以得得到到输输出出数数据据中中一一个个“ “串串信信息息” ”,它它们们都都是是重重复复出出现现的的数数据据单单元元,而且出现次序和重复次数都完全相同。而且出现次序和重复次数都完全相同。 计算机导论软件工程(3)(3)从数据结构图导出程序结构图。从数据结构图导出程序结构图。 “ “统统 计计 空空 格格 ” ”,它它与与“ “正正文文文文 件件 ” ”和和 “ “输输出出表表格格” ”这这对对最最顶顶层层的的数数据据单元相对应。单元相对应。计算机导论软件工程 接接下下来

50、来还还不不能能立立即即画画与与另另一一对对数数据据单单元元(“ “字字符符串串” ”和和“ “串信息串信息” ”)相对应的处理框。)相对应的处理框。 在在输输出出数数据据结结构构中中“ “串串信信息息” ”的的上上层层还还有有“ “表表格格体体” ”和和“ “空空格格总总数数” ”两两个个数数据据单单元元,在在程程序序结结构构图图的的第第二二层层应应该该有有与这两个单元对应的处理与这两个单元对应的处理框框“程序体程序体” ”和和“ “总数总数” ”。 在在程程序序结结构构图图的的第第三三层层才才是是与与“ “字字符符串串” ”和和“ “串串信信息息” ”相对应的处理相对应的处理框框“处理字符串

51、处理字符串” ”。计算机导论软件工程 在在程程序序结结构构图图的的第第四四层层似似乎乎应应该该是是和和“ “字字符符串串” ”、“ “字字符符” ”及及“ “空空格格数数” ”等等数数据据单单元元对对应应的的处处理理框框“ “印印字字符符串串” ”、“ “分析字符分析字符” ”及及“ “印空格数印空格数” ”,这三个处理是顺序执行的。,这三个处理是顺序执行的。 但但是是,“ “字字符符” ”是是重重复复出出现现的的数数据据单单元元,因因此此“ “分分析析字字符符” ”也应该是重复执行的处理。也应该是重复执行的处理。 改改进进的的JacksonJackson图图规规定定顺顺序序执执行行的的处处理

52、理中中不不允允许许混混有有重重复复执执行行或或选选择择执执行行的的处处理理,所所以以在在“ “分分析析字字符符” ”这这个个处处理理框框上上面又增加了面又增加了 “ “分析字符串分析字符串” ”处理框。处理框。计算机导论软件工程(4)(4)列列出出所所有有操操作作和和条条件件,并并且且把把它它们们分分配配到到程程序序结结构构图图的的适适当位置。当位置。(1 1)停止)停止(2 2)打开文件)打开文件(3 3)关闭文件)关闭文件 (4 4)印出字符串)印出字符串(5 5)印出空格数目)印出空格数目(6 6)印出空格总数)印出空格总数(7 7)sum:=sumsum:=sum1 1 / sum /

53、 sum是保存空格个数的变量是保存空格个数的变量(8 8)totalsumtotalsum:=:=totalsumtotalsumsum/ sum/ totalsumtotalsum保存空格总数保存空格总数(9 9)读入字符串)读入字符串 (1010) sum:=0 sum:=0 (1111)totalsumtotalsum:=0:=0(1212)pointer:=1 /pointer:=1 /指示当前分析的字符在字符串中的位置指示当前分析的字符在字符串中的位置(1313)pointer:=pointerpointer:=pointer1 1 I(1) I(1) 文件结束、文件结束、I(2)

54、I(2) 字符串结束字符串结束 S(3) S(3) 字符是空格字符是空格计算机导论软件工程经经过过简简单单分分析析不不难难把把这这些些操操作作和和条条件件分分配配到到程程序序结结构构图图的的适当位置。适当位置。计算机导论软件工程(5)(5)用伪码表示程序处理过程用伪码表示程序处理过程统计空格统计空格seqseq 打开文件打开文件 读入字符串读入字符串 totalsumtotalsum:= 0:= 0 程序体程序体iteriter until until文件结束文件结束 处理字符串处理字符串seqseq 印字符串印字符串seqseq 印出字符串印出字符串 印字符串印字符串endend sum:=

55、 0 sum:= 0 . .统计空格统计空格seqseq计算机导论软件工程ContentsContents软件危机软件危机 (1.2) 程程序序复复杂杂性性直直接接关关联联到到软软件件开开发发费费用用的的多多少少、可可理理解解性性、开开发发周周期期的的长长短短和和软软件件内内部部潜潜伏伏错错误误的多少。的多少。 计算机导论软件工程1 1、复杂性度量需要满足的假设、复杂性度量需要满足的假设(1)(1)它可以用来计算任何一个程序的复杂性;它可以用来计算任何一个程序的复杂性;(2)(2)对对于于不不合合理理的的程程序序,例例如如对对于于长长度度动动态态增增长长的的程程序序,或或者者对对于于原原则则上

56、上无无法法排排错错的的程程序序,不不应应当当使使用用它它进进行行复复杂性计算;杂性计算;(3)(3)如如果果程程序序中中指指令令条条数数、附附加加存存储储量量、计计算算时时间间增增多多,不会减少程序的复杂性不会减少程序的复杂性。6.5 The Measure of of Program Complexity Degree计算机导论软件工程2 2、代码行度量法、代码行度量法(1)(1)源代码行数度量法基于两个前提:源代码行数度量法基于两个前提: 程序复杂性随着程序规模的增加不均衡地增长;程序复杂性随着程序规模的增加不均衡地增长; 控控制制程程序序规规模模的的方方法法最最好好是是采采用用分分而而治

57、治之之的的办办法法。将一个大程序分解成若干个简单的可理解的程序段。将一个大程序分解成若干个简单的可理解的程序段。计算机导论软件工程(2)(2)方法要点方法要点 方方法法的的基基本本考考虑虑是是统统计计一一个个程程序序模模块块的的源源代代码码行行数数目,并以源代码行数做为程序复杂性的度量。目,并以源代码行数做为程序复杂性的度量。 设设每每行行代代码码的的出出错错率率为为每每100100行行源源程程序序中中可可能能有有的的错误数目。错误数目。 ThayerThayer曾曾指指出出,程程序序出出错错率率的的估估算算范范围围是是从从0.040.047 7之之间间,即即每每100100行行源源程程序序中

58、中可可能能存存在在0.040.047 7个个错错误误。他他还还指指出出,每每行行代代码码的的出出错错率率与与源源程程序序行行数数之之间间不不存存在在简单的线性关系。简单的线性关系。 LipowLipow指指出出,对对于于小小程程序序,每每行行代代码码出出错错率率为为1.31.31.81.8;对对于于大大程程序序,每每行行代代码码的的出出错错率率增增加加到到2.72.73.23.2之之间间,这这只只是是考考虑虑了了程程序序的的可可执执行行部部分分,没没有有包包括括程序中的说明部分。程序中的说明部分。 LipowLipow及及其其他他研研究究者者得得出出一一个个结结论论:对对于于少少于于10010

59、0个个语语句句的的小小程程序序,源源代代码码行行数数与与出出错错率率是是线线性性相相关关的的。随随着程序的增大,出错率以非线性方式增长。着程序的增大,出错率以非线性方式增长。计算机导论软件工程3 3、McCabeMcCabe度量法度量法 McCabeMcCabe度度量量法法,又又称称环环路路复复杂杂性性度度量量,是是一一种种基基于于程序控制流的复杂性度量方法。程序控制流的复杂性度量方法。 它它基基于于一一个个程程序序模模块块的的程程序序图图中中环环路路的的个个数数,因因此此计计算它先要画出程序图(也称流图)。算它先要画出程序图(也称流图)。 程程序序图图是是退退化化的的程程序序流流程程图图。流

60、流程程图图中中每每个个处处理理都都退化成一个结点,流线变成连接不同结点的有向弧。退化成一个结点,流线变成连接不同结点的有向弧。计算机导论软件工程增加虚线是网络保增加虚线是网络保增加虚线是网络保增加虚线是网络保证程序图是强连通证程序图是强连通证程序图是强连通证程序图是强连通计算机导论软件工程 程序图仅描述程序内部的控制流程,完全不表现对数据的具程序图仅描述程序内部的控制流程,完全不表现对数据的具程序图仅描述程序内部的控制流程,完全不表现对数据的具程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作,以及分支和循环的具体条件。体操作,以及分支和循环的具体条件。体操作,以及分支和循环的具体条件

61、。体操作,以及分支和循环的具体条件。 计算环路复杂性的方法:根据图论,在一个强连通的有向图计算环路复杂性的方法:根据图论,在一个强连通的有向图计算环路复杂性的方法:根据图论,在一个强连通的有向图计算环路复杂性的方法:根据图论,在一个强连通的有向图G G中,环的个数由以下公式给出:中,环的个数由以下公式给出:中,环的个数由以下公式给出:中,环的个数由以下公式给出: V V( (G G) )mmn n2 2其中,其中,其中,其中,V V( (G G) )是有向图是有向图是有向图是有向图G G中环路个数,中环路个数,中环路个数,中环路个数,mm是图是图是图是图G G中弧数(边数),中弧数(边数),中

62、弧数(边数),中弧数(边数),n n是图是图是图是图G G中结点数。中结点数。中结点数。中结点数。 在例示中,结点数在例示中,结点数在例示中,结点数在例示中,结点数n n1111,弧数,弧数,弧数,弧数mm12(12(不包含增加的不包含增加的不包含增加的不包含增加的1 1条条条条) ) V(G) V(G)mmn n2 2121211112 23. 3. 对于平面图而言,环路复杂度等于强连通的程序图在平面上对于平面图而言,环路复杂度等于强连通的程序图在平面上对于平面图而言,环路复杂度等于强连通的程序图在平面上对于平面图而言,环路复杂度等于强连通的程序图在平面上围成的区域的个数。围成的区域的个数。

63、围成的区域的个数。围成的区域的个数。(1)McCabe(1)McCabe度量法原理度量法原理计算机导论软件工程(2)(2)几点说明几点说明几点说明几点说明 环路复杂度取决于程序控制结构的复杂度。当程序的环路复杂度取决于程序控制结构的复杂度。当程序的环路复杂度取决于程序控制结构的复杂度。当程序的环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环数目增加时其复杂度也增加。环路复杂度分支数目或循环数目增加时其复杂度也增加。环路复杂度分支数目或循环数目增加时其复杂度也增加。环路复杂度分支数目或循环数目增加时其复杂度也增加。环路复杂度与程序中覆盖的路径条数有关。与程序中覆盖的路径条数有关。与程

64、序中覆盖的路径条数有关。与程序中覆盖的路径条数有关。 McCabeMcCabe建议,对于复杂度超过建议,对于复杂度超过建议,对于复杂度超过建议,对于复杂度超过1010的程序,应分成几个的程序,应分成几个的程序,应分成几个的程序,应分成几个小程序,以减少程序中的错误。小程序,以减少程序中的错误。小程序,以减少程序中的错误。小程序,以减少程序中的错误。 McCabeMcCabe环路复杂度隐含的前提是:错误与程序的判定环路复杂度隐含的前提是:错误与程序的判定环路复杂度隐含的前提是:错误与程序的判定环路复杂度隐含的前提是:错误与程序的判定加上例行子程序的调用数目成正比。加工复杂性、数据结加上例行子程序

65、的调用数目成正比。加工复杂性、数据结加上例行子程序的调用数目成正比。加工复杂性、数据结加上例行子程序的调用数目成正比。加工复杂性、数据结构、录入与打乱输入卡片的错误可以忽略不计。构、录入与打乱输入卡片的错误可以忽略不计。构、录入与打乱输入卡片的错误可以忽略不计。构、录入与打乱输入卡片的错误可以忽略不计。计算机导论软件工程(3)McCabe(3)McCabe度量法的缺点度量法的缺点 对于不同种类的控制流的复杂性不能区分。对于不同种类的控制流的复杂性不能区分。 简单简单IFIF语句与循环语句的复杂性同等看待。语句与循环语句的复杂性同等看待。 嵌套嵌套IFIF语句与简单语句与简单CASECASE语句

66、的复杂性是一样的。语句的复杂性是一样的。 模块间接口当成一个简单分支一样处理。模块间接口当成一个简单分支一样处理。 一个具有一个具有10001000行的顺序程序与一行语句的复杂性相同。行的顺序程序与一行语句的复杂性相同。计算机导论软件工程4 4、HalsteadHalstead的软件科学的软件科学 HalsteadHalstead软软件件科科学学研研究究确确定定计计算算机机软软件件开开发发中中的的一一些定量规律,它采用以下一组基本的度量值。些定量规律,它采用以下一组基本的度量值。 这这些些度度量量值值通通常常在在程程序序产产生生之之后后得得出出,或或者者在在设设计完成之后估算出。计完成之后估算

67、出。 计算机导论软件工程(1)(1)程序长度程序长度( (预测的预测的HalsteadHalstead长度长度) ) 令令n n1 1表示程序中不同运算符表示程序中不同运算符( (包括保留字包括保留字) )的个数,的个数,n n2 2表示程表示程序中不同运算对象的个数(操作数),序中不同运算对象的个数(操作数),H H表示表示“ “程序长度的预程序长度的预测值测值” ”,则有,则有 H=n1H=n1 loglog2 2 n n1 1+n+n2 2 log log2 2n n2 2 定义中的运算符包括:定义中的运算符包括: 算术运算符算术运算符 赋值符赋值符(=(=或或:=):=) 逻辑运算符逻

68、辑运算符 分界符分界符( (,或;或,或;或:) :) 关系运算符关系运算符 括号运算符括号运算符 子程序调用符子程序调用符 数组操作符数组操作符 循环操作符等。循环操作符等。 运算对象包括变量名和常数。运算对象包括变量名和常数。计算机导论软件工程(2)(2)实际的程序长度实际的程序长度 设设N1N1为程序中实际出现的运算符总个数,为程序中实际出现的运算符总个数,N2N2为程序中为程序中实际出现的运算对象总个数,实际出现的运算对象总个数,N N为程序长度,则有为程序长度,则有 N = N1 + N2N = N1 + N2 多次验证表明:预测长度多次验证表明:预测长度H H与实际长度与实际长度N

69、 N非常接近。非常接近。(3)(3)程序的词汇表程序的词汇表 HalsteadHalstead定义程序的词汇表为不同的运算符种类数定义程序的词汇表为不同的运算符种类数n1n1和不同的运算对象种类数和不同的运算对象种类数n2n2的总和。若令的总和。若令n n为程序的词汇为程序的词汇表,则有表,则有 n = n1+n2n = n1+n2计算机导论软件工程(4)(4)程序量程序量 程序量程序量 V V 可用下式得到可用下式得到 V = N V = N log log2 2n n 它表明了程序在词汇上的复杂性。其最小值为它表明了程序在词汇上的复杂性。其最小值为 V* = (2+nV* = (2+n2

70、2*) *) log log2 2(2+n(2+n2 2*)V*)V 这这里里,2 2表表明明程程序序中中至至少少有有两两个个运运算算符符:赋赋值值符符 = = 和和函数调用符函数调用符 f ( ) f ( ) ,n n2 2* *表示输入输出变量个数。表示输入输出变量个数。计算机导论软件工程 (5)(5)程序量比率程序量比率 ( (语言的抽象级别语言的抽象级别) ) L = V* / V L = V* / V 或或 L = (2 / n1)L = (2 / n1) (n2 / N2)(n2 / N2) 它表明了一个程序的最紧凑形式的程序量与实际它表明了一个程序的最紧凑形式的程序量与实际程序量

71、之比,反映了程序的效率。其倒数程序量之比,反映了程序的效率。其倒数D = 1 / LD = 1 / L 表明了实现算法的困难程度。表明了实现算法的困难程度。计算机导论软件工程(6)(6)程序员工作量程序员工作量 E = V / L E = V / L (7)(7)程序的潜在错误程序的潜在错误 HalsteadHalstead度量可以用来预测程序中的错误。预测度量可以用来预测程序中的错误。预测公式为公式为 B = (N1+N2)B = (N1+N2) log2(n1+n2) / 3000log2(n1+n2) / 3000 B B为该程序的错误数。它表明程序中可能存在的为该程序的错误数。它表明程

72、序中可能存在的差错差错 B B 应与程序量应与程序量V V成正比。成正比。 计算机导论软件工程(8)Halstead(8)Halstead的重要结论的重要结论 程程序序的的实实际际HalsteadHalstead长长度度N N可可以以由由词词汇汇表表n n算算出出。即即使使程程序序还还未未编编制制完完成成,也也能能预预先先算算出出程程序序的的实实际际HalsteadHalstead长长度度N N,虽虽然然它它没没有有明明确确指指出出程程序序中中到到底底有有多多少少个个语语句句。这这个个结结论论非非常常有有用用。经经过过多多次次验验证证,预预测测的的HalsteadHalstead长长度度与实际

73、的与实际的HalsteadHalstead长度是非常接近的。长度是非常接近的。计算机导论软件工程(9)Halstead(9)Halstead度量的缺点度量的缺点 忽忽视视了了嵌嵌套套结结构构( (嵌嵌套套的的循循环环语语句句、嵌嵌套套IFIF语语句句、括括号号结结构构等等) )。一一般般地地,运运算算符符的的嵌嵌套套序序列列,总总比比具具有有相相同同数数量量的的运运算算符符和和运运算算对对象象的的非非嵌嵌套套序序列列要要复复杂杂得得多。解决的办法是对嵌套结果乘上一个嵌套因子。多。解决的办法是对嵌套结果乘上一个嵌套因子。 在在允允许许混混合合运运算算的的语语言言中中,每每种种运运算算符符与与它它

74、的的运运算算对象相关。对象相关。计算机导论软件工程ContentsContents软件危机软件危机 (1.2)计算机导论软件工程(1)(1)详详细细设设计计的的任任务务是是设设计计出出程程序序的的“ “蓝蓝图图” ”,并并达达到到:“ “可可 读性好、容易理解、容易测试、容易修改和维护读性好、容易理解、容易测试、容易修改和维护” ”的目标。的目标。(2)(2)结构程序设计技术是实现上述目标的基本保证。结构程序设计技术是实现上述目标的基本保证。(3)(3)人机界面设计必须引起重视,是一个迭代过程。人机界面设计必须引起重视,是一个迭代过程。(4)(4)过程设计在数据设计、总统设计(体系结构设计、接

75、过程设计在数据设计、总统设计(体系结构设计、接 口设计)之后。口设计)之后。(5)(5)对有明显层次结构的应用,可采用面向数据结构的设计对有明显层次结构的应用,可采用面向数据结构的设计 方法(方法(JacksonJackson方法)。方法)。(6)(6)程序复杂度程序复杂度McCabeMcCabe方法原理。方法原理。(7)(7)程序复杂性直接关联到软件开发费用的多少、可理解性、程序复杂性直接关联到软件开发费用的多少、可理解性、 开发周期的长短和软件内部潜伏错误的多少。开发周期的长短和软件内部潜伏错误的多少。 6.6 Summary详细设计计算机导论软件工程 作业作业 分分别别设设计计等等价价的的结结构构化化程程序序(用用N-SN-S图图和和PADPAD图图表表示示),并计算它们的并计算它们的McCabeMcCabe复杂性。复杂性。计算机导论软件工程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号