В ReqDB требования представлены в виде дерева требований. Требования привязаны к элементам текста в документе.
Каждое требование обладает следующими свойствами:
- User visible identifier - это идентификатор-имя требования, которое назначается пользователем при создании требования. Имена могут повторяться, если такие узлы-требования не являются детьми одного родителя. Может быть изменено.
- Requirement identificator - уникальный идентификатор требования в базе данных инструмента, задается автоматически. Не может быть изменен.
- Alternative description - это альтернативное описание требования, предназначено для ситуации, когда текст требования, выделенный в документе с требованиями, нуждается в пояснении.
- Base requirement - базовое требование, на которое ссылается рассматриваемое требование.
В полном дереве требований, которое аналитик получает из документации к проекту, некоторые требования могут быть похожими. В ReqDB такие похожие требования называются базовыми и могут быть выделены в отдельные узлы дерева, на которые можно ссылаться из любого другого требования. Это позволяет снизить дублирование информации при выделении дерева требований. Узел, ссылающийся на узел базового требования, наследует все его поддерево.
На следующем рисунке требование Т1 ссылается на требование Т2:
- Attributes - список атрибутов. Атрибут - это переменная, связанная с данным требованием. Содержит информацию о требовании (например, номер версии системы или параметр, указывающий, является ли это требование опциональным). На имена атрибутов наложены те же ограничения, что и в JavaScript.
Атрибут записывается в виде: <имя_атрибута> = <значение_атрибута>. Список атрибутов может быть пуст.
Запись вида:
a = 1
b = a+1
будет интерпретироваться как
a = "1"
b = "a+1"
- Predicate - предикат - это логическое выражение, о котором можно сказать, истинно оно или ложно. Предикат в качестве аргументов может содержать атрибуты. Записывается на JavaScript. Узлы-требования в соответствии со значением предиката либо включаются в инстанцированное дерево требований (в случае, когда предикат true), либо нет (в случае, когда предикат false). Если предикат не описан, это равносильно ситуации, когда предикат есть и всегда выполняется (дает значение true) для данного узла.
Инстанцированное дерево - это дерево, которое получается из основного дерева требований в соответствии со следующими правилами:
1. Один из узлов дерева требований (можно использовать корневой узел) выбирается как корневой узел инстанцированного дерева. Только потомки этого узла и связанные с ними поддеревья узлов базовых требований (см. ниже) могут войти в инстанцированное дерево.
2. Атрибут, указанный для родителя, наследуется детьми, но может быть для них переопределен. То есть если для требования Т1 указан атрибут а=1, то дети узла Т1 наследуют этот атрибут и его значение.
Если узел-ребенок (Т11) уже имеет такой атрибут (а), но с другим значением (а=2), то для этого узла-ребенка (Т11) и его потомков атрибут переопределен как а=2.
3. Предикат - это логическое выражение, о котором можно сказать, истинно оно или ложно. Предикат в качестве аргументов может содержать атрибуты. Записывается на JavaScript. Узлы-требования в соответствии со значением предиката либо включаются в инстанцированное дерево требований (в случае true), либо нет (в случае false).
4. Предикаты при перемещении от корня по детям объединяются, то есть если у Т1 указан предикат П1, а у его ребенка Т11 - предикат П2, то при построении инстанцированного дерева Т11 будет проверяться на выполнение условия (П1 && П2):

5. Базовое требование. Требования могут ссылаться друг на друга. На следующем рисунке требование Т1 ссылается на требование Т2:
При этом требование Т1 получает дополнительно в качестве потомков всех детей базового требования Т2. Дети наследуют атрибуты Т1, если эти атрибуты у них не переопределены.
Общий пример получения инстанцированного дерева: 
В ReqDB требования представлены в виде дерева требований. Требования привязаны к элементам текста в документе
НЕ нашли? Не то? Что вы ищете?


