Разработайте разделение

Когда разделить дизайн

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

  • Размер дизайна и сложность:

    • Тысячи блоков

    • Сотни логических решений

    • Сотни вводов и выводов

    • Сотни времен большие промышленные примеры в некоторых случаях

    • Несколько различных настроек той же функциональности

  • Интегрирование команды:

    • Несколько человек, работающих на дизайне

    • Люди расположены в различных местах

    • Люди от различных компаний

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

  • Включите эффективную и устойчивую разработку системы.

    • Уменьшите сложность общего замысла путем решения меньших проблем.

    • Получите выигрыши в производительности та шкала.

    • Компоненты повторного использования через несколько проектов.

  • Упростите сотрудничество

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

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

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

  • Улучшенная итерация, разработка и рабочие процессы верификации

    • Выполните итерации быстрее через более эффективное тестирование и повторное использование.

    • Устраните перетестирование на неизменные компоненты.

    • Модели среды повторного использования и алгоритм разрабатывают в различных проектах.

    • Создайте варианты проектов.

    • Тщательно продуманные компоненты независимо через четко определенные интерфейсы.

    • Справьтесь с эволюцией дизайна с инструментами управления конфигурацией.

Компонентно-ориентированное моделирование требует:

  • Механизмы для разделения моделей и определения интерфейсов

  • Инструменты и процессы для данных управления, моделей и среды

Используйте следующие методы для компонентно-ориентированного моделирования.

Если не разделить дизайн

Компонентизация предоставляет преимущества для крупномасштабных проектов, но не необходима для маленьких проектов. Разделение вашего дизайна в компоненты требует дизайнерской работы и может увеличить время, потраченное, чтобы обновить схемы. Используйте отдельные компоненты только, когда ваш дизайн будет достаточно большим, чтобы извлечь выгоду из компонентизации.

Чтобы решить, нужно ли для вашего дизайна разделение, см. рекомендации в Инструкциях для Размера Компонента и Функциональности.

Запланируйте компонентизацию в образцовом дизайне

После того, как модели становятся большими и объединяют в зависимости от времени, трудно разделить их в компоненты, чтобы позволить нескольким инженерам работать на них параллельно. Разделение модели Simulink® в компоненты легче, если модель разработана для компонентизации от запуска. Разработка для компонентизации во-первых может помочь вам избежать этих трудностей:

  • Если единственный инженер разрабатывает модель с самого начала, добавляя блоки и группируя их в подсистемы, когда сложность модели увеличивается, трудно позже разделить модель в компоненты. Подсистемы в модели являются часто “виртуальными” и неатомарными. Когда вы преобразовываете их в атомарные подсистемы и затем в компоненты модели - ссылки, можно представить нежелательные алгебраические циклы, которые трудно диагностировать и решить.

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

  • При попытке расшириться, чтобы быть параллельными разработке, не разбивая на компоненты модели, трудно совместно использовать, работают в командах без длительного и подверженного ошибкам слияния подсистем.

Эти проблемы походят на взятие большой части кода (C, Java или код MATLAB®) и попытка разломать его на много отдельных функций. Значительное усилие требуется и может потребовать обширных модификаций к некоторым частям кода, если код не был разработан, чтобы быть модульным во-первых. То же самое верно для моделей Simulink.

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

Если у вас уже есть дизайн, который вы хотите разделить на компоненты, видеть Раздел Существующий Дизайн.

Инструкции для размера компонента и функциональности

Чтобы настроить ваш проект для команды продолжить работать, рассмотрите следующие инструкции по архитектуре модели для компонентов. Полезные компоненты:

  • Имейте четко определенные контуры интерфейса I/O.

  • Выполните заданный набор функций (действия), заданные требованиями.

  • Явитесь частью большей системы.

  • Имейте “правильный” размер:

    • Достаточно большой, чтобы быть допускающим повторное использование

    • Достаточно маленький, чтобы быть протестированным

    • Только один инженер, вероятно, захочет отредактировать каждую модель за один раз

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

