2015 The MathWorks, Inc. 1
基于模型设计下的可执行流程与实施 于化龙 MathWorks 中国 高级项目支持部经理 2015 The MathWorks, Inc. 2
今日议题 流程改进与可执行 基于模型设计的实施 项目支持中国案例 3
理解流程 Requirements Acceptance Design Integration 需求 需求追踪 模型设计 模型缺陷检查模型规范检查 模型功能性验证模型覆盖率验证 Code 需求追踪 代码生成 模型 模型与代码结构一致性验证 目标码功能性验证代码运行时缺陷检查 源代码 模型与目标码功能一致性验证代码运行时缺陷检查代码覆盖率验证 编译 代码规范检查 可执行目标码 4
传统的嵌入式软件设计流程 系统部 模型只是用作仿真, 手工编写设计文档 维护 Simulink,C 和 FORTON 等多套模型 早期验证缺失, 或依赖硬件快速原型进行需求确认 需求文档 建模仿真 设计文档 系统测试 文档传递需求 模型无法继承 设计迭代繁重 软件架构 手写编码 单元测试 软件部 基于设计文档, 手工编写代码 无继承模型, 大量继承代码, 影响代码生成开展 5
基于模型的嵌入式软件设计流程 系统部 通过模型仿真进行系统设计 在模型阶段进行单元测试, 提供设计质量 通过模型生成系统说明文档, 辅助软件部软件架构设计 需求文档 建模仿真 模型验证 系统测试 系统描述报告 自动生成 模型早期验证 测试用例重用 模型优化 统一模型 代码生成 软件架构 自动代码 代码测试 软件部 对模型进行优化, 自动生成代码 继承模型测试用例, 进行代码测试 6
可执行的流程 SAE Technical Paper Series 2004-01-0894 Caterpillar Automatic Code Generation Jeffrey M. Thate and Larry E. Kendrick Caterpillar, Inc. Siva Nadarajah The MathWorks, Inc. 目标 行为 证据 组织 角色 检查 7
今日议题 流程改进与可执行 基于模型设计的实施 项目支持中国案例 8
理解平台 平台 基于模型设计工作平台 MATLAB/Simulink 客制化及自动化应用程序 MATLAB/APP 工具 模型设计 Simulink/ Stateflow 模型验证 SLVNV/ SLDV/STM 代码生成 Embedded Coder 代码验证 SLCI/ Polyspace 实时测试 Simulink Realtime 基于模型的项目管理 Simulink Project 基于模型的文档管理 Report Generator 基于模型的行业认证 DO Qualification Kit IEC Certification Kit 流程 基于模型的设计流程 MBD Process 9
基于模型设计流程及 MW 对应工具 需求 SLVNV - RMI 需求追踪 Report Generator Simulink/ 模型设计 Stateflow SLVNV- Model Advisor Simulink 模型缺陷检查 Design Verifier 模型规范检查 SLVNV - API 模型功能性验证 Report Generator SLVNV 模型覆盖率验证 - Model Coverage Simulink Design Verifier Embedded 需求追踪 Coder 模型 Embedded 代码生成 Coder 模型与代码结构一致性验证 Simulink Code Inspector Embedded Coder 目标码功能性验证 Report Generator Ployspace 代码运行时缺陷检查 - RTE Analysis 源代码 Complier 编译 IDE Polyspace 代码规范检查 - MISRA-C Checks 模型与目标码功能一致性验证 Embedded Coder Simulink 代码运行时缺陷检查 Design Verifier 代码覆盖率验证 Report Generator Polyspace RTE Analysis Code Coverage Tool 可执行目标码 10
模型验证可执行流程及其自动化实现 模型验证开始 模型验证版本库 获取项目数据 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 下一个模型? 是 否 项目实施结束 11
建立基于模型设计平台的一些重要条件 有效的 Simulink 建模规范 标准的 Simulink 模块库 可行的数据字典管理方案 自动代码生成环境与集成编译环境 严格的测试方法及流程 确定的软件架构及集成方案 统一的自动报告体系 12
定位自己的团队, 选择合理的起点 13
评判企业基于模型设计成熟度的六个维度 模型设计 仿真分析 代码生成 验证确认 流程工具 组织管理 14
Capability / Maturity 采用基于模型设计的分阶段实施方法 Plan Assess Execute Plan Execute & Refine Optimize Initial Migration Plan Deploy Component Deploy Full Application Deploy Enterprise-wide Proof of Concept Initial MBD Process Phase 1 Phase 2 Phase 3 Phase 4 Time 15
阶段一 : 概念证明 主题 : 发现 活动 : 制定目标 组建专职团队并进行培训 选择算法 创建模型并在目标机上运行 目标 : 专注于技术 : 证明工具可以用于工作 学习并建立对下一步改进的技术储备 主要输出物 : 初始的改进计划 16
阶段一 : 概念证明 成功要素 : 从最简单的开始 严格的时间节点 专职的跨职能团队 常见陷阱 : 产品线上的发布 投资回报率期望 没有帮助下的过紧的时间节点 17
改进计划 目标 指标 组织 培训 流程改进 约束 标准 自动化 改进计划是不断变化的 并非一成不变! 18
阶段二 : 部署一个部件 主题 : 执行与改善 新活动 : 选择一个部件进行部署 与产品开发与配置管理进行集成 引入基于模型的验证与确认 : 基于仿真的测试 目标 : 更多的工程师参与基于模型的设计 更大的模型, 更多的功能 ; 投资回报率开始显露 部分自动化实现, 指标与流程的定义 主要输出物 : 发布产品化部件 ;V1.0 版本的基于模型设计流程定义 19
阶段二 : 部署一个部件 成功要素 : 专业初始的架构设计 采用建模标准 通用的工作环境 常见陷阱 : 复杂度, 规模与模式 外包的改进 图形化的编码 20
阶段三 : 部署完整应用 主题 : 扩展 新活动 : 需求链接 自动化 : 标准检查, 测试 完整的基于模型的验证与确认 : 覆盖率, 软件在环, 处理器在环等 目标 : 发布产品化的应用 显著的投资回报 V2.0 版的基于模型设计流程 : 能力的基础 21
阶段三 : 部署完整应用 成功要素 : 多个组织参与 标准化的基于模型设计环境 常见陷阱 : 改动代码 建模标准缺失 22
阶段四 : 优化与改进 主题 : 持续改进 适应与部署 借鉴成功 : 优化 新活动 : 评估其他部门的需求 改善目标与能力 目标 : 多部门重用 明显的产品质量提升 提升应对复杂性的能力 23
阶段四 : 优化与改进 成功要素 : 持续改进 : 工具与产品保持不断的进化 常见陷阱 : 没有专职的核心工具部门 24
迈斯沃克帮助您缩短基于模型设计的上手时间 Process & Tool Automation Process & Tool Standardization Process Assessment Modeling Advisory Process Establishment Pilot Support Training Jumpstart i.e. One production project i.e. Evaluation project 25
迈斯沃克如何与各个行业进行合作? 培训与应用工程师 Trainer & AE 迈斯沃克产品基础培训 基于应用的培训 针对具体技术专题的研讨会与培训 面向部署的技术指导 Pilot Engineering 高级建模技术 自动代码生成技术与定制化 模型与代码验证与确认技术 新功能的介绍与使用 行业实践经验的分享 定期的技术会议 帮助定制流程与环境 Consulting 建模规范 代码生成模版与配置 数据管理 模块库构建 系统集成与流程控制 测试与验证方法与流程 26
未来实现目标, 大家需要做些什么? 构建工程师和团队的能力 专职的工程师和团队 参加迈斯沃克系列产品培训 参加基于应用的培训 参加专题技术的研讨会和培训 进行基于模型设计的实践 选择一到两个项目 根据所学进行认真的项目实践 持续学习和实际 知识与经验的积累 与迈斯沃克在一起 迈斯沃克工程师提供定期指导 帮助你的工程师掌握基于模型设计及代码自动生成技术 帮助你的工程师解决技术问题, 进行功能定制, 并且构建你的模块库和开发标准 27
Best Practices for Establishing a Model-Based Design Culture (SAE Paper 2007-01-0777, Smith, Prabhu, Friedman) 1. Identify the problem you are trying to solve 2. Use models for at least two things Rule of Two 3. Use models for production code generation 4. Treat models as the sole source of truth 5. Use migration as a learning opportunity 6. Focus on design, not on coding 7. Integrate the development process 8. Designate champions with influence, expertise, and budgetary control 9. Have a long-term vision 10. Partner with your tool suppliers Download the paper here: Best Practices for Establishing a MBD Culture 28
Pragmatic Strategies for Adopting Model- Based Design (SAE Paper 2010-01-0935, Dillaber, Kendrick, Jin, Reddy ) Assess organizational challenges and impact Plan for change 1. Identify the problem you are trying to solve 2. Choose a project with proper complexity and technology 3. Mitigate risk with a phased approach 4. Choose the appropriate legacy components for migration Create a process and tool migration plan 1. Use executable spec development as an opportunity to solidify requirements 2. Make the model a source for documentation 3. Choose architecture and component technology early Downloading the paper here: Pragmatic Strategies for MBD adoption 29
今日议题 流程改进与可执行 基于模型设计的实施 项目支持中国案例 30
31
32
33
34
35
36
37
Pilot 项目支持内容与模式 Seminar 流程规范 Workshop Coaching 工具方法 经验问题 Problem Resolving Regular Meeting Pilot Support Package 38
基于模型的设计? 基于模型的设计! 39