Характеристика функциональных диаграмм (SADT) — диаграммы SADT отражают взаимные связи функций разрабатываемого программного обеспечения. Они создаются на ранних стадиях проектирования систем, для того чтобы помочь проектировщику выявить основные функции и составные части проектируемой программной системы и, по возможности, обнаружить и устранить существенные ошибки. Для создания функциональных диаграмм предлагается использовать методологию SADT, предложенную Д.Россом. На основе методологии SADT была построена известная методология описания сложных систем IDEFO (Icam DEFinition), являющаяся основной частью программы ICAM (интегрированная компьютеризация производства), проводимой по инициативе ВВС США. Применение методологии SADT позволяет построить модель, состоящую из диаграмм, фрагментов текстов и глоссария, имеющих ссылки друг на друга. Диаграммы — главные компоненты модели. Функции системы и интерфейсы представлены на диаграммах в виде блоков и дуг. Место соединения дуги с блоком определяет тип интерфейса. Управляющая информация входит в блок сверху, в то время как информация, которая подвергается обработке, показана с левой стороны блока, а результаты выхода даны с правой стороны. Механизм (человек или автоматизированная система), осуществляющий операцию, представлен дугой, входящей в блок снизу (рис. 2.6).
|
|
Одна из наиболее важных особенностей методологии SADT — постепенное введение все больших уровней детализации по мере создания диаграмм, отображающих модель. Построение SADT-модели начинается с представления всей системы в виде простейшей компоненты — одного блока и дуг, изображающих интерфейсы с функциями вне системы. Поскольку единственный блок представляет всю систему как единое целое, имя, указанное в блоке, является общим. Это верно и для интерфейсных дуг — они также представляют собой полный набор внешних интерфейсов системы в целом.
Затем блок, в котором система дана в качестве единого модуля, детализируется на другой диаграмме с помощью нескольких
блоков, соединенных интерфейсными дугами. Эти блоки представляют основные подфункции исходной функции. Данная декомпозиция выявляет полный набор подфункций, каждая из которых представлена как блок, границы которого определены интерфейсными дугами. Каждая из этих подфункций может быть декомпозирована подобным образом для более детального представления. Во всех случаях каждая подфункция может содержать только те элементы, которые входят в исходную функцию. Кроме того, модель не может опустить какие-либо элементы, т.е., как уже отмечалось, родительский блок и его интерфейсы обеспечивают контекст. К нему нельзя ничего добавить, и из него не может быть ничего удалено.
|
|
Модель SADT представляет собой серию диаграмм с сопроводительной документацией, разбивающих сложный объект на составные части, представленные в виде блоков. Детали каждого из основных блоков показаны в виде блоков на других диаграммах. Каждая детальная диаграмма является декомпозицией блока из более общей диаграммы. На каждом шаге декомпозиции более общая диаграмма называется родительской для более детальной диаграммы.
Дуги, входящие в блок и выходящие из него на диаграмме верхнего уровня, являются точно теми же самыми, что и дуги, входящие в диаграмму нижнего уровня и выходящие из нее, потому что блок и диаграмма представляют одну и ту же часть системы.
Стрелки, приходящие с родительской диаграммы или уходящие на нее, нумеруют, используя символы и числа. Символ обозначает тип связи: / — входные, С — управляющие, М — механизмы, R — результаты. Число — номер связи по соответствующей стороне родительского блока, считая сверху вниз и слева направо. Все диаграммы связывают друг с другом иерархической нумерацией блоков: начальный уровень — АО, следующий — А1, А2 и т.п., следующий — All, А12, А13 и т.д., где первая цифра — номер родительского блока, а последняя — номер конкретного субблока родительского блока. Детализацию завершают при получении функций, назначение которых хорошо понятно как заказчику, так и разработчику. Эти функции описывают, используя естественный язык или псевдокоды. В процессе построения иерархии диаграмм фиксируют всю уточняющую информацию и строят словарь данных, в котором определяют структуры и элементы данных, показанных на диаграммах. Таким образом, в результате получают спецификацию, которая состоит из иерархии функци-
АО
Рис. 2.7. Структура SADT-модели. Декомпозиция диаграмм
ональных диаграмм, описаний функций нижнего уровня и словаря, имеющих ссылки друг на друга.
На рис. 2.7 представлена декомпозиция четырех диаграмм, показывающая структуру SADT-модели, общее (рис. 2.7, а) и детальное представление блока АО (рис. 2.7, б), декомпозицию блоков А4 (рис. 2.7, в) и А42 (рис. 2.7, г). Не присоединяемые дуги соответствуют входам, управлениям и выходам родительского блока. Источник или получатель этих дуг может быть обнаружен только на родительской диаграмме. Не присоединяемые концы должны соответствовать дугам на исходной диаграмме. Все граничные дуги должны продолжаться на родительской диаграмме, чтобы она была полной и непротиворечивой.
Родительская диаграмма
Родительский блок
Детальная диаграмма
Управляющая дуга, переносимая с родительской диаграммы
Входная дуга, переносимая с родительской диаграммы
А12
Дуга, продолжающаяся на родительской диаграмме
Рис. 2.8. Соответствие интерфейсных дуг родительской (а) и детальной (б) диаграмм
Функции блоков 2 и 3 могут выполняться параллельно
Рис. 2.9. Пример одновременного выполнения функций
Каждый компонент модели может быть декомпозирован на другой диаграмме, т.е. каждая диаграмма иллюстрирует «внутреннее строение» блока на родительской диаграмме.
На рис. 2.8, а, б и рис. 2.9 представлены различные варианты выполнения функций и соединения дуг с блоками.
На SADT-диаграммах не указаны явно ни последовательность, ни время. Обратные связи, итерации, продолжающиеся процессы и перекрывающиеся (по времени) функции могут быть изображены также с помощью дуг. Обратные связи могут выступать в виде комментариев, замечаний, исправлений и т.д. (рис. 2.10).
Одним из важных моментов при моделировании системы с помощью методологии SADT является точная согласованность типов связей между функциями. Различают, по крайней мере, следующие типы связей: случайная; логическая; временная; процедурная; коммуникационная; последовательная; функциональная.
|
|
Случайная связь возникает, когда конкретная связь между функциями мала или полностью отсутствует. Это относится к си-
Системные требования
Разработка проекта
Предварительная спецификация
Экспертиза
Комментарии
Улучшенный проект
Рис. 2.10. Пример обратной связи
туации, когда имена данных на SADT-дугах в одной диаграмме имеют малую связь друг с другом.
Логическая связь — данные и функции собираются вместе, поскольку попадают в общий класс или набор элементов, но необходимых функциональных отношений между ними при этом не обнаруживается.
Планировать Л
Планировать В
Согласовывать А и В
f
Рис. 2.11. Типы связей:
а - процедурная; б - коммуникационная; в - последовательная-г — функциональная
Временная связь представляет функции, связанные во времени, когда данные используются одновременно или функции включаются параллельно, а не последовательно.
При процедурной связи функции сгруппированы вместе, поскольку они выполняются в течение одной и той же части цикла или процесса (рис. 2.11, а).
Диаграммы демонстрируют коммуникационную связь, когда блоки группируются вследствие того, что они используют одни и те же входные данные и (или) производят одни и те же выходные данные (рис. 2.11, б).
При последовательной связи выходные данные одной функции служат входными данными для другой функции. Связь между элементами на диаграмме является более тесной, чем на рассмотренных выше уровнях, поскольку моделируются причинно-следственные зависимости (рис. 2.11, в).
Диаграмма отражает полную функциональную связь при наличии полной зависимости одной функции от другой. Диаграмма, которая является чисто функциональной, не содержит чужеродных элементов, относящихся к последовательному или более слабому типу связности. Одним из способов определения функционально связанных диаграмм является рассмотрение двух блоков, связанных через управляющие дуги, как показано на рис. 2.11, г.
|
|
В математических терминах необходимое условие для простейшего типа функциональной связности (рис. 2.11, г) имеет следующий вид: С = д(В) = g(f(A)).
Метод SADT может использоваться для моделирования самых разнообразных систем и для определения требований и функций. В существующих системах метод SADT может применяться для анализа функций, выполняемых системой, и указания механизмов, посредством которых они осуществляются.
Пример разработки функциональной диаграммы программы построения графиков. Разработку функциональных диаграмм продемонстрируем на примере уточнения спецификаций программы построения графиков и таблиц функций одной переменной.
На рис. 2.12, а показана диаграмма верхнего уровня, на которой хорошо видно, что является исходными данными для программы и получения каких результатов мы ожидаем.
Диаграмма на рис. 2.12, б уточняет функции программы. На ней показаны четыре блока: ввод—выбор и ее разбор, добавление функции в список, построение таблицы значений и построе-
График/таблица
Функция
Отрезок
Шаг
Построение графиков/таблиц функций
АО
График Таблица
/1
Ввод/выбор функции и ее разбор
/3
Список функций
Правильная функция
Дерево разбора
Добавление функции в список
А4
А2
Построение таблицы значений
Количество точек
R2
О
A3
Построение графика значений
Рис. 2.12. Функциональные диаграммы для системы исследования функций:
а — диаграмма верхнего уровня; б — уточняющая диаграмма
ние графика функции. Для каждого блока определены исходные данные, управляющие воздействия и результаты. Согласно правилам обозначения входов—выходов, имеющих продолжение на родительской диаграмме, на данной диаграмме использованы следующие обозначения: Л — функция; 12 — отрезок; /3 — шаг; С1 — вид график—таблица; RI — график функции на отрезке; R2 — таблица значений функции на отрезке.
Словарь в этом случае должен содержать описание всех данных, используемых в системе.
Функциональную модель целесообразно применять для определения спецификаций программного обеспечения, не предусматривающего работу со сложными структурами данных, так как она ориентирована на декомпозицию функций.
2.4.
ДИАГРАММЫ ПОТОКОВ ДАННЫХ
Характеристика диаграмм потоков данных (DFD). Диаграмма DFD состоит из узлов обработки данных, средств их хранения и внешних по отношению к используемой диаграмме источников или потребителей данных.
Диаграмма потоков данных — основное средство моделирования функциональных требований к системе, проектируемой или реально существующей. В основе модели лежат понятия внешней сущности, процесса, хранилища (накопителя) данных потока данных. Источники информации (внешние сущности) порождают информационные потоки (потоки данных), переносящие информацию к подсистемам или процессам; те, в свою очередь, преобразуют информацию и порождают новые потоки, которые переносят информацию к другим процессам или подсистемам, накопителям данных или внешним сущностям — потребителям информации.
Для изображения диаграмм потоков данных традиционно используют два вида нотаций — Йордана и Гейна—Сарсона, которые представлены в табл. 2.1.
Внешняя сущность — это материальный предмет или физическое лицо, представляющее собой источник или приемник информации, например, заказчики, персонал, поставщики, клиенты,
Таблица 2.1. Виды нотаций
Понятие
Нотация Йордана
Нотация Гейна—Сарсона
Внешняя сущность
Наименование
Номер
Наименование
Процесс, система, подсистема
Номер
Наименование
Механизм
Накопитель данных
Наименование
№ Наименование
Поток данных
Наименование
Наименование