Рекомендации:

  • В большинстве случаев, если у вас есть меньше чем 100 блоков, не делите дизайн на компоненты. Вместо этого используйте подсистемы, если вы хотите создать визуальную иерархию. Например, модель в качестве примера vdp не является достаточно большой, чтобы извлечь выгоду из компонентизации.

  • Если вы имеете 500–1000 блоков, полагаете, что создание модели - ссылки содержит тот компонент в отдельном файле. Стоимость верификации может уменьшить размер для компонентов. Например, если вы имеете маленький компонент 100 блоков с высокими затратами на тестирование и частыми изменениями, полагаете, что распадение что компонент в отдельный файл делает верификацию легче.

Рассмотрите деление основанного на модели на:

  • Физические компоненты (e. g., завод и контроллер, для генерации кода)

  • Логика алгоритма

  • Возможность многократного использования в других моделях

  • Тестируемость, например, для выполнения Аппаратных средств в тестах цикла

  • Частота дискретизации; рассмотрите группирующиеся компоненты, которые имеют ту же частоту дискретизации

  • Скорость симуляции; использование различных решателей для компонентов с различными числовыми свойствами может увеличить скорость симуляции

  • Доступность другим командам или другим в вашей команде.

В то время как вы не можете всегда планировать размер модели, если вы ожидаете, что несколько человек будут работать на дизайне, можно извлечь выгоду из методов компонентизации. Рассмотрите управление конфигурацией управления с помощью Проекта Simulink и деля дизайн с помощью Модели - ссылки так, чтобы команда могла работать на отдельных файлах одновременно.

Размер компонентаРекомендуемые методы компонентизацииПримечания

Маленький <500 блоков

Создайте визуальную иерархию с помощью подсистем.Маленькие проекты не извлекают выгоду из деления на отдельные файлы. Однако более многочисленные команды, которые вызывают конкуренцию файла или высокую стоимость верификации, могут сделать его стоящим делящих меньших компонентов в отдельные файлы вместо того, чтобы использовать подсистемы.
Большой> 500 блоковРазделите компоненты на отдельные файлы с помощью Модели - ссылки или Библиотек.

Для нескольких инженеров или команд, работающих на дизайне, лучшой практикой является один файл на компонент. Чтобы уменьшить конкуренцию файла, стремитесь к компонентам, в которых только один инженер должен отредактировать каждую модель за один раз.

Маленький <500 блоков, но ожидаемый расти в зависимости от времени

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

Если возможно, план ваши компоненты от запуска, чтобы избежать боли миграции.

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

Характеристики компонентаМетодПреимуществаЗатраты
Маленькие, низкоуровневые служебные функции, снова использованные во многих местах в дизайне

Модель библиотеки, содержащая единственную допускающую повторное использование атомарную подсистему

  • Контекстно-зависимый: может адаптироваться к различным интерфейсам с различными типами данных, частотой дискретизации и размерностями, в различных контекстах, не изменяя дизайн.

  • Может быть снова использован в других моделях

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

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

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

  • Требует, чтобы управление ссылкой избежало проблем с разорванными, отключенными, или параметризованными связями. Смотрите Управляют Компонентами пользующиеся Библиотеки.

Группы блоков для совместного использования среди пользователей

Библиотека для группировки и хранения блоков Simulink

Палитра Library ссылок на компоненты

  • Библиотеки полезны для хранения блоков, чтобы совместно использовать среди многих пользователей

  • Чтобы уменьшить конкуренцию файла, используйте палитры библиотеки ссылок на отдельные компоненты в отдельных файлах. Сохраните каждый компонент в файле модели - ссылки или единственную подсистему в отдельной библиотеке.

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

  • Требует, чтобы управление ссылкой избежало проблем с разорванными, отключенными, или параметризованными связями. Смотрите Управляют Компонентами пользующиеся Библиотеки.

Компоненты верхнего уровня для крупномасштабных моделей:> 500 блоков

