Интерфейс управления требованиями (RMI) предоставляет инструменты для создания и просмотра связей между объектами Simulink и документами по требованиям. В этом примере показано связывание объектов модели с требованиями, хранящимися в IBM Rational DOORS. Дополнительные сведения об использовании RMI см. в разделе Пример использования документов Microsoft Office.
Убедитесь, что установка DOORS настроена на связь с RMI. Запуск MATLAB в качестве администратора и выполнение rmi('setup'). Если обнаружена установка DOORS Client, RMI предложит установить требуемые файлы API. Это необходимо сделать только один раз после переустановки DOORS или MATLAB. Дополнительные сведения см. в разделе Настройка RMI для взаимодействия с Microsoft Office и IBM Rational DOORS.
Для целей этого примера примерная модель отказоустойчивой системы управления топливом называется slvnvdemo_fuelsys_doorsreq.slx включен. Используйте его для упражнений, представленных ниже.
Откройте модель Simulink вручную или с помощью следующего кода.
open_system('slvnvdemo_fuelsys_doorsreq');Можно использовать любой временный модуль DOORS для базовых упражнений по созданию ссылок ниже, а также включить DemoRMI..dpa архив для более продвинутого выполнения синхронизации суррогатных модулей.
На вкладке Приложения откройте Диспетчер требований.
На вкладке «Требования» выберите «Компоновка» > «Обозреватель требований».
В браузере требований в раскрывающемся меню «Вид» выберите «Связи».
В этом примере вы будете работать исключительно на вкладке Требования (Requirements), а все ссылки на кнопки панели инструментов находятся на этой вкладке.
Если в какой-либо момент времени в этом примере изменить выбор на «Требования» в выпадающем меню «Вид» в браузере «Требования», будут изменены кнопки, которые вы можете видеть, и вы не сможете правильно следовать инструкциям без возврата к разделу «Ссылки».

Объект модели можно связать с требованиями, хранящимися в базе данных DOORS (объекты DOORS). При создании ссылок не требуется изменять документы DOORS. Наиболее практичным способом создания новых связей является диалоговое окно «Исходящая связь». Для этого необходимо вручную заполнить поля атрибутов связи. Более простой автоматизированный способ см. в следующем подразделе.
Перейдите к Metered Fuel Блок области.
rmidemo_callback('locate','slvnvdemo_fuelsys_doorsreq/Metered Fuel');
Щелкните правой кнопкой мыши блок и выберите "Требования" > "Открыть диалоговое окно" Исходящие связи "... в контекстном меню. Откроется диалоговое окно Исходящая связь (Outgoing Link).
Щелкните Создать, чтобы создать новое требование.
Выберите элемент DOORS в раскрывающемся списке Тип документа.

Укажите уникальный идентификатор целевого модуля в поле ввода документа или нажмите кнопку Обзор, чтобы выбрать целевой модуль в базе данных DOORS.
Введите идентификатор целевого объекта в поле Идентификатор местоположения или используйте вкладку Индекс документа для выбора целевого объекта в выбранном модуле.
Щелкните Применить (Apply) или ОК, чтобы сохранить новую ссылку требования.
Щелкните правой кнопкой мыши тот же блок Simulink еще раз, чтобы увидеть новую метку ссылки в верхней части контекстного меню.
Проще установить новые связи с помощью ярлыков связывания выбора. Щелкните правой кнопкой мыши блок и выберите «Требования» > «Связать с выбором» в команде «ДВЕРИ».

Создание связей с помощью ярлыков контекстного меню не требует ввода вручную. Целевое назначение связи определяется текущим выбором в DOORS, а в поле «Описание» устанавливается значение «Заголовок объекта» или «Текст объекта DOORS» при отсутствии заголовка. Поскольку «Описание» используется для ярлыков навигации в контекстных меню, количество символов ограничено.
RMI поддерживает двунаправленную связь с требованиями в DOORS, но вы начнете с однонаправленных связей. Отключите двунаправленную связь на вкладке Требования (Requirements) модели, щелкнув Параметры связи (Link Settings) > Параметры связи (Linking Options) и сняв флажок Изменить назначение для двунаправленной связи в разделе При создании связей на основе выбора (When creating-based link).

