摘要:目的:为了产生一些程序。在执行它们的过程中,这些程序可检测异常控制流,数据或数据值,并且以一种预定的和可接受的方式对这些异常作出反应。
C.2.5 防御性编程
注:在GB/T 20438.32017的表A.4中引用了本技术/措施。
目的:为了产生一些程序。在执行它们的过程中,这些程序可检测异常控制流,数据或数据值,并且以一种预定的和可接受的方式对这些异常作出反应。
描述:为了对控制或数据异常进行检查,在程序设计过程中可以使用许多种技术。为了减少错误的数据处理的可能性,在一个系统的整个程序设计过程中,可系统地使用这些技术。
有两类有重叠的防御性技术。本质错误一安全软件被设计为可适应其本身设计上的缺陷,这些缺陷可能是设计或编码中的错误或者不正确的要求造成的,下面列出了一些防御技术:
——检查变量的范围;
——在可能的情况下,检查值的可信性;
——在子程序入口处检查输人子程序的参数的类型、大小和范围。
从程序功能和变量的物理意义这两方面来看,上述三条建议有助于保证由程序处理的数值是合理的。
只读和读写参数应分开并应检查它们的存取。这些功能应把所有参数处理成只读参数。字面常量不可写。这有助于检测意外的重写或者误用变量。
容错软件被设计为在其自身环境中或使用外部标准或期望的条件来“预计”失效,并按预先规定的方式工作。包含以下技术:
——检查具有物理意义的输入变量和中间变量的可信性;
——检查输出变量的影响,最好直接观察相关系统状态的改变;
——检查软件的配置,包括预期硬件的存在和可存取性,还要检查软件本身是否完整——这一点对于在维护过程之后保持完整性是特别重要的。
有些防御程序设计技术,比如控制流序列检查也能应对外部失效。
参考文献:
Software Engineering for Real-time Systems.J.E. Cooling,Pearson Education,2003,1SBN0201596202,9780201596205
Dependability of Critical Computer Systems:Guidelines Produced by the European Workshop on Industrial Computer Systems, Technical Committee 7(EWICS TC7,Systems Reliability, Safety, and Security).Elsevier Applied Science,1989,ISBN 1851663819.9781851663811
来源:小康科技园地