1.MBD与传统编码的区别
1.1 MBD介绍
1.1.1 MBD概念介绍
MBD(Model-Based Design)是以模型为基础的设计方法,它是一种系统开发方法论。对系统进行建模、分析、验证,然后基于模型自动生成代码、测试用例和文档等。MBD的目的是使软件开发人员和系统工程师能够在设计过程的早期阶段快速创建和验证系统,从而更早地捕捉和解决问题。
在MBD中,通过使用Matlab/Simulink建立模型来研究和分析系统的行为。然后利用这些模型来生成代码,最后在实际硬件中运行。这种方法可将代码的开发从传统的手工编写转变为基于模型的自动化生成,从而提高开发效率、降低错误率,同时提高开发速度和可重用性。
需要注意的是,MBD不仅仅是代码的自动生成,而是一套完整的设计方法。通过使用MBD,可以在整个开发周期中对系统进行统一的建模、分析、设计、验证和测试,从而减少错误和成本,提高系统的可靠性、可维护性和可重用性。
1.1.2 MBD与Coding的区别
MBD与传统编码主要有以下几点区别:
开发方式上的区别:传统编码是基于代码编写的,需要手动编写、调试、测试每个代码段;而MBD则是基于模型的,将问题分解为可重用的部分,并在该模型中通过图形界面完成代码的生成。
代码质量的区别:传统编码容易出现错误和漏洞,需要专门的方法来确保代码质量;而MBD通过预定义好的标准,通过模拟和自动验证来优化代码、预测行为、减少错误减轻开发者的压力。
可靠性的区别:传统编码中,一旦程序出现问题,就需要根据错误日志或代码的演绎来找到并解决问题,而MBD因为是基于模型开发,问题更容易被发现和解决。此外,由于MBD中所使用的是高级编程语言,也能更加精细地描述业务需求。
代码维护的区别:传统编码中,应用程序在处理新需求或变更时,需要重新编译和部署整个应用程序,而MBD则在模型中运用模块的思想来最易地调整模型以适应新需求或变更。
总之,MBD与传统编码相比,其优点在于提高了开发效率、代码质量和可靠性,同时也便于代码的维护和更新。
1.1.3 MBD的特点
对于采用MBD方法进行系统开发,需求即实现的含义是系统需求的确定和分析应该基于模型。也就是说,在确定系统需求时,应该通过建立模型来进行探索和验证,而不是直接从需求文档中提取。通过这样的方式,能够更好地理解系统的需求,同时规避掉传统需求分析中可能出现的歧义、复杂性和漏洞等问题。
在进行模型建立时,MBD中采用的是基于自然语言和图形语言的双重建模方式,双重建模可以让模型与用户要求之间的关系更加紧密,同时模型也更加贴近实际应用场景。在对模型进行分析和验证时,可采用形式化的方法,如模型检测和仿真等,从而增强系统的可靠性和正确性。
因此,通过采用MBD方法进行系统开发,需求与设计、验证与测试之间的贯通性更加紧密,能够更好地实现需求,同时也能够提高系统开发的效率、可靠性和可维护性。
1.1.4 MBD的应用领域
MBD结合了系统模型的建立、设计和实现,以及自动生成高质量代码的能力。它可以在许多行业和领域内应用,包括但不限于以下几个方面:
需要注意的是,MBD并不局限于上述行业,它在许多其他领域中也有应用,例如通信、计算机网络、物联网等。通过建立模型并生成代码,MBD可以提高工程师的工作效率,降低开发成本,并加快产品上市时间。
1.1.5 MBD需求即实现的步骤
以下是基于模型的设计和Matlab的使用,实现MBD需求即实现的步骤:
以上就是基于模型的设计和Matlab的使用,实现MBD需求即实现的步骤。
PS:注意我们在汽车上做模型开发的步骤会有所删减,在具体的篇章我会再进行详细的讲解。
1.1.6 总结
这些概念比较难一下子理解透彻,我们现在只需要知道基于模型的开发在嵌入式行业的应用软件开发上有很大的优势,随着我们课程的深入,这些概念我们将慢慢能够理解,再回过头来重温概念,就会有更深的感悟。
1.2 区别
1.2.1 概述
我们来介绍下传统的用c语言编码的方式去实现一个工程和用Matlab建模然后用模型去生成代码去做一个工程,它们的区别在哪里。目。
1.2.2 手写代码工程
首先我们打开一个传统编码的项目,比如说打开液晶屏的一个工程。
可以看到,整个工程的代码,包含了外设、主函数(最重要的,一般初学都从main函数开始),和一些驱动代码。这个工程都是用c代码去实现的,编码相对来说有更大的难度,比如说语法,很多初学者可能都搞不清楚指针,再加一些函数的调用,变量的声明以及实现等。代码当然也有相应的好处。代码的好处就是如果熟练了,复制粘贴还有各种修改,效率也是不低的,毕竟是进行文本操作。但是编码要求有一个很强大的抽象思维能力,比如说把这个流程图用编码的方式实现出来,然后,那你得首先思考一下怎么去实现,然后用哪些代码,然后那个代码到底是这样一个逻辑。
GPIO的初始化配置。
并且当写完这个代码的时候,首先可能会有一个语法乱的错误,然后编译首先可能就通不过。然后呢,写的代码可能想实现的功能和实际实现的功能是有很大的差别,比如说写了一行代码,然后你以为就完事了,但是实际上可能还要去做一些保护代码,还要去做一些处理、检查什么的,然后还有一些数组越界的保护等。这种错误可能你都没考虑,但是你写的代码,你以为已经实现了这个功能,但是实际上运行起来的时候,可能会遇到各种各样的Bug。然后你要去调试这些bug,会很困难,甚至又没有办法去仿真。
然后呢,我们如果使用模型去做一个工程的话是什么样的?就像我之前已经演示过的,首先把工程分成底层和应用层,底层还是用传统的c语言的代码去实现。然后把接口给到模型,然后模型怎么去做处理,会有一个很直观的体现,我们现在可以去仿真,甚至可以把所有的数据波形画出来。或者我们把实际的数据log下来,然后再放到Matlab里面去做仿真,然后仿真得出来的结果,可以很清楚的去对做对比,然后如果说跟我们期望的输出是有差距的,然后我们可以直接做测试,然后进行修改。
- 确定系统需求:首先需要明确系统需要实现的功能和需要满足的需求。可以通过与用户沟通、调研市场和竞争对手、分析用户需求文档等方式来确定系统需求。
- 建立系统模型:在确定系统需求后,需要根据需求设计系统模型,包括系统的输入、输出、系统的组成等。可以使用Matlab等工具建立系统模型,并进行系统分析和设计。
- 确定系统功能:在建立系统模型后,需要确定系统的具体功能,包括需要实现的业务逻辑、界面设计、数据存储等。
- 确定系统约束:在确定系统功能后,需要确定系统的约束条件,包括系统的性能、可靠性、安全性、可维护性等。
- 进行系统设计:在确定系统约束条件后,需要进行系统设计,包括系统的架构、模块设计、接口设计、数据结构设计等。可以使用Matlab等工具进行系统设计。
- 进行系统实现:在进行系统设计后,需要进行系统实现,包括编写代码、调试测试、优化性能等。可以使用Matlab等工具进行系统实现。
- 进行系统测试:在进行系统实现后,需要进行系统测试,包括单元测试、集成测试、系统测试等。可以使用Matlab等工具进行系统测试。
- 进行系统部署:在进行系统测试后,需要进行系统部署,包括将系统部署到生产环境、上线发布等。可以使用Matlab等工具进行系统部署。
- 进行系统维护:在系统部署后,需要进行系统维护,包括修复漏洞、优化性能、更新版本等。可以使用Matlab等工具进行系统维护。
- 汽车行业:MBD常被用于汽车电子系统的开发,如发动机控制单元(ECU)、车身电子系统、传感器和执行器等。通过建立系统模型并生成代码,可以快速开发和验证控制策略,提高开发效率和质量。
- 航空航天行业:MBD在航空航天领域的应用广泛,可用于飞行控制系统、导航系统、通信系统等的开发。系统模型可以帮助设计师进行系统级验证和优化,生成的代码可用于嵌入式控制设备。
- 电力行业:MBD被用于电力系统的设计和控制,如发电机控制、电网稳定性分析以及智能电网等。通过建立系统模型和生成代码,可以优化电力系统的性能、安全性和可靠性。
- 医疗设备行业:MBD在医疗设备的开发中发挥重要作用,例如医疗成像设备、生理监测设备等。通过建立模型和自动生成代码,可以加快产品研发周期,并确保系统的正确性和可靠性。
- 控制系统工程:MBD广泛应用于各种控制系统的设计和开发,包括工业自动化、流程控制、机器人技术等。它可以帮助工程师对系统进行仿真和测试,并自动生成符合实时性要求的控制代码。