Кроме того, можно проанализировать следующий код.
rmipref('BiDirectionalLinking', false);Мы рассмотрим двунаправленное связывание позже. Теперь попробуйте следующее:
Выберите любой объект в тестовом модуле в DOORS.
Перейдите к throttle sensor блок.
rmidemo_callback('locate','slvnvdemo_fuelsys_doorsreq/throttle sensor');
Щелкните правой кнопкой мыши блок и выберите в контекстном меню «Требования» > «Связь с выделением» в разделе «ДВЕРИ», чтобы создать ссылку.
Щелкните правой кнопкой мыши throttle sensor снова заблокировать и найти метку ссылки в верхней части контекстного меню «Требования», чтобы подтвердить, что ссылка была добавлена. Позднее можно использовать диалоговое окно «Исходящая связь» для настройки метки описания или ключевых слов тега пользователя.
Кнопка Использовать текущий (Use current) в диалоговом окне Исходящая связь (Outgoing Link) обеспечивает комбинированный подход:
Щелкните правой кнопкой мыши блок в модели и выберите "Требования" > "Открыть диалоговое окно" Исходящие связи "... в контекстном меню.
Нажмите кнопку Создать, чтобы добавить другой элемент ссылки.
Выберите элемент DOORS в раскрывающемся списке Тип документа.
В окне модуля DOORS щелкните на объекте, который требуется связать.
Нажмите кнопку «Использовать текущий» для автоматического заполнения всех полей ввода данными из текущего выбранного объекта DOORS.
При необходимости откорректируйте описание.
Сохраните изменения, нажав кнопку ОК или Применить.
Для перенаправления существующей ссылки можно также использовать кнопку Использовать текущую:
Выберите требуемый новый целевой объект в DOORS.
В диалоговом окне Исходящая ссылка щелкните элемент списка, который требуется обновить.
Нажмите кнопку Использовать текущий, чтобы обновить атрибуты связи.

Выделение и навигация по ссылкам DOORS выполняется таким же образом, как и для других типов ссылок, см. пример Microsoft Office.
На вкладке Требования (Requirements) щелкните Выделить связи (Highlight Links), чтобы выделить все требования в модели примера. Можно также оценить следующее, чтобы выделить связи.
rmi('highlightModel', 'slvnvdemo_fuelsys_doorsreq');
Убедитесь, что DOORS запущен и вошел в систему.
Щелкните правой кнопкой мыши на одном из выделенных объектов, которые использовались для создания новых связей в предыдущем разделе.
В контекстном меню выберите «Требования». Метки созданных связей должны быть видны вверху.
Щелкните на метке ссылки. Тестовый модуль открывается в DOORS с правильным выбранным объектом.
Будьте осторожны, чтобы попробовать это только с созданными ссылками. В модели есть и другие ссылки, которые пока не будут работать. Мы рассмотрим фиксацию этих ссылок в разделах ниже.
Рабочий процесс суррогатного модуля поддерживается для DOORS, чтобы обеспечить двустороннее связывание без необходимости изменения модулей требований DOORS. На следующем рисунке показан рабочий процесс.
Новый формальный модуль DOORS, называемый суррогатным модулем, автоматически генерируется Simulink для использования в качестве представления DOORS модели Simulink. Можно выбрать сопоставление всех объектов модели или только объектов со ссылками на DOORS или выбрать одну из промежуточных опций, как описано в документации.
Можно создать прямые ссылки на требования в DOORS, как показано в предыдущих разделах (помечено как 3 на рисунке) и дополнительные соответствующие прямые ссылки из документов DOORS на объекты Simulink, как показано в последнем разделе этого примера (помечено как 2 на рисунке).
Кроме того, при наличии суррогатного модуля в DOORS можно установить в DOORS связи между элементами в суррогатных модулях и требованиями, хранящимися в DOORS (помечен как 1 на рисунке), в то время как переход к Simulink и обратно обеспечивается ссылками на суррогатный элемент (помечен как 4 на рисунке).
Рабочий процесс суррогатного модуля обеспечивает следующие преимущества:
Двунаправленное связывание возможно без необходимости изменения документов в DOORS или моделях в Simulink. Вся необходимая информация хранится в суррогатных модулях и соответствующих канальных модулях.
Вы можете управлять и анализировать ссылки в среде DOORS без необходимости запуска Simulink, в том числе используя собственные возможности отчетности DOORS.
Ниже приведен пример скриншота автоматически созданного модуля Surrogate. Обратите внимание, что иерархия DOORS отражает структуру исходной модели Simulink, а заголовки объектов DOORS соответствуют именам объектов Simulink:

