适合对设计进行划分的情形
当设计变得过于复杂以致于一个人无法了解所有细节时,可以对其进行划分。复杂性会随着设计规模和团队规模的增大而增加,例如,
-
设计规模和复杂性:
-
数千个模块
-
数百项逻辑决策
-
数百个输入和输出
-
在有些情况下,实际规模是行业示例的数百倍
-
相同功能的多种不同配置
-
-
团队整合:
-
多人参与设计
-
人员分布在不同地方
-
人员来自不同公司
-
将设计划分为多个组件有助于您处理大规模设计。将设计划分为多个组件可实现模块化,有助于降低复杂性,在开发、测试和重用组件方面进行协作,并成功进行基于模型的大型设计。基于组件的建模有助于:
-
实现高效稳健的系统开发。
-
通过求解较小的问题来降低整体设计的复杂性。
-
获得可扩展的性能优势。
-
在多个工程之间重用组件。
-
-
促进协作
-
对算法、物理模型和测试进行划分。使用定义的接口,根据设计的结构和功能划分来定义架构。
-
与跨组织的团队合作开发产品。各团队可以独立细化各个组件以进行被控对象建模、算法设计和测试框架开发。
-
用源代码管理工具管理设计。
-
-
改进迭代、细化和验证工作流
-
通过更高效的测试和重用,加快迭代速度。
-
无需再对未更改组件进行重新测试。
-
在不同工程中重用环境模型和算法设计。
-
创建设计的不同变体。
-
通过明确定义的接口独立细化组件。
-
使用配置管理工具管理设计演变。
-
基于组件的建模需要:
-
划分模型和指定接口的机制
-
管理数据、模型和环境的工具和流程
使用以下方法进行基于组件的建模。
不适合对设计进行划分的情形
组件化可为大规模设计提供好处,但小规模设计不需要。将设计划分为不同的组件需要设计工作,并且可能增加更新图所需的时间。仅当您的设计大到足以从组件化中获益时,才有必要使用单独的组件。
要决定您的设计是否需要进行组件划分,请参阅有关组件大小和功能的规范中的建议。
模型设计中的组件化计划
随着时间的推移,模型会变得越来越大、越来越复杂,很难将它们分解成各个组件以允许多个工程师并行处理它们。如果模型从一开始就采用组件化设计,则将 Simulink® 模型拆分成单个组件会更容易。从一开始就采用组件化设计可以帮助您避免下列困难:
-
如果一个工程师自下而上地开发一个模型,随着模型复杂性的增加,不断添加模块并将它们组合到子系统中,则以后很难将该模型拆分成单个组件。模型中的子系统通常是“虚拟的”和非原子形式的。如果您将这些子系统转换为原子子系统,然后对引用组件建模,则很可能会引入不想要的代数环,而且这些代数环难以诊断和解决。
-
随着时间的推移而增加的子系统并非始终是对模型进行组件划分的最佳方式。此处的“最佳”可能指结构最适用于在其他模型中使用可重用组件、生成可与原有功能集成的代码,或执行硬件在环测试等。
-
如果您尝试扩展到并行开发而不将模型组件化,则必须进行耗时且容易出错的子系统合并,否则很难在各团队中共享工作。
这些问题类似于获取一大段代码(C、Java 或 MATLAB® 代码)并尝试将其分解成多个单独的函数。如果代码不是一开始就采用模块化设计,则需要花费巨大的精力,并且可能需要对代码的某些部分进行大量的修改。Simulink 模型也是如此。
随着 Simulink 模型的不断增长,您可能希望多个工程师并行处理该模型,当您尝试将其纳入配置管理时,可能会因为未进行组件化而导致常见的故障模型。避免这些问题的最好方法是从一开始就采用组件化设计。您可以使用 Simulink 的以下功能来设计适合组件化的模型。
如果您已有要划分为组件的