利用 Simulink 实现基于软件的系统的快速、持续开发和交付通过采用基于模型设计取代传统的瀑布法,各团队目前能够成功地应对快速演变的市场需求和日益复杂的系统设计所带来的挑战。基于模型设计将敏捷原则延伸到包括物理组件和软件在内的系统开发工作。从需求捕获、系统架构和组件设计,到实现、验证、测试和部署 – 基于模型设计贯穿整个开发周期。多域系统仿真可以加快形成可行的设计,并促进与客户的迭代,使您能够对不断变化的需求快速做出调整。自动生成代码功能可以产生能立即部署到目标硬件上并进行测试的软件。
Simulink® 可与 Jenkins™、Jira、Git™、GitHub® 和其他敏捷开发工具集成,让您能够:
(1)使用模型(而不是文档)在团队间协作并与客户交流
(2)通过仿真不断细化的模型来开发可用系统
(3)将您的开发置于持续的集成、编译和测试流程中
(4)结合使用桌面、本地和云资源来改善开发
1、模型推动合作
与以文档为中心的工作流程不同,基于模型设计让您能够使用模型来划分系统设计。模型组件化有利于跨领域并行团队开发、合作和统一。即使跨学科团队在不同的工具中建立了不同精度的组件模型,您仍然可以使用 Simulink将所有组件集成在一个系统级仿真平台上,从而将所有设计成果整合在一起。您也可以为设计评审自动生成并共享 Simulink 模型仿真说明文档和 Web 视图。
2、通过仿真、持续验证和确认实现设计可行性的早期评估
在部署到硬件之前尽早和频繁地对系统进行仿真,以确保设计可行性。探索和评估实现思路和方案,而无需编写代码。在整个递增式开发过程中验证您的设计、检测隐藏的设计错误并检查是否符合安全标准。通过快速原型设计和硬件在环 (HIL) 仿真,确保您的系统满足功能要求。
3、通过递增式模型精细化和自动代码生成,对变更做出快速响应
通过从不断演变的模型自动生成产品级代码,对不断变化的需求做出快速响应。使用项目组织您的工作,促进与源代码控制和配置管理工具的集成。将变更推送到 Git 之类的存储库,以在 Jenkins 持续集成 (CI) 服务器上自动触发代码合规性、静态代码分析和集成测试等全面测试项目执行。
4、利用可共享的模型和仿真简化客户协作
使用 Simulink 模型作为可执行的规范,拉近客户需求与设计实现之间的差距。在开发周期之前和过程中仿真系统原型、探索各种方案并与客户分享不断演变的模型和结果,对需求进行验证。
5、通过台式机、集群和云计算提高性能和生产效率
在本机开发原型,然后扩展到计算机集群,可以在不离开 MATLAB® 和 Simulink 桌面环境的条件下充分利用您组织内的硬件资源。对于计算密集型任务(例如 Monte Carlo 仿真或设计优化),可以在多核台式机、计算机集群或云端并行运行仿真。
利用持续集成 (CI),您可以提高代码和模型的质量,与团队进行协作,尽早检测到集成问题,并可以追溯到问题的根源所在。
CI 支持自动测试和验证 MATLAB® 代码和 Simulink® 模型、编译 MEX 文件、生成代码,以及打包工具箱或库以进行部署。利用这些功能,您的团队可以在整个开发生命周期内充分运用敏捷开发实践技巧。
您可以在自己的 CI 服务器上运行 MATLAB 和 Simulink;如果需要公开共享您的工程,也可以使用云托管 CI 服务。
1、在您自己的 CI 服务器上运行 MATLAB 和 Simulink
在您自己的自动化服务器上运行 CI,以控制代码的运行位置、运行时间以及所使用的产品,包括 MATLAB 和 Simulink 代码生成及编译器产品。在本地或云端管理您的 CI 服务器。
注意:如果要在多个主机上或在云端运行 CI,请联系 MathWorks CI 团队。转换工具(例如 MathWorks 的编码器和编译器产品)可能要求客户端访问许可证 (CAL)。
2、对于公开共享的工程,在云托管 CI 服务中运行 MATLAB
将在 Azure® DevOps、CircleCI®、GitHub® Actions 或 Travis CI® 上运行的 MATLAB 与 GitHub 仓库结合使用。这些云托管 CI 服务可管理 CI 管道。它们可以编译 MEX 文件、运行测试、打包工具箱,并更新 GitHub 上的代码质量徽章 (badge)。此类服务支持 MATLAB R2020a 版本以及 MATLAB、Simulink 和多数附加产品的后续版本。
注意:如仅运行批处理任务,则无需额外费用即可在 Azure DevOps、CircleCI、GitHub® Actions 和 Travis CI 上使用 MATLAB、Simulink 和多数附加产品。此类服务不包括特定转换工具(例如 MathWorks 的编码器和编译器产品),具体请参见附加产品要求与平台可用性页面。
Simulink 离散事件仿真提供混合系统模型、基于智能体的模型和状态图,从而实现事件驱动通信与运营的分析和优化功能。
在这一集成式的建模和数据分析环境中,您可以:
(1)构建流程模型,执行产能规划,优化制造和运营供应链
(2)仿真事件驱动过程,例如自主智能体任务规划,或制造过程的各个阶段
(3)自定义队列、路由算法、处理延迟和优先方案
(4)分析和优化端到端延迟、吞吐量、丢包以及通信网络的其他性能特征
(5)为航空航天、汽车和电子应用领域设计分布式控制系统、硬件架构以及传感器和通信网络
(6)仿真包含基于时间、基于事件和基于智能体组件的混合系统
Simulink 和 SimEvents 可帮助您了解资源需求、复杂的大规模运营和任务的时间线,以及偶发事件对规划的影响。
1、运营或物流的建模语言
您可以通过创建实体或消息来创建要研究的项(例如滑行道上的飞机),从而对过程建模。然后,使用模块对这些项进行路由、延迟、复制和查找。实体或消息在模型各处的移动会触发事件,而事件会调用函数并执行。从采矿作业到高速交通,您可以借助这些模块对各种事物建模。
2、使用真实数据构建事件率和事件流模型
您可以导入真实数据来生成任务和生产指令,将其作为过程仿真的输入。只需几行 MATLAB 代码,便可从几乎任何格式的文件中导入数据,包括 XML 文件、电子表格和数据库。
3、自定义过程仿真模型,包含关键操作的算法
您可以使用模块对操作建模,从而自定义过程仿真组件,而无需进行低级编程。您还可以编写 MATLAB 函数或使用 Stateflow 图来表示过程仿真模型中的任务调度序列、工艺路线和产品配方,并创建自定义模块以添加到模型中。模型会使用这些自定义模块的结果来动态更改过程的处理延迟、优先级和其它关键要素。
4、在过程仿真中分析和可视化资源利用率和延迟
借助 SimEvents,您可以在一个集成式环境中执行仿真和数据分析。您可以仿真流程,并使用内置的可视化功能深入了解资源需求、瓶颈和延迟。借助模型内动画,您可以在仿真过程中检查模型执行行为。然后,您可以在 MATLAB 中自定义仿真数据分析和可视化。
5、优化运营
将仿真与优化相结合,使过程更有效率,例如减少不必要的资源分配,或制定生产计划。内置 MATLAB 算法可以优化 Simulink 参数值并使用并行仿真。您可以使用 Global Optimization Toolbox 的遗传算法和代理优化器对离散整数值进行优化。
SimEvents 与 MATLAB、Simulink 和 Stateflow 共同构成了一个图形化环境,可用于分布式控制系统、通信系统、网络和片上系统 (SoC) 的事务级建模。事务级模型能够帮助您根据端到端延迟、吞吐量和丢包等性能特征评估架构设计。
1、消息
通过 Simulink 发送、接收和转发载送数据的消息,以在组件之间进行通信。消息将排队等候,直到接收方能够处理消息为止。在 Sequence Viewer 模块中查看消息的生命线。
2、构建通信模型以用于性能分析
使用 SimEvents,可以灵活地在系统性能分析所需的高抽象级别上为缓冲区、处理器、通信总线和其他组件建模。
3、分析和可视化系统仿真结果
您可以使用同一套工具进行仿真和数据分析。您还可以仿真架构模型,并使用内置的可视化功能深入了解缓冲区长度、处理器使用率、端到端延迟和其他性能特征。借助模型内动画,您可以在仿真过程中检查模型执行行为。使用 MATLAB,您可以在仿真过程之中及之后自定义仿真数据的分析和可视化。
4、基于真实数据生成流量模式
您可以导入真实的数据以生成实际流量模式,将其作为系统架构事务级模型的输入。只需几行 MATLAB 代码,便可从几乎任何格式的文件中导入数据,包括 XML 文件、电子表格和数据库。
嵌入式代码生成从根本上改变了工程师的工作方式。如今,工程师不再需要手工编写数千行代码,而可以选择自动生成产品级代码,由此实现了效率提升、质量改进并且促进了创新。
使用 MathWorks 嵌入式代码生成产品,您可以:
(1)针对浮点或定点处理器设计实时应用
(2)从 MATLAB 和 Simulink 生成 C 和 C++ 代码
(3)为特定处理器架构(包括 SIMD 和 GPU)优化代码
(4)重用手写代码(既有或专用功能)
(5)分析和验证嵌入式代码
(6)实现行业标准合规
工程师们使用基于模型的系统工程 (MBSE) 来管理系统复杂度、改善沟通并产出优化系统。成功的 MBSE 需要将相关各方的需求合成到架构模型中以创建直观的系统描述。
MATLAB、Simulink 和 System Composer 共同营造了一个统一的环境用于创建描述性架构模型,该模型可以无缝对接到详细实现模型。这样的互连环境确保了项目在架构世界和设计世界的同步。系统工程师可以建立一条在系统需求、架构模型、实现模型和嵌入式软件之间自由导航的数字主线。
使用 MATLAB、Simulink 和 System Composer,您可以:
(1)捕捉和管理系统需求开展影响和覆盖分析
(2)通过捕获架构元数据并直接连接到 MATLAB 分析进行特定领域的权衡研究以优化系统架构
(3)创建简化的自定义模型视图为不同的工程考量隔离相关组件
(4)使用基于仿真的测试确认需求和验证系统架构
(5)将需求转换并提炼到架构,其中的组件已就绪并可以使用 Simulink 基于模型的设计进行仿真和实现
1、开发架构模型和管理系统需求
采用组件、端口和连接器的建模方法在 System Composer 中直观地绘制架构的分层系统。在符合您需要的抽象级别上即时工作并在获取到细节时进行添加。为了在形式上定义组件之间交换的信息,您可以创建接口来验证所交换的数据是否有兼容的属性,比如数据类型、维度或单位。
通过使用 MATLAB API 导入外部存储库和文件可以重复利用现有的设计工件和接口控制文档 (ICD) 信息。您还可以从现有 Simulink 系统模型中提取架构模型。
在开发架构模型时,您可以使用 Requirements Toolbox 直接捕获、查看和管理系统需求。系统需求可以链接到不同的架构元素,从而建立数字主线,实现需求的可追溯性,并执行需求覆盖率分析。链接的需求会保留一份版本记录,使您能够执行影响分析,并向下游团队传达重要变更。
2、借助视图进行权衡研究并分析架构
您可以使用含特定领域设计数据(如大小、重量、功率或成本)的构造型来扩展您的架构模型。相关的构造型可以分组到可用于当前整个构架或重用于其他架构的配置文件。为了管理架构复杂度,您可以创建自定义视图,来隔离相关各方感兴趣的组件,或方便地执行特定的分析活动。
使用 MATLAB,您可以在您的架构上直接进行分析和权衡研究。示例包括:
(1)自下而上汇总或自上而下分配(大小、重量、功率、成本等)
(2)网络或流分析(端到端延迟、最短路径、物资流等)
(3)自定义分析
(4)权衡研究(确定最容易接受的解决方案)
3、在 Simulink 中连接到基于模型设计
将架构组件直接链接到 Simulink 模型后使用基于模型设计定义行为,这将在您的整个开发过程中系统化地使用模型。按照自上而下的工作流程,可以从架构组件自动生成 Simulink 模型。按照相反的流程,您可以直接从 Simulink 组件模型创建架构组件。将架构模型与 Simulink 行为模型关联起来,确保您的架构模型和实现模型保持同步,并允许您仿真系统行为。
4、系统验证
利用仿真,您可以探索架构、建立组件原型并创建组件规范,与此同时,在开发过程的早期了解并细化系统行为。为了对大型和复杂系统扩展这一做法,您可以使用测试套件自动进行验证,在基于模型的系统工程全过程中确认需求并反复验证系统行为。
您可以指定系统级测试以检查可供下游实现团队使用的需求的一致性和正确性。您可以将具有复杂、时序相关的信号逻辑需求转化成具有明确语义定义的评估,使用这些评估来调试设计和识别不一致的需求。
1、直观的建模方式
(1)直观的原理图
Simscape 模型的布局与物理系统结构相符。您可以将电气、机械、流体及其他物理域组件连接到网络,从而组装模型。
(2)模块化的接口
Simscape 组件通过代表物理连接的端口建立连接。因此您可以基于任何架构装配原理图。您可以轻松添加或移除物理效应,如摩擦、电损或温度依赖行为。
(3)自动推导方程
Simscape 会自动检查整个网络并推导系统级方程。因此您可以专注探寻最佳设计,无需重新推导方程,也无需重新实现整个模型。
2、一站式协作环境
(1)联合各团队协同工作
Simscape 可将来自多位硬件专家的设计集成到单个仿真。每个团队可能采用各自领域的专门工具,但他们可以将各自的创意整合至单个模型,并评估设计决策对于系统级性能的影响。
(2)集成 MATLAB 和 Simulink
Simscape 模型直接连接到 Simulink 中建模的控制算法并利用其模型管理功能。您可以使用 MATLAB 自动执行建模、仿真和分析的各个环节。Simscape 集成了其他 MATLAB 和 Simulink 功能,方便您运用深度学习和预测性维护等技术。
(3)从研究到生产
您可以在整个开发流程的各个环节重用 Simscape 模型。Simscape 可基于 Speedgoat、dSPACE、OPAL-RT 及其他实时系统执行硬件在环测试,帮助您优化需求、设计控制系统及测试嵌入式控制器,更可作为生产应用的数字孪生系统。
3、解决各种规模的工程问题
(1)联合多种物理效应
Simscape 模型集成了电气、机械、液压及其他物理域。这些系统中的物理交互都会被采集到仿真结果中,方便您合理开展组件选型并优化系统级性能。
(2)对各种规模的系统进行建模
您可以检查所含时间常数从几微秒到数年不等的效应。无论您要设计的系统只有口袋大小还是横跨整个大陆,Simscape 都能让您快速探索并分析设计。
(3)根据任务需要定制模型
Simscape 提供了数以千计的可配置附带组件,方便您增减保真度。您可以将这些组件连接到使用基于 MATLAB 的 Simscape 语言创建的自定义 Simscape 组件。如此一来,您就可以按照所需的详细程度仿真和探索您的系统。
使用 Simulink 构建实时应用,并在 Speedgoat 实时目标计算机和 FPGA 上执行。创建 App 和脚本,以在 MATLAB 中与实时应用交互。
实时仿真和测试支持您:
(1)使用自己的硬件,完善和验证控制系统设计的功能运行
(2)使用灵活、可扩展的平台,不断探索和测试新想法
(3)即使不具备物理被控对象或系统,也能测试控制系统硬件
(4)研究那些使用生产硬件执行会较为复杂、昂贵或危险的场景及硬件交互
(5)尽早检测到错误,及时纠正以确保经济高效,避免出现代价高昂的设计缺陷
1、直接从仿真模型构建原型
灵活的 Speedgoat 目标计算机硬件支持您执行功能性快速原型。使用 Simulink,算法开发人员可以创建模型以开展设计与权衡,并在开始实现之前验证系统架构。通过自动生成 C 和 HDL 代码,您还可以使用同一个模型来快速创建硬件原型,后者通过 Speedgoat 的 I/O 模块连接到被测设备。
2、使用硬件在环仿真验证控制器设计
硬件在环 (HIL) 仿真是一种通过实时仿真验证控制设计的方法。在 Simulink 中对物理系统建模,并在目标计算机上实时仿真,同时在嵌入式硬件上执行控制算法。嵌入式硬件通过 I/O 连接和通信协议连接到目标计算机。采用 HIL 仿真,工程师能够在不具备物理原型的情况下,在各种工况下测试控制设计。
3、使用 Speedgoat 将算法连接到硬件
使用 Simulink 构建在 Speedgoat 硬件上执行的多线程实时应用。Speedgoat 硬件使实时应用能够在 CPU 上实现微秒级执行,在 FPGA 上实现纳秒级执行。凭借各种目标平台和广泛的 I/O 与协议支持,Speedgoat 目标可以配置用于快速原型或硬件在环。
虚拟系统集成可以帮助您减少对原型硬件的依赖,并使所有工程师都能够在产品开发周期的任意阶段以虚拟方式访问系统。您可以使用 Simulink® 对由物理硬件、嵌入式软件、算法和系统运行环境组成的复杂虚拟系统进行建模、仿真和分析。
借助 Simulink,您可以:
(1)使用直观的架构模型描述系统架构
(2)使用领域特定的工具和预置模块对跨多个领域的系统建模
(3)使用可重用和运行就绪的组件开发可维护的大型模型
(4)将来自不同团队和工具的组件轻松、稳健地集成到一个系统级仿真中
(5)通过仿真和分析来了解和验证系统行为
(6)在您的多核桌面计算机上或计算机集群或云中并行运行大量仿真作业
(7)将仿真部署为独立可执行程序、Web App 和功能模型单元 (FMU)
1、描述系统架构
使用 System Composer™ 指定和分析系统架构。创建可以转换为详细 Simulink 实现模型的描述性系统架构模型。这种互联环境可确保跨架构和设计工作流的项目保持同步。
使用这些架构模型制作虚拟系统模板。使用预定义的结构配置系统仿真并自动组配虚拟系统。
2、跨多个领域的系统建模
复杂的虚拟系统可以包含多域组件。在同一个模型中,使用 Simulink 构建连续时间、离散时间和混合仿真组件。此外,您的 Simulink 模型还可以包括 Stateflow® 状态机体现的组合逻辑和时序逻辑,并用 SimEvents® 表示智能体 (3:06)和事件驱动流程。使用 Simscape™ 描述物理系统模型。
使用 Simulink 中的预置模块设计行业特定的应用,这样您就不必从头创建它们了。例如,使用 Powertrain Blockset™ 中的模块对汽车动力总成系统进行建模和仿真,使用 Aerospace Blockset™ 对飞机动力系统进行建模和仿真,或使用信号处理工具对音频和视频系统进行建模和仿真。
3、开发可维护的大型模型
通过系统组件化,使用子系统和模型引用在 Simulink 中创建复杂大型的设计。使用这些方法,可以组配和仿真大型模型。构建自定义库,以便在整个组织范围内共享和重用部件与组件。通过模型引用与其他团队成员并行开发您的设计,并在与系统集成前独立验证您的组件。要采用模型开发运营一体化工作流,请在持续集成 (CI) 系统(如 Jenkins™)中使用 MATLAB® 单元测试框架运行测试。
4、集成来自多个来源的组件
使用 Simulink 将设计组件集成在一起,无论它们来自何处。您可以从 Simulink 的 50 多种专用附加产品和 100 多个建模和仿真连接合作伙伴提供的模块库或组件中随意挑选。使用 Simulink 将以 MATLAB、C/C++、Python 和其他语言编写的代码引入您的设计。
Simulink 支持开放式仿真标准,例如功能模型接口 (FMI)。使用 Simulink 中的 FMI 导入模块引入外部 FMU。通过 ROS 或 DDS 等中间件集成外部仿真框架。
使用模型降阶方法来组合使用不同保真度级别建模的组件,从而管理和匹配整个模型范围内的组件保真度。
5、仿真和分析
系统仿真让您在建模时就能够检测和更正系统设计问题。使用仿真调速以指定的速率运行仿真,从而更清楚地观测系统的行为。向前和向后步进仿真可以让您更深入地了解系统和意外行为的原因。
使用 Dashboard 模块以交互方式控制参数值,并查看一组信号的响应情况。使用仿真数据检查器记录仿真数据,以查看和比较结果并使用 MATLAB 进行进一步分析。
6、在集群和云中运行大量仿真作业
配置 Simulink 运行任务,如蒙特卡罗模拟、设计优化或自动化测试 (4:17),以涵盖虚拟系统的所有设计案例。通过在集群或云中执行仿真作业更快地获得系统设计的深度信息。Simulink 中的“多个仿真”面板可以帮助您创建大量仿真作业而无需编写脚本。使用仿真管理器监控、检查和可视化仿真进度及结果。
Simulink 在仿真过程中使用数据流以递增方式将数据加载并记录到内存中。每次处理的仅为仿真数据的一个数据块,无需将整个数据集加载到内存中。这就消除了系统内存瓶颈,即使对于使用和产生大数据的大量仿真也是如此。
7、部署仿真
与协作者、供应商和客户共享仿真时选择合适的功能级别。使用 Simulink Compiler™,您可以从模型自动生成仿真 App,并将其编译为独立可执行文件或基于浏览器访问的 Web App。
您可以从模型中导出 FMU 以用于外部仿真环境。您还可以将模型共享为受保护模型,并有选择地在其中包含模型的 Web 视图、生成的代码和密码保护功能。
您可以使用 MATLAB® 和 Simulink® 开发能够解决各种任务和需求的模型。通过激活一组预定义的变体(模型设计不可或缺的部分),您可以让模型适配特定的设计需求。Simulink 变体功能支持您创建灵活的模型来管理、配置和重用您的设计。
使用 Simulink,您可以:
(1)在从需求到部署整个开发生命周期中管理模型中的变体
(2)用一个模型评估多个设计
(3)以交互方式和编程方式选择模型变体
(4)在仿真和代码生成工作流的不同阶段控制变体激活
(5)可视化并分析变体配置
1、变体拓扑
将变体引入模型的各个方面。在所有领域实现变体设计,包括控制逻辑、状态机、流程图、物理系统和 AUTOSAR 架构等。
使用组件变体在单独层次结构中包括一个组件的多个实现。将组件变体与条件执行函数或事件驱动函数相结合,以实现上下文相关的系统行为。
设计信号变体,以可视化同级别变体选择项的所有可能实现,并在整个模型中自动传播变体条件。
设计参数变体以对不同参数值建模,并满足不同系统具有相同功能的需求。
2、用于物理建模的变体
使用变体在物理系统的不同设计之间(例如混合动力或全电动动力总成系统)进行切换。通过切换到保真度更高或更低的变体来调整模型的保真度以匹配您的工程任务。
3、系统架构的变体
使用变体组件在同一个系统架构模型中创建多个结构或行为设计方案。用整体系统设计评估不同实现。
1、配置模型变体
使用变体管理器定义、控制和可视化变体配置。创建预定义的变体配置。激活这些配置并在它们之间切换以同时控制多个变体设计。为配置定义约束以防止无效的变体组合。一旦定义了变体配置,您就可以使用变体配置数据对象储存、分发和重用这些配置。
2、可视化并分析变体配置
直接在 Simulink 画布中直观地跟踪变体条件,并以表格形式比较多个变体配置。在编辑的同时验证变体配置,以便无需仿真或更新模型就可以发现问题。分析变体配置,确定始终处于或永远不会处于激活状态的变体,从而找到并诊断配置中的潜在错误或不一致。
1、涉及变体的仿真和测试工作流
在各种仿真模式下使用不同变体配置执行仿真,而无需重新生成或重新编译模型。
分析变体,报告覆盖率结果,并对您的变体模型执行测试。配置变体激活时间,以便为模型中的活动变体选择项或所有变体选择项执行验证和确认。
2、简化变体模型
从一组变体配置或基于指定的变体控制项值自动生成简化模型。在分发和共享模型前通过移除未使用的变体来简化模型以便保护知识产权。分析简化模型并生成消息报告,以检查是否存在断开的模型依赖关系和验证模型结构。
1、变体选择项的代码生成
为具有变体设计的模型生成代码,并选择是在代码中包含所有变体选择项还是仅包含活动变体。
在生成的代码或最终可执行文件中激活所需的变体选择项,而无需重新生成或重新编译代码。
2、AUTOSAR 变体的建模和实现
利用 Simulink 的变体功能来实现多条车辆产品线软件中使用的可扩展 AUTOSAR 架构。
借助变体点对 AUTOSAR 软件组件建模,以基于预定义的控制条件支持 AUTOSAR 接口或实现。导入和导出具有 AUTOSAR 变体的 ARXML 文件,以将 Simulink 集成到完整的 AUTOSAR 工作流中。
工程团队在 MATLAB 和 Simulink 中使用基于模型的设计,以设计复杂的嵌入式系统,并生成产品级 C、C++ 和 HDL 代码。MathWorks 工具支持仿真测试和基于形式化方法的静态分析,让基于模型的设计更为严谨也更趋自动化,可以尽早发现错误,提高质量水平。
借助 MATLAB 和 Simulink,您能够:
(1)从需求追溯到架构、设计、测试和代码
(2)在设计过程中检查是否符合行业和自定义建模标准
(3)证明您的设计符合需求且不存在严重的运行时错误
(4)使用测试序列和 Stateflow 状态图编写测试用例
(5)收集模型和代码覆盖率以检查测试完整性
(6)自动生成测试用例以分析缺失测试覆盖率
(7)生成报告和工件,并对照标准(例如 DO-178 和 ISO 26262)进行认证
1、需求验证
非形式化文本需求可以存储在文档、电子表格或 IBM Rational DOORS 等需求管理工具中,用于启动开发过程。Requirements Toolbox 可用于导入、查看和编写需求,并将需求连同您的架构、设计、生成的代码和测试工件一起管理。您可以在 System Composer、Simulink、Stateflow 或 Simulink Test 的测试中创建一个从需求到设计的数字线索。通过这种可追溯性,您可以识别实现或测试缺口,并快速了解更改对设计或测试的影响。
您可以形式化需求并分析其一致性、完整性和正确性,以便使用 Requirements Toolbox 中的 Requirements Table 模块更早地验证需求。借助 Simulink Test 中的时序评估,您可以采用可评估、可调试的自然语言形式以精确的语义指定评估,从而验证文本需求。
2、在 Simulink 中执行系统化故障注入和 FMEA
您可以利用仿真来分析故障和其他异常行为所带来的影响,以开发安全需求并验证系统稳健性。Simulink Fault Analyzer 支持使用仿真进行系统性故障影响和安全分析,该产品能够在不修改设计的情况下执行故障注入仿真。您可以管理在 Simulink、Simscape 和 System Composer 中建模的故障。仿真数据检查器可用于分析故障所带来的影响。您可以使用“多个仿真”面板进行故障灵敏度分析,还可以在利用仿真的同时执行安全分析,如故障模式和影响分析 (FMEA)。Simulink Fault Analyzer 支持您创建故障、危险、故障检测和缓解逻辑及其他工件之间的正式连接(结合使用 Requirements Toolbox)。
3、认证标准合规性
对照标准自动验证模型和代码,这些标准包括 DO-178、ISO 26262、IEC 61508、IEC 62304 和 MathWorks Advisory Board (MAB) 指导规范等。Simulink Check 提供行业认可的检查和度量,用于识别开发过程中违反标准和指南的情况。您可以根据自己的标准或指南创建自定义检查。IEC Certification Kit (for ISO 26262 and IEC 61508) 和 DO Qualification Kit (for DO-178 and DO-254) 提供了工具鉴定工件、证书和测试套件,可帮助您鉴定代码生成和验证产品,并简化嵌入式系统认证。
4、证明不存在错误并形式化验证需求
形式化验证可找出导致整数溢出、死逻辑、数组访问越界和除以零的隐藏设计错误,同时无需对设计进行仿真。Simulink Design Verifier 可以形式化验证您的设计中不存在错误或安全漏洞。Simulink Design Verifier 还可以证明您的设计符合关键需求。如果发现例外,它会自动生成反例以用于调试。
5、自动测试生成
识别测试缺口、非预期功能或需求错误非常重要。Simulink Coverage 可以计算测试期间模型或生成代码的执行比例。它支持多种行业标准指标,包括条件、决策、修正条件/决策覆盖率 (MCDC) 以及自定义覆盖率目标。Simulink Design Verifier 可以自动生成测试用例,帮助您解决覆盖率完整性问题,以实现结构性和功能性覆盖率目标。
6、静态代码分析
在验证手写代码和生成的代码时,Polyspace 产品通过形式化方法找出 Bug 并证明不存在严重运行时错误,而无需执行测试用例或代码。Polyspace Bug Finder 可以检查是否符合 MISRA、ISO 26262、IEC 61508 和 DO-178 等标准或 FDA 法规,并将情况记录到文档。您可以检查是否存在软件安全漏洞,以及是否符合 CWE、CERT-C、ISO/IEC 17961 或其他标准。Polyspace Code Prover 可以执行静态分析,证明 C 和 C++ 源代码中不存在溢出、被零除、数组访问越界或其他运行时错误。