新闻中心

基于模型的开发方法介绍


发布时间:

2021-07-12

基于模型的开发方法介绍:一般写成需求文档,系统工程师据此进行概念和算法研究,评估技术可行性。缺点:由于每个系统工程师对需求和技术规范的理解难免存在偏差,因此会对后期的项目开发带来诸多隐患。NASA的研究报告指出:在需求分析阶段产生的错误占整个开发错误的50%以上。

1)需求分析

一般写成需求文档,系统工程师据此进行概念和算法研究,评估技术可行性。

缺点:由于每个系统工程师对需求和技术规范的理解难免存在偏差,因此会对后期的项目开发带来诸多隐患。NASA的研究报告指出:在需求分析阶段产生的错误占整个开发错误的50%以上。

2)设计阶段

硬件开发工程师根据系统工程师的评估报告,设计制作原型样机(如汽车、电路板等)。

缺点:项目前期投入巨大、开发周期长,且不能保证原型样机一定能满足技术指标要求。

3)实现阶段

软件开发工程师根据需求和技术规范,在原型样机上,手工编写C代码或汇编代码,实现技术指标要求。

缺点:需精通编程人员花大量时间来编程、差错、调试、验证,工作量大,研发周期长,此外,代码良莠不齐,降低了程序可靠度。

4)测试与验证

原型样机开发完成后,对产品进行测试与验证。

由上面四个步骤可以看出,只有任何一个过程出现偏差都会导致产品开发失败,这也是传统项目开发方法的最大弊端。因此,难免重复多次才能成功,开发风险巨大。

为解决上述缺点,工程师需找到一种速度更快、效率更高的产品开发方法,基于模型的设计方法就是一种选择。它始于20世纪90年代初的汽车制造和航空航天工业,这些行业需要使用大量微处理器单元,因此工程师们发现采用建模与仿真的方法来开发嵌入式系统有着巨大优势;到90年代中期,控制算法仿真技术的发展催生了自动代码生成技术。模型仿真和自动代码生成技术在这些行业得到成功应用,使人们清楚地认识到它在嵌入式系统开发中的经济和高效。

基于模型的设计为工程师们提供了一种通用的开发与测试平台,使具有不同工程背景的工程师之间建立起更好的联系,使开发具有高集成度的复杂系统成为可能。

MathWorks的Simulink/Stateflow/Embedded Matlab等工具使工程师可以在一个可视化的交互开发测试平台上进行基于模型的设计,用直观的模块图对系统模型和子系统设计进行可视化处理。

1)可执行、跟踪的技术规范

在基于模型的设计中,系统工程师先建立一个系统模型,即通过数学模型来精确描述用户需求,创建一个可执行、跟踪的技术规范。工程师可以通过这个系统模型,动态地确认系统性能。使每个工程师无歧义地理解并运行系统模型,专注开发模型各个部分,不会因理解不同造成需求丢失、冗余或冲突。

2)生成定点模型

系统模型与需求之间可建立双向链接,在整个开发过程中,软件工程师可对模型进行需求追踪和测试,将产品缺点暴露在开发初期。根据具体嵌入式器件和实现条件,对系统模型进行细化和功能分区,进行系统测试、设计测试和模型助手测试,验证是否满足需求与技术规范,判断是否还存在缺失的需求,验证是否符合行业标准(如DO-178B、IEC-61508、MAAB等),之后再对模型做定点转换,形成简洁、高效的定点模型。

3)嵌入式代码自动生成

MathWorks的Real-Time Workshop Embedded Coder可以将Simulink/Stateflow中的模型自动转换为嵌入式C代码,大大降低嵌入式系统的开发门槛。开发人员可以在Simulink/Stateflow、Embedded Matlab中建立系统模型、构思解决方案,然后使用RTW-EC自动生成优化的、可移植的、自定义的产品级C代码,并根据特定目标配置自动生成嵌入式系统实时应用程序。缩短开发周期,避免人为引入的错误。

4)连续测试和验证

基于模型的设计在整个设计过程中都在不断进行测试和验证,工程师利用测试案例追踪系统级模型和需求,检测设计变更导致的系统输出变化,并快速追踪变更来源,通过测试案例还可以了解模型的功能覆盖度。

对于嵌入式系统,还需要测试其实时性,工程师可以使用硬件在环测试嵌入式代码的实时性。通过测试,收集实时数据,相应修改代码参数。硬件在环检测能确保在开发初期就完成嵌入式软件测试,这样在系统整合时,比传统方法检测得更彻底、更全面,从而及早发现问题,降低解决问题的成本。

相关新闻