БНФ - нотація

БНФ – нотація дозволяє формально описати розщеплювання/об'єднання потоків [38]. Потік може розщеплюватися на власні окремі гілки, на компоненти потоку-предка або на те і інше одночасно. При розщеплюванні/об'єднанні потоку суттєво, щоб кожен компонент потоку-предка був іменованим.

Якщо потік розщеплюється на підпотоки, необхідно, щоб всі підпотоки були компонентами потоку-предка. І навпаки, при об'єднанні потоків кожен компонент потоку-предка винен принаймні одного разу зустрічатися серед підпотоків. Відзначимо, що при об'єднанні підпотоків немає необхідності здійснювати включення загальних компонент, а при розщеплюванні підпотоки можуть мати такі загальні (однакові) компоненти.

Важливо розуміти, що точні визначення потоків містяться в словнику даних, а не на діаграмах. Наприклад, на діаграмі може бути груповий вузол з вхідним потоком X і вихідними підпотоками Y і Z. Проте це зовсім не означає, що відповідне визначення в словнику даних обов'язково повинне бути X=Y+Z. Це визначення може бути наступним:

Х=А+В+С; Y=A+B; Z=B+C

Такі визначення зберігаються в словнику даних в так званій БНФ-статті. БНФ-стаття використовується для опису компонент даних в потоках даних і в сховищах. Її синтаксис має вигляд:

@БНФ = <простиий оператор>! <БНФ-вираз>

де <простий оператор> є текстовий опис, поміщений в " ", а <БНФ-вираз> є вираз у формі Бекуса-Наура, що допускає наступні операції відношень:

=- означає "композиція з";

+- означає "І";

[!]- означає "АБО";

( )- означає, що компонент в дужках не обов'язковий;

{ }- означає ітерацію компоненту в дужках;

" "- означає літерал.

Ітераційні дужки можуть мати нижню і верхню межу, наприклад:

3{ болт} 7 - від 3 до 7 ітерацій

1 { болт} - 1 і більш за ітерації

{ шайба}3 - не більше 3 ітерацій

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

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

Нижче приведений приклад опису потоку даних за допомогою БНФ:

@ = ВІСІМКОВА ЦИФРА

@ТИП=дискретный потік

@БНФ=["0"!"1"!"2"!"3"!"4"!"5"!"6"!"7"]

Розглянемо елементи словника даних для прикладу, в якому описаний процес "Складання іспиту".

Розглянемо інформаційний потік "Запрошення тягнути квиток":

@ІМ’Я = ЗАПРОШЕННЯ ТЯГНУТИ КВИТОК

@ТИП = потік, що управляє

@БНФ = /вказує, что студент допущений до екзамену/

Розглянемо ще один потік "Сформована думка про знання студента"

@ІМ’Я = СФОРМОВАНА ДУМКА ПРО ЗНАННЯ СТУДЕНТА

@ТИП = внутрішній потік

@БНФ = /на підставі цього потоку формується оцінка студента/