为什么要基于模型设计?

2019-3-3 17:08| 发布者: ilovematlab| 查看: 21258| 评论: 13|原作者: 老胡

摘要: 基于模型的设计能给我的开发带来什么样的好处?

目录:

嵌入式软件开发为什么要使用基于模型的设计?

对这个问题,最不希望听到的回答是:

因为GM在使用基于模型设计,因为BMW在使用基于模型设计,所以我们也要使用基于模型设计……


好吧,或许他们可以作为借鉴,但是我们是否认真想过:

基于模型的设计能给我们的开发带来什么样的好处?

弄清这个问题,是我们在后续有效使用基于模型设计开发嵌入式软件的前提。 这里我引用一下若干年前MathWorks公司CEO——Jack Little的说法,在嵌入式软件开发过程中,基于模型的设计至少可以给我们带来四个方面的好处:

1. 图形化设计

对于基于模型的设计来讲,图形化设计是天然的、固有的。图形化的优势,工程师们都非常清楚,明确、清晰、唯一,便于交流、便于维护,这也是为什么就算我们不用基于模型设计的方式开发软件,也需要在设计文档中画流程图、状态机的原因。
需要注意的是,我们需要把Simulink模型画到清晰、明确,便于交流、便于维护。

2. 早期验证

话说软件开发过程中,bug的引入难以避免。人非圣贤、孰能无过,引入bug不可怕,能否尽快发现bug对整个开发过程至关重要。这里提到“早期”,什么是“早期”?你某一个阶段的工作产品出来之后,紧跟着就要做验证工作。对于早期验证,以前的方式比较单一,通常我们使用评审的方式去实现最早期的验证,以至于Peer Review在很多公司的流程中被固化下来了,写完文档要评审,做完设计要评审,写完代码还要评审,写好测试用例也要评审。如果我们翻看一些软件工程的教材或者文献,大家对评审的评价非常高,因为在这个阶段每发现一个错误,都会给后续的开发过程带来很多便利,但遗憾的是,评审的效率通常不高。
使用基于模型设计去开发软件,除了评审,我们还有更高效的早期验证方式,包括Simulink模型本身固有的仿真,以及通过形式化方法工具对模型进行形式化的分析。

3. 代码的自动生成

自动生成代码通常是使用基于模型设计进行软件开发的工程师最容易关注的优势。代码都不用写了,“码农”从此跟我无关,还有什么比这事更美好的呢?确实,从开发效率来讲,这个环节,对于效率的提升,是无法量化的,原本需要一个月时间写完的代码,现在可能只要一个上午或者两个小时就可以搞定,谁帮我算一下工作效率提升了多少?不少人对代码生成的开发效率没有质疑,但对生成代码的代码效率却不够放心。这事,很多人都比过,SAE上也能找到这样的论文。通俗点讲,从效率上,生成的代码在各种效率上(RAM、ROM、执行时间等)不比大学毕业后工作了5年的工程师差。当然,遇到那种“写代码像写诗一样”的工程师,代码生成工具还是要甘拜下风的。不过,“写代码像写诗一样”的工程师我们又见过几人?

4. 文档自动化

对于文档,我说两点:
  1. 工程师大多不愿意写文档;
  2. 开发过程中文档又是不可缺少的。
有三个字足以证明上面两条,那就是“补文档”。在基于模型设计的开发过程中,我们可以通过软件读取模型中相关信息并自动创建文档,实现文档自动化。
上面提到了基于模型设计能给我们带来的好处,也正是因为基于模型的设计可以给我带来上述好处,所以我们才应该使用基于模型的设计。

结语

除上述优势之外,软件规模的爆炸式增长也是使用基于模型的设计开发软件的一个重要原因。我想很多人都会有很深刻的体会,近年来软件规模在快速膨胀,各种机电产品的功能、性能大多通过软件的方式去实现、去提升。
NASA做过研究,汽车、航天器等产品的代码量这些年都在呈指数级增加,战斗机从1960年的F-4约8%的功能由软件实现到2000年的F-22约有80%的功能由软件实现,其他机电系统也差不多。软件规模的快速膨胀,给验证和实现都带来了很大困难。
原有的开发模式难以应对,新的开发模式必然会出现。即便是没有MathWorks、没有Simulink,也会有其他产品去实现基于模型的设计,这不是单单一个MathWorks能够推动的,而是技术发展到这一阶段的必然。

关于作者

老胡,MATLAB中文论坛超级版主,MathWorks公司中国区高级应用工程师,主要负责自动代码生成在汽车及其他工业领域中的应用,具有15年以上的MATLAB®/Simulink使用经验。加入MathWorks之前,曾任职于德尔福中国研发中心的控制与安全部门负责算法建模和代码生成,并成功的将基于模型设计引入到产品开发中,在基于模型设计以及相关的流程优化方面有丰富的经验。

声明:
本文内容所有内容仅代表个人观点,如有任何问题,请联系作者。
本版块所有文章版权归作者个人所有,未经允许,不得作为出版物出版。如需转载,请联系论坛管理员

139

鲜花
7

握手
1

雷人

路过

鸡蛋

刚表态过的朋友 (147 人)

相关阅读

发表评论

最新评论

引用 chdwwd 2019-6-27 09:00
方便使用
引用 FaceMask 2019-5-26 20:03
我觉得基于模型的设计很大的优势是便于理解逻辑关系,方便后期软件修改维护。目前在做电机控制器MCU,明显感觉逻辑比手写代码要清楚,但是生成的代码略微臃肿,执行时间较长。 ...
引用 Assembly_x 2019-5-13 13:39
深有感触。图像化方便设计,利于交流,代码生成更是节约时间。
引用 Daniel-sp 2019-5-12 20:11
感谢分享!
引用 supernova1987 2019-5-6 22:36
thanks,好文章
引用 液压控制 2019-4-30 11:15
“基于模型设计”是指“根据仿真模型的数据进行优化设计”?
引用 Theknight 2019-4-29 14:39
基于模型的设计,这不是单单一个MathWorks能够推动的,而是技术发展到这一阶段的必然。感觉很有道理
引用 erbao_zhang 2019-4-27 17:35
基于模型的设计容易上手和维护,以后的趋势
引用 老胡 2019-2-2 13:15
A_Fer: 文档的自动化是指export to web么?感觉这个还比较牵强,只是省去了自己截图的步骤,离可用的文档还差很远吧。
不是export to web,可以从模型中读出你需要的信息,形成定制化的文档。
引用 道德 2019-2-1 14:36
谢谢
引用 A_Fer 2019-1-25 11:14
文档的自动化是指export to web么?感觉这个还比较牵强,只是省去了自己截图的步骤,离可用的文档还差很远吧。
引用 苏城114 2019-1-23 10:25
效率更高,新趋势吧
引用 51MAT 2018-12-17 10:31
个人以为,基于模型的设计应该是有利于后期纠错,增加容错率
引用 落木萧萧2017 2018-12-15 21:34
感谢分享,长见识了
引用 甄川院士 2018-10-22 23:08
甄川院士: 您好,目前只有孙忠潇的《simulink代码生成》和刘杰的《基于模型的设计及其嵌入式实现》,除了看书还有什么学习方法和学习资料吗?为什么MATHWORKS的在线研讨会 ...
求指导 ...
引用 甄川院士 2018-10-22 23:04
您好,目前只有孙忠潇的《simulink代码生成》和刘杰的《基于模型的设计及其嵌入式实现》,除了看书还有什么学习方法和学习资料吗?为什么MATHWORKS的在线研讨会视频那么卡慢,无法观看,还有别的学习渠道吗? ...
引用 Yushangzhe2018 2018-10-15 12:07
老胡, 受教了。  本人从事嵌入式软硬件开发16年,  现刚入手模型化设计。  有问题请教。 能告知一下电话吗?  我的邮件 elec_yu@126.com
引用 DDDDD11223 2018-9-20 15:59
电子化必然趋势,受教了
引用 童心~ 2018-9-15 12:09
感谢分享
引用 huttu 2018-8-13 16:44
目前正在做汽车安全方面的工作,还请多指教。

查看全部评论(13)

为什么要基于模型设计?

基于模型的设计能给我的开发带来什么样的好处?

为什么要基于模型设计?

基于模型的设计能给我的开发带来什么样的好处?
关闭

站长推荐上一条 /3 下一条

返回顶部