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

В этом примере показано, как использовать модель спецификации для выполнения проверки на основе требований. В этом примере вы следуете систематическому подходу, чтобы проверить свою модель проекта на соответствие требованиям. Подробное описание модели спецификации смотрите в Что такое модель спецификации?.

Шаг 1: Требования к автору в редакторе требований

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

1. Режим удержания крена: Этот режим либо поддерживает текущий угол наклона самолета, либо изменяет его в соответствии с заданным пользователем углом.

2. Режим удержания курса: Этот режим либо поддерживает текущий курс, либо катит самолет для достижения заданного пользователем значения курса. Для получения дополнительной информации о системе Roll Autopilot Controller, смотрите Основанное на требованиях Проверку для Разработки Модели (Simulink Test).

Для контроллера автопилота требования описывают системные интерфейсы, высокоуровневые системные режимы и ожидаемое поведение контроллера. Эти требования создаются в редакторе требований и сохраняются в AP_Controller.slreqx файл. Дополнительные сведения о редакторе требований см. в разделе Работа с требованиями в редакторе Simulink (Simulink Requirements). Чтобы просмотреть требования, откройте Редактор требований путем ввода:

slreq.open('AP_Controller');

В редакторе требований отображаются требования высокого уровня для режимов удержания крена и удержания заголовка. При щелчке по каждому требованию на вкладке перечисляются подробные данные для этого требования.

Шаг 2: Создайте модель спецификации

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

Откройте sldvexSpecPartial модель спецификации, которая охватывает набор требований автопилота:

spec_model = 'sldvexSpecPartial';
open_system(spec_model);

The sldvexSpecPartial модель состоит из входного и выходного интерфейсов. Таблица истинности захватывает требования.

Чтобы открыть таблицу истинности, введите:

open_system('sldvexSpecPartial/AP Controller Requirements');

Шаг 3. Ссылка требований к модели спецификации

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

1. Щелкните правой кнопкой мыши таблицу истинности с именем AP Controller Requirements в модели спецификации. В контекстном меню выберите Requirements > Select для связывания с Simulink.

2. Откройте требования в редакторе требований. Щелкните правой кнопкой по требованию, которое необходимо связать с таблицей истинности, и выберите Ссылка из Требования к контроллеру AP (Таблица истинности). Если у вас есть несколько таблиц истинности, каждая из которых задает группу требований, соедините их также.

Шаг 4: Сгенерируйте тесты для модели спецификации

Использование sldvoptions чтобы сгенерировать тесты для модели спецификации. Каждое требование было связано с отдельной целью генерации тестов с помощью sldv.test().

opts = sldvoptions;
opts.Mode = 'TestGeneration';
opts.ModelCoverageObjectives = 'None';
[~, files] = sldvrun(spec_model,opts,true);

После завершения анализа в окне Сводка результатов (Results Summary) отображается, что шесть из шести целей удовлетворены.

Шаг 5: Создайте систему тестового преобразования для запуска тестов на Модель проекта

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

Для примера Угол крена самолета имеет тип области значений перечисления в спецификации, но имеет двойной тип в модель проекта.

В процессе тестового преобразования, если значение сигналов, такое как RA_Horizontal, является областью значений, можно выбрать любое значение, которое попадает в эту область значений. Может использоваться различная эвристика, такая как средняя точка (где можно выбрать среднюю точку области значений), граничное значение (где можно выбрать нижнюю или верхнюю границу области значений) или даже случайная стратегия (где вы выбираете случайное значение в области значений). Для контроллера автопилота подсистема sldvexDesignHarness/Test Conversion реализует стратегию средней точки в модели тестовой обвязки, как показано ниже:

design_model = 'sldvexDesignHarness';
load_system(design_model);
open_system('sldvexDesignHarness/Test Conversion');

Шаг 6. Моделируйте Тесты на Модель проекта и идентифицируйте Недостающие требования

Разработка модели проекта осуществляется независимо с помощью документа требований. Чтобы проверить проект, создайте модель тестовой обвязки, которая содержит эти четыре подсистемы:

(i) Модель спецификации.

Модель проекта.

Подсистема тестового преобразования, описанная на стадии 5.

(iv) Блок верификации во время выполнения. Этот блок проверяет, находится ли проект значения сигналов в области значений, заданной моделью спецификации.

Запустите тесты с шага 5 на модель проекта при помощи sldvruntest и сгенерируйте отчет о покрытии модели.

cvopts = sldvruntestopts;
cvopts.coverageEnabled =  true;
[~, initCov] = sldvruntest(design_model,files.DataFile,cvopts);
cvhtml('InitialCov',initCov);

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

Шаг 7: Обновление модели спецификации путем добавления недостающих требований

Добавить требование добавляется к sldvexSpecFull модель спецификации для анализа.

spec_model = 'sldvexSpecFull';
open_system(spec_model);

(а) Сгенерируйте тесты на обновленной модели спецификации

Использование sldvoptions для генерации тестов.

opts = sldvoptions;
opts.Mode = 'TestGeneration';
opts.ModelCoverageObjectives = 'None';
[~, files] = sldvrun(spec_model,opts,true);

(b) Моделируйте тесты на проектной модели и генерируйте отчет о покрытии

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

design_model = 'sldvexDesignHarness';
open_system(design_model);

Симулируйте тесты при помощи sldvruntest и сгенерируйте отчет о покрытии модели.

cvopts = sldvruntestopts;
cvopts.coverageEnabled =  true;
[~, FinalCov] = sldvruntest(design_model,files.DataFile,cvopts);
cvhtml('FinalCov', FinalCov);

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

bdclose('all');
slreq.clear;

Похожие темы