- •Глава 3 структурный анализ 2
- •1. Понятие структурного анализа 2
- •2. Анализ требований 7
- •Глава 3 структурный анализ
- •Понятие структурного анализа
- •1.1. Принципы структурного анализа
- •1.2. Классификация структурных методологий
- •2.1. Функциональные модели
- •1.3. Средства структурного анализа
- •Анализ требований
- •2.1.1.2. Словарь данных
- •2.1.1.3. Методы задания спецификации процессов
- •2.1.2. Sadt – диаграммы моделирования бизнес-процессов
- •Общие свойства модели
- •Модель отвечает на вопросы
- •Модель имеет единственный субъект
- •У модели может быть только одна точка зрения
- •Иерархия диаграмм
- •Отличия dfd и def0
- •2.1.3. Idef3 – диаграммы потоков работ
- •Выводы (по функциональному моделированию)
- •2.2. Модели данных
- •2.2.1. Описание методологий idef1x и ie
- •2.2.1. Нотация idef1x
- •2.3. Модели управления
- •2.3.1. Диаграмма потоков управления (cfd)
- •2.3.2. Спецификации управления
- •Общий порядок построения модели требований
2.1.1.2. Словарь данных
В словаре данных определяются все потоки данных и управления, а также хранилища данных и управления. Внешние сущности не описываются в словаре данных ввиду того, что они принадлежат окружению системы, а не самой системе. В словаре присутствуют описания двух типов потоков - примитивов и составных потоков. Примитивы в отличие от составных потоков не определяются через другие потоки и примитивы.
Диаграммы потоков данных обеспечивают удобное описание функционирования компонент системы, но не снабжают аналитика средствами описания деталей этих компонент, а именно, какая информация преобразуется процессами и как она преобразуется. Для решения первой из перечисленных задач предназначены текстовые средства моделирования, служащие для описания структуры преобразуемой информации и получившие название словарей данных.
Словарь данных представляет собой определенным образом организованный список всех элементов данных системы с их точными определениями, что дает возможность различным категориям пользователей (от системного аналитика до программиста) иметь общее понимание всех входных и выходных потоков и компонент хранилищ. Определения элементов данных в словаре осуществляются следующими видами описаний:
описанием значений потоков и хранилищ, изображенных на DFD;
описанием композиции агрегатов данных, движущихся вдоль потоков, т.е. комплексных данных, которые могут расчленяться на элементарные символы (например, АДРЕС ПОКУПАТЕЛЯ содержит ПОЧТОВЫЙ ИНДЕКС, ГОРОД, УЛИЦУ и т.д.);
описанием композиции групповых данных в хранилище;
специфицированием значений и областей действия элементарных фрагментов информации в потоках данных и хранилищах;
описанием деталей отношений между хранилищами.
Содержимое словаря данных
Для каждого потока данных в словаре необходимо хранить имя потока, его тип и атрибуты. Информация по каждому потоку состоит из ряда словарных статей, каждая из которых начинается с ключевого слова - заголовка соответствующей статьи, которому предшествует символ “@”.
По типу потока в словаре содержится информация, идентифицирующая:
простые (элементарные) или групповые (комплексные) потоки;
внутренние (существующие только внутри системы) или внешние (связывающие систему с другими системами) потоки;
потоки данных или потоки управления;
непрерывные (принимающие любые значения в пределах определенного диапазона) или дискретные (принимающие определенные значения) потоки.
Атрибуты потока данных включают:
имена-синонимы потока данных в соответствии с узлами изменения имени;
БНФ-определение в случае группового потока (см. 3.2);
единицы измерения потока;
диапазон значений для непрерывного потока, типичное его значение и информацию по обработке экстремальных значений;
список значений и их смысл для дискретного потока;
список номеров диаграмм различных типов, в которых поток встречается;
список потоков, в которые данный поток входит (как элемент БНФ-определения);
комментарий, включающий дополнительную информацию (например о цели введения данного потока).
БНФ - нотация
БНФ-нотация позволяет формально описать расщепление/ объединение потоков. Поток может расщепляться на собственные отдельные ветви, на компоненты потока-предка или на то и другое одновременно. При расщеплении/объединении потока существенно, чтобы каждый компонент потока-предка являлся именованным. Если поток расщепляется на подпотоки, необходимо, чтобы все подпотоки являлись компонентами потока-предка. И наоборот, при объединении потоков каждый компонент потока-предка должен по крайней мере однажды встречаться среди подпотоков. Отметим, что при объединении подпотоков нет необходимости осуществлять исключение общих компонент, а при расщеплении подпотоки могут иметь такие общие (одинаковые) компоненты.
Важно понимать, что точные определения потоков содержатся в словаре данных, а не на диаграммах. Например, на диаграмме может иметься групповой узел с входным потоком 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 итераций |
[ | ] |
Выбор одного из |
Внутри скобок может располагаться произвольное число выражений, разделенных знаком |. Определяемый поток состоит в точности из одного из указанных выражений. |
( ) |
По выбору |
Выражение, заключенное в скобки может как встречаться так и не встречаться в определяемом потоке. |
/* */ |
Комментарий |
Текст, заключенный между знаками /* и */, представляет собой комментарий |
\ \ |
Примитив |
Выражение, заключенное в данные скобки представляет собой примитив, который должен быть описан в соответствующей таблице. |
