Документация Engee

Архитектура моделей в Engee

Практические рекомендации по построению архитектуры моделей с использованием конкретных блоков описаны в статье.

Любую, даже самую сложную модель, можно собрать из отдельных блоков. Однако с ростом их количества неизбежно возникают сложности. Так, если модель состоит из множества блоков, то понять расположение нужных элементов и их взаимодействие становится проблемным. В таких случаях на поддержку и модификацию модели уходит слишком много времени. Поэтому для наглядности и упрощения рекомендуется разделять сложные модели на семантически однородные куски с помощью подсистем.

Подсистема — это блок Subsystem, предназначенный для создания иерархии в модели. Например, с помощью подсистемы можно реализовать модель в которой:

  • 20 блоков, описывающих поведение колес, соединены в подсистему «Колеса»;

  • 300 блоков, связанных с двигателем, соединены в подсистему «Двигатель»;

  • 50 блоков, отвечающих за корпус, соединены в подсистему «Корпус».

Такие объединения создают промежуточный уровень абстракции, где вместо отдельных блоков используются логические объекты. В итоге получим следующую условную модель:

subsystem model example 1

Такой переход на определенные уровни абстракции с помощью подсистем позволяет:

  • Думать в терминах реальных объектов (двигатель, трансмиссия, шасси) вместо сигналов и блоков;

  • Группировать одни подсистемы в другие, более крупные подсистемы, повышая уровень абстракции;

  • Отключать или заменять целые подсистемы одним действием, а не модифицировать блоки вручную.

Это, в свою очередь, формирует целый ряд преимуществ:

  • Раздельная отладка — благодаря подсистемам можно изолировать и тестировать отдельные части модели. Например, сначала убедиться в работоспособности двигателя, а затем проверить, как он взаимодействует с трансмиссией;

  • Логика внутри подсистем — подсистемы теперь не просто набор блоков внутри другого блока. Они становятся объектами со своей логикой: могут реагировать на внешние сигналы, активироваться при определенных условиях (подробнее см. здесь);

  • Использование масок — маски позволяют скрыть сложные внутренние детали подсистем и вынести только важные параметры или настроить дополнительный функционал поверх подсистемы;

  • Гибкость и повторное использование — блоки можно переиспользовать в разных моделях. Также можно экспериментировать со структурами, меняя блоки или их параметры, чтобы оценить результат.

Для создания уровней абстракции в Engee могут применяться не только подсистемы. Подмодели (блок Model) — следующий этап, позволяющий работать с моделями как с отдельными объектами, что позволяет:

  • Внедрять параллельную разработку — при использовании блока Model можно распределить разработку между разными специалистами. Например, один инженер занимается подсистемой «Колеса», а другой — «Двигатель». При этом они не вносят потенциальные ошибки или лишние правки в подсистемы друг друга, отвечая только за свою область интересов. Их изменения можно легко внедрить в «Главную модель», просто обновив блок Model в нужной модели;

  • Версионировать и переиспользовать блоки — блок Model прекрасно подходит для сохранения моделей целиком для дальнейшего переиспользования или интеграции.

Основные этапы создания моделей из подсистем/подмоделей

  1. Начальный этап — моделирование из отдельных блоков. Этот подход подходит для небольших моделей, где детализация важнее, чем структура.

  2. Переход на подсистемы — модель начинает группироваться в функциональные модули. Например, из 100 блоков делается несколько подсистем: двигатель, трансмиссия, шасси.

  3. Использование подмоделей и масок — появляются возможности:

    1. 1. Переиспользования компонентов.

    1. 2. Скрытие деталей реализации (маски)/добавление нового функционала.

    1. 3. Упрощения взаимодействия между модулями (подсистемы или подмодели).

  4. Завершающий этап — создание общей системы, которая объединяет несколько подмоделей. Это подход к многоуровневому проектированию, характерный для модельно-ориентированного проектирования.

Рекомендации по созданию моделей

Количество блоков

Старайтесь использовать не более 10 блоков на одном уровне вложенности для сохранения читаемости модели.

Организация подсистем

Разделяйте модель на логические узлы: каждый блок подсистемы должен представлять функциональный элемент системы.

Что выносить в подмодели

Для сложных компонентов с высокой детализацией используйте подмодели, оставляя подсистемы для группировки функциональных узлов.

Гибкость и модульность

Создавайте модель так, чтобы ее можно было легко изменять, заменяя компоненты или модифицируя логику.

Общие рекомендации:

  • Разбивайте модели на логические части.

  • Используйте маски для скрытия сложных деталей и упрощения взаимодействия.

  • Придерживайтесь иерархического подхода: верхний уровень должен быть простым и логичным.

  • Проверяйте и тестируйте подсистемы на каждом этапе, чтобы убедиться в корректной работе модели.

Полезные ссылки