一、传统的软件开发方法
在基于模型的设计中,系统工程师先建立一个系统模型,即通过数学模型来精确描述用户需求,创建一个可执行、跟踪的技术规范。工程师可以通过这个系统模型,动态地确认系统性能。使每个工程师无歧义地理解并运行系统模型,专注开发模型各个部分,不会因理解不同造成需求丢失、冗余或冲突。
2)生成定点模型
系统模型与需求之间可建立双向链接,在整个开发过程中,软件工程师可对模型进行需求追踪和测试,将产品缺点暴露在开发初期。根据具体嵌入式器件和实现条件,对系统模型进行细化和功能分区,进行系统测试、设计测试和模型助手测试,验证是否满足需求与技术规范,判断是否还存在缺失的需求,验证是否符合行业标准(如DO-178B、IEC-61508、MAAB等),之后再对模型做定点转换,形成简洁、高效的定点模型。
3)嵌入式代码自动生成
MathWorks的Real-Time Workshop Embedded Coder可以将Simulink/Stateflow中的模型自动转换为嵌入式C代码,大大降低嵌入式系统的开发门槛。开发人员可以在Simulink/Stateflow、Embedded Matlab中建立系统模型、构思解决方案,然后使用RTW-EC自动生成优化的、可移植的、自定义的产品级C代码,并根据特定目标配置自动生成嵌入式系统实时应用程序。缩短开发周期,避免人为引入的错误。
4)连续测试和验证
基于模型的设计在整个设计过程中都在不断进行测试和验证,工程师利用测试案例追踪系统级模型和需求,检测设计变更导致的系统输出变化,并快速追踪变更来源,通过测试案例还可以了解模型的功能覆盖度。
对于嵌入式系统,还需要测试其实时性,工程师可以使用硬件在环测试嵌入式代码的实时性。通过测试,收集实时数据,相应修改代码参数。硬件在环检测能确保在开发初期就完成嵌入式软件测试,这样在系统整合时,比传统方法检测得更彻底、更全面,从而及早发现问题,降低解决问题的成本。