有关基于模型的设计( MBD )一些概念和理解
先胡乱问几个大问题:
1. 什么叫基于模型的设计?
2. 为什么要基于模型的设计?
3. 基于模型的设计过程中,需要做什么事情?
再问几个小问题:
1. 模型验证是否必要?
2. 模型验证有哪些工作可以做?
3. 模型验证是否一定需要被控对象模型?
4. 代码生成效率如何?
5. 底层驱动是否要建模?
6. Embedded Coder(以前的 RTW Embedded Coder)支持哪些芯片?
7. MIL 、SIL、PIL、 HIL 的目的和实现方式?
8. 如何定点化?
9. 如何做代码集成?
什么叫基于模型的设计?
这是一个很大的话题,因为本人能力所限,仅讨论使用 Simulink 模型开发
嵌入式软件的设计过程。也就是说,我只能聊基于模型的嵌入式软件设计。
我的理解是, 通过对算法建模进行软件设计的过程, 都可以叫基于模型的设
计。当然,如果仅限于算法建模,把 Simulink/Stateflow 当做 Visio 使用,而不去
进行其他环节的工作, 这样的基于模型设计是不完整的, 可能对你的开发效率不
会有很大的提升。
如果想通过基于模型的设计提升软件开发团队的开发效率,提高软件品质,
我觉得至少有如下几点可以考虑:
1. 算法建模
2. 算法模型的验证
3. 文档自动化
4. 代码生成
5. 代码和模型的等效性验证
传统的开发过程中,我们有一个环节,需求捕获,也即,从系统需求分解出
软件需求。 在基于模型的设计过程中, 我们同样可以通过分析系统需求, 获得软
件需求。当然,根据系统需求的详细程度, 我们可以考虑是否要写专门的软件需
求。
在基于模型的软件设计中,我们主要关心的是系统的功能需求,或者说可以
通过软件实现的功能需求。 如果这部分需求在系统需求文档里已经有非常清楚的
定义,那么我们可以以系统需求文档作为依据建立模型。
当然,如果系统需求不是足够清楚, 那我们有必要编写专门的软件需求文档。
如果不考虑 Simulink/Stateflow 的应用上的问题,也就是说,如果我们都是熟练
的 Simulink/Stateflow 用户,那么建模过程的主要工作是需求分析,通俗点讲,