Обычно для создания нового суррогатного модуля DOORS для модели Simulink необходимо перейти на вкладку «Требования» в модели Simulink и использовать команду «Поделиться» > «Синхронизировать с DOORS».
Для целей этого примера в качестве архива предоставляется существующий проект DOORS, включающий суррогатный модуль со ссылками на другие модули. Чтобы опробовать интерактивные возможности этого примера, восстановите проект в базе данных DOORS, а затем повторно синхронизируйте модель примера, как описано ниже. Обратите внимание, что этот архив был создан в DOORS версии 9.1 и может не работать с более ранними версиями DOORS.
Используйте функцию «Файл» > «Восстановить» в DOORS и укажите ее в архиве DemoRMI.dpa, предоставленном в текущей рабочей папке. Если в базе данных DOORS уже имеется проект с именем DemoRMI, DOORS добавляет номер к имени проекта. Как показано на снимке экрана ниже, проект включает один модуль связи и три формальных модуля. Один формальный модуль - суррогат DOORS для slvnvdemo_fuelsys_doorsreq модель; два других являются примерными модулями, создаваемыми путем импорта документов Microsoft Word из примера Microsoft Office.

Извлеките все включенные модули и откройте суррогатный модуль.
Обратите внимание на красный и оранжевый треугольники навигации в двух извлеченных модулях. Щелкните правой кнопкой мыши для перемещения между модулями. Эти связи сохраняются с помощью процедуры резервного копирования-восстановления.

