设计约束分析:
给出一些约束,来评价软件在这些约束下运行的能力。比如:物理时间约束和响应时间对软件性能的检查。
复杂性度量:
高度复杂的数据结构难以彻底测试,可以采用McCabe或Halstead等这样一些复杂性评估技术来标示出需要进一步改进的区域。等等。
5. 软件编码安全性分析——完成安全相关软件的编码活动
软件编码完成软件详细设计的实现。所以,代码应该体现软件详细设计所提出的设计要求,实现设计过程中开发的安全性设计特征和方法,遵循设计过程中提出的各种约束以及编码标准。
我们一般采用代码走查或采用静态检查工具来检查源代码,依照软件编码安全性分析对代码的要求,应该主要从以下几个方面入手:
a) 分析软件代码是否能追溯到需求;
b) 分析软件代码是否符合支持工具和编程语言分析;
c) 分析软件代码是否满足模块化、可验证、易安全修改的要求;
d) 分析软件编码中所使用技术的安全性和方法的合理性。
下面列出一些可用于提高代码安全性的相关技术。
代码逻辑分析:
如有不可达代码,或代码结构过于复杂,维护性降低。通过实施逻辑重构、方程式重构和存储器解码来进行。
代码数据分析:
关注如何定义和组织数据项。变量忘记赋初值,或变量声明了却没有使用,或出现了冗余代码。
复杂性度量:
复杂软件不稳定,也经不起不可预测的行为。所以,我们努力使软件的复杂度变小。如果有条件采用某种自动化工具,可以通过工具对软件设计或/和代码进行控制,用图形化的方法反映出软件结构中的控制流和数据流,通过连结数/调用数、节点数、嵌套深度等这样一些结构关系的检查,获得复杂度的度量,将会获得很好的效果。