SADT - технология структурного анализа и проектирования
SADT - одна из самых известных методологий анализа и проектирования информационных систем, введенная в 1973 году Россом.
С точки зрения SADT модель может основываться либо на функциях системы, либо на ее предметах (планах, данных, оборудовании, информации и т.д.). Соответствующие модели принято называть функциональными моделями и моделями данных. Функциональная модель представляет с нужной степенью подробности систему активностей, которые в свою очередь отражают свои взаимоотношения через предметы системы. Модели данных дуальны к функциональным моделям и представляют собой подробное описание предметов системы. Полная методология SADT заключается в построении моделей обеих типов для более точного описания сложной системы. Однако, в настоящее время широкое применение нашли только функциональные модели.
Методология SADT представляет собой совокупность методов, правил и процедур, предназначенных для построения функциональной модели объекта какой-либо предметной области. Функциональная модель SADT отображает функциональную структуру объекта, т.е. производимые им действия и связи между этими действиями. Основные элементы этой методологии основываются на следующих концепциях:
· графическое представление блочного моделирования. Графика блоков и дуг SADT-диаграммы отображает функцию в виде блока, а интерфейсы входа/выхода представляются дугами, соответственно входящими в блок и выходящими из него. Взаимодействие блоков друг с другом описываются посредством интерфейсных дуг, выражающих "ограничения", которые в свою очередь определяют, когда и каким образом функции выполняются и управляются;
· строгость и точность. Выполнение правил SADT требует достаточной строгости и точности, не накладывая в то же время чрезмерных ограничений на действия аналитика. Правила SADT включают:
· ограничение количества блоков на каждом уровне декомпозиции (правило 3-6 блоков);
· связность диаграмм (номера блоков);
· уникальность меток и наименований (отсутствие повторяющихся имен);
· синтаксические правила для графики (блоков и дуг);
· разделение входов и управлений (правило определения роли данных).
· отделение организации от функции, т.е. исключение влияния организационной структуры на функциональную модель.
Методология SADT может использоваться для моделирования широкого круга систем и определения требований и функций, а затем для разработки системы, которая удовлетворяет этим требованиям и реализует эти функции. Для уже существующих систем SADT может быть использована для анализа функций, выполняемых системой, а также для указания механизмов, посредством которых они осуществляются.
Результатом применения методологии SADT является модель, которая состоит из диаграмм, фрагментов текстов и глоссария, имеющих ссылки друг на друга. Диаграммы - главные компоненты модели, все функции ИС и интерфейсы на них представлены как блоки и дуги. Место соединения дуги с блоком определяет тип интерфейса. Управляющая информация входит в блок сверху, в то время как информация, которая подвергается обработке, показана с левой стороны блока, а результаты выхода показаны с правой стороны. Механизм (человек или автоматизированная система), который осуществляет операцию, представляется дугой, входящей в блок снизу (рисунок 14).
Рис. 14. Функциональный блок и интерфейсные дуги
Одной из наиболее важных особенностей методологии SADT является постепенное введение все больших уровней детализации по мере создания диаграмм, отображающих модель.
На рисунке 15, где приведены четыре диаграммы и их взаимосвязи, показана структура SADT-модели. Каждый компонент модели может быть декомпозирован на другой диаграмме. Каждая диаграмма иллюстрирует "внутреннее строение" блока на родительской диаграмме.
Рис. 15. Структура SADT-модели. Декомпозиция диаграмм
Иерархия диаграмм
Построение SADT-модели начинается с представления всей системы в виде простейшей компоненты - одного блока и дуг, изображающих интерфейсы с функциями вне системы. Поскольку единственный блок представляет всю систему как единое целое, имя, указанное в блоке, является общим. Это верно и для интерфейсных дуг - они также представляют полный набор внешних интерфейсов системы в целом.
Затем блок, который представляет систему в качестве единого модуля, детализируется на другой диаграмме с помощью нескольких блоков, соединенных интерфейсными дугами. Эти блоки представляют основные подфункции исходной функции. Данная декомпозиция выявляет полный набор подфункций, каждая из которых представлена как блок, границы которого определены интерфейсными дугами. Каждая из этих подфункций может быть декомпозирована подобным образом для более детального представления.
Во всех случаях каждая подфункция может содержать только те элементы, которые входят в исходную функцию. Кроме того, модель не может опустить какие-либо элементы, т.е., как уже отмечалось, родительский блок и его интерфейсы обеспечивают контекст. К нему нельзя ничего добавить, и из него не может быть ничего удалено.
Модель SADT представляет собой серию диаграмм с сопроводительной документацией, разбивающих сложный объект на составные части, которые представлены в виде блоков. Детали каждого из основных блоков показаны в виде блоков на других диаграммах. Каждая детальная диаграмма является декомпозицией блока из более общей диаграммы. На каждом шаге декомпозиции более общая диаграмма называется родительской для более детальной диаграммы.
Дуги, входящие в блок и выходящие из него на диаграмме верхнего уровня, являются точно теми же самыми, что и дуги, входящие в диаграмму нижнего уровня и выходящие из нее, потому что блок и диаграмма представляют одну и ту же часть системы.
На рисунках 16-18 представлены различные варианты выполнения функций и соединения дуг с блоками.
Рис. 16. Одновременное выполнение
Рис. 17. Соответствие должно быть полным и непротиворечивым
Некоторые дуги присоединены к блокам диаграммы обоими концами, у других же один конец остается неприсоединенным. Неприсоединенные дуги соответствуют входам, управлениям и выходам родительского блока. Источник или получатель этих пограничных дуг может быть обнаружен только на родительской диаграмме. Неприсоединенные концы должны соответствовать дугам на исходной диаграмме. Все граничные дуги должны продолжаться на родительской диаграмме, чтобы она была полной и непротиворечивой.
На SADT-диаграммах не указаны явно ни последовательность, ни время. Обратные связи, итерации, продолжающиеся процессы и перекрывающиеся (по времени) функции могут быть изображены с помощью дуг. Обратные связи могут выступать в виде комментариев, замечаний, исправлений и т.д. (рисунок 18).
Рис. 18. Пример обратной связи
Как было отмечено, механизмы (дуги с нижней стороны) показывают средства, с помощью которых осуществляется выполнение функций. Механизм может быть человеком, компьютером или любым другим устройством, которое помогает выполнять данную функцию (рисунок 19).
Рис. 19. Пример механизма
Каждый блок на диаграмме имеет свой номер. Блок любой диаграммы может быть далее описан диаграммой нижнего уровня, которая, в свою очередь, может быть далее детализирована с помощью необходимого числа диаграмм. Таким образом, формируется иерархия диаграмм.
Для того, чтобы указать положение любой диаграммы или блока в иерархии, используются номера диаграмм. Например, А21 является диаграммой, которая детализирует блок 1 на диаграмме А2. Аналогично, А2 детализирует блок 2 на диаграмме А0, которая является самой верхней диаграммой модели. На рисунке 20 показано типичное дерево диаграмм.
Рис. 20. Иерархия диаграмм
Синтаксис диаграмм
Как уже отмечалось, каждая SADT-диаграмма содержит блоки и дуги. Блоки изображают функции системы, дуги связывают блоки и отображают взаимодействия и взаимосвязи между ними. Диаграмме дается название, которое располагается внизу.
Функциональные блоки изображаются прямоугольниками. Поскольку блоки отображают функции системы, то в названии блоков используют глаголы или глагольные обороты (рассчитать, выполнить задание и т.д.).
Блоки на SADT-диаграмме никогда не размещаются случайным образом. Они размещаются по степени важности, как ее понимает автор диаграммы. В SADT этот относительный порядок называется доминированием. Доминирование понимается как влияние, которое один блок оказывает на другие блоки диаграммы. Например, самым доминирующим блоком диаграммы может быть первый из требуемой последовательности функций. Наиболее доминирующий блок обычно располагается в верхнем левом углу диаграммы, а наименее доминирующий - в правом нижнем углу диаграммы. В результате имеем ступенчатую схему.
Блоки в SADT должны быть пронумерованы. Номера блоков служат однозначными идентификаторами для системных функций и автоматически организуют эти функции в иерархию модели.
Дуги на SADT-диаграмме изображаются одинарными линиями со стрелками на концах. Дуги изображают объекты (или данные), поэтому они описываются существительными или существительными с определениями (набор инструментов, чертеж и т.д.)
Между объектами и функциями возможны 4 отношения: вход, управление, выход и механизм. Каждое из этих отношений изображается дугой и связано с определенной стороной блока (левая сторона - входные дуги, правая сторона - выходные дуги, верхняя сторона - управляющие дуги, нижняя сторона - дуги механизма).
Входные дуги изображают объекты, используемые и преобразуемые функциями. Управленческие дуги представляют информацию, управляющую действиями функций. Обычно управляющие дуги несут информацию, которая указывает, что должна выполнять функция. Выходные дуги изображают объекты, в которые преобразуются входы. Дуги механизмов отражают, по крайней мере частично, как функции реализуются, с помощью чего или кого.
Таким образом, SADT-диаграмма составлена из блоков, связанных дугами, которые определяют, как блоки влияют друг на друга. Это влияние может выражаться либо в передаче выходной информации к другой функции для дальнейшего преобразования, либо в выработке управляющей информации, предписывающей, что именно должна выполнять другая функция. Поэтому SADT-диаграммы нельзя отнести к блок-схемам или диаграммам потоков данных. Скорее всего, это предписывающие диаграммы, представляющие входные-выходные преобразования и указывающие правила этих преобразований.
В методологии SADT требуется только пять типов взаимосвязей между блоками для описания их отношений: управление, вход, обратная связь по управлению, обратная связь по входу, выход-механизм. Рассмотрим на примере.
Рис. 21 Пример SADT-диаграммы
Связи по управлению и входу являются простейшими, поскольку они отражают прямые воздействия, которые интуитивно понятны и очень просты. Отношение управления возникает тогда, когда выход одного блока непосредственно влияет на блок с меньшим доминированием. Пример: блок "управлять выполнением задания" влияет на блок "выполнить задание" в соответствии с планом выполнения задания.
Отношение входа возникает тогда, когда выход одного блока становится входом для блока с меньшим доминированием. Пример: выход "законченное или незаконченное задание" является входом функции "контролировать качество выполнения" при выполнении функции "выполнить задание".
Обратная связь по управлению и обратная связь по входу являются более сложными, поскольку они представляют собой итерацию или рекурсию. А именно выходы одной функции влияют на будущее выполнение других функций, которые в последствии влияют на исходную функцию.
Обратная связь по управлению возникает тогда, когда выход некоторого блока влияет на блок с большим доминированием. Пример: функция "управлять выполнением задания" ограничивает действие функции "контролировать качество выполнения" с помощью чертежа, в котором указаны разрешенные допуски. Кроме того, дуга штамп "принято", являющаяся выходом блока "контролировать качество выполнения" организует работу блока "управлять выполнением задания", поскольку именно штамп "принято" указывает, что задание завершено. Таким образом, штамп "принято" влияет на будущую деятельность блока "управлять выполнением задания", поэтому соответствующая дуга направлена назад.
Связь по входной обратной связи имеет место тогда, когда выход одного блока становится входом другого блока с большим доминированием. Пример: задания, отвергнутые функцией "контролировать качество выполнения", отсылаются на вход блока "выполнить задание" в качестве брака.
Связи "выход-механизм" встречаются редко. Они отражают ситуацию, когда выход одной функции становится средством достижения цели другой функции. Связи "выход-механизм" характерны при распределении источник ресурсов (например, требуемые инструменты, обученный персонал, физическое пространство, оборудование, финансирование и т.д.)
Дуга в SADT редко изображает один объект. Обычно она символизирует набор объектов. Например, дуга "рабочий комплект" отражает "техническое задание", "чертеж", "план-график", некоторое "сырье и заготовки". Так как дуги представляют собой наборы объектов, они могут иметь множество начальных точек (источников) и конечных точек (назначений). Поэтому дуги могут разветвляться и соединяться различными сложными способами. Пример: дуга принятое задание разветвляется на дугу штамп "принято", которая является управляющей информацией для блока "управлять выполнением задания" и дугу деталь с биркой, которая является входной для того же блока.
Бывают варианты, когда две разные дуги объединяются и образуют больший набор объектов.
Для объяснения того, как дуги представляют разъединение и соединение наборов объектов, в SADT были разработаны специальные соглашения.
Разветвление дуг.
Разветвления дуг, изображаемые в виде расходящихся линий, означают, что все содержимое дуг или его часть может появиться в каждом ответвлении дуги. Дуга всегда помечается до разветвления, чтобы дать название всему набору. Кроме того, каждая дуга может быть помечена или непомечена в соответствии со следующими правилами:
· Непомеченные ветви содержат все объекты, указанные в метке дуги перед разветвлением (т.е. все объекты принадлежат этим ветвям);
· Ветви, помеченные после точки разветвления, содержат все объекты или их часть, указанные в метке дуги перед разветвлением (т.е. каждая метка ветви уточняет, что именно содержит ветвь).
Слияние дуг.
Слияние дуг в SADT, изображаемое как сходящиеся вместе линии, указывает, что содержимое каждой ветви идет на формирование метки для дуги, являющейся результатом слияния исходных дуг. После слияния результирующая дуга всегда помечается для указания нового набора объектов, возникающего после объединения.
Кроме того, каждая ветвь перед слиянием может помечаться или не помечаться в соответствии со следующими правилами:
· Непомеченные ветви содержат все объекты, указанные в общей метке дуги после слияния (т.е. все объекты исходят из всех ветвей);
· Помеченные перед слиянием ветви содержат все или некоторые объекты из перечисленных в общей метке после слияния (т.е. метка ветви ясно указывает, что содержит ветвь).