Большие компоненты: запуск в ~ 500–5000 блоков для один или несколько допускающих повторное использование экземпляров, или меньший, если много экземпляров

Компоненты на любом уровне иерархии модели, где команды должны работать независимо

Образцовая ссылка
  • Компоненты являются независимыми образцовыми файлами и частью большей модели. Можно моделировать и сгенерировать код в компоненте.

  • Независимый от контекста — хороший для компонентов крупномасштабной модели, где интерфейсы управляемы и заблокированы вниз.

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

  • Возможный использовать сгенерированный код Режима Accelerator, чтобы уменьшить требования к памяти при загрузке моделей и скорости симуляции увеличения, по сравнению с подсистемами или библиотеками. Полезный для разделов компонента верхнего уровня.

Производительность может уменьшить немного при обновлении модели (схема обновления), потому что каждая эталонная модель проверяется на изменения, чтобы включить инкрементные сборки. То, когда компоненты являются достаточно большими (> 500 блоков), обновляют схему, быстрее в большинстве случаев.

Смотрите раздел дизайн Используя модель - ссылку.

Выберите Components for Team-Based Development

Чтобы выполнить параллельную разработку, вам нужно компонентно-ориентированное моделирование. Лучшая практика для успешной основанной на команде разработки состоит в том, чтобы разделить модели в рамках проекта так, чтобы только один пользователь работал на каждой части за один раз. Компонентизация позволяет вам избежать или минимизировать длительное слияние. Чтобы настроить ваш проект для работы команды, рассмотрите следующие инструкции по архитектуре модели.

Эта таблица сравнивает подсистемы, библиотеки и ссылку модели для основанной на команде разработки.

Моделирование процесса разработкиПодсистемыБиблиотекиОбразцовая ссылка

Основанная на команде разработка

Не поддерживаемый

Для подсистем в модели Simulink не предоставляет никакому прямому интерфейсу инструменты системы контроля версий.

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

Слияние подсистем является медленным и подверженным ошибкам, так же лучше всего избегаемое как процесс рабочего процесса. Однако Отчет Simulink Generator™ обеспечивает инструменты, чтобы помочь вам объединить подсистемы. Смотрите Слияние Модели Simulink из Отчета Сравнения.

Поддерживаемый, с ограничениями

Можно поместить файлы библиотеки в систему контроля версий для системы контроля версий и управления конфигурацией. Можно использовать Проект Simulink взаимодействовать с системой контроля версий.

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

Чтобы уменьшить конкуренцию файла, используйте одну подсистему на библиотеку.

Можно соединиться с тем же блоком библиотеки от многоуровневых моделей.

Можно ограничить доступ для записи к компонентам библиотеки.

Хорошо удовлетворенный

Можно поместить файлы модели - ссылки в систему контроля версий для системы контроля версий и управления конфигурацией. Можно использовать Проект Simulink взаимодействовать с системой контроля версий.

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

Можно разработать, создать, моделировать и протестировать модель, на которую ссылаются, независимо от модели, которая ссылается на нее.

Simulink не ограничивает доступ для изменения модели - ссылки.

Большинство больших моделей использует комбинацию методов компонентизации. Никакой единственный подход не подходит для широкого спектра пользователей Simulink. Следующий совет описывает некоторые типичные процессы, чтобы показать то, что можно сделать с инструментами MathWorks®, чтобы выполнить основанную на команде разработку.

Один файл на компонент для параллельной разработки

Чтобы выполнить эффективную параллельную разработку, повредите большую модель во многие отдельные файлы, так, чтобы члены команды могли работать независимо, и можно поместить каждый файл при управлении версиями. Компонентизация позволяет вам избежать или минимизировать длительное слияние. Чтобы настроить ваш проект для работы команды, рассмотрите совет в Инструкциях для Размера Компонента и Функциональности.

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

Разделите существующий дизайн

Если у вас уже есть дизайн, который вы хотите разделить на компоненты, сначала решить, где разделить модель. Существующие подсистемы, которые растут в зависимости от времени, являются не всегда лучшим способом разделить модель. Рассмотрите деление основанного на модели на совете в Инструкциях для Размера Компонента и Функциональности.

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

