使用Polyspace进行软件代码错误检查和运行期错误证明

Similar documents
PowerPoint Presentation

模型验证最佳实践

PowerPoint Presentation

《后工业社会的来临》导读

Presentation Title

2. 下 列 理 解 和 分 析, 不 符 合 原 文 意 思 的 一 项 是 ( ) A. 水 手 在 伦 敦 讲 东 印 度 群 岛 的 所 见 所 闻, 匠 人 在 火 炉 边 讲 自 己 的 人 生 经 历, 他 们 讲 的 故 事 各 有 特 点, 但 同 属 于 传 统 故 事 模 式

Presentation Title

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温

Untitiled


untitled

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)

Presentation Title

(给多有拉姆)佛子行三十七颂1——7

《佛子行三十七颂》讲记1

至 尊 法 王 蒋 阳 龙 朵 加 参 尊 者 上 师 瑜 伽 皈 依 境

C/C++ - 字符串与字符串函数

工程设计资质标准

4 办 公 室 工 作 实 务 ( 第 3 版 ) 第 1 单 元 单 位 组 织 的 有 效 运 作 离 不 开 办 公 室 工 作 情 景 案 例 左 景 被 宏 达 商 业 集 团 公 司 录 用 为 秘 书, 试 用 期 间, 只 能 在 办 公 室 打 杂, 有 时 工 作 稍 有 差 错

nbqw.PDF

nbqw.PDF

Presentation Title

2014年大学生村官考试公共基础知识:社会革命和社会改革

了 波 涛 和 号 声 袁 读 者 很 容 易 就 进 入 广 州 城 的 水 上 旅 途 袁 进 入 一 座 野 水 上 名 城 冶 的 传 说 中 去 遥 于 是 袁 一 座 名 城 往 事 充 满 了 漂 流 感 袁 旋 律 自 水 上 而 来 袁 我 们 就 这 样 来 到 了 往 事 的

壹、摘 要

資訊安全管理系統建置初始工作的研究

<4D F736F F D20D5D0B1EACEC4BCFEBCB0C7E5BDE0B7FECEF1BACFCDAC28C2C9CAA6B0E631A3A92E646F6378>

國立中山大學學位論文典藏.PDF

!!! #!!! $##%!!! $!!!! &!!!! (!! %!! )!!! *!!!!!!! #!!!!! $

"#" " "" " " "# $ " %( )# #( %& ( " % " " # ) *# " # " $ " #(( " " "#+( % " % $ " & # " " $ $ " " $ % & " #$ % $ "& $ "" " ") # #( "( &( %+"(

89,,,,,,,,,,,,,,,,?,???,,,,,,,,,,,,,

!##$ %!!##$ & (!##$ %!!##$ &!##$!##(!##$! "

Microsoft Word 養生與保健_中山大學_講義


萬里社區老人健康照護手冊

Microsoft Word - 強制汽車責任保險承保及理賠作業處理辦法 doc

Microsoft Word - 06.Understanding of Pregnancy and Birth.doc

(➂)11. 炎 炎 夏 日, 即 使 下 起 滂 沱 大 雨, 都 消 除 不 了 令 人 心 煩 的 暑 氣 這 句 話 主 要 想 表 達 什 麼? ➀ 夏 日 裡 經 常 下 著 滂 沱 大 雨, 令 人 心 煩 ➁ 下 著 滂 沱 大 雨 的 日 子, 可 以 消 除 暑 氣 ➂ 夏 日

範本檔

附 件 一 : 办 理 集 中 式 银 期 转 账 业 务 网 点 名 单 序 号 地 区 网 点 名 称 地 址 联 系 人 电 话 23 工 商 银 行 安 徽 省 铜 陵 百 大 支 行 铜 陵 市 长 江 东 路 50 号 鲁 桂 珍 工 商 银 行 安 徽

2. 二 年 級 吳 毓 秀 老 師 : 感 謝 午 餐 公 司 平 時 均 能 準 時 送 餐, 但 希 望 能 不 要 使 用 加 工 品, 且 學 生 反 映 希 望 能 多 加 蛋 品 的 食 物 3. 三 年 級 柯 阿 青 老 師 : 雞 肉 有 血 水 味, 請 午 餐 公 司 能 調

高雄市立五福國民中學九十四學年度第一學期第三次段考二年級本國語文學習領域試題卷

人 物 春 秋 杨 永 泰 将 其 削 藩 策 略 概 括 为 : 以 经 济 方 法 瓦 解 冯 玉 祥 的 第 二 集 团 军, 以 政 治 方 法 解 决 阎 锡 山 的 第 3 集 团 军, 以 军 事 方 法 解 决 李 宗 仁 的 第 四 集 团 军, 以 外 交 方 法 对 付 张 学

台北老爺校外實地參訪結案報告

糖尿病食譜

,,,,,,, (,, ),,,,,,,,,,,,,,, ,,, 4 11,, ( ),,,, ( ), :, ( ),,, 1995, 66 ; ( ),, 1996, , 3-4,,



声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 任 何 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工

育 部 分 則 由 陳 淑 貞 委 員 及 李 兆 環 委 員 共 同 執 行, 在 此 先 感 謝 各 位 委 員 及 學 者 專 家 之 參 與 二 目 前 評 論 報 告 初 稿 之 架 構 區 分 為 對 政 府 機 關 回 應 意 見 之 觀 察 優 點 及 待 改 進 事 項, 以 及

58, ,769 51,911 74,666 35, , , , ,

壹、學校背景

游戏攻略大全(十).doc

保 险 公 司 金 富 月 盈 两 产 全 品 保 名 险 称 ( 分 红 型 ) 产 分 品 红 类 型 缴 费 年 类 缴 型 缴 10 费 年 期 缴 限 保 险 期 限 ( 年 ) 聚 富 2 号 两 全 保 险 ( 万 能 型 ) 万 能 型 趸 缴 趸 缴 6 年 龙 享 安 康 重 疾

untitled

(1) (2) (3) 80% 1. 49% 51%

二零一五年施政報告 - 施政綱領 - 第三章 扶貧及為弱勢社群提供支援

<4D F736F F D20BACBB0B2C8ABD3EBB7C5C9E4D0D4CEDBC8BEB7C0D6CEA1B0CAAEB6FECEE5A1B1B9E6BBAEBCB C4EAD4B6BEB0C4BFB1EA2E646F63>

<4F4BBEFAA576A470BBA15FC160AAED E786C73>

辽宁铁~1

I

海底捞你学不会

YEN/MIAO CHING MS 27FEB DEL HKG

Microsoft Word - 02文本.docx

Transcription:

Presentation Title By Author 2014 The MathWorks, Inc. 1

使用 Polyspace 进行软件代码运行错误检查和验证 李春彦 应用工程师 MathWorks China 2014 The MathWorks, Inc. 2

内容 Polyspace 背景介绍 Polyspace 产品功能及使用技巧 在基于模型设计开发流程中使用 Polyspace Polyspace 及相关工具对认证的支持 3

Hello, Polyspace! 1996 Alain Deutsch 时任 INRIA( 法国国家信息与自动化研 究所 ) 研究员 ; 成功地将抽象解释方法用于 Ariane 5 Ada 代码的检 查 ; 1999 成立了 2007 Daniel Pilaud Alain Deutsch 收购 Polyspace 4

Polyspace: 静态代码分析工具 作用 : 解决软件的鲁棒性问题, 确保软件的安全性和可靠性 ; 能够做什么? 发现编码错误 检查编码规则一致性 (MISRA/JSF) 提供代码静态度量信息 ( 圈复杂度等 ) 证明代码中确定存在或者确定不存在的错误 表示代码已经达到了预期的质量水平 认证帮助 :DO-178 C, ISO 26262, 5

嵌入式系统的缺陷 与需求不一致 时间相关的错误 Simulink Design Verifier 仿真, 集中测试, 实验测试 HIL 测试 静态错误 编译器, 静态分析工具, 人工代码评审, 建模规则检查 Polyspace 缺陷 什么样的工具和流程能够发现这些缺陷? 你能证明系统不存在特定缺陷吗? 运行时错误 Polyspace 6

常见的软件代码错误 运行时错误 40% 左右的软件错误为运行时错误 ; 运行时错误是软件代码的潜在缺陷, 并不频繁出现 ; 运行期错误会导致系统崩溃和意外的行为 并发问题 编程错误 不可达代码 静态或者动态内存错误 7

Polyspace C / C ++ 产品系列 Polyspace Bug Finder 快速找到嵌入式软件中的错误 检查代码符合 MISRA 和 JSF 编码规则 供软件工程师日常使用 Polyspace Code Prover 证明代码是安全和可靠的 ( 是否包含运行时错误 ) 软件组件的深层验证 执行 QA 对生产就绪代码的签收 还支持 Ada 语言代码证明 8

使用 Polyspace 迎接复杂系统设计的挑战 现代汽车动力系统 500-1,000(KLOC) 减少软件故障风险 波音 787 飞控系统 6,500 (KLOC) 航天器 * 3-1,700 (KLOC) 应用于质量关键 业务关键或者高完整性系统中 ; 减少产品代码中可能导致系统崩溃的潜在错误 缩短软件测试和验证周期 减少软件的鲁棒性测试 ; 显著缩短系统开发周期 *Automated Software Verification & Validation: An emerging approach for ground operations Bell and Brat, NASA 9

内容 Polyspace 背景介绍 Polyspace 产品功能及使用技巧 在基于模型设计开发流程中使用 Polyspace Polyspace 及相关工具对认证的支持 10

如何找到代码的运行时错误? 0 k=ioread_i32(); 1 I=2; 2 J=K+5; 3 while (I<10) { 4 I=I+1; 5 J=J+3; 6 } 7 8 /(I-J); 当 k=-19 时, 第 8 行会出现除零错误 第 8 行有没有潜在的 除零 风险? 11

Polyspace 是如何显示的? 0 k=ioread_i32(); 1 I=2; 2 J=K+5; 3 while (I<10) { Polyspace 4 I=I+1; 5 J=J+3; 6 } 7 8 /(I-J); 12

Polyspace 的结果 A colorful world P r o v e n Green: reliable safe pointer access Red: faulty out of bounds error Gray: dead unreachable code Orange: unproven may be unsafe for some conditions static void pointer_arithmetic (void) { int array[100]; int *p = array; int i; for (i = 0; i < 100; i++) { *p = 0; } p++; variable I (int32): [0.. 99] assignment of I (int32): [1.. 100] if (get_bus_status() > 0) { if (get_oil_pressure() > 0) { *p = 5; } else { i++; } } i = get_bus_status(); Purple: violation MISRA-C/C++ or JSF++ code rules Range data tool tip } if (i >= 0) { *(p - i) = 10; } 13

Polyspace 行业应用 Polyspace 对于任何类型的代码都是高效的 不同应用的代码缺陷分布 不同应用的代码证明比例 98% 意味着只有 2% 的检查是橙色的 Polyspace 采用的形式化方法是通用的 14

Polyspace 产品的功能 第三方 IDE 环境的集成 Visual Studio,Eclipse 能够与用户的构建环境进行集成并自动生成 Polyspace 配置文件 polyspace-configure 自动代码生成工具的集成 Embedded Coder, Target Link, IBM Rational Rhapsody 支持在集群上进行部署安装 利用集群优势加快 Polyspace Code Prover 的验证速度 15

Polyspace 支持与第三方 IDE 环境集成 支持的环境有 Eclipse,Visual Studio 16

Polyspace 配置工具 :polyspace-configure 与用户的构建环境进行集成, 自动生成 Polyspace 工程或配置文件 命令 :polyspace-configure 使用方法 : R2014a Video 17

