《电子系统可靠性设计-嵌入式系统软件的可靠性设计.pptx》由会员分享,可在线阅读,更多相关《电子系统可靠性设计-嵌入式系统软件的可靠性设计.pptx(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计5.1 5.1 软件的可靠性软件的可靠性5.2 5.2 软件工程与管理软件工程与管理5.3 5.3 软件的可靠性设计软件的可靠性设计5.4 5.4 软件可维护性及软件可靠性模型软件可维护性及软件可靠性模型 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 5.1 软件的可靠性软件的可靠性一、软件故障一、软件故障1、软件故障的定义:、软件故障的定义:估算公式估算公式:硬件系统总的失效率:硬件系统总的失效率:是构
2、成该硬件系统的各个是构成该硬件系统的各个元器件元器件、电路板电路板、接插件接插件、传输线传输线、焊接点焊接点的失效率的的失效率的总和总和 和元器件的数量成和元器件的数量成线性线性关系关系软件的失效率软件的失效率:和软件的长度成:和软件的长度成指数指数关系关系指由于软件指由于软件内部的缺陷、错误内部的缺陷、错误,使软件在执行过程中,使软件在执行过程中,未能达到未能达到规定的功能规定的功能2、软件故障的特点、软件故障的特点1)硬件故障的特点:)硬件故障的特点:元器件越多,故障率越高元器件越多,故障率越高 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 2
3、)软件错误和时间的关系)软件错误和时间的关系:无关无关 硬件元器件的可靠性和时间的关系硬件元器件的可靠性和时间的关系:成浴盆曲线:成浴盆曲线 软件的错误不会随时间的推移而消失软件的错误不会随时间的推移而消失3)软件错误改正后)软件错误改正后:永不出现:永不出现 硬件的元器件硬件的元器件:更换后,还有失效的可能:更换后,还有失效的可能4)软件故障完全来源于)软件故障完全来源于设计设计,与,与生产、操作无关生产、操作无关 硬件故障:硬件故障:和设计、生产、操作都有关,其可靠性可以预估和设计、生产、操作都有关,其可靠性可以预估 相同的软件:相同的软件:不同水平的设计者去开发,可靠性不一样。不同水平的
4、设计者去开发,可靠性不一样。软件故障软件故障:对设计者有更大的依赖性:对设计者有更大的依赖性 多数是由算法、逻辑的错误引起多数是由算法、逻辑的错误引起 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 5)软件不存在耗损和老化)软件不存在耗损和老化 软件故障和外部环境无关软件故障和外部环境无关 软件存储媒质的故障软件存储媒质的故障:硬盘、光盘、:硬盘、光盘、U盘是硬件故障盘是硬件故障6)软件故障有更大的隐蔽性)软件故障有更大的隐蔽性 通过测试发现隐藏的错误通过测试发现隐藏的错误 软件的测试非常困难软件的测试非常困难:由于软件的复杂性、多种不同的:由于软
5、件的复杂性、多种不同的条件、多种不同的路径条件、多种不同的路径 没有执行到有故障的那部分软件没有执行到有故障的那部分软件:故障不会表现出来:故障不会表现出来7)不同故障出现的概率不一样)不同故障出现的概率不一样 出现频率高的故障出现频率高的故障:占软件故障的绝大部分:占软件故障的绝大部分 出现频率低的故障出现频率低的故障:占软件故障的很小一部分:占软件故障的很小一部分 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 8 8)软件故障的随机性)软件故障的随机性 软件开发的每一步如果有错,都会使最终的软件出现软件开发的每一步如果有错,都会使最终的软件出现
6、故障故障 故障出现是随机的,无法预测故障出现是随机的,无法预测 硬件系统的故障硬件系统的故障:可以预先知道故障可能性的大小:可以预先知道故障可能性的大小 例如例如:电源是故障多发点:电源是故障多发点9 9)软件故障的可传播性)软件故障的可传播性 软件运行到有错误的地方:软件运行到有错误的地方:产生错误的数据、状态产生错误的数据、状态 这些错误的数据、状态会引起软件的其它部分产生错这些错误的数据、状态会引起软件的其它部分产生错误的状态、数据误的状态、数据 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 二、软件可靠性指标二、软件可靠性指标1、可靠度、可
7、靠度 定义定义:在规定条件下、在规定的时间内,软件无故障运:在规定条件下、在规定的时间内,软件无故障运行的概率行的概率 例如例如:某软件在:某软件在10h内运行了内运行了100次,次,96次运行正常,则次运行正常,则该软件该软件10h的可靠度为的可靠度为0.96 表示符号表示符号:R(t)2、平均故障间隔时间、平均故障间隔时间MTBF 故障率故障率:;平均故障间隔时间平均故障间隔时间:MTBF=1/上个例子上个例子:故障率故障率=0.004平均故障间隔时间平均故障间隔时间MTBF =1/=250 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 3、利
8、用率、利用率 软件的软件的平均维修时间平均维修时间为为MTTR,软件的利用率软件的利用率为:为:例如例如:某软件的:某软件的MTBF=250h,平均维修时间,平均维修时间MTTR=5h,利用率为,利用率为0.98 软件系统软件系统:每维修一次,故障至少减少一次,每维修一次,故障至少减少一次,MTBF会随维修次数增加,而增加会随维修次数增加,而增加 硬件系统硬件系统:硬件的维修不会提高:硬件的维修不会提高MTBF 连续工作的电子系统的利用率连续工作的电子系统的利用率:要求达到:要求达到99.999%嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 三、软
9、件错误的来源三、软件错误的来源 主要由主要由设计错误、疏忽、考虑不周设计错误、疏忽、考虑不周等造成等造成1、没有认真进行需求调查、没有认真进行需求调查 没有弄清楚用户的要求;没有弄清楚用户的要求;没有理解用户的要求;没有理解用户的要求;用户提出的要求用户提出的要求不完整、有疏漏、有矛盾、有错误不完整、有疏漏、有矛盾、有错误 用户需求是设计软件的用户需求是设计软件的依据、出发点依据、出发点 一定要一定要彻底了解彻底了解用户的要求,用户的要求,逐字逐句推敲逐字逐句推敲 实地考察实地考察,沟通和讨论,沟通和讨论 设计者在软件开发时,要和用户经常沟通,理解上完设计者在软件开发时,要和用户经常沟通,理解
10、上完全一致全一致 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 2、方案中有错误、方案中有错误当用户需求充分了解后,进行软件的总体方案设计当用户需求充分了解后,进行软件的总体方案设计总体方案:总体方案:实现用户需求的实现用户需求的软件结构软件结构;实现用户需求中涉及的实现用户需求中涉及的数据结构数据结构;系统软件和用户软件的关系:系统软件和用户软件的关系:主程序、子程序、中断处理程序的结构、功能、接主程序、子程序、中断处理程序的结构、功能、接口口方案是软件编程的前提方案是软件编程的前提 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统
11、可靠性设计电子系统可靠性设计 3、采用不合适的编程语言、采用不合适的编程语言 每种编程语言都有一定的每种编程语言都有一定的针对性针对性 嵌入式系统的软件嵌入式系统的软件:使用:使用C语言语言 数据库管理软件数据库管理软件:使用数据库语言,例如:使用数据库语言,例如Visual Foxpro 网络软件网络软件:JAVA4、编程中的错误、编程中的错误 编程中出现的错误:编程中出现的错误:语法错、定义错、逻辑错、无语法错、定义错、逻辑错、无法结束的死循环、算法错法结束的死循环、算法错等等 有些错误:有些错误:使用编译、查错、测试能够检查出来使用编译、查错、测试能够检查出来 有些错误:有些错误:只在程
12、序某一次执行时发生,只在程序某一次执行时发生,很难发现很难发现 选择合适的编程语言选择合适的编程语言:达到事半功倍的效果:达到事半功倍的效果 不合适的编程语言不合适的编程语言:增加开发难度、开发时间、错误:增加开发难度、开发时间、错误 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 5、性能错误、性能错误 指设计的指设计的软件性能软件性能和用户的需求相差太大,不能满足用和用户的需求相差太大,不能满足用户的要求户的要求 例如:例如:软件的响应时间、执行时间、控制系统的精度等软件的响应时间、执行时间、控制系统的精度等 例如:例如:计算机的语音识别,尽管识
13、别率满足要求,但是计算机的语音识别,尽管识别率满足要求,但是识别识别时间不能太长时间不能太长,如果需要几分钟进行识别,无法应用,如果需要几分钟进行识别,无法应用 嵌入式系统发生故障时:嵌入式系统发生故障时:需要立即做出响应,自动保护和报警需要立即做出响应,自动保护和报警 如果响应时间过长:如果响应时间过长:会发生严重的后果会发生严重的后果 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 6、中断出错、中断出错电子系统的实时响应事件电子系统的实时响应事件:使用中断:使用中断如果有多个中断:如果有多个中断:必须处理好中断的先后顺序,必须处理好中断的先后顺
14、序,防止两个或多个中断相互冲突防止两个或多个中断相互冲突 容易产生小概率事件容易产生小概率事件 注意注意中断嵌套中断嵌套 中断服务处理程序需要花费时间,会造成误差的积累中断服务处理程序需要花费时间,会造成误差的积累 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 7、人为因素、人为因素程序设计人员的素质程序设计人员的素质:直接影响软件的质量:直接影响软件的质量要求程序设计人员要求程序设计人员:具有丰富基础知识、软件编程能力,具有丰富基础知识、软件编程能力,能够熟练使用能够熟练使用C语言,语言,具有较好的数据结构、程序设计方法的知识具有较好的数据结构、
15、程序设计方法的知识 能够熟练对软件查错、测试能够熟练对软件查错、测试 具备良好的工作态度、具备良好的工作态度、优秀的工作作风优秀的工作作风 不能粗心大意、不负责任、马马虎虎不能粗心大意、不负责任、马马虎虎 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 5.2 软件工程与管理软件工程与管理软件故障:软件故障:在很大程度上取决于设计者、在很大程度上取决于设计者、依赖于设计者的思路、方法依赖于设计者的思路、方法在软件开发的每一步:在软件开发的每一步:都可能引入故障都可能引入故障每一个阶段都要采取每一个阶段都要采取质量控制手段质量控制手段 实现软件的实现软
16、件的可靠性要求可靠性要求一、软件工程的开发模式一、软件工程的开发模式二、嵌入式系统的软件开发二、嵌入式系统的软件开发三、软件可靠性管理三、软件可靠性管理 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 一、软件工程的开发模式一、软件工程的开发模式 1、瀑布式开发模型、瀑布式开发模型 2、原型法开发模型、原型法开发模型 3、螺旋形开发模式、螺旋形开发模式 4、面向对象的软件开发模型、面向对象的软件开发模型 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 1、瀑布式开发模型、瀑布式开发模型开发思路如同开发思路如
17、同瀑布瀑布,开发过程,开发过程自上而下自上而下1)系统的需求分析)系统的需求分析 软件的需求软件的需求 既有对硬件的需求,也有对软件既有对硬件的需求,也有对软件的需求的需求软件要实现的软件要实现的各项功能各项功能:如显示、存:如显示、存储、通信、报警等储、通信、报警等软件的各项性能软件的各项性能:如响应时间、执行:如响应时间、执行时间、算法规范、各个模块的关系时间、算法规范、各个模块的关系建立详细的文档建立详细的文档 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 2)设计)设计 把需求分析把需求分析细化细化 描述清楚:描述清楚:软件的软件的体系结构
18、体系结构、数据结构数据结构、算法描述算法描述、接接口细节口细节等等 使用使用流程图流程图、文字形成、文字形成文档文档3)编程)编程 按照上面的要求完成规定的功能按照上面的要求完成规定的功能 选择选择合适合适的编程语言的编程语言4)测试)测试:是发现缺陷和错误的极其重要手段:是发现缺陷和错误的极其重要手段 是否达到是否达到功能功能、性能性能的要求的要求5)维护:)维护:软件使用时,由于软件使用时,由于发现错误发现错误、需求改变需求改变等,需要进行等,需要进行维护维护 软件维护从流程的第一步:需求分析软件维护从流程的第一步:需求分析 进行进行 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计
19、电子系统可靠性设计电子系统可靠性设计 缺点缺点:错误的:错误的积累和放大积累和放大 前一步工作的结果,是后一步工作的基础前一步工作的结果,是后一步工作的基础 前一步工作的错误、缺陷必然带到后一步工作中前一步工作的错误、缺陷必然带到后一步工作中 并会扩大、深化并会扩大、深化需求分析的错误会造成需求分析的错误会造成严重的影响严重的影响特别特别:先期的需求不十:先期的需求不十分明确分明确开发过程中开发过程中:软件的功:软件的功能、性能是否满足需求能、性能是否满足需求是不知道的是不知道的测试阶段测试阶段:才知道:才知道 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可
20、靠性设计 2、原型法开发模型、原型法开发模型用户的需求用户的需求:有时不十分明确:有时不十分明确 可能随着软件开发的深入,而逐渐明确可能随着软件开发的深入,而逐渐明确 在开发的过程中,用户提出了在开发的过程中,用户提出了新的需求新的需求根据一些基本的需求根据一些基本的需求:先建立:先建立软件系统的软件系统的原型(简单实现)原型(简单实现)用户找出存在的问题用户找出存在的问题:对不满:对不满意、没有实现功能的地方进行意、没有实现功能的地方进行修正修正不断完善不断完善性能、参数,直到满性能、参数,直到满足用户的要求足用户的要求 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设
21、计电子系统可靠性设计 3、螺旋型开发模式、螺旋型开发模式第一步螺旋:第一步螺旋:计划阶段计划阶段:确立初始的基本需:确立初始的基本需求,制定目标,确定方案求,制定目标,确定方案风险分析风险分析:可行性:可行性工程实现工程实现:设计初步的原型,:设计初步的原型,验证、确定需求验证、确定需求用户评价用户评价:用户提出改进要求:用户提出改进要求第二步螺旋第二步螺旋:比第一步螺旋更深入、具体比第一步螺旋更深入、具体 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 4、面向对象的软件开发模型、面向对象的软件开发模型面向对象的方法:面向对象的方法:以以客观世界中
22、的对象为中心客观世界中的对象为中心,分析和设计的思路复合,分析和设计的思路复合人们的思维方式,结果与客观实际相接近,易被人们接受人们的思维方式,结果与客观实际相接近,易被人们接受1)面向对象的概念)面向对象的概念面向对象面向对象=对象对象+分类分类+继承继承+通过消息的通信通过消息的通信对象对象:一个软件运行的实体,包括对象的属性、行为。:一个软件运行的实体,包括对象的属性、行为。一个对象一个对象:由对象名、属性、操作组成:由对象名、属性、操作组成类:类:用来定义一组相似的对象,描述一组对象的共同行为用来定义一组相似的对象,描述一组对象的共同行为和属性。和属性。类的类的实例实例就是对象就是对象
23、 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 继承:继承:是父类和子类之间共享数据、方法的一种机制是父类和子类之间共享数据、方法的一种机制类的继承关系类的继承关系父类父类:A子类子类:B子类继承父类的属性、操作,子类继承父类的属性、操作,还可以定义自己的属性、操作还可以定义自己的属性、操作一个父类一个父类:可以有多个子类:可以有多个子类一个子类一个子类:可以有多个父类:可以有多个父类 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 消息:消息:对象之间的通信称为消息对象之间的通信称为消息 消息的传递消息
24、的传递:一个对象给另外一个对象发送消息:一个对象给另外一个对象发送消息2)面向对象的分析和设计)面向对象的分析和设计面向对象的分析:面向对象的分析:确定对象、组织对象、描述对象间的相互关系、定义确定对象、组织对象、描述对象间的相互关系、定义对象的操作、定义对象的内部消息对象的操作、定义对象的内部消息面向对象的设计:面向对象的设计:采用具体的方法实现源程序采用具体的方法实现源程序 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 二、嵌入式系统的软件开发二、嵌入式系统的软件开发 1 1、嵌入式系统软件开发模式、嵌入式系统软件开发模式 2 2、用户程序的开
25、发过程、用户程序的开发过程 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 1、嵌入式系统软件开发模式、嵌入式系统软件开发模式嵌入式系统:嵌入式系统:在系统设计之前,用户需求已经十分明确,在系统设计之前,用户需求已经十分明确,系统实现的系统实现的功能功能、性能性能都很都很明确明确,使用环境、使用人员明确使用环境、使用人员明确所以所以:使用以:使用以瀑布式开发模式瀑布式开发模式为主的混合开发模式为主的混合开发模式如果用户的需求有如果用户的需求有局部的变化局部的变化:硬件和软件也要做局部修改硬件和软件也要做局部修改 嵌入式系统软件的可靠性设计嵌入式系统软
26、件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 2、用户程序的开发过程、用户程序的开发过程(1)可行性分析)可行性分析(2)需求调查与分析)需求调查与分析(3)确定采用的程序设计方法)确定采用的程序设计方法(4)程序设计)程序设计(5)编程)编程(6)查错)查错(7)测试)测试(8)形成文档)形成文档 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 (1)可行性分析)可行性分析 从从技术可行性、操作可行性、经济可行性技术可行性、操作可行性、经济可行性进行分析进行分析 得到解决问题的基本思路得到解决问题的基本思路(2)需求调查与分析)需求调查与分
27、析 熟悉系统的熟悉系统的控制任务和要求控制任务和要求,详细划分系统,详细划分系统各个部分和各个部分和之间的关系之间的关系1 1)最基本的问题)最基本的问题:系统的输入输出:系统的输入输出 输入信号和输出信号的数量输入信号和输出信号的数量 外设以哪种方式和外设以哪种方式和CPU通信、通信、数据速率、误差检验、输入输出状态指示、格式要求、数据速率、误差检验、输入输出状态指示、格式要求、时钟、选通脉冲等时钟、选通脉冲等 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 2)控制要求或处理要求)控制要求或处理要求 嵌入式系统对嵌入式系统对实时性实时性要求较高要
28、求较高 工作顺序要求严格工作顺序要求严格:发送数据的时间、接收数据的时间、:发送数据的时间、接收数据的时间、时序关系、时序关系、CPU和外设的同步和外设的同步3)可靠性问题)可靠性问题 对软件的可靠性要求和出错处理的要求对软件的可靠性要求和出错处理的要求 确定确定出错处理方案出错处理方案,列出各种,列出各种错误图像错误图像、显示错误的显示错误的方法方法用户的需求用户的需求:全面详细的了解,设计者的理解和用户的解:全面详细的了解,设计者的理解和用户的解释必须释必须完全一致完全一致,形成文档,形成文档 调查嵌入式系统的调查嵌入式系统的使用环境使用环境 组织专家组织专家评审评审需求调查和分析需求调查
29、和分析 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 (3)确定采用的程序设计方法)确定采用的程序设计方法技术关键技术关键:采用合理的程序设计结构:采用合理的程序设计结构1)模块程序设计)模块程序设计 把大程序分成若干个小的把大程序分成若干个小的程序模块程序模块 每个程序模块每个程序模块:单独设计、单独编程和调试:单独设计、单独编程和调试 使用函数的形式,供其它程序调用使用函数的形式,供其它程序调用 优点优点:每个模块的功能简单,编程容易,查错、测试都:每个模块的功能简单,编程容易,查错、测试都方便,可以重复使用方便,可以重复使用 缺点缺点:调用函
30、数时,需要参数传递,花费更长的运行时:调用函数时,需要参数传递,花费更长的运行时间间 模块级的调试简单模块级的调试简单:必须保证每个模块都是正确的:必须保证每个模块都是正确的 主程序的调试复杂主程序的调试复杂 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 2)自上而下的程序设计)自上而下的程序设计 先从主程序开始设计,子程序使用代号表示先从主程序开始设计,子程序使用代号表示 主程序编好后,再编写子程序主程序编好后,再编写子程序 一层一层自上而下,逐步扩展一层一层自上而下,逐步扩展 直到每个细节直到每个细节 优点:优点:设计、测试、连接同时进行,能够
31、较早发现问题设计、测试、连接同时进行,能够较早发现问题 缺点:缺点:其其树形结构树形结构,上一级错误对整个程序产生灾难性的,上一级错误对整个程序产生灾难性的影响影响 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 3)结构程序设计)结构程序设计使用标准的结构编程,有使用标准的结构编程,有3种标准结构:种标准结构:线性结构、条件结构、循环结构线性结构、条件结构、循环结构 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 共同特点:共同特点:只有一个入口和一个出口只有一个入口和一个出口操作清楚、编写程序容易操作清
32、楚、编写程序容易容易查找错误容易查找错误缺点缺点:把程序写出标准结构,使程序变长,:把程序写出标准结构,使程序变长,占用更多的内存,执行时间加长占用更多的内存,执行时间加长实际的程序设计实际的程序设计:综合使用上面的设计方法:综合使用上面的设计方法 总体设计总体设计:利用自上而下的设计思想:利用自上而下的设计思想 编程编程:分成多个模块进行:分成多个模块进行 每个模块的编程每个模块的编程:使用标准结构:使用标准结构 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 (4)程序设计)程序设计1)设计方法)设计方法 画出主程序的画出主程序的流程图流程图 认
33、真考虑对认真考虑对实时处理实时处理的要求的要求 中断的中断的优先级优先级确定,确定,画出画出中断处理程序流程图中断处理程序流程图,使用文字进行说明,使用文字进行说明 每个模块画出流程图、文字说明每个模块画出流程图、文字说明 形成文档形成文档2)评审)评审 组织专家评审,堵住漏洞组织专家评审,堵住漏洞 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 (5)编程)编程1)选择程序设计语言)选择程序设计语言 每种编程语言都有针对性每种编程语言都有针对性 对于每种需求,使用某种语言编程是最方便的对于每种需求,使用某种语言编程是最方便的 不合适的编程语言不合适
34、的编程语言:程序复杂,错误多,可靠性不高:程序复杂,错误多,可靠性不高 嵌入式系统的程序嵌入式系统的程序:使用:使用C语言语言2)编程要注意的问题)编程要注意的问题使用使用宏定义宏定义表示要经常改变的、在多处出现的表示要经常改变的、在多处出现的常数常数 例如例如:#define ADC_sample_period 2999不采用容易混淆的符号:不采用容易混淆的符号:例如例如:1和小写的和小写的L,0和和o 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 避免含糊不清、过于复杂的程序设计避免含糊不清、过于复杂的程序设计 少用复杂的表达式、复杂的程序设计
35、少用复杂的表达式、复杂的程序设计 如果没有注释,时间长了,无法读懂如果没有注释,时间长了,无法读懂 程序模块要小一些程序模块要小一些 便于程序的编写、查错、测试便于程序的编写、查错、测试 程序模块程序模块:宏定义、函数宏定义、函数 宏定义宏定义:执行速度快,占用更多的:执行速度快,占用更多的ROM 函数函数:执行速度慢,占用:执行速度慢,占用ROM少少 程序模块要尽可能通用程序模块要尽可能通用 程序要简单易懂程序要简单易懂:提高可读性提高可读性 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 详细明确的注释详细明确的注释注释位于每个函数模块的前一行:
36、注释位于每个函数模块的前一行:对一个模块进行说明对一个模块进行说明注释位于一行的尾部:注释位于一行的尾部:对此行程序进行注释对此行程序进行注释注释的重要性:注释的重要性:对程序的查错、测试、维护都非常有意义对程序的查错、测试、维护都非常有意义例如:例如:嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 (6)查错)查错 错误是难以避免的错误是难以避免的 查错方法查错方法:1)人工检查程序)人工检查程序 2)使用仿真器,单步调试程序,查看结果)使用仿真器,单步调试程序,查看结果 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子
37、系统可靠性设计 (7)测试)测试1)产生测试数据的方法)产生测试数据的方法模拟输入、输出、外部定时信号、控制信号模拟输入、输出、外部定时信号、控制信号在线仿真在线仿真:使用仿真器,进行测试软件:使用仿真器,进行测试软件测试程序:测试程序:编写专门的测试程序编写专门的测试程序黑盒测试黑盒测试:又称为:又称为功能测试功能测试,只考虑输入和输出,不关心程序内部结构和细节只考虑输入和输出,不关心程序内部结构和细节 白盒测试白盒测试:又称为:又称为结构测试结构测试 测试程序内部结构和逻辑细节测试程序内部结构和逻辑细节 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性
38、设计 2)测试数据的选择)测试数据的选择 包括软件所有可能出现的情况包括软件所有可能出现的情况 测试的规则:测试的规则:制定测试计划:制定测试计划:测试的步骤和先后顺序测试的步骤和先后顺序 随机选择测试数据随机选择测试数据 选择特殊数据:最大值、最小值选择特殊数据:最大值、最小值 在复杂测试中,使用统计方法在复杂测试中,使用统计方法 测试模块化。测试模块化。3)测试过程)测试过程 单元模块测试单元模块测试:模块的入口条件、出口条件、结构、:模块的入口条件、出口条件、结构、功能、性能等测试功能、性能等测试 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计
39、 子系统测试:子系统测试:把多个模块连接到一起,构成子系统把多个模块连接到一起,构成子系统例如例如:数据采集子系统、显示子系统、键盘扫描子系统、:数据采集子系统、显示子系统、键盘扫描子系统、控制算法子系统控制算法子系统系统级的测试系统级的测试 用户程序的测试用户程序的测试 这一级测试最困难,问题最多这一级测试最困难,问题最多:找到问题后,回到模:找到问题后,回到模块级上修改块级上修改(8)形成文档)形成文档 必须有文档,便于调试、维护、修改、再设计必须有文档,便于调试、维护、修改、再设计 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 文档包括:文档
40、包括:1)流程图)流程图:要详细:要详细2)注释)注释:必须详细说明程序的功能和作用:必须详细说明程序的功能和作用 尽量明确,言简意赅;尽量明确,言简意赅;重点突出,避免繁琐;重点突出,避免繁琐;注释要加日期注释要加日期3)重要变量的说明)重要变量的说明 变量的意义和功能变量的意义和功能4)程序库:)程序库:指经常要调用的函数指经常要调用的函数 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 函数要标准化,包括以下内容:函数要标准化,包括以下内容:函数的目的;所用的处理器;函数的目的;所用的处理器;函数的入口参数;函数的出口参数函数的入口参数;函数的
41、出口参数 函数的功能;程序清单。函数的功能;程序清单。5)程序逻辑手册)程序逻辑手册 包括设计的目的、使用的算法、使用的算法的优缺点、包括设计的目的、使用的算法、使用的算法的优缺点、使用的数据结构使用的数据结构6)用户指南)用户指南 使用实例,指导用户如何使用这个程序使用实例,指导用户如何使用这个程序7)维护手册)维护手册:说明系统的维护方法说明系统的维护方法 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 三、软件可靠性管理三、软件可靠性管理软件产品的可靠性软件产品的可靠性:是管理出来的:是管理出来的1、软件可靠性管理的概念、软件可靠性管理的概念运
42、用运用反馈控制原理反馈控制原理运行一套管理系统,保证软件的可靠性运行一套管理系统,保证软件的可靠性(1)计划)计划 制定工作计划、具体的实施大纲;制定工作计划、具体的实施大纲;确定实施计划的时间、人员、设备、资金确定实施计划的时间、人员、设备、资金(2)组织)组织 总负责人总负责人;每一项计划需要;每一项计划需要具体负责人具体负责人(3)监督)监督 利用检查、评审、鉴定、报告获得软件开发中的信息利用检查、评审、鉴定、报告获得软件开发中的信息 形成闭环控制系统形成闭环控制系统 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 2、软件可靠性管理的具体工作
43、、软件可靠性管理的具体工作(1)制定可靠性管理的计划大纲)制定可靠性管理的计划大纲 确定工作人员、制定计划、规范;确定工作人员、制定计划、规范;提出进度时间表提出进度时间表(2)评审)评审 1)需求分析评审)需求分析评审 对软件需求、数据、软件功能、对软件需求、数据、软件功能、性能、接口、环境性能、接口、环境 评审评审 认真分析认真分析可靠性、可维护性、可测试性可靠性、可维护性、可测试性 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 2)设计评审)设计评审 程序的总体方案、自上而下的设计是否合适程序的总体方案、自上而下的设计是否合适 各程序模块、接
44、口是否正确各程序模块、接口是否正确 算法、数据结构算法、数据结构的合理性、先进性的合理性、先进性 中断、实时处理中断、实时处理的合理性的合理性 可靠性、可维护性、可测试性的方案可靠性、可维护性、可测试性的方案 软件设计文档、说明软件设计文档、说明 软件的流程图软件的流程图 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 3)软件实现的评审)软件实现的评审 程序代码和功能、性能是否一致程序代码和功能、性能是否一致 程序格式是否符合规范程序格式是否符合规范 模块和子系统调试结果的正确性模块和子系统调试结果的正确性 测试数据和测试方法的正确性和完备性测试数
45、据和测试方法的正确性和完备性 此阶段文档的齐备情况此阶段文档的齐备情况 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 4)系统测试评审)系统测试评审对软件做出评价,对软件做出评价,确认软件的功能、性能是否符合用户的需求确认软件的功能、性能是否符合用户的需求测试计划测试计划是否合理是否合理功能测试功能测试是否合理、完备是否合理、完备性能测试性能测试是否合理、完备是否合理、完备实时性、可靠性实时性、可靠性的测试的测试测试数据、测试方法测试数据、测试方法是否合理、正确、完备是否合理、正确、完备测试结果测试结果是否合理是否合理测试环境测试环境和实际运行环境
46、是否兼容和实际运行环境是否兼容文档是否规范、齐备文档是否规范、齐备 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 (3)管理的延续)管理的延续因为:因为:测试时不可能把所有的可能性都测试到测试时不可能把所有的可能性都测试到软件使用后:软件使用后:注意软件的运行情况注意软件的运行情况 收集软件的工作情况和出现的问题收集软件的工作情况和出现的问题 定期对系统随访定期对系统随访 如果出现问题,及时消除如果出现问题,及时消除 用户的需求可能发生变化用户的需求可能发生变化 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性
47、设计 5.3 软件的可靠性设计软件的可靠性设计软件的可靠性:软件的可靠性:很大程度上取决于开发人员的素质很大程度上取决于开发人员的素质一、根据软件工程的要求进行软件开发一、根据软件工程的要求进行软件开发 二、采用软件滤波方法二、采用软件滤波方法 三、检错和纠错编码三、检错和纠错编码 四、软件容错技术四、软件容错技术 五、时间准则五、时间准则 六、容错算法的考虑六、容错算法的考虑 七、其它措施七、其它措施 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 一、根据软件工程的要求进行软件开发一、根据软件工程的要求进行软件开发嵌入式软件合适的开发方法:嵌入式
48、软件合适的开发方法:改进的瀑布式开发模型改进的瀑布式开发模型保障软件可靠性的基本条件:保障软件可靠性的基本条件:严格按照软件的开发要求去做严格按照软件的开发要求去做1、认真仔细进行软件设计、认真仔细进行软件设计 清楚细节清楚细节 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 和用户充分沟通,和用户充分沟通,做必要的实验,做必要的实验,对工艺流程仔细观察和分析对工艺流程仔细观察和分析 专家评审专家评审2、使用合适的程序设计方法、使用合适的程序设计方法 分析问题:分析问题:自上而下进行;自上而下进行;具体实现:具体实现:使用模块化程序设计;使用模块化程
49、序设计;编写程序编写程序:使用结构程序设计:使用结构程序设计 嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 3、选择合适的程序设计语言、选择合适的程序设计语言 不同的语言:不同的语言:编程的难易度、效率、复杂程度、是否易于发现错编程的难易度、效率、复杂程度、是否易于发现错误是不一样的误是不一样的 嵌入式系统嵌入式系统:使用:使用C语言编程语言编程4、细心编程、细心编程 编程人员要认真、细心编写程序编程人员要认真、细心编写程序 正确使用函数、中断正确使用函数、中断5、仔细测试、仔细测试 编译、汇编编译、汇编:查找语法、语义的错误:查找语法、语义的错误
50、 执行程序执行程序:找出逻辑错误。:找出逻辑错误。嵌入式系统软件的可靠性设计嵌入式系统软件的可靠性设计 电子系统可靠性设计电子系统可靠性设计 利用断点:利用断点:显示内部寄存器、显示变量等显示内部寄存器、显示变量等 选择可能出现的测试数据选择可能出现的测试数据 黑盒测试黑盒测试 白盒测试白盒测试6、提高软件设计人员的素质、提高软件设计人员的素质一方面一方面:提高软件设计人员的:提高软件设计人员的技术素质技术素质另外另外:提高软件设计人员的:提高软件设计人员的思想素质思想素质 顽强的意志、进取精神顽强的意志、进取精神工作作风工作作风:严格、严肃、严密严格、严肃、严密 嵌入式系统软件的可靠性设计嵌