版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VocabularyDetails细节gramming结构化程序设计Human-computerInterface人机界面Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.软件工程CH6DetailsdesignNantongUniversityEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.主讲人:程显毅软件工程可行性分析:解决“为什么要做”软件需求:解决“做什么”软件设计:解决“怎么做”软件设计的任务Evaluationonly.映射CreatedwithAspose.Slidesfor.NET3.5ClientProfile.问题结构(软件需求)软件结构Copyright2004-2011AsposePtyLtd.从软件需求规格说明书出发,形成软件的具体设计方案。计算机导论软件工程这个项目怎么做?Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.这是总体设计和详细设计的任务要好好学习啦!计算机导论软件工程软件设计分为两个阶段:
总体设计(概要设计、系统设计):
确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。关注的是软件结构,主要面向用户。(1)软件结构设计(2)数据设计Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.
详细设计(技术设计):
确定模块内部的算法和数据结构Copyright2004-2011AsposePtyLtd.,产生描述各模块程序过程的详细文档。关注的是系统的具体实现方法,主要面向开发人员。(3)人机界面设计(4)过程设计
计算机导论软件工程Contents6.1Sgramming6.2Human-computerInterfaceDesignStructuredprogrammingEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.6.3ToolofProcedureDesign采用自顶向下逐步求精的设6.4DesignMethodorientedDatastructureCopyright2004-2011AsposePtyLtd.计方法和单入口单出口的控制结构。6.5TheMeasure软件危机ofProgramComplexityDegree(1.2)6.6Summary计算机导论软件工程6.1Sgramming(1)Sgramming发展历史1965年,E.W.Dijkstra在IFIP(国际信息处理联合会)会议上提出“可以从高级语言中取消GOTO语言”、“程序的质量与程序中所包含的GOTO语句的数量成反比”。但是当时并未引起很大反响。1966何单入口单出口的程序,这个结论奠定了结构程序设计的理论基础。这Evaluationonly.年Bohm和Jacopini证明了,只用三种基本的控制结构就能实现任何单入口单出口的程序,这个结论奠定了结构程序设计的理论基础。这Evaluationonly.三种基本的控制结构是“顺序”、“选择”、“循环”。harmful”制结构写程序。经过讨论人们认识到,不是简单地去掉再次建议从一切高级语言中取消Copyright2004-2011AsposePtyLtd.GOTO语句,只使用三种基本控GOTO语句的问题,而是要创立一种新的程序设计思想、方法和风格,以显著地提高软件生CreatedwithAspose.Slidesfor.NET3.5ClientProfile.1968年Dijkstra在ACM通讯上发表了短文“GOTOstatementconsidered产率和降低软件维护代价。1971构程序设计技术(以及主程序员组),随后在美国宇航局空间实验室飞行模拟系统的设计中,结构程序设计技术(也采用了主程序员组的形式)年IBM公司在纽约时报信息库管理系统的设计中成功地使用了结构程序设计技术(以及主程序员组),随后在美国宇航局空间实验室飞行模拟系统的设计中,结构程序设计技术(也采用了主程序员组的形式)再次获得圆满成功。计算机导论软件工程(2)三种基本的控制结构1966年Bohm和Jacopini证明了,只用三种基本的控制结构就能实现任何单入口单出口的程序,这个结论奠定了结构程序设计的理论基础。这三种基本的控制结构是“顺序”、“选择”、“循环”。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.FACopyright2004-2011AsposePtyLtd.expexpTexp或BAATBFAa.顺序b.if-then-else选择c.do-while循环计算机导论软件工程虽然从理论上说只用上述三种基本控制结构就可以实现任何单入口单出口的程序,但是为了实际使用方便起见,常常还允许使用DO-UNTIL和DO-CASE两种控制结构,其流程图分别为:AEvaluationonly.expCreatedwithAspose.Slidesfor.NET3.5ClientProfile.expCopyright2004-2011AsposePtyLtd.FCase1Case2CasenTDo-until循环多分支结构计算机导论软件工程常用以上五种基本构造,但是在遇到多层嵌套循环时,如果每层只允许一个出口,势必影响退出时的效率。所以需要立即从循环(甚至嵌套的循环)中转移出来,如果允许使用BREAK,则不仅方便而且会使效率提高很多。BREAK语句实质上是受限制的GOTO语句,用于转移到循环结构后面的语句。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程顺序经典If-then-else型分支扩展Evaluationonly.Do-while型循环修Do-case型多分支CreatedwithAspose.Slidesfor.NET3.5ClientProfile.正Copyright2004-2011AsposePtyLtd.Do-until型循环Break结构计算机导论软件工程(3)Sgramming特征①使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。②选用的控制结构只准许有一个入口和一个出口。③复杂结构应该用基本控制结构进行组合嵌套来实现。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.严格控制GOTO语句。Copyright2004-2011AsposePtyLtd.计算机导论软件工程(3)怎么判断一个程序是否为结构化的?如果对流程图中每一构件用“边框”圈起来,边界之间不出现交叉,则说明所有构件都为单入口单出口,则称此程序为结构化程序。startstartF1TFTEvaluationonly.1ABABCreatedwithAspose.Slidesfor.NET3.5ClientProfile.FTFTTFT23FCopyright2004-2011AsposePtyLtd.23CDECDDEstopstop非结构化重写D结构化计算机导论软件工程(4)自顶向下,逐步求精方法的优点①符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率。②用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程Evaluationonly.序容易阅读和理解。测试和集成。Copyright2004-2011AsposePtyLtd.④有利于设计的分工和组织工作。CreatedwithAspose.Slidesfor.NET3.5ClientProfile.③在同一层的节点上的细化工作相互独立。有利于编码、计算机导论软件工程Contents6.1Sgramming软件是否成功,不是由技术专家使用专业的标准来评判,而是由用户来评判,由用户是否认可、是否喜欢来6.2Human-computerInterfaceDesignEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.6.3ToolofProcedureDesign评判。HID的设计质量,6.4DesignMethodorientedDatastructureCopyright2004-2011AsposePtyLtd.直接影响用户对软件的评价。6.5TheMeasure软件危机ofProgramComplexityDegree(1.2)6.6Summary计算机导论软件工程6.2Human-computerInterfaceDesign6.2.0HID基本概念(1)用户的特性:①用户是懒惰的。②用户是笨的。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.③用户是容易出错的。④用户是健忘的。Copyright2004-2011AsposePtyLtd.⑤用户的注意力很容易涣散。⑥用户的脾气不好。计算机导论软件工程(2)用户友好的概念①用户友好性一般属软件的性能,它独立于所有具体功能,却影响着所有功能的重用性。②用户友好性应体现在:易学习性、可扩展性、健壮性、可操作性。③用户友好性的根本目的是为了软件可重用性、可维护性。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.(3)用户对计算机系统的要求让用户灵活地使用Copyright2004-2011AsposePtyLtd.适应不同类型用户系统的行为及效果对用户透明用户对系统的期望和态度提供联机帮助功能人机交互尽可能和人际通信相似计算机导论软件工程(4)用户技能方面的使用需求应让系统去适应用户使用易于理解、掌握的准自然语言一致性的系统设计用户对系统的期望和态度能通过系统学习系统提供演示及范例(5)用户习性方面的使用需求Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.系统应让用户有耐心系统应很好地对付人的易犯错误Copyright2004-2011AsposePtyLtd.系统应对不同用户提供不同交互方式(6)用户经验、知识方面的使用需求系统应能让未经专门训练的用户使用系统能对不同经验用户做出不同反应提供同一系统的一致性,建立标准化人-机界面系统必须适应用户在应用领域的知识变化,提供动态的自适应的设计计算机导论软件工程6.2.1HID遇到的问题1、系统响应时间(不是越短越好,与任务有关)2、用户帮助设施(什么时候帮助、怎样请求帮助、怎样组织帮助信息3、出错信息处理(恢复建议、必要的声音)4、命令交互(必须的,热键)Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程6.2.2HID过程创建设计模式实现原型Evaluationonly.用户评价CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.N满意修改设计模式Y设计结束计算机导论软件工程6.2.3HID指南1、界面的设计原则(1)分析用户类型(2)应用程序和界面分离(3)一致性(在一个界面^D表示复制图像,在另一个界面^D表示删除图像,用户就会迷茫)Evaluationonly.(4)尽量减少用户工作(命令的难度,忘记命令怎么办)(6)出错处理和帮助功能Copyright2004-2011AsposePtyLtd.①信息应该用用户可以理解的术语描述出错信息;②提供从错误中恢复的建设性意见;③应该指出错误可能导致哪些负面后果;④应该伴随着听觉和视觉的提示;⑤不能指责用户;(7)增加可视化图形表示CreatedwithAspose.Slidesfor.NET3.5ClientProfile.(5)提供反馈计算机导论软件工程2、HELP系统设计(1)帮助方式:操作指南文档(植入系统、未植入系统)基于帮助文件的要求性帮助(命令级帮助)说明性帮助嵌入系统的要求性帮助Evaluationonly.嵌入培训功能的智能帮助系统(2)要解决的问题Copyright2004-2011AsposePtyLtd.什么时候提供帮助?(任何时候、特定环境)哪些功能提供帮助?(全部、部分)怎样请求帮助?(特殊功能建F1,HELP命令,HILP菜单)怎样显示帮助?(图形、声音、文字)怎样返回到正常交互状态?(功能键,按钮)怎样组织帮助?(平面,层次,超文本结构)提供多少帮助?(翻译、说明、实例)CreatedwithAspose.Slidesfor.NET3.5ClientProfile.计算机导论软件工程3、一般的交互方式设计(1)菜单①按显示形象分类:正文菜单图标菜单正文图标混合菜单②按屏幕位置和操作风格分类固定Evaluationonly.:CreatedwithAspose.Slidesfor.NET3.5ClientProfile.浮动下拉式Copyright2004-2011AsposePtyLtd.嵌入式计算机导论软件工程(2)对话①对话形式:必须回答式:需要用户的确定认可或参数无需回答式:只显示系统信息警告式:一般为出错提示②对话实现方式:标准对话:一般提示对话方式定做式对话:按实际要求设定Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.(3)功能键(4)图符界面Copyright2004-2011AsposePtyLtd.(5)填表界面(6)命令语言界面(7)查询语言界面(8)自然语言界面计算机导论软件工程4、控制界面的设计(1)用控制对话选择操作命令(2)用菜单界面进行控制(3)用功能键定义操作命令(4)用图标表示对象或命令Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程的层次与它们之中在数据结构图中层次低的那个对应);Slidesfor.标准对话:一般提示对话方式嵌入系统的要求性帮助Evaluationonly.Copyright2004-2011AsposePtyLtd.CreatedwithAspose.Copyright2004-2011AsposePtyLtd.必须回答式:需要用户的确定认可或参数5ClientProfile5.5ClientProfile5.文进行结构分割,使之变得易于理解。Copyright2004-2011AsposePtyLtd.5ClientProfile5.提供多少帮助?(翻译、说明、实例)Copyright2004-2011AsposePtyLtd.5、数据输入界面设计(1)减少用户的输入动作(下拉列表);(2)保持显示数据和输入数据一致性;(3)明确输入(4)明确取消(5)确认删除(6)提供反馈(7)允许编辑(8)提供复原(Undo)(10)提示输入的范围Copyright2004-2011AsposePtyLtd.Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.(9)自由格式计算机导论软件工程6、数据显示界面设计(1)只显示必要的数据(2)不要用数据淹没用户:显示出的数据应与用户执行的任务有关;每一屏数据的数量不应超过整个屏幕面积的30%;屏幕布局规则;使用图形,表格,模拟方式显示数据;(3)产生有意义的出错信息;Evaluationonly.(4)多个显示画面,应建立统一格式(6)(7)遵循用户习惯采用颜色、字符大小、下划线、不同字体等方式强化重要数据Copyright2004-2011AsposePtyLtd.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.(5)提供明了的标题、标栏及其它提示信息计算机导论软件工程Contents6.1Sgramming6.2Human-computerInterfaceDesignEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.6.3ToolofProcedureDesign6.4DesignMethodorientedDatastructureCopyright2004-2011AsposePtyLtd.6.5TheMeasure软件危机ofProgramComplexityDegree(1.2)6.6Summary计算机导论软件工程6.3ToolofProcedureDesign6.3.1程序流程图6.3.2盒图(N-S图)6.3.3问题分析图Evaluationonly.(PAD)CreatedwithAspose.Slidesfor.NET3.5ClientProfile.6.3.4判定表Copyright2004-2011AsposePtyLtd.6.3.5判定树6.3.6过程设计语言(PDL)(伪码)计算机导论软件工程6.3.1程序流程图1、程序流程图的标准符号Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程2、程序流程图使用的五种基本控制结构:Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程3、示例Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程4、程序流程图的主要缺点(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。(2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.(3)程序流程图不易表示数据结构。Copyright2004-2011AsposePtyLtd.计算机导论软件工程6.3.2N-S图1、六种基本控制结构图示:Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.A⑥调用子程序A计算机导论软件工程2、示例Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程2、示例Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程3、N-S图的嵌套定义图式Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程4、N-S图的特点:(1)功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。(2)由于只能从上边进入盒子然后从下面走出盒子,除此之外没有其它的入口和出口,所以盒图限制了任意的控制转移,保证程序有良好的结构。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.(3)很容易确定局部和全程数据的作用域。(4)很容易表现嵌套关系,也可以表示模块的层次结构。Copyright2004-2011AsposePtyLtd.(5)盒图没有箭头,因此不允许随意转移控制。坚持使用盒图作为详细设计的工具,可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。计算机导论软件工程6.3.3问题分析图(PAD)1、PAD的六种基本控制结构图式Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.def⑥定义计算机导论软件工程2、PAD图的基本原理:PAD是问题分析图(ProblemAnalysisDiagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。它是由程序流程图演化而来,用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较采用自顶向下、逐步细化和结构化设计的原则,力求Evaluationonly.容易。采用自顶向下、逐步细化和结构化设计的原则,力求Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.将模糊的问题解的概念逐步转换为确定的和详尽的过程,使之最终可采用计算机直接进行处理。Copyright2004-2011AsposePtyLtd.计算机导论软件工程3、PAD描述的示例Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程4、PAD图的主要优点:(1)使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。(2)PAD图所描绘的程序结构十分清晰。图中最左边的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。(3)用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.(4)率。容易将PAD图转换成高级语言源程序,有利于提高软件可靠性和软件生产(5)既可用于表示程序逻辑,又可用于描绘数据结构。Copyright2004-2011AsposePtyLtd.PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。计算机导论软件工程6.3.4判定表1、问题的提出当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。然而判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程2、判定表组成各种条件组合的一个每一列实质上是一条规则矩阵所有条件Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.所有动作每种条件组合相对应的动作计算机导论软件工程3、例子:计算行李费假设某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量超过30公斤时:Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.对头等舱的国内乘客超重部分每公斤收费4元;对其他舱的国内乘客超重部分每公斤收费Copyright2004-2011AsposePtyLtd.6元;对外国乘客超重部分每公斤收费比国内乘客多一倍;对残疾乘客超重部分每公斤收费比正常乘客少一半。计算机导论软件工程用判定表表示计算行李费算法12TT3TF4TT56789国内乘客头等仓残疾乘客TFFTFFFFTTFFTEvaluationonly.FFTTFCreatedwithAspose.Slidesfor.NET3.5ClientProfile.行李重量W≤30TFFFFFFFF免费(WCopyright2004-2011AsposePtyLtd.-30)×2×(W-30)×3(W-30)×4(W-30)×6(W-30)×8(W-30)×12××××××××计算机导论软件工程6.3.5判定树判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。判定树的优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程用判定树表示计算行李费算法Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程6.3.6PDL(ProcedureDesignLanguage)1、原理PDL是一种用于描述功能模块的算法设计和加工细节的语言。它是一种伪码。PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.用自然语言的词汇。Copyright2004-2011AsposePtyLtd.计算机导论软件工程2、示例:拼词检查程序PROCEDUREspellcheckISBEGINosinglewordslookupwordsindictionarydisplaywordswhicharenotindictionarycreateanewdictionaryEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.ENDspellcheckCopyright2004-2011AsposePtyLtd.计算机导论软件工程2、示例:Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程3、PDL的特点(1)提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。(2)为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。(3)内语法使用自然语言来描述处理特性。内语法比较灵活,只要Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。Copyright2004-2011AsposePtyLtd.(4)有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。(5)有子程序定义与调用机制,用以表达各种方式的接口说明。计算机导论软件工程Contents6.1Sgramming6.2Human-computerInterfaceDesignEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.6.3ToolofProcedureDesign6.4DesignMethodorientedDatastructureCopyright2004-2011AsposePtyLtd.6.5TheMeasure软件危机ofProgramComplexityDegree(1.2)6.6Summary计算机导论软件工程6.4DesignMethodorientedDatastructure1、Jackson方法概述Jackson方法是一种典型的面向数据结构的分析与设计方法。简称JSP方法。JSP方法:信息→数据结构→程序结构,这三步曲减少了设计决策上的盲目性。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.但是,当把JSP方法用于大系统设计时,就会出现大量复杂的难以对付的结构冲突。因此,M.J.Jackson提出了JSD方法,即Copyright2004-2011AsposePtyLtd.Jackson系统开发方法。计算机导论软件工程2、JSP图JSP图的本质就是“问题应当被分解为可以用三种结构形式表示的构件的层次结构。”Jackson所说的“结构形式”就是指顺序、选择和重复,实际上,它们就是过程性构造,并成为结构化程序设计方法基础。Evaluationonly.Jackson提出的数据结构表示有三种基本的构造类型:CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程三种基本结构可以组合,形成更复杂的结构体系。如右图所示。这种数据结构图可以同样方便地应用于输入、输出和数据库结构。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程3、JSP图的例子:信用卡记账信用卡记账系统的输入数据结构是两个实际的账册,它们对应的两个输入文件如图所示。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.图(a)给出了信用卡记账系统的输出记账报告。计算机导论软件工程Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.图(b)给出了根据输入和输出数据结构的对应关系建立的输出文件。计算机导论软件工程从图(b)所示的输出文件的Jackson数据结构图所导出的程序结构如下图所示。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程说明用JSP图得到的程序或程序结构图,一般都需要求精和优化。因为这种图是从输入输出数据结构导出程序结构图,因此有些中间处理过程在结构图中反映不出来。在求精过程中,可以对结构图进行改进和细化,使之完Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.整和易于实现。Copyright2004-2011AsposePtyLtd.计算机导论软件工程所谓有对应关系是指有直接的因果关系,在4、Jackson方法(5步)程序中可以同时处理的数据单元(对于重复出现的数据单元必须重复的次序和次数都相同才可能有对应关系)。(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。(3)用下述三条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:①为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.结构图的相应层次画一个处理框(注意,如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应);Copyright2004-2011AsposePtyLtd.②根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框;③根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。(4)列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。(5)用伪码表示程序。计算机导论软件工程5、JSP程序设计的例子一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程(1)用Jackson图描绘的输入/输出数据结构。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程(2)找有对应关系的单元:经过程序的处理由正文文件得到输出表格。输出数据总是通过对输入数据的处理而得到的,因此在输入/输出数据结构最高层次的两个单元(在这个例子中是“正文文件”和“输出表格”)总是有对应关系的。这一对单元将和程序结构图中最顶层的方框(代表程序)Evaluationonly.相对应。CreatedwithAspose.Slidesfor.NET3.5ClientProfile.找有对应关系“字符串”和“串信息”。每处理输入数据中一个“字符串”之后,就可以得到输Copyright2004-2011AsposePtyLtd.出数据中一个“串信息”,它们都是重复出现的数据单元,而且出现次序和重复次数都完全相同。计算机导论软件工程(3)从数据结构图导出程序结构图。“统计空格”,它与“正文文件”和“输出Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.表格”这对最顶层的数据单Copyright2004-2011AsposePtyLtd.元相对应。计算机导论软件工程接下来还不能立即画与另一对数据单元(“字符串”和“串信息”)相对应的处理框。在输出数据结构中“串信息”的上层还有“表格体”和“空格总数”两个数据单元,在程序结构图的第二层应该有Evaluationonly.与这两个单元对应的处理框——“程序体”和“总数”。CreatedwithAspose.Slidesfor.NET3.5ClientProfile.在程序结构图的第三层才是与“字符串”和“串信息”相对应的处理框Copyright2004-2011AsposePtyLtd.——“处理字符串”。计算机导论软件工程在程序结构图的第四层似乎应该是和“字符串”、“字符”及“空格数”等数据单元对应的处理框“印字符串”、“分析字符”及“印空格数”,这三个处理是顺序执行的。但是,“字符”是重复出现的数据单元,因此“分析字Evaluationonly.符”也应该是重复执行的处理。CreatedwithAspose.Slidesfor.NET3.5ClientProfile.改进的Jackson图规定顺序执行的处理中不允许混有重复执行或选择执行的处理,所以在“分析字符”这个处理框上Copyright2004-2011AsposePtyLtd.面又增加了“分析字符串”处理框。计算机导论软件工程(4)列出所有操作和条件,并且把它们分配到程序结构图的适当位置。(1)停止(2)打开文件(3)关闭文件(4)印出字符串(5)印出空格数目(6)印出空格总数(7)sum:=sum+1//sum是保存空格个数的变量(8)totalsum:=totalsum+sum//totalsum保存空格总数(9)读入字符串Evaluationonly.(10)sum:=0CreatedwithAspose.Slidesfor.NET3.5ClientProfile.(11)totalsum:=0(12)pointer:=1//Copyright2004-2011AsposePtyLtd.指示当前分析的字符在字符串中的位置(13)pointer:=pointer+1I(1)文件结束、I(2)字符串结束S(3)字符是空格计算机导论软件工程经过简单分析不难把这些操作和条件分配到程序结构图的适当位置。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程(5)用伪码表示程序处理过程统计空格seq打开文件读入字符串totalsum:=0程序体iteruntil文件结束Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.处理字符串seq印字符串Copyright2004-2011AsposePtyLtd.seq印出字符串印字符串endsum:=0...统计空格seq计算机导论软件工程Contents程序复杂性6.1Sgramming直接关联到软件开发费用的多少、6.2Human-computerInterfaceDesign可理解性、开发周期的长短和软件内部潜伏错误Evaluationonly.6.3ToolofProcedureDesignCreatedwithAspose.Slidesfor.NET3.5ClientProfile.的多少。6.4DesignMethodorientedDatastructureCopyright2004-2011AsposePtyLtd.6.5TheMeasure软件危机ofProgramComplexityDegree(1.2)6.6Summary计算机导论软件工程6.5TheMeasureofProgramComplexityDegree1、复杂性度量需要满足的假设(1)它可以用来计算任何一个程序的复杂性;Evaluationonly.(2)对于不合理的程序,例如对于长度动态增长的程序,CreatedwithAspose.Slidesfor.NET3.5ClientProfile.或者对于原则上无法排错的程序,不应当使用它进行复杂性计算;Copyright2004-2011AsposePtyLtd.(3)如果程序中指令条数、附加存储量、计算时间增多,不会减少程序的复杂性。计算机导论软件工程2、代码行度量法(1)源代码行数度量法基于两个前提:①程序复杂性随着程序规模的增加不均衡地增长;②控制程序规模的方法最好是采用分而治之的办法。Evaluationonly.将一个大程序分解成若干个简单的可理解的程序段。CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程(2)方法要点方法的基本考虑是统计一个程序模块的源代码行数目,并以源代码行数做为程序复杂性的度量。设每行代码的出错率为每100行源程序中可能有的错误数目。Thayer曾指出,程序出错率的估算范围是从0.04%~7%之间,即每Evaluationonly.100行源程序中可能存在0.04~7个错CreatedwithAspose.Slidesfor.NET3.5ClientProfile.误。他还指出,每行代码的出错率与源程序行数之间不存在简单的线性关系。LipowCopyright2004-2011AsposePtyLtd.指出,对于小程序,每行代码出错率为1.3%~1.8%;对于大程序,每行代码的出错率增加到2.7%~3.2%之间,这只是考虑了程序的可执行部分,没有包括程序中的说明部分。Lipow及其他研究者得出一个结论:对于少于100个语句的小程序,源代码行数与出错率是线性相关的。随着程序的增大,出错率以非线性方式增长。计算机导论软件工程3、McCabe度量法McCabe度量法,又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法。它基于一个程序模块的程序图中环路的个数,因此计程序图是退化的程序流程图。流程图中每个处理都Evaluationonly.算它先要画出程序图(也称流图)。程序图是退化的程序流程图。流程图中每个处理都Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.退化成一个结点,流线变成连接不同结点的有向弧。Copyright2004-2011AsposePtyLtd.计算机导论软件工程Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.增加虚线是网络保证程序图是强连通计算机导论软件工程(1)McCabe度量法原理①程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作,以及分支和循环的具体条件。②计算环路复杂性的方法:根据图论,在一个强连通的有向图G中,环的个数由以下公式给出:其中,V(GV)=(Gm)是有向图-n+2Evaluationonly.G中环路个数,m是图G中弧数(边数),CreatedwithAspose.Slidesfor.NET3.5ClientProfile.n是图G中结点数。在例示中,结点数n=11,弧数m=12(不包含增加的1条)V(G)Copyright2004-2011AsposePtyLtd.=m-n+2=12-11+2=3.④对于平面图而言,环路复杂度等于强连通的程序图在平面上围成的区域的个数。计算机导论软件工程(2)几点说明①环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环数目增加时其复杂度也增加。环路复杂度与程序中覆盖的路径条数有关。②McCabe建议,对于复杂度超过10的程序,应分成几个③McCabe环路复杂度隐含的前提是:错误与程序的判定Evaluationonly.小程序,以减少程序中的错误。CreatedwithAspose.Slidesfor.NET3.5ClientProfile.加上例行子程序的调用数目成正比。加工复杂性、数据结构、录入与打乱输入卡片的错误可以忽略不计。Copyright2004-2011AsposePtyLtd.计算机导论软件工程(3)McCabe度量法的缺点①对于不同种类的控制流的复杂性不能区分。②简单IF语句与循环语句的复杂性同等看待。③嵌套IF语句与简单CASE语句的复杂性是一样的。④模块间接口当成一个简单分支一样处理。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.⑤一个具有1000行的顺序程序与一行语句的复杂性相同。Copyright2004-2011AsposePtyLtd.计算机导论软件工程4、Halstead的软件科学Halstead软件科学研究确定计算机软件开发中的一些定量规律,它采用以下一组基本的度量值。这些度量值通常在程序产生之后得出,或者在设计完成之后估算出。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2004-2011AsposePtyLtd.计算机导论软件工程(1)程序长度(预测的Halstead长度)令n1表示程序中不同运算符(包括保留字)的个数,n2表示程序中不同运算对象的个数(操作数),H表示“程序长度的预测值”,则有H=n1log2n1+n2log2n2定义中的运算符包括:算术运算符Evaluationonly.赋值符(=或:=)CreatedwithAspose.Slidesfor.NET3.5ClientProfile.逻辑运算符分界符(,或;或:)关系运算符Copyright2004-2011AsposePtyLtd.括号运算符子程序调用符数组操作符循环操作符等。运算对象包括变量名和常数。计算机导论软件工程(2)实际的程序长度设N1为程序中实际出现的运算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院感染管理信息系统基本功能标准wst547-2025解读
- 国际贸易理论与实务(中篇共上中下3篇)
- 大型灌区工程监理服务方案投标文件(技术方案)
- 感染性疾病患儿的康复指导
- 飞机燃油动力系统安装调试工常识考核试卷含答案
- 柔性版制版员安全综合能力考核试卷含答案
- 急诊科护理工作与医疗团队的协作
- 带状疱疹患者的家庭护理要点
- 旅行社计调测试验证考核试卷含答案
- 氮化钛涂层工安全生产规范知识考核试卷含答案
- 2025年检察院书记员考试真题(附答案)
- 医疗纠纷预防和处理课件
- 前庭大腺脓肿切开护理查房
- 2025年甘肃省中考英语试卷真题(含标准答案及解析)
- 护士呼吸科进修专题汇报
- 辽宁省2025年初中学业水平模拟考试 语文试卷(一)(含答案)
- 电力拖动自动控制系统-运动控制系统(第5版)习题答案
- 2025年高考英语复习难题速递之语法填空(2025年4月)
- 美团电子合同协议
- 期刊图书馆管理员
- 考研动员讲座
评论
0/150
提交评论