БНФ - нотация

БНФ-нотация позволяет формально описать расщепление/ объединение потоков. Поток может расщепляться на собственные отдельные ветви, на компоненты потока-предка или на то и другое одновременно. При расщеплении/объединении потока существенно, чтобы каждый компонент потока-предка являлся именованным. Если поток расщепляется на подпотоки, необходимо, чтобы все подпотоки являлись компонентами потока-предка. И наоборот, при объединении потоков каждый компонент потока-предка должен по крайней мере однажды встречаться среди подпотоков. Отметим, что при объединении подпотоков нет необходимости осуществлять исключение общих компонент, а при расщеплении подпотоки могут иметь такие общие (одинаковые) компоненты.

Важно понимать, что точные определения потоков содержатся в словаре данных, а не на диаграммах. Например, на диаграмме может иметься групповой узел с входным потоком X и выходными подпотоками Y и Z. Однако это вовсе не означает, что соответствующее определение в словаре данных обязательно должно быть X=Y+Z. Это определение может быть следующим:

X=A+B+C; Y=A+B; Z=B+C

Такие определения хранятся в словаре данных в так называемой БНФ-статье. БНФ-статья используется для описания компонент данных в потоках данных и в хранилищах. Ее синтаксис имеет вид:

@БНФ = <простой оператор> | <БНФ-выражение>,

где <простой оператор> есть текстовое описание, заключенное в " / ", а <БНФ-выражение> есть выражение в форме Бэкуса-Наура, допускающее следующие операции отношений:

  • = - означает "композиция из",
  • + - означает " И ",
  • [ | ] - означает " ИЛИ ",
  • () - означает, что компонент в скобках не обязателен,
  • { } - означает итерацию компонента в скобках,
  • " " - означает литерал.

Итерационные скобки могут иметь нижний и верхний предел, например:

  • 3{болт}7 - от 3 до 7 итераций
  • 1{болт} - 1 и более итераций
  • {шайба}3 - не более 3 итераций

БНФ-выражение может содержать произвольные комбинации операций:

  • @БНФ = [винт! болт + 2{гайка}2 + (прокладка) | клей ]

Ниже приведен пример описания потока данных с помощью БНФ:

  • @ИМЯ = ВОСЬМЕРИЧНАЯ ЦИФРА
  • @ТИП = дискретный поток
  • @БНФ = ["0" | "1" | "2" | "3" | "4" | "5" | "6" | "7"]

Посмотрим, как некоторые потоки, присутствующие на вышеприведенных диаграммах потоков данных, представляются в словаре данных.

  • @ИМЯ = ВВЕДЕННАЯ КРЕДИТНАЯ КАРТА
  • @ТИП = управляющий поток
  • @БНФ = /указывает, что кредитная карта введена/
  • @ИМЯ = ДАННЫЕ КРЕДИТНОЙ КАРТЫ
  • @ТИП = дискретный поток
  • @БНФ = ПАРОЛЬ + ДЕТАЛИ КЛИЕНТА + ЛИМИТ ДЕНЕГ
  • @ИМЯ = ДАННЫЕ ПО БАЛАНСУ
  • @ТИП = дискретный поток
  • @БНФ = /текущий баланс счета клиента/
  • @ЕДИНИЦА ИЗМЕРЕНИЯ = доллар
  • @ДИАПАЗОН = +/- 100000
  • @ТОЧНОСТЬ =.01
  • @ИМЯ = ДЕНЬГИ
  • @ТИП = дискретный поток
  • @БНФ = /деньги, выдаваемые клиенту/
  • @ЕДИНИЦА ИЗМЕРЕНИЯ = доллар
  • @НОРМА = 5..1000
  • @КОММЕНТАРИЙ Сумма выдаваемых денег должна делиться на 5
  • @ИМЯ = ПРОТОКОЛ ОБСЛУЖИВАНИЯ
  • @ТИП = дискретный поток
  • @БНФ = (ОБРАБОТАННАЯ ДОКУМЕНТАЦИЯ)
  • + (ДЕНЕЖНАЯ СУММА)
  • + (ДАННЫЕ ПО ИСТОРИИ ЗАПРОСА)

Таблица специальных символов словаря

Символ Значение Описание
= Состоит из Данный символ означает, что поток, указанный слева от него, состоит из потоков, перечисленных справа
+ Объединить Объединяет потоки в группу, не определяя порядок, в котором они должны быть в ней представлены. Объединение в группу соответствует операции "Логическое И".
{ } Итерация Выражение, заключенное в скобки, может встречаться произвольное число раз в определяемом потоке. Выражение может быть проиндексировано, в этом случае до и после скобки указывается число. Всего допустимо 3 комбинации: · { }N - 0,1,..., N-1 или N итераций · N{ } - N или более итераций · N{ }N - в точности N итераций
[ | ] Выбор одного из Внутри скобок может располагаться произвольное число выражений, разделенных знаком |. Определяемый поток состоит в точности из одного из указанных выражений.
() По выбору Выражение, заключенное в скобки может как встречаться так и не встречаться в определяемом потоке.
/* */ Комментарий Текст, заключенный между знаками /* и */, представляет собой комментарий
\ \ Примитив Выражение, заключенное в данные скобки представляет собой примитив, который должен быть описан в соответствующей таблице.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: