013 为什么要基于模型设计?
如今基于模型的设计(Model based design)在ECU软件设计中已经成为了不可或缺的一部分,模型设计这个词今后也会在公众号中经常出现,大圣认为有必要向读者介绍下,基于模型设计所能给我们带来的好处,在此引用下Matlab中文论坛大神老胡公众号里的文章——为什么要基于模型设计?

1 什么是基于模型的设计?
这是一个很大的话题,因为本人能力所限,仅讨论使用Simulink模型开发嵌入式软件的设计过程。也就是说,我只能聊基于模型的嵌入式软件设计。我的理解是,通过对算法建模进行软件设计的过程,都可以叫基于模型的设计。
当然,如果仅限于算法建模,把Simulink与Stateflow当做Visio使用,而不去进行其他环节的工作,这样的基于模型设计是不完整的,可能对你的开发效率不会有很大的提升。
2 为什么要使用基于模型的设计?
嵌入式软件开发为什么要使用基于模型的设计?对这个问题,最不希望听到的回答是:因为GM在使用基于模型设计,因为BMW在使用基于模型设计,所以我们也要使用基于模型设计…,好吧,或许他们可以作为借鉴,但是,我们是否认真想过:基于模型的设计能给我的开发带来什么样的好处?弄清这个问题,是我们在后续有效使用基于模型设计开发嵌入式软件的前提。这里我引用一下若干年前MathWorks公司CEO Jack Little的说法,在嵌入式软件开发过程中,基于模型的设计至少可以给我们带来四个方面的好处:
1 图形化设计
对于基于模型的设计来讲,图形化设计是天然的、固有的。图形化的优势,工程师们都非常清楚,明确、清晰、唯一,便于交流、便于维护,这也是为什么就算我们不用基于模型设计的方式开发软件,也需要在设计文档中画流程图、状态机的原因。
需要注意的是,我们需要把Simulink模型画到清晰、明确,便于交流、便于维护。
2 早期验证
话说软件开发过程中,bug的引入难以避免,人非圣贤、孰能无过,引入bug不可怕,能否尽快发现bug对整个开发过程至关重要。这里提到“早期”,什么是“早期”?你某一个阶段的工作产品出来之后,紧跟着就要做验证工作。对于早期验证,以前的方式比较单一,通常我们使用评审的方式去实现最早期的验证,以至于PeerReview在很多公司的流程中被固化下来了,写完文档要评审,做完设计要评审,写完代码还要评审,写好测试用例也要评审。如果我们翻看一些软件工程的教材或者文献,大家对评审的评价非常高,因为在这个阶段每发现一个错误,都会给后续的开发过程带来很多便利,但遗憾的是,评审的效率通常不高。
使用基于模型设计去开发软件,除了评审,我们还有更高效的早期验证方式,包括Simulink模型本身固有的仿真以及通过形式化方法工具对模型进行形式化的分析。
3 代码的自动生成
自动生成代码通常是使用基于模型设计进行软件开发的古今中外的工程师最容易关注的优势。代码都不用写了,“码农”从此跟我无干,还有什么比这事更美好的呢?确实,从开发效率来讲,这个环节,对于效率的提升,是无法量化的,原本需要一个月时间写完的代码,现在可能只要一个上午或者两个小时就可以搞定,谁帮我算一下工作效率提升了多少?不少人对代码生成的开发效率没有质疑,但对生成代码的代码效率却不够放心。这事,很多人都比过,SAE上也能找到这样的论文,通俗点讲,从效率上,生成的代码在各种效率上(RAM、ROM、执行时间等)不比大学毕业后工作了5年的工程师差。当然,遇到那种“写代码像写诗一样”的工程师,代码生成工具还是要甘拜下风的,话说,“写代码像写诗一样”的工程师我们有见过几人?

4 文档自动化
对于文档,我说两点:工程师大多不愿意写文档,而开发过程中文档又是不可缺少的,有三个字足以证明上面两条,那就是“补文档”。在基于模型设计的开发过程中,我们可以通过软件读取模型中相关信息并自动创建文档,实现文档自动化。
上面提到了基于模型设计能给我们带来的好处,因为基于模型的设计可以给我带来上述好处,所以我们才应该使用基于模型的设计。
其他原因?
除上述优势之外,软件规模的爆炸式增长也是使用基于模型设计开发软件的一个重要原因,我想很多人都会有很深刻的体会,近年来软件规模在快速膨胀,各种机电产品的功能、性能大多通过软件的方式去实现、去提升。
摘自:为什么要基于模型设计?——董淑成

未经许可禁止转载,氮素你可以分享到朋友圈