Виды декомпозиции данных и соответствующие расширения DFD.

Индивидуальные данные в системе часто являются независимыми. Однако иногда необходимо иметь дело с несколькими независимыми данными одновременно. Например, в системе имеются потоки ЯБЛОКИ, АПЕЛЬСИНЫ и ГРУШИ. Эти потоки могут быть сгруппированы с помощью введения нового потока ФРУКТЫ. Для этого необходимо определить формально поток ФРУКТЫ как состоящий из нескольких элементов-потомков. Такое определение задается с помощью формы Бэкуса-Наура (БНФ) в словаре данных (см. главу 3). В свою очередь поток ФРУКТЫ сам может содержаться в потоке-предке ЕДА вместе с потоками ОВОЩИ, МЯСО и др. Такие потоки, объдиняющие несколько потоков, получили название групповых.

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

Виды декомпозиции данных и соответствующие расширения DFD. - student2.ru

Рис 2.2. Расширения диаграммы потоков данных

Аналогичным образом осуществляется и декомпозиция потоков через границы диаграмм, позволяющая упростить детализирующую DFD. Пусть имеется поток ФРУКТЫ, входящий в детализируемый процесс. На детализирующей этот процесс диаграмме потока ФРУКТЫ может не быть вовсе, но вместо него могут быть потоки ЯБЛОКИ и АПЕЛЬСИНЫ (как будто бы они переданы из детализируемого процесса). В этом случае должно существовать БНФ-определение потока ФРУКТЫ, состоящего из подпотоков ЯБЛОКИ иАПЕЛЬСИНЫ, для целей балансирования.

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

Для обеспечения декомпозиции данных и некоторых других сервисных возможностей к DFD добавляются следующие типы объектов:

  1. ГРУППОВОЙ УЗЕЛ.Предназначен для расщепления и объединения потоков. В некоторых случаях может отсутствовать (т.е. фактически вырождаться в точку слияния/расщепления потоков на диаграмме).
  2. УЗЕЛ-ПРЕДОК.Позволяет увязывать входящие и выходящие потоки между детализируемым процессом и детализирующей DFD.
  3. НЕИСПОЛЬЗУЕМЫЙ УЗЕЛ.Применяется в ситуации, когда декомпозиция данных производится в групповом узле, при этом требуются не все элементы входящего в узел потока.
  4. УЗЕЛ ИЗМЕНЕНИЯ ИМЕНИ.Позволяет неоднозначно именовать потоки, при этом их содержимое эквивалентно. Например, если при проектировании разных частей системы один и тот же фрагмент данных получил различные имена, то эквивалентность соответствующих потоков данных обеспечивается узлом изменения имени. При этом один из потоков данных является входным для данного узла, а другой - выходным.
  5. Текств свободном формате в любом месте диаграммы.

Возможный способ изображения этих узлов приведен на рис. 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 дерево решений

Виды декомпозиции данных и соответствующие расширения DFD. - student2.ru

q визуальный язык

q язык программирования

Наши рекомендации