Виды декомпозиции данных и соответствующие расширения DFD.
Индивидуальные данные в системе часто являются независимыми. Однако иногда необходимо иметь дело с несколькими независимыми данными одновременно. Например, в системе имеются потоки ЯБЛОКИ, АПЕЛЬСИНЫ и ГРУШИ. Эти потоки могут быть сгруппированы с помощью введения нового потока ФРУКТЫ. Для этого необходимо определить формально поток ФРУКТЫ как состоящий из нескольких элементов-потомков. Такое определение задается с помощью формы Бэкуса-Наура (БНФ) в словаре данных (см. главу 3). В свою очередь поток ФРУКТЫ сам может содержаться в потоке-предке ЕДА вместе с потоками ОВОЩИ, МЯСО и др. Такие потоки, объдиняющие несколько потоков, получили название групповых.
Обратная операция, расщепление потоков на подпотоки, осуществляется с использованием группового узла (рис. 2.2), позволяющего расщепить поток на любое число подпотоков. При расщеплении также необходимо формально определить подпотоки в словаре данных (с помощью БНФ).
Рис 2.2. Расширения диаграммы потоков данных
Аналогичным образом осуществляется и декомпозиция потоков через границы диаграмм, позволяющая упростить детализирующую DFD. Пусть имеется поток ФРУКТЫ, входящий в детализируемый процесс. На детализирующей этот процесс диаграмме потока ФРУКТЫ может не быть вовсе, но вместо него могут быть потоки ЯБЛОКИ и АПЕЛЬСИНЫ (как будто бы они переданы из детализируемого процесса). В этом случае должно существовать БНФ-определение потока ФРУКТЫ, состоящего из подпотоков ЯБЛОКИ иАПЕЛЬСИНЫ, для целей балансирования.
Применение этих операций над данными позволяет обеспечить структуризацию данных, увеличивает наглядность и читабельность диаграмм.
Для обеспечения декомпозиции данных и некоторых других сервисных возможностей к DFD добавляются следующие типы объектов:
- ГРУППОВОЙ УЗЕЛ.Предназначен для расщепления и объединения потоков. В некоторых случаях может отсутствовать (т.е. фактически вырождаться в точку слияния/расщепления потоков на диаграмме).
- УЗЕЛ-ПРЕДОК.Позволяет увязывать входящие и выходящие потоки между детализируемым процессом и детализирующей DFD.
- НЕИСПОЛЬЗУЕМЫЙ УЗЕЛ.Применяется в ситуации, когда декомпозиция данных производится в групповом узле, при этом требуются не все элементы входящего в узел потока.
- УЗЕЛ ИЗМЕНЕНИЯ ИМЕНИ.Позволяет неоднозначно именовать потоки, при этом их содержимое эквивалентно. Например, если при проектировании разных частей системы один и тот же фрагмент данных получил различные имена, то эквивалентность соответствующих потоков данных обеспечивается узлом изменения имени. При этом один из потоков данных является входным для данного узла, а другой - выходным.
- Текств свободном формате в любом месте диаграммы.
Возможный способ изображения этих узлов приведен на рис. 2.2.
Процесс построения DFD.
Процесс построения модели разбивается на следующие этапы:
1) Расчленение множества требований и организация их в основные функциональные группы.
2) Идентификация внешних объектов, с которыми система должна быть связана.
3) Идентификация основных видов информации, циркулирующей между системой и внешними объектами.
4) Предварительная разработка контекстной диаграммы, на которой основные функциональные группы представляются процессами, внешние объекты ≈ внешними сущностями, основные виды информации ≈ потоками данных между процессами и внешними сущностями.
5) Изучение предварительной контекстной диаграммы и внесение в нее изменений по результатам ответов на возникающие вопросы по всем ее частям.
6) Построение контекстной диаграммы путем объединения всех процессов предварительной диаграммы в один процесс, а также группирования потоков.
7) Формирование DFD первого уровня на базе процессов предварительной контекстной диаграммы.
8) Проверка основных требований по DFD первого уровня.
9) Декомпозиция каждого процесса текущей DFD с помощью детализирующей диаграммы или спецификации процесса.
10) Проверка основных требований по DFD соответствующего уровня.
11) Добавление определений новых потоков в словарь данных при каждом их появлении на диаграммах.
12) Параллельное (с процессом декомпозиции) изучение требований (в том числе и вновь поступающих), разбиение их на элементарные и идентификация процессов или спецификаций процессов, соответствующих этим требованиям.
13) После построения двух-трех уровней проведение ревизии с целью проверки корректности и улучшения понимаемости модели.
14) Построение спецификации процесса (а не простейшей диаграммы) в случае, если некоторую функцию сложно или невозможно выразить комбинацией процессов.
Словарь данных. БНФ-нотация
Словарь данных представляет собой определенным образом организованный список всех элементов данных системы с их точными определениями, что дает возможность различным категориям пользователей (от системного аналитика до программиста) иметь общее понимание всех входных и выходных потоков и компонентов хранилищ.
Ниже приведен пример описания потока данных с помощью БНФ:
@ИМЯ= ВОСЬМЕРИЧНАЯ ЦИФРА
@ТИП= дискретный поток
@БНФ= ["0"!"2"!"3"!"4"!"5"!"6"!"7"]
БНФ-нотацияпозволяет формально описать расщепление/объединение потоков. Поток может расщепляться на собственные отдельные ветви, на компоненты потока-предка или на то и другое одновременно.
Точные определения потоков содержатся в словаре данных, а не на диаграммах.
Такие определения хранятся в словаре данных в так называемой БНФ-статье. БНФ-статья используется для описания компонентов данных в потоках данных и в хранилищах.
Ее синтаксис: @БНФ=<простой оператор>!<БНФ-выражение>
<простой оператор> есть текстовое описание, заключенное в "/", а <БНФ-выражение> есть выражение в форме Бэкуса-Нуара, допускающее следующие операции отношений:
= означает "композиция из"
+ означает "И"
[!] означает "ИЛИ"
( ) означает, что компонент в скобках необязателен
{} означает итерацию компонента в скобках
" " означает литерал.
Итерационные скобки могут иметь нижний и верхний предел, например:
3{болт}7 - от 3 до 7
1{болт} - 1 и более итераций
{шайба}3 - не более трех итераций.
20. Методы задания спецификация процессов.
Спецификация процесса (СП) используется для описания функционирования процесса в случае отсутствия необходимости детализировать его с помощью DFD (если он недостаточно невелик, то его описание может занимать до одной страницы текста).
Спецификация процесса должна начинаться с ключевого слова (например, @СПЕЦПРОЦ). Требуемые входные и выходные данные должны быть специфицированы следующим образом:
@ВХОД = <имя символа данных>
@ВЫХОД = <имя символа данных>
@ВХОДВЫХОД = <имя символа данных>, где имя символа данных - соответствующее имя словаря данных.
Ситуация, когда символ данных является одновременно входными и выходными данными, может быть описана двумя способами: либо символ описывается два раза с помощью @ВХОДи@ВЫХОД, либо один раз с помощью @ВХОДВЫХОД.
Методы задания спецификаций:
q текстовое описание
q структурированный естественный язык
Применяется для читабельного, строго описания спецификаций процессов. Управляющие структуры языка имеют один вход и один выход. К ним относятся:
- последовательная конструкция:
ВЫПОЛНИТЬ функция1
ВЫПОЛНИТЬ функция2
ВЫПОЛНИТЬ функция3
- конструкция выбора:
ЕСЛИ<условие>ТО
ВЫПОЛНИТЬ функция1
ИНАЧЕ
ВЫПОЛНИТЬ функция2
КОНЕЦЕСЛИ
- итерация:
ДЛЯ<условие> ПОКА<условие>
ВЫПОЛНИТЬ функция или ВЫПОЛНИТЬ функция
КОНЕЦДЛЯ КОНЕЦПОКА
q таблица решений
Проектированные спецификаций процессов с помощью таблиц решения (ТР) заключается в задании матрицы, отображающей множество входных условий в множество действий.
ТР состоит из двух частей. Верхняя часть таблицы используется для определения условий. Обычно условие является ЕСЛИ-частью оператора ЕСЛИ-ТО и требует ответа "да-нет".
Нижняя частьТР используется для определения действий, т.е. ТО-части оператора ЕСЛИ-ТО. ЕСЛИ ИДЕТ ДОЖДЬ, ТО РАСКРЫТЬ ЗОНТ
ИДЕТ ДОЖДЬ является условием, а РАСКРЫТЬ ЗОНТ - действием.
Левая частьТР содержит собственно описание условий и действий, а в правой части перечисляются все возможные комбинации условий и, соответственно, указывается, какие конкретно действия и в какой последовательности выполняются, когда определенная комбинация условий имеет действие.
Пример таблицы решений:
УСЛОВИЯ | |||||||||
С1 | isctrl(c) | Д | Д | Д | Д | Н | Н | Н | Н |
С2 | I>max_lenght | Д | Д | Н | Н | Д | Д | Н | Н |
С3 | out_of_range(c) | Д | Н | Д | Н | Д | Н | Д | Н |
ДЕЙСТВИЯ | |||||||||
D1 | beep( ) | ||||||||
D2 | return(ERROR) | ||||||||
D3 | return(++i) | ||||||||
D4 | putchar(c) |
q дерево решений
q визуальный язык
q язык программирования