作为一个小的知识拓展,这里先给出常见的开发流程(或称为开发方法,development methodologies):
瀑布流方法(waterfall)v型方法(v-model)迭代式开发(iterative and incremental development, iid)螺旋开发(spiral)敏捷开发(scrum)极限编程(extreme programming, xp)据我的了解,很多互联网大厂使用的就是敏捷开发,敏捷开发现在在国内也越来越火热。当然非管理岗位,很少会了解这些开发方法的细节,有兴趣的读者可以去学习一下。
从本质上来讲,mbd可以使用所有的这些流程来开展工作。但实际中,v型开发流程用的最多。简单的检索一下,我们就能得到很多v型开发流程,就像下面这样的:
v型开发流程 - from internet
有一个问题可能很少有人去考虑过,那就是介绍mbd的时候,为什么大家都不约而同的选择了“v型”?虽然没有很严谨地查证过,但有一个较为可靠的解释是,v型开发流程是来源于iso26262的4、5、6部分,分别对应系统层、软件层和硬件层,见下图:
overview of the iso 26262 series of standards - from iso26262
“v型”其实是相对于更加传统的瀑布方法(waterfall methodology)而言的,mbd也可以使用瀑布方法来开展,瀑布方法一般长这样:
the waterfall methodology in mbd - from mathworks
但是瀑布流程并不符合mbd的开发思想,mbd有一个很重要的特征,那就是以模型为中心,反复验证、测试和迭代,这一过程在瀑布流程中是难以实现的。*(mbd的这一特征和敏捷开发有点相似了,感兴趣的读者可以去了解一下) *
2 v型开发流程
mbd的v型流程形式有很多种,包括先后顺序不同,执行内容不同等等。这种形式差异是正常的,实际项目开发中,拥有的资源和开发目标都不相同,是需要这种合理的调整和取舍。我认为st的这张v型图能较好的描述mbd的开发流程:
v-model with mbd - from st
mbd v型流程的核心要素有以下几点:
**1. **需求定义
—— requirements & specifications
项目开始的第1个阶段是需求定义,需求定义要求详细、具体,每一项需要有明确的验证和测试方法。同时需求定义还要求可记录,可追踪,所以要求和模型建立硬联系,即每一项需求有对应的模型来实现。要实现需求的追踪管理,就需要借助工具了(例如mathworks的simulink requirements工具)。**2. **系统架构设计
—— system & architecture design
**3. **组件设计
—— components design
上述第2、3点即分层级的建模过程,在这个阶段实现相应的算法,或者状态机,或者其他函数api。这个阶段还可以实施的是mil(model in the loop),即没有生成代码之前验证模型的有效性。如果有足够的资源,还可以在代码生成之前进行rcp(rapid control prototyping)。rcp使用的是原型控制器(非最终形态的产品),一般情况下原型机的性能会高于落地的产品,所以它的验证能力有限,比不上hil(hardware in the loop)。**4. **自动代码生成
—— code generation
**5. **代码测试和验证
—— code verification & validation
第4、5点是代码的生成和验证,verification和validation的中文都可以翻译成验证,但它们的着重点不同:verification是过程,validation是结果,表示是否有效。具体地,verification就是sil(simulation in the loop)和pil(processor in the loop);validation就是sil和pil的验证报告。如果算法中需要用到定点数,那么在sil和pil之前需要对模型进行定点化。一般来说pil的验证能力能覆盖sil,如果控制系统不复杂,可以只进行pil。**6. **系统集成测试
—— integration testing
第6点的系统集成测试即hil(hardware in the loop)测试,关于hil,以后再开新的文章具体谈一谈。**7. **验收测试
—— acceptance testing
最后,hil测试通过以后,就可以给客户验收了。关于v型开发流程中会使用到的一些工具和工具链,后续会专门文章介绍。
3 mbd的模型迭代
如果一帆风顺的话,上述v流程只走一遍就可以了。但往往事与愿违,在项目前期很难考虑得非常周全,前期的需求有遗漏或者错误,就需要及时修正,我们知道越在后期,修改前期错误的成本就越大。
这时就能体现出mbd相比于手写代码的巨大优势。因为mbd是围绕模型展开的,所以修复遗漏和错误也是通过模型修改来实现的。由于模型的图形化和结构化,使得能很方便、直观地进行需求更新和算法修改,而不用一行一行的检查代码。越是项目规模大,越能体现这种优势。
为了更好的说明mbd的模型迭代,这里把v型流程分为两个阶段:
代码生成前——建模阶段;代码生成后——验证阶段。那么mbd模型的迭代是如下进行的:
mbd模型迭代 - from autombd
从上图可以看到,算法迭代和需求的更新都是是围绕着模型展开的,而将需求定义、建模和测试验证串联起来的是需求追踪。这样就在模型和需求之间打通了回路,形成了良好的反馈纠错和正向促进。
4 资源更新
资源中更新了iso26262的英文文档(2018版part 1~12)和中文文档(2011版),聊天界面点击mbd->资源即可获得。
IGBT在新能源电动汽车中的应用全面解析
就华为目前的情况来看预订情况比较火爆,未来发售后有可能要加价?
AR远程协助和维护如何应用在工业领域
小米MIX/小米Note 2/小米5S/小米5S Plus对比评测
基于TMS320DM6437数字媒体处理器实现高级驾驶员辅助系统的设计
聊聊MBD开发流程
安费诺先进传感器推出IPT2000压力变送器
总投资65亿元,温州比亚迪新能源动力电池项目开工
传三星要自行研发GPU 自研GPU的好处是什么
倚天710性能监控—DDR PMU子系统
ADC 失调和 ADC 增益误差规格
升温-保温-回流过程和RTS温度曲线讲解
小米10系列配置曝光搭载骁龙865平台屏幕刷新率达到了90Hz
虹膜识别:创新赋能,刷眼未来
imec压电超声波传感器有什么作用?
智能家居尚处于起步阶段,落地难题尚未解决
飞机电子设备是如何处理电磁干扰的?
32位工业级信号链MCU CS32F031C8T6
西门子PLC的MPI是如何进行网络通讯的详细资料讲解
Type-c降噪耳机如何降噪|type-c接口耳机降噪方案