高级软件工程 静态代码的可信性分析概述6/45 静态代码缺陷查找的角色[Rciw! V&Ⅴ 模型检测静态分析卡动态测试在线监测了 Product (Artifact) Developing process Analyzing (Designing Coding Compiling)( Deploying Maintainin
高级软件工程 静态代码的可信性分析概述 6/45 Product (Artifact) Analyzing Designing Coding Compiling Deploying Developing Process Maintaining V&V 模型检测 静态分析 动态测试 在线监测 一、静态代码缺陷查找的角色 Review!
高级软件工程 静态代码的可信性分析概述7/45 动态测试 ●离线运行程序 ●应用最广泛的缺陷查找技术 对功能性最有效 工作量大:微软(半数的测试人员? 自动程度难以提高 ●基本分类 黑盒 白盒 许多缺陷靠运行很难暴露:死琐等
高级软件工程 静态代码的可信性分析概述 7/45 动态测试 ⚫ 离线运行程序 ⚫ 应用最广泛的缺陷查找技术 – 对功能性最有效 – 工作量大:微软(半数的测试人员?) – 自动程度难以提高 ⚫ 基本分类 – 黑盒 – 白盒 许多缺陷靠运行很难暴露:死琐等
高级软件工程 静态代码的可信性分析概述8/45 静态缺陷查找 不运行程序(广义测试包含这类活动) ●静态分析可以涉及更多的路径组合 测试一次只能有一个执行轨迹 可以分析多种属性 死琐?安全漏洞?性能属性? ●源码?目标码?
高级软件工程 静态代码的可信性分析概述 8/45 静态缺陷查找 ⚫ 不运行程序(广义测试包含这类活动) ⚫ 静态分析可以涉及更多的路径组合 – 测试一次只能有一个执行轨迹 ⚫ 可以分析多种属性 – 死琐?安全漏洞?性能属性? ⚫ 源码?目标码?
高级软件工程 静态代码的可信性分析概述9/45 在线检测 ●当系统正在为用户提供服务时,一般不能 进行测试:输入受限 但可以进行检测,获取各种状态、事件 ●进行分析,并可能据此调整目标系统 ●尽量减少对系统的应用 ●与静态分析结合?
高级软件工程 静态代码的可信性分析概述 9/45 在线检测 ⚫ 当系统正在为用户提供服务时,一般不能 进行测试:输入受限 ⚫ 但可以进行检测,获取各种状态、事件 ⚫ 进行分析,并可能据此调整目标系统 ⚫ 尽量减少对系统的应用 ⚫ 与静态分析结合?
高级软件工程 静态代码的可信性分析概述10/45 静态代码缺陷类别 ●与具体应用“无关” 词法或者语法 共性特性(死锁、空指针、内存泄露、数组越界) 公共库用法(顺序、参数、接口实现,容错,安全 与具体应用“相关” 类型约束(调用的顺序、参数值,接口实现)) 类型定义(操作格式,不含其它信息(信息隐藏 需求相关(正确)
高级软件工程 静态代码的可信性分析概述 10/45 二、静态代码缺陷类别 ⚫ 与具体应用“无关” – 词法或者语法 – 共性特性(死锁、空指针、内存泄露、数组越界) – 公共库用法(顺序、参数、接口实现,容错,安全) ⚫ 与具体应用“相关” – 类型定义(操作格式,不含其它信息(信息隐藏)) – 类型约束(调用的顺序、参数值,接口实现) – 需求相关(正确)