Процесс Тип
Графическое выражение
Мышление Тип
Структурированное выражение
Заметки Тип
Эффективное выражение

Диаграмма требованийСинтаксис

Диаграмма требований

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

Код
                            
Копировать
Встраивание
requirementDiagram requirement test_req { id: 1 text: the test text. risk: high verifymethod: test } element test_entity { type: simulation } test_entity - satisfies -> test_req

Синтаксис

Диаграмма требований содержит три вида компонентов: требования, элементы и отношения.

Слова в угловых скобках — это ключевые слова перечисления, например , варианты которых подробно описаны в таблице. user_defined... используется везде, где требуется ввод пользователя.

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

Требование

Определение требования содержит тип требования, имя, ID, текст, риск и метод верификации. Синтаксис таков:

                            
Копировать
Встраивание
<type> user_defined_name { id: user_defined_id text: user_defined text risk: <risk> verifymethod: <method> }

Тип, риск и метод — это перечисления, определённые в SysML.

Ключевое слово Параметры
Тип Требование, функциональное требование, интерфейсное требование, требование к производительности, физическое требование, ограничение проектирования
Риск Низкий, средний, высокий
Метод верификации Анализ, проверка, тест, демонстрация

Элемент

Определение элемента содержит имя элемента, тип и ссылку на документ; все три определяются пользователем. Функциональность элементов предназначена для того, чтобы оставаться лёгкой и при этом позволять связывать требования с частями других документов.

                            
Копировать
Встраивание
element myElement { type: string docref: some/doc/path }

Формат Markdown

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

  • заключить текст в двойные кавычки
  • использовать формат markdown внутри двойных кавычек
Код
                            
Копировать
Встраивание
requirementDiagram requirement "__test_req__" { id: 1 text: "*italicized text* **bold text**" risk: high verifymethod: test }

Отношение

Отношение состоит из исходного узла, целевого узла и типа отношения.

Следует следующему формату определения:

                            
Копировать
Встраивание
{name of source} - <type> -> {name of destination}

или

                            
Копировать
Встраивание
{name of destination} <- <type> - {name of source}

"Исходный узел" и "целевой узел" должны быть именами узлов требований или элементов, определённых в другом месте.

Тип отношения может быть одним из: содержит, копирует, выводится, удовлетворяет, проверяет, уточняет или отслеживает.

Подробный пример

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

Код
                            
Копировать
Встраивание
requirementDiagram requirement test_req { id: 1 text: the test text. risk: high verifymethod: test } functionalRequirement test_req2 { id: 1.1 text: the second test text. risk: low verifymethod: inspection } performanceRequirement test_req3 { id: 1.2 text: the third test text. risk: medium verifymethod: demonstration } interfaceRequirement test_req4 { id: 1.2.1 text: the fourth test text. risk: medium verifymethod: analysis } physicalRequirement test_req5 { id: 1.2.2 text: the fifth test text. risk: medium verifymethod: analysis } designConstraint test_req6 { id: 1.2.3 text: the sixth test text. risk: medium verifymethod: analysis } element test_entity { type: simulation } element test_entity2 { type: word doc docRef: reqs/test_entity } element test_entity3 { type: "test suite" docRef: github.com/all_the_tests } test_entity - satisfies -> test_req2 test_req - traces -> test_req2 test_req - contains -> test_req3 test_req3 - contains -> test_req4 test_req4 - derives -> test_req5 test_req5 - refines -> test_req6 test_entity3 - verifies -> test_req5 test_req <- copies - test_entity2

Направление

Можно использовать оператор direction для рендеринга диаграммы в разных направлениях; допустимые значения:

  • TB - сверху вниз (по умолчанию)
  • BT - снизу вверх
  • LR - слева направо
  • RL - справа налево
Код
                            
Копировать
Встраивание
requirementDiagram direction LR requirement test_req { id: 1 text: the test text. risk: high verifymethod: test } element test_entity { type: simulation } test_entity - satisfies -> test_req

Стиль

Требования и элементы можно стилизовать с помощью прямых стилей или классов. Как правило, при применении стиля или класса принимается список имён требований или элементов и список имён классов, что позволяет назначать несколько классов сразу. Единственное исключение — сокращённый синтаксис :::, оператор может назначать несколько классов, но только одному требованию или элементу за раз.

Прямой стиль

Код
                            
Копировать
Встраивание
requirementDiagram requirement test_req { id: 1 text: styling example risk: low verifymethod: test } element test_entity { type: simulation } style test_req fill:#ffa,stroke:#000, color: green style test_entity fill:pink,stroke:#333, color: blue

Определение класса показано в следующем примере:

Определение многократно используемых стилей с помощью classDef:

Код
                            
Копировать
Встраивание
requirementDiagram requirement test_req { id: 1 text: "class styling example" risk: low verifymethod: test } element test_entity { type: simulation } classDef important fill:#f96,stroke:#333,stroke-width:4px classDef test fill:#ffa,stroke:#000

Класс по умолчанию

Если класс назван default, он применяется ко всем узлам. Конкретные стили и классы следует определять после этого, чтобы переопределить применённый стиль по умолчанию.

                            
Копировать
Встраивание
classDef default fill:pink,stroke:#333,stroke-width:4px;

Применить класс

Класс можно применить двумя способами:

1. С помощью синтаксиса class:

                            
Копировать
Встраивание
class test_req,test_entity important

2. С помощью сокращённого синтаксиса с оператором ::: во время определения или после него:

                            
Копировать
Встраивание
requirement test_req:::important { id: 1 text: class styling example risk: low verifymethod: test }
                            
Копировать
Встраивание
element test_elem {} test_elem:::myClass

Пример комбинирования

Код
                            
Копировать
Встраивание
requirementDiagram requirement test_req:::important { id: 1 text: "class styling example" risk: low verifymethod: test } element test_entity { type: simulation } classDef important font-weight:bold class test_entity important style test_entity fill:pink,stroke:#333