БНФ - нотация
БНФ-нотация позволяет формально описать расщепление/ объединение потоков. Поток может расщепляться на собственные отдельные ветви, на компоненты потока-предка или на то и другое одновременно. При расщеплении/объединении потока существенно, чтобы каждый компонент потока-предка являлся именованным. Если поток расщепляется на подпотоки, необходимо, чтобы все подпотоки являлись компонентами потока-предка. И наоборот, при объединении потоков каждый компонент потока-предка должен по крайней мере однажды встречаться среди подпотоков. Отметим, что при объединении подпотоков нет необходимости осуществлять исключение общих компонент, а при расщеплении подпотоки могут иметь такие общие (одинаковые) компоненты.
Важно понимать, что точные определения потоков содержатся в словаре данных, а не на диаграммах. Например, на диаграмме может иметься групповой узел с входным потоком 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
- @ИМЯ = ПРОТОКОЛ ОБСЛУЖИВАНИЯ
- @ТИП = дискретный поток
- @БНФ = (ОБРАБОТАННАЯ ДОКУМЕНТАЦИЯ)
- + (ДЕНЕЖНАЯ СУММА)
- + (ДАННЫЕ ПО ИСТОРИИ ЗАПРОСА)
Таблица специальных символов словаря