Presentation Title By Author 2014 The MathWorks, Inc. 1
Best Practice for Model VnV 模型验证的最佳实践 于化龙,MathWorks 中国 软件项目支持部高级经理 2
基于模型设计帮助您节省 62% 的成 Total Savings $3,720,000 $1,500,000 MBD Dev Costs Total Investments $592,000 ROI 528% $1,000,000 Trad Dev Costs $500,000 $0 Total Savings $3,720,000 Total Investments $592,000 ROI 528% Requirements Design Coding Analysis Testing * Averaged data from Aerospace customers 3
基于模型设计中的持续验证 Requirements Model Verification 1 User Acceptance Design Integration Code 2 Code Verification 4
模型验证 模型验证流程 可执行的微流程 独立的验证项目 验证工程师的职责 开发工程师的验证职责 测试用例的继承 适合流程的工具 Simulink Verification and Validation Simulink Design Verifier Simulink Code Inspector 定制化的自动化工具 模型验证工具 模型验证活动 全流程的持续验证活动 模型规范与缺陷检查 模型功能性测试 模型覆盖率测试 模型验证报告编写 5
最佳实践 1 从 V 流程到微流程 2 模型验证项目管理 3 模型测试驱动设计 4 自动化测试的实现 5 应用 Simulink 验证工具 6
从 V 流程到微流程 Requirements Acceptance Design Integration 需求 需求追踪 模型设计 模型缺陷检查模型规范检查 模型功能性验证模型覆盖率验证 Code 需求追踪 代码生成 模型 模型与代码结构一致性验证 目标码功能性验证代码运行时缺陷检查 源代码 模型与目标码功能一致性验证代码运行时缺陷检查代码覆盖率验证 编译 代码规范检查 可执行目标码 7
模型验证微流程 模型验证开始 模型验证版本库 获取项目数据 tpj_projectname.prj prj_starttestproject.m 打开项目文件配置测试环境 设定工作路径载入模型数据 被测模型 模型规范检查 Model Advisor 报告 被测模型 模型缺陷检查 Design Verifier 报告 被测模型 模型覆盖率检查 Design Verifier 报告 是 缺陷? 需求文档被测模型 否 设计测试模型 ths_model_xxx.mdl 需求文档 设计测试用例 tcs_model_xxx.xlsx tru_model_xxx.m 运行测试用例比较测试结果 trp_model_xxx.doc tcv_model_xxx.cvt trs_model_xxx.mat 覆盖率 100%? 是 tcv_model_xxx.cvt 否 补充测试用例满足覆盖率要求 Signal Builder Signal Builder 转换测试用例设定期望值 tcs_model_xxx.xlsx 问题报告 否 结果 100% 是 提交全部测试文件 tcs_model_xxx.xlsx ths_model_xxx.mdl trp_model_xxx.doc prp_model_xxx.doc tcv_model_xxx.cvt trs_model_xxx.mat prp_model_xxx.doc 下一个模型? 否 是 项目实施结束 8
最佳实践 1 从 V 流程到微流程 2 模型验证项目管理 3 模型测试驱动设计 4 自动化测试的实现 5 应用 Simulink 验证工具 9
独立的模型验证项目 开发项目是持续递进的, 锁定一个版本, 开始下一个版本 验证项目是验证锁定后的版本, 提交问题供后续版本修改 验证项目与开发项目由不同的团队独立进行 验证项目有独立的设计 执行 审核 提交等流程 验证项目和开发项目一样存在设计的重用 10
使用 Simulink Project 管理模型验证项目 典型的模型验证项目配置 测试包 :test 被测单元 :testunit 通用工具 :utility 典型的一个模型验证包 针对一个独立的模型 测试用例 :tcs 测试驱动 :ths 测试脚本 :tru 测试结果 :trs/tcv 测试报告 :trp 11
案例 1: 模型验证项目管理 12
验证工程师的工作 模型规范与缺陷检查 (Simulink V&V, Simulink DV) 设计测试用例 (Simulink V&V, Simulink DV) 设计测试驱动 (Test Harness Model) 运行测试用例 (Test Script) 分析测试结果 (Test Script, Simulation Data Inspector) 生成测试报告 (Report Generator) 提交问题报告 (Report Generator) 开发工程师的验证工作 建立需求追踪 模型规范检查 模型缺陷检查 模型仿真测试 13
案例 2: 模型规范检查与定制 14
最佳实践 1 从 V 流程到微流程 2 模型验证项目管理 3 模型测试驱动设计 4 自动化测试的实现 5 应用 Simulink 验证工具 15
模型测试驱动的设计 保证被测模型的绝对未被修改 输入测试用例数据的类型转换 输入数据整体初始化 输入数据与输出数据的选择 输出信号记录点的设定 初始化 测试用例 类型转换 数据选择 被测对象 输出记录 16
模型测试驱动的设计是验证工程师的重要工作 17
案例 3: 模型功能性测试与覆盖率测试 创建 测试驱动 运行 测试用例 分析 模型覆盖率 补充 缺失测试用例 合并测试用例完整测试 18
最佳实践 1 从 V 流程到微流程 2 模型验证项目管理 3 模型测试驱动设计 4 自动化测试的实现 5 应用 Simulink 验证工具 19
模型验证自动化实现 自动化测试脚本 测试脚本 设定配置参数 数据初始化 读取测试用例 执行测试用例 测试结果分析 测试报告生成 通用函数和模版 测试用例读取 测试结果分析 测试报告模版 20
有限模型验证自动化 模型验证同样需要工程师的设计思想 测试用例的设计 测试驱动的设计 自动化脚本执行重复性的工作 数据的初始化 测试用例的导入 多个测试用例的批量执行 测试结果的比较 自动化脚本执行模版化的工作 测试报告的生成 21
案例 4: 通过脚本实现模型测试自动化 22
最佳实践 1 从 V 流程到微流程 2 模型验证项目管理 3 模型测试驱动设计 4 自动化测试的实现 5 应用 Simulink 验证工具 23
应用 Simulink 验证工具 需求追踪 模型规范检查模型缺陷检查 功能性测试覆盖率测试测试用例生成 Simulink Verification and Validation Simulink Design Verifier Simulink Code Inspector Report Generator DO Qualification Kit 24
基于微流程的定制工具 Matlab 本身也是开发工具 从 R2012b 开始具有 APPS 功能 应用 GUI 设计自己的定制工具 使用 Simulink 验证工具接口 通过定制工具固化验证微流程 25
模型验证 用户案例 Bell Helicopter designs civilian tiltrotor Simulink Continental tests heavy-duty trucks Simulink Verification and Validation TRW generates tests for parking brake Simulink Design Verifier Nissan increases software reliability Polyspace 26
接下来 : 使用 Polyspace 进行软件代码运行错误检查和验证 Requirements Design Integration User Acceptance 李春彦,MathWorks 中国 高级应用工程师 Code Code Component 27