Project

General

Profile

Actions

План улучшений requality

Типизированные атрибуты

Каждому атрибуту узла соответствует определенный тип, который накладывает ограничения на значение атрибута.

Типы атрибутов можно разбить на три класса:
  • шаблонные(ограничения на которые можно задать регулярным выражением - int, float, boolean, string, ...);
  • перечислимые(например имена всех дочерних узлов какого либо узла);
  • специальные(id, predicate).

Идентификаторы узлов

Каждому узлу дерева соответствует идентификатор. Идентификатор - это последовательность "безопасных" символов. Кроме того, для идентификаторов узлов в исходном дереве допускаются символы '{', '}' и '$'. Подстроки вида ${name}, где name-имя атрибута контекста, называются параметрами. Идентификатор узла, содержащий параметры, называется параметризованным. При инстанцировании параметры заменяются на значения атрибутов. Таким образом идентификаторы исходного дерева преобразуются в параметры производного дерева.

Укороченные ссылки на узлы дерева

Возможно использовать неполный идентификатор для указания узла в дереве, если его достаточно для однозначного определения узла дерева. Если узел, на который ссылаются, имеет идентификатор "c" и родителя "b", родителем "b" является узел "a", то на узел "с" возможно сослаться следующими образами:
  • ".a.b.c" - полный идентификатор;
  • "с" - идентификатор узла в описанном дереве является уникальным, что делает такой вариант допустимым;
  • "a.**.c" - узел "с" в поддереве "a";
  • "b.c" - узел "с", являющийся ребенком узла "b"

Необязательное название узлов

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

Шаблонные узлы

Свойство узла обозначающее, что узел является шаблонным указывается явно. Это нужно по следующим причинам: базовые требования не попадают в производное дерево, если на них не ссылаются; при указании ссылки на базовое требование желательно позволять указывать только базовые узлы.

Updated by Yuriy Shekochihin almost 15 years ago · 14 revisions