1McCall的软件质量模型
McCall等认为,特性是软件质量的反映,软件属性可用做评价准则,定量化地度量软件属性可知软件质量的优劣
McCall认为软件的质量模型应该包括 产品的修正、产品的转移,产品的运行
而产品的修正又包括 可维护性、可测试性、灵活性等子特点。
产品的转移包括 可移植性、可复用性、互连性等。
产品的运行包括 正确性、可靠性、效率、可使用性和完整性
2 软件容错技术
提高软件质量和可靠性的技术大致分为两类,一类是避开错误(fault-avoidance)技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错(fault-tolerance)技术,即对某些无法避开的差错,使其影响减少至最小的技术。
2.1 容错软件定义
归纳容错软件的定义,有以下四种:
(1)规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件为具有容错功能的软件,即容错软件。
(2)规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称之为容错软件。
(3)规定功能的软件,在因错误而发生错误时,仍然能在一定程度上完成预期的功能,则把该软件称为容错软件。
(4)规定功能的软件,在一定程度上具有容错能力,则称之为容错软件。
2.2 容错的一般方法
1、结构冗余
(1)静态冗余。常用的有:三模冗余TMR(Triple Moduler Redundancy)和多模冗余。
(2)动态冗余。动态冗余的主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。
(3)混合冗余。它兼有静态冗余和动态冗余的长处。
2、信息冗余
为检测或纠正信息在运算或传输中的错误须外加一部分信息,这种现象称为信息冗余。
3、时间冗余
时间冗余是指以重复执行指令(指令复执)或程序(程序复算)来消除瞬时错误带来的影响。
4、冗余附加技术
冗余附加技术是指实现上述冗余技术所需的资源和技术。
2.3 容错软件的设计过程
容错系统的设计过程包括以下设计步骤:
(1)按设计任务要求进行常规设计,尽量保证设计的正确。
按常规设计得到非容错结构,它是容错系统构成的基础。在结构冗余中,不论是主模块还是备用模块的设计和实现,都要在费用许可的 条件下,用调试的方法尽可能提高可靠性。
(2)对可能出现的错误分类,确定实现容错的范围。
对可能发生的错误进行正确的判断和分类,例如,对于硬件的瞬时错误,可以采用指令复执和程序复算;对于永久错误,则需要采用备份替换或者系统重构。对于软件来说,只有最大限度地弄清错误和暴露的规律,才能正确地判断和分类,实现成功的容错。
(3)按照“成本——效率”最优原则,选用某种冗余手段(结构、信息、时间)来实现对各类错误的屏蔽。
(4)分析或验证上述冗余结构的容错效果。如果效果没有达到预期的程度,则应重新进行冗余结构设计。如此反复,直到有一个满意的结果为止。
提高软件质量和可靠性的技术大致分为两类,一类是避开错误(fault-avoidance)技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错(fault-tolerance)技术,即对某些无法避开的差错,使其影响减少至最小的技术。
2.1 容错软件定义
归纳容错软件的定义,有以下四种:
(1)规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件为具有容错功能的软件,即容错软件。
(2)规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称之为容错软件。
(3)规定功能的软件,在因错误而发生错误时,仍然能在一定程度上完成预期的功能,则把该软件称为容错软件。
(4)规定功能的软件,在一定程度上具有容错能力,则称之为容错软件。
2.2 容错的一般方法
1、结构冗余
(1)静态冗余。常用的有:三模冗余TMR(Triple Moduler Redundancy)和多模冗余。
(2)动态冗余。动态冗余的主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。
(3)混合冗余。它兼有静态冗余和动态冗余的长处。
2、信息冗余
为检测或纠正信息在运算或传输中的错误须外加一部分信息,这种现象称为信息冗余。
3、时间冗余
时间冗余是指以重复执行指令(指令复执)或程序(程序复算)来消除瞬时错误带来的影响。
4、冗余附加技术
冗余附加技术是指实现上述冗余技术所需的资源和技术。
2.3 容错软件的设计过程
容错系统的设计过程包括以下设计步骤:
(1)按设计任务要求进行常规设计,尽量保证设计的正确。
按常规设计得到非容错结构,它是容错系统构成的基础。在结构冗余中,不论是主模块还是备用模块的设计和实现,都要在费用许可的 条件下,用调试的方法尽可能提高可靠性。
(2)对可能出现的错误分类,确定实现容错的范围。
对可能发生的错误进行正确的判断和分类,例如,对于硬件的瞬时错误,可以采用指令复执和程序复算;对于永久错误,则需要采用备份替换或者系统重构。对于软件来说,只有最大限度地弄清错误和暴露的规律,才能正确地判断和分类,实现成功的容错。
(3)按照“成本——效率”最优原则,选用某种冗余手段(结构、信息、时间)来实现对各类错误的屏蔽。
(4)分析或验证上述冗余结构的容错效果。如果效果没有达到预期的程度,则应重新进行冗余结构设计。如此反复,直到有一个满意的结果为止。