您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 第八讲-软件可靠性设计
上海理工大学计算机与电气工程学院第8讲软件可靠性设计(20)上海理工大学计算机与电气工程学院内容软件可靠性设计概述避错设计查错和改错设计容错设计上海理工大学计算机与电气工程学院1.概述/1实质:在常规的软件设计中,应用必须的方法和技术,使程序设计在兼顾用户的各种需求时,全面满足软件的可靠性要求可靠性设计的四种类型:避错设计查错设计改错设计容错设计上海理工大学计算机与电气工程学院2.避错设计使软件产品在设计过程中,不发送错误或少发生错误的一种设计方法各种软件工程方法…有助于避错可靠性设计的Myers设计原则控制程序的复杂度使系统中的各个模块具有最大的独立性使程序具有合理的层次结构当模块或单元之间的相互作用无法避免时,务必使其联系尽量简单,以防止在模块和单元之间产生未知的边际效应,使设计人员陷入泥潭,无力自拔与用户保持紧密联系上海理工大学计算机与电气工程学院设计原理1.模块化模块:模块是由边界元素限定的相邻的程序元素(例如数据说明,可执行语句)的序列,而且有一个总体的标识符来代表它如pascal和Ada中的块结构中的Begin…end对,或者Java中的{}因此,过程、函数、子过程、子函数、宏等都可以作为模块面向对象中的对象以及对象内的方法也是模块就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集成起来组成一个整体,可以完成指定的功能,解决实际问题。2020/3/315上海理工大学计算机与电气工程学院设计原理2020/3/316过程、函数——VB上海理工大学计算机与电气工程学院设计原理2020/3/317过程、函数——C++类型标识符函数名(形式参数表){语句序列}对于过程:类型标识符为void上海理工大学计算机与电气工程学院设计原理2020/3/318子过程、子函数、子程序主程序输入子程序计算子程序输出子程序上海理工大学计算机与电气工程学院设计原理面向对象中的对象以及对象内的方法也是模块2020/3/319订单DateRecieveisPrepaidPriceDispatch()Close()上海理工大学计算机与电气工程学院2020/3/3110软件设计原理经验1:工作量E(P1+P2)E(P1)+E(P2)经验2:成本成本/模块最小成本区接口成本软件总成本模块数目上海理工大学计算机与电气工程学院人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。2020/3/31112、抽象/逐步求精上海理工大学计算机与电气工程学院2020/3/3112例:开发一个CAD软件,实现一个二维绘图系统的全部功能,供低级计算机辅助设计使用。软件设计原理在我们考虑对任何问题的模块化解法时,可以抽象出很多层次。在抽象的最高层次使用问题环境的语言,以概括方式叙述问题的解法在较低的层次采用更过程化的方法,把面向问题的术语和面向实现的术语结合起来叙述问题的解法最后,在最低的抽象层次可以直接实现的方法来叙述问题的解法上海理工大学计算机与电气工程学院2020/3/3113抽象层次I:用问题所处环境的术语来描述这个软件。该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个CAD软件实现……。上海理工大学计算机与电气工程学院2020/3/3114抽象层次II:任务需求的描述。列出“What”而不是“How”。CADSOFTWARETASKS:userinteractiontask;2-Ddrawingcreationtask;graphicsdisplaytask;drawingfilemanagementtask;END软件设计原理上海理工大学计算机与电气工程学院2020/3/3115抽象层次III:程序过程表示。以2-D绘图生成任务为例:PROCEDURE2-DdrawingcreationREPEATUNTILE(drawingcreationtaskterminates)DOWHILE(digitizerinteractionoccurs)Digitizerinterfacetask;DETERMINEdrawingrequestCASELine:linedrawingtask;Rectangle:rectangledrawingtask;Circle:circledrawingtask;……END;DOWHILE(keyboardinteractionoccurs)keyboardinteractiontask;PROCESSanalysis/computationCASEView:auxiliaryviewtask;Section:crosssectioningtask;……END;……ENDREPETITION;ENDPROCEDURE.软件设计原理上海理工大学计算机与电气工程学院2020/3/31163、信息隐蔽(Informationhiding)信息隐蔽使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。在这个抽象层次上,给出了初步的过程表示,所用的术语都已面向软件,而且模块化的工作已经开始显露。软件设计原理上海理工大学计算机与电气工程学院2020/3/3117f1f2f3……fi……fnSgi(X,S)S’输出输出上海理工大学计算机与电气工程学院4、模块独立性(Moduleindependence)每个模块完成一个相对独立的特定子功能,并且和其他模块之间的接口很简单。模块的独立程度可以由两个定性标准来衡量,这两个标准分别称为耦合性和内聚性。藕合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此间结合的紧密程度。一般较较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。2020/3/3118软件设计原理上海理工大学计算机与电气工程学院2020/3/3119GreatdealofdependenceIndependentHighlycoupledLooselycoupledUncoupledGoal:aslooseaspossible=asindependentaspossible独立性的度量:耦合上海理工大学计算机与电气工程学院耦合的七种类型完全独立数据耦合特征耦合控制耦合外部耦合公共耦合内容耦合2020/3/3120上海理工大学计算机与电气工程学院独立性的度量:耦合完全独立两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的2020/3/3121上海理工大学计算机与电气工程学院独立性的度量:耦合数据耦合一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。2020/3/3122上海理工大学计算机与电气工程学院独立性的度量:耦合特征耦合一组模块通过参数表传递记录信息,就是特征记耦合。这个记录是某一数据结构的子结构,而不是简单变量。2020/3/3123上海理工大学计算机与电气工程学院独立性的度量:耦合控制耦合如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。2020/3/3124ABFlagF2F1Fn…………Flag上海理工大学计算机与电气工程学院2020/3/3125独立性的度量:耦合上海理工大学计算机与电气工程学院公共环境耦合若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。2020/3/3126上海理工大学计算机与电气工程学院2020/3/3127公共耦合Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………问题:公共部分的改动将影响所有调用它的模块;公共部分的数据存取无法控制;复杂程度随耦合模块的个数增加而增加。上海理工大学计算机与电气工程学院2020/3/3128公共耦合上海理工大学计算机与电气工程学院内容耦合,如果发生下列情形,两个模块之间就发生了内容耦合一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重迭(只可能出现在汇编语言中);一个模块有多个入口。2020/3/3129上海理工大学计算机与电气工程学院独立性的度量:耦合2020/3/3130A访问C的内部数据内容耦合上海理工大学计算机与电气工程学院2020/3/3131A不通过正常入口而转入C的内部。……ABCDA:……………………gotoC1……………………C:……………………C1:…………内容耦合独立性的度量:耦合上海理工大学计算机与电气工程学院独立性的度量:耦合应遵循以下原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合2020/3/3132上海理工大学计算机与电气工程学院2020/3/3133独立性的度量:内聚内聚标志一个模块内各个元素彼此紧密结合的紧密程度。七种内聚:1.偶然内聚2.逻辑内聚3.时间内聚4.过程内聚5.通信内聚6.顺序内聚7.功能内聚上海理工大学计算机与电气工程学院功能内聚一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。功能内聚是最强也是最好的一种内聚。例子:Sin(),GetCustomerName()2020/3/3134上海理工大学计算机与电气工程学院顺序内聚顺序内聚是指模块中各成分有顺序关系,某一成分的输出数据是另一成分的输入数据。2020/3/3135上海理工大学计算机与电气工程学院通信内聚如果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚或者说:如果一个模块的所有成分都操作同一个数据集或者生成同一数据集通常,通信内聚模块是通过数据流图来定义的。2020/3/3136上海理工大学计算机与电气工程学院过程内聚如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。问题:请大家举个生活中必须遵照特定次序的例子?答案:排队买饭(队列,要求先进先出)。2020/3/3137上海理工大学计算机与电气工程学院时间内聚某个模块包含的任务(操作)必须在同一时间内执行如:模块完成各种初始化工作2020/3/3138上海理工大学计算机与电气工程学院逻辑内聚这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。2020/3/3139A:Readinputsfromdiskfromtapefrom……上海理工大学计算机与电气工程学院偶然内聚巧合内聚(偶然内聚)。当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。2020/3/3140上海理工大学计算机与电气工程学院2020/3/3141上海理工大学计算机与电气工程学院2020/3/3142设计内聚的
本文标题:第八讲-软件可靠性设计
链接地址:https://www.777doc.com/doc-4650437 .html