После того, как вы решаете, как разделить ваш дизайн, инструменты Simulink могут помочь вам разделить существующую модель на компоненты.

Simulink может помочь вам модели раздела путем преобразования подсистем в файлы. Можно преобразовать в файлы с помощью Модели - ссылки или Библиотек. См. Инструкции для Размера Компонента и Функциональность для предложений на том, когда применить каждый метод.

Разделите дизайн Используя модель - ссылку

Используйте Модель - ссылку, чтобы разделить компоненты на отдельные файлы так, чтобы команда могла работать на отдельных файлах одновременно. Можно также снова использовать модели в других моделях. Чтобы разделить модель с помощью модели - ссылки, смотрите Ссылочные Существующие Модели или Преобразуйте Подсистемы в Модели, на которые Ссылаются.

Управляйте компонентами пользующиеся библиотеки

  • Пользуйтесь Библиотеками, содержащими единственную подсистему, чтобы содержать компонент в единственном файле. Пользуйтесь библиотеками, чтобы сохранить блоки, которые можно снова использовать в моделях. Соединенные блоки наследовали атрибуты от окружающих моделей, таких как типы данных и частота дискретизации. Используя этот метод для компонентизации имеет управление наверху ссылками библиотеки, описанными ниже.

  • Пользуйтесь Библиотеками, чтобы снова использовать блоки в многоуровневых моделях. Библиотеки работают хорошо на группировку и хранение блоков Simulink, чтобы совместно использовать. Лучшая практика для библиотек состоит в том, чтобы использовать их для хранения блоков, чтобы совместно использовать со многим пользователем и блоками, которые нечасто обновляются. Как грубая инструкция, уместно использовать Библиотеку Simulink, если ее содержимое обновляется один раз в несколько месяцев. Если вы обновляете его более часто, то библиотекой, вероятно, пользуются, чтобы выполнить управление конфигурацией. В этом случае заботьтесь, чтобы избежать типичных проблем, описанных в управлении Ссылкой Библиотеки.

  • Чтобы сделать блоки библиотеки доступными для повторного использования при сокращении конкуренции файла и применении управления версиями, используйте палитры библиотеки. Палитра является библиотекой, содержащей ссылки на другие компоненты. Если каждый компонент является единственной подсистемой в отдельной библиотеке или файлом модели - ссылки, можно достигнуть одного файла на лучшую практику компонента для компонентно-ориентированного моделирования. Можно использовать управление отдельной версией для каждого компонента, и можно также управлять палитрой.

    Когда вы перетаскиваете блок от палитры библиотеки в вашу модель, Simulink переходит по ссылке назад на файл, где подсистема или модель - ссылка реализованы. Модели, которые используют компонент, содержат ссылку на компонент а не на палитру.

Управление ссылкой библиотеки

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

  • Отключенные ссылки — Могут вызвать конфликты слияния и отказ обновить все экземпляры того же компонента модели. В иерархии ссылок можно случайно отключить все ссылки, не будучи знающими об этом, и только восстановить одну ссылку, в то время как отъезд других отключил.

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

  • Параметризованные данные ссылки — может быть полезно изменить значение данных параметра, таких как значение усиления в блоке усиления, не отключая ссылку библиотеки. Это генерирует “данные ссылки” для того экземпляра только. Однако, для управления конфигурацией это может вызвать проблему, если вы принимаете, что все экземпляры идентичны, когда у каждого теперь есть различные свойства.

Инструменты Simulink помогают вам управлять ссылками библиотеки, чтобы избежать проблем:

Внимание

Эти инструменты управления ссылки могут обнаружить проблемы ссылки, но не могут предотвратить редактирование неправильных файлов. Если это - проблема, то используйте Модель - ссылку в качестве механизма разделения, чтобы избежать рисков, сопоставленных с отключенными, разорванными, и параметризованными связями.

Похожие темы

Была ли эта тема полезной?