Диаграмма требований
Диаграмма требований обеспечивает визуализацию требований и связей между ними, а также их отношений с другими элементами документов.
Копировать
Встраивание
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