您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > EN50128软件可靠性、安全性设计与分析
1软件的可靠性分析与设计讲师:杨兴文软件的可靠性分析与设计培训教材讲师:杨兴文QQ:168835519说明:本教材编辑,是基于GB/T14394-2008深圳市联合俊达企业管理咨询有限公司地址:广东省深圳市宝安区25区华丰商务大厦A座B201电话(TEL):(0086)755-32875433东莞市俊达企业管理咨询有限公司地址:广东省东莞市东城区东升路景升商厦310-311电话(TEL):(0086)769-33234366or89861279E-MAIL:jundacsr@163.com1软件可靠性分析与设计的原因•软件在使用中发生失效(不可靠)会导致软件在使用中发生失效(不可靠)会导致任务的失败,甚至导致灾难性的后果。因此,应在软件设计过程中,对可能发生的失效进行分析,采取必要的措施避免将引起失效的缺陷引入软件,为失效纠正措施的制定提供依据同时为避免类似问题的的制定提供依据,同时为避免类似问题的发生提供借鉴。这些工作将会大大提高使用中软件的可靠•这些工作将会大大提高使用中软件的可靠性,减少由于软件失效带来的各种损失。资料提供人:杨兴文编者版板所有,禁止外传Page34Myers设计原则Myers专家提出了在可靠性设计中必须遵循的两个原则:控制程序的复杂程度使系统中的各个模块具有最大的独立性使程序具有合理的层次结构当模块或单元之间的相互作用无法避免时,务必使其联系尽量简单,以防止在模块和单元之间产生未知的边际效应是与用户保持紧密联系资料提供人:杨兴文编者版板所有,禁止外传Page4是与用户保持紧密联系5软件可靠性设计软件可靠性设计的实质是在常规的软件设计中,应用各种必须的方法和技术,使程序设计在兼顾用户的各种需求时,全面满足软件的可靠性要求。软件的可靠性设计应和软件的常规设计紧密件的可靠性计和件的常计紧密地结合,贯穿于常规设计过程的始终。这里所指的设计是广义的设计,它包括了从这里所指的设计是广义的设计,它包括了从需求分析开始,直至实现的全过程。资料提供人:杨兴文编者版板所有,禁止外传Page56软件可靠性设计的四种类型避错设计设计容错设计查错设计软件可靠性设计设计设计改错设计资料提供人:杨兴文编者版板所有,禁止外传Page67软件避错设计避错设计是使软件产品在设计过程中,不发生错误或少发生错误的一种设计方法。的设计原则是控制和减少程序的复杂性。性。体现了以预防为主的思想,软件可靠性设计的首要方法各个阶段都要进行避错从开发方法、工具等多处着手开发方法、具等多处着手避免需求错误深入研究用户的需求(用户申明的和未申明的)用户早期介如采用原型技术用户早期介入,如采用原型技术选择好的开发方法结构化方法:包括分析、设计、实现资料提供人:杨兴文编者版板所有,禁止外传Page7面向对象的方法:包括分析、设计、实现基于部件的开发方法(COMPONENTBASED)快速原型法8软件避错设计准则•(1)模块化与模块独立假设函数C(X)定义了问题X的复杂性函数E(X)定义了求–假设函数C(X)定义了问题X的复杂性,函数E(X)定义了求解问题X需要花费的工作量(按时间计),对于问题P1和问题P2,如果C(P1)C(P2),则有E(P1)E(P2)。人类求解问题的实践同时又揭示了另个有趣的性质–人类求解问题的实践同时又揭示了另一个有趣的性质:(P1+P2)C(P1)+C(P2)–由上面三个式子可得:E(P1+P2)E(P1)+E(P2)这个结论导致所谓的“分治法”将个复杂问题分割成•这个结论导致所谓的“分治法”----将一个复杂问题分割成若干个可管理的小问题后更易于求解,模块化正是以此为据。模块的独立程序可以由两个定性标准度量这两个标准分别•模块的独立程序可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖的紧密程度。内聚衡量一个模块内部各个元素彼此结合的紧密程度。资料提供人:杨兴文编者版板所有,禁止外传Page8。9软件避错设计准则•(2)抽象和逐步求精抽象是抽出事物的本质特性而暂时不考虑它们的细节–抽象是抽出事物的本质特性而暂时不考虑它们的细节•举例–抽象Ⅰ该CAD软件系统配有能与绘图员进行可视化通信的图形界面,能用鼠标代替绘图工具画各种直线和曲线;能完成所有几何计面能用鼠标代替绘图具画各种线和曲线;能完成所有几何计算以及所有截面视图和辅助视图的设计。–抽象ⅡCAD软件任务;–用户界面子任务;创建二维图形子任务–创建二维图形子任务;–管理图形文件子任务;–ENDCAD–抽象III………………抽象•软件工程过程的每一步都是对软件解法的抽象层次的一次精化资料提供人:杨兴文编者版板所有,禁止外传Page910软件避错设计准则•(3)信息隐蔽和局部化()信隐蔽和局部化–信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。“只有需要才能知的模块来说,是不能访问的。只有需要才能知道”–如果绝大多数数据和过程对于软件的其他部分而–如果绝大多数数据和过程对于软件的其他部分而言是隐蔽的,那么在修改期间由于疏忽而引入的错误就很少可能传播到软件的其它部分局部化是指把些关系密切的软件元素物理地放–局部化是指把一些关系密切的软件元素物理地放得彼此靠近•局部变量资料提供人:杨兴文编者版板所有,禁止外传Page1011启发规则•改进软件结构提高模块独立性模块规模应该适中•模块规模应该适中•深度、宽度、扇出和扇入都应适当–深度表示软件结构中控制的层数,它往往能粗略地标志个系统的大小和复杂往能粗略地标志一个系统的大小和复杂程度。–宽度是软件结构内同一层次上的模块总数的昀大值CAB数的昀大值。–扇入是指有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多这是有好处的EFD目越多,这是有好处的。–扇出是一个模块直接调用的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块HGI其中E函数扇入数为2,扇出数为3。资料提供人:杨兴文编者版板所有,禁止外传Page11制和协调过多的下级模块。12启发规则圈复杂度10的控制流图资料提供人:杨兴文编者版板所有,禁止外传Page12圈复杂度115的控制流图圈复杂度10的控制流图13启发规则•模块的作用域应该在控制域之内•模块的作用域应该在控制域之内•力争降低模块接口的复杂程度力争降低模块接口的复杂程度–QUAD-ROOT(TBL,X)=QUAD-ROOT(A,B,C,ROOT1,ROOT2)•设计单入口单出口的模块资料提供人:杨兴文编者版板所有,禁止外传Page13•设计单入口单出口的模块•模块功能应该可以预测14软件避错设计慎重使用容易引入缺陷的结构和技术浮点数指针动态内存分配并行递归中断继承别名资料提供人:杨兴文编者版板所有,禁止外传Page14默认输入的处理15GJB/Z102-97软件可靠性和安全性设计准则——5.12防错程序设计5.12防错程序设计5.125.12防错程序设计防错程序设计参数化参数化公用数据和公共变量公用数据和公共变量标志标志文件文件非授权存取的限制非授权存取的限制无意指令跳转的处理无意指令跳转的处理无意指令跳转的处理无意指令跳转的处理程序检测点的设置程序检测点的设置寻址模式的选用寻址模式的选用数据区隔离数据区隔离数据区隔离数据区隔离安全关键信息的要求安全关键信息的要求信息存储要求信息存储要求资料提供人:杨兴文编者版板所有,禁止外传Page15算法选择要求算法选择要求16软件查错设计17软件查错设计软件查错设计是指在设计中赋予程序某软件查错设计是指在设计中赋予程序某些特殊的功能,使程序在运行中自动查找存在错误的一种设计方法。被动式错误检测在程序的若干部位设置检测点,等待错误在序干部等待征兆的出现主动式错误检测对程序状态主动进行检查资料提供人:杨兴文编者版板所有,禁止外传Page1718被动式错误检测•检测原则–相互怀疑原则:在设计任何一个单元、模块时,假设其它单元、模块存在着错误;立即检测原则当错误征兆出现后要尽–立即检测原则:当错误征兆出现后,要尽快查明,以限制错误的损害并降低排错的难度。难度•负效应–所设置的“接收判据”不可能与预期的正所设置的接收判据不可能与预期的正确结果完全吻合,导致错判或漏判;–软件增加了冗余可能降低可靠性资料提供人:杨兴文编者版板所有,禁止外传Page1819被动式错误检测的实施方法•看门狗定时器当出现潜在不安全的系统状态或有可能转移到这种状态–当出现潜在不安全的系统状态或有可能转移到这种状态时,将系统转移到规定的安全状态。•循环等待次数控制•配合硬件进行处理的设计–如:电源失效、电磁干扰、系统不稳定、接口故障、干扰信号以及错误操作等扰信号,以及错误操作等。•按照已知的数据极限检查数据;•按照变量间恒定关系检验;按照变量间恒定关系检验;•检查所有多值数据的有效性;•对冗余的输入数据进行一致性检验;资料提供人:杨兴文编者版板所有,禁止外传Page19对余性;•……20看门狗的设计看计看门狗技术是控制运行时间的一种有效方法。看门狗实际上是一种看是制间种有看实是种计时装置,当计时启动后看门狗在累计时间,当累计时间到了规定值时触发到时中断(即狗叫),看门狗在不需要时可以关闭。看门狗的设计要首先明确其目的性如要首先明确其目的性。如:(1)要防某段程序可能的死循环,则在此段程序前启动狗,在此段程序后关闭狗,在狗叫中断中进行超时异常处理。(2)要防外来的信息长时间不来,则在开始等外来信息时启动狗,在接收到外来信息时关闭狗,在狗叫中断中进行超时异常处理。(3)要防计算超时,则在开始计算时启动狗,在计算完毕后关闭狗,在狗叫中断中进行超时异常处狗叫中断中进行超时异常处理。显然,不可能要求一个狗可以看管好所有的超时情况。资料提供人:杨兴文编者版板所有,禁止外传Page2021避免潜在的死循环在等待外部信号的程序段中,不允许无限制地等待。正确的做法应是或采用循等待次数控制或使用定时确的做法应是,或采用循环等待次数控制,或使用定时器,使得规定时间内(无论成功或失败)必须保证退出等待外部信号的程序段信号的程序段。资料提供人:杨兴文编者版板所有,禁止外传Page21不允许的设计方法建议采用的设计方法22注意通过双口RAM进行握手通过双口RAM进行信息交换是设计师经常采用的一种设计方案的确RAM提供了信息交换方的方便读写但仅靠RAM。的确双口RAM提供了信息交换双方的方便读写,但仅靠双口RAM要做到读写的时序要求就要格外小心。如此的设计是要避免的:通过双口RAM交换信息,在双口RAM中握手信号单读查握手信号为01H表准设置了握手信号单元。读方检查到握手信号为01H,表明对方已准备好数据,再读数据,读完后将握手信号置为00H;写方检查到握手信号为00H,表明对方已取走数据,再写数据,写完数据后再将握手信号置为01H,表明自己已准备好数据。这种设计不一定可靠,可能会出现写方要写握手信号时,读方正在读握手信号,则写方要写的值写不进去。可靠的设计应用硬件连线保证握手,而不要靠双口RAM中的握手信号。如果一定要靠双口RAM进行握手,则写握手信号单元数据时一定要写完后接着再读出,经验证确实写成功后再进行下面的操作,否则需继续写。资料提供人:杨兴文编者版板所有,禁止外传Page22当然这必须与避免潜在的死循环的设计准则联合使用。23注意通过双口RAM进行握手可靠的设计方法握手标志置不上的可能资料提供人:杨兴文编者版板所有,禁止外传Page23可靠的设计方法24数据采集的多路冗余设计采集的多余计关键数据的采集可采用多路冗余设计,即可以从多个通讯口对同一数据进行采集,通过表决进行有效数据的裁决。通常多采用奇数路的冗余设计,如3路、5路等。(1)开关量的裁决可采用多数票的裁决,如3取2、()开关量的裁可采用多票的裁,取5取3等。(2)模拟量的裁
本文标题:EN50128软件可靠性、安全性设计与分析
链接地址:https://www.777doc.com/doc-5823937 .html