- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件构件与中间件 - 欢迎访问北京大学信息学院软工所 .ppt
关于代码 你有什么样的先验知识? 如何形式化描述这些知识? 如何使用这些知识查找缺陷? 动态测试 离线运行程序 应用最广泛的缺陷查找技术 对功能性最有效 工作量大:微软(半数的测试人员?) 自动程度难以提高 基本分类 黑盒 白盒 静态缺陷查找 不运行程序(广义测试包含这类活动) 静态分析可以涉及更多的路径组合 测试一次只能有一个执行轨迹 可以分析多种属性 死琐?安全漏洞?性能属性? 源码?目标码? 在线检测 当系统正在为用户提供服务时,一般不能进行测试:输入受限 但可以进行检测,获取各种状态、事件 进行分析,并可能据此调整目标系统 尽量减少对系统的应用 与静态分析结合? 二、静态代码缺陷类别 与具体应用“无关” 词法或者语法 共性特性(死锁、空指针、内存泄露、数组越界) 公共库用法(顺序、参数、接口实现,容错,安全) 与具体应用“相关” 类型定义(操作格式,不含其它信息(信息隐藏)) 类型约束(调用的顺序、参数值,接口实现) 需求相关(正确) 如何得到这些知识? 与具体应用无关 词法或者语法:语言设计人员 共性特性: 基础知识 公共库用法:库开发人员(形成文挡) 用户整理(分析实现代码、分析使用代码) 与具体应用相关 类型定义: 应用设计人员 类型约束: 应用设计人员、编程人员 需求相关: 用户 三、静态代码缺陷查找的主要方法 1、静态代码分析 2、编译过程中的代码缺陷查找 3、形式化分析方法 4、缺陷模式匹配 静态代码缺陷查找属于静态代码分析的范畴 静态代码分析是在不运行代码的前提下,获取关于程序信息的过程 静态代码分析还可以用于 获取设计结构 理解代码功能 演化代码 …… 给定一个程序,可以问许多问题: ? 对于某个输入,停机吗? ? 执行过程需要多少内存? ? 对于某个输入的输出是什么? ? 变量 x 被使用前是否已经初始化过了 ? 变量 x 的值将来被读取吗? ? 变量 x 的值是否一直大于0? ? 变量 x 的值取值范围是多少? ? 变量 x 的当前值是什么时候赋予的? ? 指针p会是空吗? Rice 定理 Rice’s 定理 (1953) 非正式地指出: 所有关于程序“行为”的问题是不可判定的(undecidable) 例如:能否判定如下变量 x 的值? x = 17; if (TM(j)) x = 18; 第 j 个图灵机的停机问题是不可判定的 x的值也就不能判定 2、编译过程中的代码缺陷查找 最基本的代码分析 词法分析 语法分析 抽象语法树 (AST) 类型检验 语义分析? 变量赋值、调用操作、类型变换 等 程序设计语言中的类型 某些具有相同/相似特性实例的集合 值的集合?操作的集合? 基本类型 整数、实数、枚举、字符、布尔 自定义 结构、抽象数据、面向对象 为什么要引入?便于理解?帮助人们发现错误! 静态类型化语言 每个表达式在静态程序分析时都是确定的 强类型化语言 所有表达式的类型是一致的(可以在运行时检验) 3、形式化的软件分析方法 形式化软件分析是一种基于数学的“自动化”技术:给出一个特定行为的精确描述,该技术可以“准确地”对软件的语义进行推理 模型检测 基于“有限状态自动机”理论 从代码中抽取有限状态转换系统模型,用来表示目标系统的行为 适合检验“并发”等时序方面的特性 对于值域等类型的分析比较困难 状态爆炸 抽象解释 一种基于“格”理论的框架 许多形式化分析方法都可以被涵盖其中 主要适合 数据流分析(Data Flow Analysis) 尤其是对循环、递归等 主要思想是对代码进行“近似”,将不可判定问题进行模拟 定理证明(Theorem Proving) 演绎方法(Deductive Methods) 基于Floyd/Hoare 逻辑 用如下形式表示程序的状态{P} C {Q} C: 可执行代码 P: Pre-condition,执行前的状态属性 Q: Post-condition,执行后的状态属性 利用推理/证明机制解决 语句复合问题 符号执行 通过使用抽象的符号表示程序中变量的值来模拟程序的执行,克服了变量的值难以确定的问题 跟踪各路径上变量的可能取值,有可能发现细微的逻辑错误 程序较大时,可能的路径数目增长会很快。可以选取重要的路径进行分析 4、缺陷模式匹配 事先收集足够多的共性缺陷模式 用户仅输入待检测代码就可以 与”类型化”方法关系密切 比较实用 容易产生“误报” 四、缺陷查找工具 准确? 漏报(False Negative, not Complete) 误报(False P
您可能关注的文档
- 网通3G网络 无线网络规划原则.ppt
- 网络发展趋势和新技术.ppt
- 美亚国际网商业计划书 - 旅游 旅游线路 旅游网站 旅交汇 同 .ppt
- 美国伟康M510(REMstar Auto M Series A-Flex)全自动呼 .doc
- 美得太动人了! (摄影师镜头下的美景).ppt
- 职业病危害管理 - 易迈管理学习网---网络商学院 管 .ppt
- 联合书院院长讲座系列 时空的几何历史.ppt
- 聚合物的粘弹性 - 首页 沈阳化工大学材料科学与工 .ppt
- 肝性脑病 Hepatic encephalopathy - 全科医师(军医)继续 .ppt
- 股票的发行与上市 Chapter 7 Issuing Equity .ppt
最近下载
- 《生态系统的结构和功能》教学设计-2025-2026学年人教版(2024)初中生物八年级上册.docx VIP
- 中成药处方点评专家共识的解读.pptx
- 管理人员台账+特种作业人员台账.docx VIP
- 《冶金企业和有色金属企业安全生产规定》、《生产安全事故罚款处罚规定》试题.docx VIP
- 人教版2025-2026学年八年级历史上册教学工作计划(及进度表).docx
- 整车开发流程培训.pptx VIP
- 残疾人就业指导培训项目组织机构及人员配备.docx VIP
- 体格检查之腹部检查.ppt VIP
- 《中华优秀传统文化》(卢志宁)089-2教案 第8课 中医诊疗与养生.pdf VIP
- 巨人通力GPN65KM(KDL or KDM)-YH无机房电气原理图纸_51833752D04D-2023-9.pdf
文档评论(0)