Попробуйте перейти из извлеченного суррогатного модуля к соответствующему объекту в Simulink from DOORS:
Щелкните по 1.11.4.1 топливным уровням в slvnvdemo_fuelsys_doorsreq суррогатном модуле.
В главном меню окна модуля выберите MATLAB > Select Item. Откроется правильная схема подсистемы, и соответствующий вход будет выделен.
Навигация от объектов Simulink к суррогатному модулю нарушена, поскольку извлеченные модули имеют новые числовые идентификаторы в базе данных DOORS, попытка перехода по ссылке DOORS Surrogate Item на любом объекте приведет к ошибке. Восстановление ссылок суррогатного элемента DOORS на все объекты в slvnvdemo_fuelsys_doorsreq model после успешного восстановления проекта DemoRMI повторно синхронизируйте модель Simulink с восстановленным экземпляром суррогата.
В окне модели выберите вкладку Требования (Requirements), а затем щелкните Общий доступ (Share) > Синхронизировать с DOORS (Synchronize with DOORS), чтобы открыть диалоговое окно Настройки синхронизации (Synchroniz

Введите следующие настройки, используя правильный путь DOORS для в поле ввода пути и имени суррогатного модуля DOORS, в зависимости от расположения восстановленного проекта, или просто сделайте его текущим проектом в DOORS и используйте «./» Нотация: ввод« ./slvnvdemo _ fuelsys _ doorsreq ».

Не устанавливайте в нижней части флажок Сохранить модель Simulink (Save Simulink model), вы не сможете сохранить изменения в примерной модели, если не используете копию с возможностью записи.
Simulink может предупреждать о предыдущем пути синхронизации. Нажмите кнопку Продолжить, чтобы продолжить работу с новым путем. В окне команд может появиться следующее сообщение: «Обновление суррогатного модуля не требуется». Восстановленный суррогатный модуль как есть.
Повторите переход от любого объекта модели к соответствующему объекту DOORS в суррогатном модуле, щелкнув правой кнопкой мыши блок Simulink и выбрав «Требования > 1». «DOORS Surrogate Item» в контекстном меню. Теперь необходимо выделить соответствующий элемент DOORS в суррогатном модуле.
Пример модели поставляется с некоторыми ранее существующими ссылками на документ DOORS, модуль «Описание конструкции FuelSys». Аналогично исходным ссылкам DOORS Surrogate Item, эти ссылки разрываются, поскольку восстановленная копия модуля имеет новый идентификатор в локальной базе данных. Например, щелкните правой кнопкой мыши значок Airflow calculation подсистема в модели и выберите «1.2.1 Оценка массового воздушного потока» в контекстном меню «Требования». Появится сообщение об ошибке. Вычислите следующий код для перехода к Airflow calculation блок.
rmidemo_callback('locate',['slvnvdemo_fuelsys_doorsreq/fuel rate controller/' ... 'Airflow calculation']);
Теперь эти ссылки будут исправлены с помощью проверки согласованности RMI в Model Advisor.
В окне Модель Simulink (Simulink model) на вкладке Требования (Requirements) щелкните Проверить непротиворечивость (Check Consistency), чтобы открыть графический интерфейс Model Advisor.
Найдите ссылку Идентификация требований с отсутствующим элементом документов в разделе Проверка согласованности требований и выберите ее с помощью мыши.
Нажмите кнопку Run This Check в левой верхней части правой панели. Перечисляются блоки с разорванными связями. Перечисленные несоответствия можно исправить поочередно или в нижней части панели помощника по модели можно использовать ссылку Исправить все (Fix All). Мы будем использовать ярлык Исправить все, потому что мы знаем, что все разорванные ссылки должны быть перенаправлены на одну и ту же восстановленную копию исходного модуля.

На панели «Помощник по модели» щелкните ссылку «Исправить все» в нижней части окна - откроется браузер базы данных DOORS.

Найдите восстановленный модуль FuelSys Design Description в базе данных и выберите его с помощью мыши.
Нажмите кнопку ОК, чтобы закрыть браузер базы данных DOORS.
Снова нажмите кнопку «» Выполнить эту проверку «». Теперь чек должен пройти.
Повторите попытку навигации: щелкните правой кнопкой мыши Airflow calculation подсистема в модели и выберите в контекстном меню "Требования >" 1.2.1 Оценка массового воздушного потока ". Теперь в одном из модулей DOORS, восстановленных из включенного архива, будет выделен правильный объект.
Теперь, когда прямые ссылки из Simulink в DOORS верны, можно использовать синхронизацию для копирования информации о ссылках в базу данных DOORS. Ссылки будут дублироваться в проекте DOORS, где можно использовать собственные инструменты навигации, анализа и отчетности DOORS. Эти связи между суррогатными и другими модулями DOORS можно даже повторно использовать с новой копией модели.
Снова откройте диалоговое окно «Общий доступ» > «Синхронизировать с DOORS» и настройте следующие параметры. Обязательно отключите флажок Удалить несопоставленные в DOORS, так как в восстановленном проекте имеются несопоставленные ссылки, которые понадобятся позже.

Нажмите кнопку Синхронизировать внизу.
Дайте ему пару секунд и проверьте суррогатный модуль в DOORS. Теперь он должен отображать больше ссылок - некоторые из них существовали в исходном восстановленном проекте (ссылки на модуль FuelSys Requirements Specification), а некоторые были только что скопированы из Simulink (ссылки на модуль FuelSys Design Description).
Найдите Airflow calculation подсистема.
rmidemo_callback('locate',['slvnvdemo_fuelsys_doorsreq/fuel rate controller/' ... 'Airflow calculation']);
Перейдите к соответствующему суррогатному объекту с помощью окна Требования > 1. «DOORS Surrogate Item» в контекстном меню для этого блока.
Новый красный треугольник показывает выходное звено для элемента расчета расхода воздуха 1.12.5 в DOORS. Щелкните правой кнопкой мыши для перехода по ссылке DOORS (ДВЕРИ). Откроется раздел 1.2.1 Оценка массового воздушного потока в модуле «Описание проекта FuelSys».
Синхронизация через суррогатный модуль обеспечивает удобный способ распространения обновлений системных требований в DOORS на соответствующие элементы реализации Simulink. Для демонстрации этого рабочего процесса восстановленный проект содержит ссылки DOORS из суррогатного модуля в модуль FuelSys Requirements Specifications DOORS, которые отсутствуют в модели Simulink. В DOORS вернитесь к модулю, восстановленному в разделе «Синхронизация модели Simulink с базой данных DOORS».
Начиная с модуля FuelSys Requirements Specification, найдите 2.1 Normal Mode of Operation (Нормальный режим работы).
С помощью ссылки DOORS перейдите к элементу «1.11.3 fuel» суррогатного модуля. Для этого щелкните правой кнопкой мыши по желтой ссылке в модуле DOORS и в контекстном меню выберите пункт «1.11.3 fuel» в модуле slvnvdemo_fuelsys_doorsreq DOORS.
При выборе «1.11.3 fuel» выберите MATLAB > Select Item в главном меню суррогатного модуля, чтобы найти соответствующий исходный объект в модели Simulink.
Щелкните правой кнопкой мыши расположенный fuel введите элемент в Simulink и установите флажок Requirements в контекстном меню. 1. «Суррогатный элемент DOORS» - единственная доступная ссылка: нет ссылок на документы.
Чтобы скопировать информацию о связи из DOORS в Simulink, повторно синхронизируйте с обновлением ссылок во время включения синхронизации и выберите из DOORS в Simulink.
Снова откройте диалоговое окно «Общий доступ» > «Синхронизировать с DOORS».
Сконфигурируйте следующие параметры синхронизации:

Теперь можно включить флажок Удалить несопоставленные в Simulink. После предыдущего шага синхронизации в Simulink отсутствуют несопоставленные линии связи.
Оставить некоторые диаграммы открытыми и подсвеченными для визуализации изменений при добавлении новых ссылок в Simulink.
Щелкните Синхронизировать (Synchronize). Окно суррогатного модуля может подойти спереди, но красных маркеров нет, потому что изменений в DOORS нет.
Перейдите обратно к fuel введите в Simulink или оцените следующее.
rmidemo_callback('locate','slvnvdemo_fuelsys_doorsreq/engine gas dynamics/fuel');
Щелкните правой кнопкой мыши и разверните раздел «Отслеживание требований» контекстного меню. Обратите внимание на новую ссылку под ссылкой DOORS Surrogate Item: «- > 2.1 Обычный режим работы». Префикс стрелки указывает на то, что это требование не было создано в Simulink, а скопировано из DOORS.
Щелкните по новой ссылке для перехода к соответствующему требованию в разделе DOORS - 2.1 Normal Mode of Operation открывается в модуле FuelSys Requirements Specification.
Теперь примените фильтр тегов пользователя, чтобы подтвердить изменения, внесенные в модель. Все требования DOORS, которые существовали в оригинальной версии модели, были помечены как «дизайн». Теперь этот факт используется для выборочного выделения или скрытия следующих ссылок:
Перейдите обратно к fuel rate controller и на вкладке Требования (Requirements) щелкните Выделить связи (Highlight Links).
rmidemo_callback('open_highlight','slvnvdemo_fuelsys_doorsreq/fuel rate controller');
На вкладке «Требования» выберите «Параметры связи» > «Параметры связи», чтобы открыть диалоговое окно «Параметры требований».
Перейдите на вкладку Фильтры и настройте, как показано ниже, установив флажки Фильтровать по ключевым словам при выделении и представлении требований и вводе design в поле Включить связи с любым из этих тегов.

Проверьте выделенные объекты на диаграммах. Это ссылки, которые существовали в исходной модели.
Теперь измените настройки фильтров, как показано ниже, чтобы исключить ссылки «design»:

Проверьте модель Simulink. Теперь подсветка указывает на ссылки, которые вы только что скопировали из базы данных DOORS.
Синхронизация также позволяет поддерживать согласованность при удалении ссылок. Например:
Перейдите к fuel снова ввести.
rmidemo_callback('locate','slvnvdemo_fuelsys_doorsreq/engine gas dynamics/fuel');
Щелкните правой кнопкой мыши, выберите "Требования" > "Открыть диалоговое окно" Исходящие связи "....
Выберите в диалоговом окне пункт «- > 2.1 Normal Mode of Operation» (Нормальный режим работы).
Нажмите кнопку Удалить, чтобы удалить элемент из списка.
Нажмите кнопку ОК, чтобы применить изменения.
Проверьте контекстное меню еще раз, чтобы подтвердить, что ссылка исчезла.
Обратите внимание, что ссылка по-прежнему присутствует в DOORS, соединяя топливо 1.11.3 суррогатного модуля с «2.1 Normal Mode of Operation» в модуле FuelSys Requirements Specification.
Удалите удаленную ссылку из DOORS, повторно запустив синхронизацию с опцией обновления связи Simulink to DOORS и включив флажок Remove unmatched in DOORS.

Щелкните Синхронизировать (Synchronize). Наблюдайте, как исчезает звено в DOORS.
Аналогичным образом, при удалении ссылок в DOORS и необходимости распространения изменений на Simulink снова запустите синхронизацию с параметром DOORS to Simulink и включите флажок Remove unmatched in Simulink.
При использовании привязки выбора с помощью DOORS можно автоматически вставлять ссылочные объекты в документы DOORS для обеспечения возможности прямой навигации из DOORS в Simulink без необходимости использования суррогатного модуля.
ВНИМАНИЕ! Документ DOORS изменяется при использовании этой функции RMI.
На вкладке «Требования» выберите «Параметры связи» > «Параметры связи», чтобы открыть диалоговое окно «Параметры требований».
Установите флажок Изменить назначение для двунаправленного связывания.

Теперь, когда используется связывание выбора, Simulink создает объекты навигации. Существует два типа ссылок на выбор. Если параметр «Использовать ActiveX для входящих ссылок» в нижней части вкладки «Связь с выделением» включен, RMI вставляет новые объекты DOORS со значком Simulink и меткой целевого объекта в качестве текста объекта DOORS. С помощью ActiveX... опция OFF, RMI вставит External Link гиперссылки. В следующем упражнении попробуйте оба варианта и решите, что работает лучше для вас.
Найдите и выберите «2.2.6 Speed Sensor Failure» в модуле «FuelSys Requirements Specification».
Найдите Speed Estimate блок в модели Simulink.
rmidemo_callback('locate',['slvnvdemo_fuelsys_doorsreq/fuel rate controller/' ... 'Sensor correction and Fault Redundancy/Speed Estimate']);
Щелкните правой кнопкой мыши блок и выберите «Требования» > «Связать с выбором» в команде «ДВЕРИ».
Обратите внимание на новый объект, вставленный в DOORS в качестве первого нижестоящего элемента целевого объекта.

Щелкните только что вставленный объект навигации в DOORS или выберите MATLAB > Select Item в главном меню окна модуля DOORS.
При использовании External Link гиперссылки, перейдите по гиперссылке MATLAB в развернутом каскаде контекстного меню.
Правильная схема открывается в Simulink, и связанный блок подсвечивается.
Примечание.Только что была включена навигация от модели DOORS к модели Simulink без необходимости сохранения изменений в модели. Рассмотрим этот рабочий процесс, когда необходимо избежать изменений в моделях.
Обычно при сохранении модели Simulink после создания ссылок возможна двусторонняя навигация в обход сложности процесса суррогатной синхронизации. Однако существует недостаток, заключающийся в загромождении документов DOORS навигационными объектами Simulink.
Чтобы избежать внесения непреднамеренных изменений в документы DOORS, повторно откройте диалоговое окно «Параметры требований» на вкладке «Связь выбора» и отключите флажок «Изменить назначение для двунаправленной связи».
Очистка
Команды очистки. Удаление открытых наборов требований без сохранения изменений и закрытие открытых моделей без сохранения изменений.
slreq.clear;
bdclose all;