系统开发的确认和验证
确认和验证系统开发的一种方法是使用 V 模型。
系统开发的 V 模型
V 模型是系统开发的一种图形表现形式,它突出了系统开发过程中的验证和确认步骤。V 模型的左侧标识通往代码生成的步骤,包括系统规范和详细的软件设计。V 模型的右侧重点在于对左侧提到的步骤进行验证和确认,包括软件和系统集成。
根据您的应用程序及其在开发过程中的作用,您可以重点关注 V 模型中的一个或多个步骤,或者在 V 模型的多个阶段重复的步骤。代码生成技术及其相关产品还提供了一些工具,可供您在系统开发的 V 模型中应用。有关如何将 MathWorks® 代码生成技术及其相关产品应用于 V 模型开发过程的详细信息,请参阅:
V 模型中的仿真和原型类型
系统开发的 V 模型可应用于不同类型的仿真和原型构建,如快速仿真、系统仿真、快速原型和目标硬件上的快速原型。下表比较了系统开发的 V 模型中显示的 V 模型图左侧标识的仿真和原型类型。
仿真 | 快速仿真 | 系统仿真、快速原型 | 目标硬件上的快速原型 | |
---|---|---|---|---|
目的 | 测试和确认概念模型的功能 | 非实时细化、测试和确认概念模型的功能 | 验证新想法并进行研究 | 在开发过程中细化和标定设计 |
执行硬件 | 开发计算机 | 开发计算机 在 MATLAB® 和 Simulink® 环境外运行的独立的可执行文件 | PC 或非目标硬件 | 嵌入式计算单元 (ECU) 或近似生产环境的硬件 |
代码效率和 I/O 延迟 | 不适用 | 不适用 | 不太重视代码效率和 I/O 延迟 | 较为重视代码效率和 I/O 延迟 |
易用性和成本 | 可以仿真组件(算法或控制器)和环境(或被控对象) Simulink 中的普通模式仿真允许您在验证过程中访问、显示和调优数据 可以加快 Simulink 仿真速度 | 轻松仿真包含组件的混合动力系统的模型和环境模型 适用于运行批量仿真或蒙特卡罗仿真 可以通过使用脚本以交互方式或编程方式用不同的数据集重复仿真,而无需重建模型 可连接 Simulink 以监测信号和调优参数 | 可能需要自定义实时仿真器和硬件 可使用经济实惠的现成 PC 硬件和 I/O 卡完成 | 可使用现有硬件以降低成本和获得更多便利 |
V 模型中的在环测试类型
下表比较了系统开发的 V 模型中 V 模型图右侧标识的验证过程的在环测试类型。
SIL 仿真 | 嵌入式硬件上的 PIL 仿真 | 指令集仿真器上的 PIL 仿真 | HIL 仿真 | |
---|---|---|---|---|
目的 | 验证组件源代码 | 验证组件目标代码 | 验证组件目标代码 | 验证系统功能 |
保真度和精确度 | 两个选项: 以相同的源代码作为目标,但可能存在数值差异 更改源代码以仿真字长,但对定点数学运算为位精确 | 相同的目标代码 对定点数学运算为位精确 周期精确,因为代码在硬件上运行 | 相同的目标代码 对定点数学运算为位精确 可能达不到周期精确 | 相同的可执行代码 对定点数学运算为位精确 周期精确 使用真实和模拟的系统 I/O |
执行平台 | 开发计算机 | 目标硬件 | 开发计算机 | 目标硬件 |
易用性和成本 | 桌面便捷性 仅在 Simulink 中执行 降低了硬件成本 | 在桌面计算机或测试平台上执行 使用硬件 - 流程板和电缆 | 桌面便捷性 在具有 Simulink 和集成开发环境 (IDE) 的开发计算机上执行 降低了硬件成本 | 在测试平台上或实验室中执行 使用硬件 - 处理器、嵌入式计算单元 (ECU)、I/O 设备和电缆 |
实时功能 | 非实时 | 非实时(在样本之间) | 非实时(在样本之间) | 硬实时 |
代码生成目标汇总
以下各表列出了您应用代码生成技术时可能要实现的目标,并说明从何处获得实现这些目标的指南。
您可以打开并运行下面链接的示例并生成代码。
记录并确认需求
目标 | 相关的产品信息 | 示例 |
---|---|---|
在文档、电子表格、数据库或需求管理工具中捕获需求 | 第三方供应商工具,如 Microsoft® Word、Microsoft Excel®、原始 HTML 或 IBM® Rational® DOORS® | |
将需求文档与概念模型中的对象相关联 生成与模型关联的需求报告 | Requirements Management Interface (Requirements Toolbox) Microsoft Word、Microsoft Excel、HTML 和 IBM Rational DOORS 中的双向跟踪 | slvnvdemo_fuelsys_docreq |
在生成的代码中包括需求链接 | Review and Maintain Requirements Links (Requirements Toolbox) | rtwdemo_requirements |
从模型元素和子系统追溯到生成的代码,以及从生成的代码追溯到模型元素和子系统 | rtwdemo_hyperlinks | |
在开发计算机上非实时验证、细化和测试概念模型 | 使用 Stateflow 图的空燃比控制系统 | |
运行独立的快速仿真 运行批量仿真或蒙特卡罗仿真 使用脚本以交互方式或编程方式用不同的数据集重复仿真,而无需重建模型 以交互方式调优参数并监测信号 对混合动力系统(其中包含组件和需要变步长求解器和过零检测的环境或被控对象)的模型进行仿真 | Accelerate, Refine, and Test Hybrid Dynamic System on Host Computer by Using RSim System Target File | Run Rapid Simulations over a Range of Parameter Values Run Batch Simulations Without Recompiling Generated Code Use MAT-Files to Feed Data to Inport Blocks for Rapid Simulations |
在多台计算机上运行分布式仿真 |
开发系统规范
开发详细的软件设计
目标 | 相关的产品信息 | 示例 |
---|---|---|
细化模型设计,以便在生成的代码中表示和存储数据 | ||
选择要部署的代码生成功能 | rtwdemo_counter rtwdemo_counter_msvc rtwdemo_async AUTOSAR Workflow Samples (AUTOSAR Blockset) | |
指定目标硬件设置 | rtwdemo_targetsettings | |
设计模型变体 | ||
在 Simulink、Stateflow 和 MATLAB 语言子集中为代码生成指定定点算法 | Parameter Data Types in the Generated Code Fixed-Point Code Generation Support (Fixed-Point Designer) | rtwdemo_fixpt1 Air-Fuel Ratio Control System with Fixed-Point Data |
将浮点模型或子系统转换为定点表示形式 | Simulink 中的迭代定点转换 (Fixed-Point Designer) | |
使用自动定标通过迭代获得最佳定点设计 | ||
针对您的应用情形创建或重命名数据类型 | UserDefinedDataTypes | |
控制生成的代码中的标识符的格式 | rtwdemo_symbols | |
指定在生成的代码中如何声明、存储和表示信号、可调参数、模块状态和数据对象 | rtwdemo_cscpredef | |
为模型创建数据字典 | rtwdemo_configinterface | |
使用 #pragmas 为生成的函数和数据重新定位数据段以进行标定或数据访问 | Control Data and Function Placement in Memory by Inserting Pragmas | rtwdemo_memsec |
基于应用程序和预期的运行时环境评估和调整模型配置参数 | 使用 Simulink Coder 生成代码 使用 Embedded Coder 生成代码 | |
检查模型是否符合基本建模规范 | rtwdemo_advisor1 | |
在 Simulink 模型顾问中添加自定义检查 | 创建模型顾问检查 (Simulink Check) | 创建和部署模型顾问自定义配置 (Simulink Check) |
检查模型是否符合自定义标准或规范 | 使用模型顾问检查您的模型 | |
检查模型是否符合行业标准和规范(MathWorks 咨询委员会 (MAB)、IEC 61508、IEC 62304、ISO 26262、EN 50128 和 DO-178) | 检查模型合规性 (Simulink Check) | rtwdemo_iec61508 |
获取模型覆盖率以进行结构化覆盖率分析,如 MCDC | ||
证明属性并为模型生成测试向量 | Simulink Design Verifier™ | sldvdemo_cruise_control sldvdemo_cruise_control_verification |
生成模型和软件设计报告 | System Design Description (Simulink Report Generator) | Generate Code Generation Report |
与没有 Simulink 的同事、客户和供应商一起审阅您的模型和软件设计 | Create Model Web Views (Simulink Report Generator) | Compare and Merge Simulink Models Containing Stateflow |
细化组件或系统的概念模型 在实时环境下测试和确认模型功能 测试硬件 获取实时配置文件和代码指标,以便基于您的嵌入式处理器进行分析和调整大小 基于与环境或被控对象硬件的集成评估算法的可行性 | ||
为模型生成源代码,将代码集成到生产编译环境中,并在现有硬件上运行 | rtwdemo_counter rtwdemo_counter_msvc rtwdemo_fcnprotoctrl Configure C++ Class Interface for Rate-Based Models rtwdemo_async AUTOSAR Workflow Samples (AUTOSAR Blockset) | |
将在外部编写的现有 C 或 C++ 代码集成到您的模型中以进行仿真和代码生成 | rtwdemos ,选择模型架构和设计 > 外部代码集成 | |
在特定的嵌入式微处理器和 IDE 上生成代码以实现目标系统上的快速原型 | Deploy Generated Component Software to Application Target Platforms | 在 rtwdemo_vxworks 中 |
生成应用程序代码
目标 | 相关的产品信息 | 示例 |
---|---|---|
优化为生产环境生成的 ANSI® C 代码(例如,禁用浮点代码、删除终止和错误处理代码,以及将代码入口点合并为单个函数) | rtwdemos ,选择性能 | |
使用专用的函数库为特定的运行时环境优化代码 | 通过开发和使用代码替换库来优化生成的代码 - Simulink | |
控制生成的代码的格式和样式 | rtwdemo_parentheses | |
控制生成的代码中插入的注释 | rtwdemo_comments | |
输入特殊指令或标记,以便由第三方工具或进程进行后期处理 | rtwdemo_buildinfo | |
在生成的代码中包括需求链接 | Review and Maintain Requirements Links (Requirements Toolbox) | rtwdemo_requirements |
从模型模块和子系统追溯到生成的代码,以及从生成的代码追溯到模型模块和子系统。 | rtwdemo_comments rtwdemo_hyperlinks | |
将在外部编写的现有代码与为模型生成的代码进行集成 | rtwdemos ,选择模型架构和设计 > 外部代码集成 | |
验证为 MISRA C® 生成的代码 a 以及其他运行时冲突 | ||
保护组件模型设计和生成的代码的知识产权 生成二进制文件(共享库) | ||
为模型或子系统生成共享库,以便与第三方供应商共享 | ||
通过环境或被控对象模型对生成的生产代码进行测试,以验证从模型到代码的转换 | 用 SIL 和 PIL 仿真测试生成的代码 | |
创建 S-Function 包装器,以便从正在 Simulink 中运行的模型中调用生成的源代码 | ||
在您的主机上设置并运行 SIL 测试 | 用 SIL 和 PIL 仿真测试生成的代码 | |
a MISRA® and MISRA C are registered trademarks of MISRA Ltd., held on behalf of the MISRA Consortium. |
集成和验证软件
目标 | 相关的产品信息 | 示例 |
---|---|---|
将在外部编写的现有 C 或 C++ 代码集成到模型中以进行仿真和代码生成 | rtwdemos ,选择模型架构和设计 > 外部代码集成 | |
连接到生成的 C 代码数据结构体的数据接口 | rtwdemo_capi rtwdemo_asap2 | |
控制代码接口的生成,使外部软件能够编译、构建和调用生成的代码 | rtwdemo_fcnprotoctrl | |
导出虚拟和函数调用子系统 | rtwdemo_exporting_functions | |
包含目标特定的代码 | 通过开发和使用代码替换库来优化生成的代码 - Simulink | |
自定义和控制编译过程 | rtwdemo_buildinfo | |
创建一个包含生成的代码文件、静态文件和相关数据的 zip 文件,以便于在您主机之外的其他环境中编译生成的代码 | rtwdemo_buildinfo | |
将软件组件集成为一个完整的系统,以便在目标环境中进行测试 | ||
生成源代码以便与特定的生产环境集成 | rtwdemo_async AUTOSAR Workflow Samples (AUTOSAR Blockset) | |
使用专用的函数库为特定的运行时环境集成代码 | 通过开发和使用代码替换库来优化生成的代码 - Simulink | |
输入特殊指令或标记,以便由第三方工具或进程进行后期处理 | rtwdemo_buildinfo | |
将在外部编写的现有代码与为模型生成的代码进行集成 | rtwdemos ,选择模型架构和设计 > 外部代码集成 | |
连接到生成的 C 代码数据结构体的数据接口 | rtwdemo_capi rtwdemo_asap2 | |
调度生成的代码 | Time-Based Scheduling Example Models | |
在目标环境中验证目标代码文件 | 用 SIL 和 PIL 仿真测试生成的代码 | |
在您的目标系统上设置并运行 PIL 测试 | 在 MathWorks 网站上查看适合 Embedded Coder® 产品的 |
集成、验证和标定系统组件
目标 | 相关的产品信息 | 示例 |
---|---|---|
将软件及其微处理器与硬件环境集成,以生成最终的嵌入式系统产品 增加测试平台中受控环境(或被控对象)的复杂性 使用实时目标环境测试和验证嵌入式系统或控制单元 | Deploy Algorithm Model for Real-Time Rapid Prototyping Deploy Environment Model for Real-Time Hardware-In-the-Loop (HIL) Simulation Deploy Applications to Target Hardware Deploy Generated Component Software to Application Target Platforms | |
生成源代码以进行 HIL 测试 | Deploy Environment Model for Real-Time Hardware-In-the-Loop (HIL) Simulation | |
使用 PC 进行硬实时 HIL 测试 | Create and Run Real-Time Application from Simulink Model (Simulink Real-Time) Real-Time Simulation and Testing (Simulink Real-Time) | |
针对预期用途适当调整 ECU | rtwdemo_capi rtwdemo_asap2 | |
生成 ASAP2 数据文件 | rtwdemo_asap2 | |
生成 C API 数据接口文件 | rtwdemo_capi |