Polyspace 支持与自动代码生成工具进行集成 Embedded Coder, TargetLink, IBM Rational Rhapsody 18

内容 Polyspace 背景介绍 Polyspace 产品功能及使用技巧 在基于模型设计开发流程中使用 Polyspace Polyspace 及相关工具对认证的支持 19

在开发流程中引入 Polyspace 需求 验证 外部软件组件 结构设计 集成测试 单元设计 单元测试 实现 20

在开发流程中引入 Polyspace 需求 验证 外部软件组件 结构设计 集成测试 单元设计 使用 Polyspace Bug Finder: 消除编码错误 检查编码规则 (i.e. MISRA) 单元测试 实现 21

在开发流程中引入 Polyspace 需求 验证 外部软件组件 结构设计 使用 Polyspace Code Prover: 证明代码不存在运行期错误 证明单元符合设计要求 ( 输入 / 输出 ) 集成测试 单元设计 单元测试 实现 22

在开发流程中引入 Polyspace 需求 结构设计 使用 Polyspace Bug Finder: 获取代码质量度量信息 编码规则检查 发现代码集成缺陷 使用 Polyspace Code Prover: 证明单元之间不存在运行期错误 证明符合设计要求 ( 输入 / 输出 ) 证明共享内存的安全性 验证 外部软件组件 集成测试 单元设计 单元测试 实现 23

在开发流程中引入 Polyspace 需求 发布 Polyspace 结果 Polyspace Web Metrics 生成报告 验证 外部软件组件 结构设计 集成测试 单元设计 单元测试 实现 24

内容 Polyspace 背景介绍 Polyspace 产品功能及使用技巧 在基于模型设计开发流程中使用 Polyspace Polyspace 及相关工具对认证的支持 25

软件质量目标 (Software Quality Objectives) 在 Polyspace 中设定软件质量目标 确定文件 模块或者组件是否达到了预定质量目标 定义软件质量目标门槛 软件代码度量信息 违反编码规则数量 红色 灰色 橙色的检查数量 将 SQO 作为流程指南 根据质量目标来指定工具使用和流程改进的计划 26

使用 Polyspace 进行 DO-178 认证 MathWorks can provide a DO-178 Qualification Kit to help qualify Polyspace for your DO-178 certification projects 使用 DO Qualification Kit, 您可以 证明 Polyspace 产品可以用于满足 DO-178C 和相关标准如 DO-330 产品开发活动 帮助获得认证 套件包括 : 文档, 测试用例和流程指导书 工具资质证明计划, 工具的使用要求和其它材料 允许针对特定项目对工具认证套件进行修改 Polyspace Bug Finder is a Criteria 3 Tool for DO-178C Polyspace Code Prover is a Criteria 2 Tool for DO-178C 27

Polyspace 支持 DO-178B/C 认证 代码与软件设计结构一致 (architecture) 数据字典, 函数调用树 代码是可以被验证的 (Verifiable) 发现不可达代码 代码要符合编码规则 MISRA C, MISRA C++, 或 JSF++ 规则检查 静态度量信息, 例如圈复杂度 ( 编码标准的一部分 ) 代码是准确的 (Accurate) 和一致的 (Consistent) 发现代码中的运行期错误, 例如除零 溢出 变量未初始化等 28

使用 Polyspace for IEC 61508, ISO 26262, EN 50128, IEC 62304 认证 MathWorks can provide a Certification Kit for IEC 61508 related standards 使用认证套件, 您可以 在推荐流程下使用 Polyspace 来验证您的代码 帮助获得认证 套件包括 工具资质证书, 审核材料和测试套件 可以使用 Polyspace 的工具证明材料 推荐的工作流程 29

Polyspace 可以提供的帮助 1 编码 / 代码评审 避免编程错误和高效的代码评审 开发 过程 2 单元测试 / 集成测试 有效减少健壮性测试 3 认证 / 文档化 认证支持 / 自动生成报告 31