Типы связей между функциями
Одним из важных моментов при моделировании с помощью метода SADT является точная согласованность типов связей между функциями. Различают по крайней мере связи семи типов (в порядке возрастания их относительной значимости):
· случайная;
· логическая;
· временная;
· процедурная;
· коммуникационная;
· последовательная;
· функциональная.
Случайная связь показывает, что конкретная связь между функциями незначительна или полностью отсутствует. Это относится к ситуации, когда имена данных на SADT-дугах в одной диаграмме имеют слабую связь друг с другом. Крайний вариант этого случая показан на рис. 2.8.
Логическая связь — данные и функции собираются вместе благодаря тому, что они попадают в общий класс или набор элементов, но необходимых функциональных отношений между ними не обнаруживается.
Рис. 2.8. Случайная связь
Временная связь — представляет функции, связанные во времени, когда данные используются одновременно или функции включаются параллельно, а не последовательно.
Процедурная связь (рис. 2.9) — функции сгруппированы вместе благодаря тому, что они выполняются втечение одной и той же части цикла или процесса.
Рис. 2.9. Процедурная связь
Коммуникационная связь — функции группируются благодаря тому, что они используют одни и те же входные данные и/или производят одни и те же выходные данные (рис. 2.10).
Рис. 2.10. Коммуникационная связь
Последовательная связь — выход одной функции служит входными данными для следующей функции. Связь между элементами на диаграмме является более тесной, чем в рассмотренных выше случаях, поскольку моделируются причинно-следственные зависимости (рис. 2.11).
Рис. 2.11. Последовательная связь
Функциональная связь — все элементы функции влияют на выполнение одной и только одной функции. Диаграмма, являющаяся чисто функциональной, не содержит чужеродных элементов, относящихся к последовательному или более слабому типу связи.
Одним из способов определения функционально-связанных диаграмм является рассмотрение двух блоков, связанных через управляющие дуги, как показано на рис. 2.12.
Рис. 2.12. Функциональная связь
В математических терминах необходимое условие для простейшего типа функциональной связи имеет следующий вид:
C = g(B)=g(f(A)).
В табл. 2.2 представлены все типы связей, рассмотренные выше.
Важно отметить, что уровни 4—6 устанавливают связи, которые разработчики считают важнейшими для получения диаграмм хорошего качества.
Уровень значимости | Тип связи | Характеристика типа связи | |
для функций | для данных | ||
Случайная | Случайная | Случайная | |
Логическая | Функции одного и того же множества или типа (например, «редактировать все входы») | Данные одного и того же множества или типа | |
Временная | Функции одного и того же периода времени (например, «операции инициализации») | Данные, используемые в каком-либо временном интервале | |
Процедурная | Функции, работающие в одной и той же фазе или итерации (например, «первый проход компилятора») | Данные, используемые во время одной и той же фазы или итерации | |
Коммуникационная | Функции, использующие одни и те же данные | Данные, на которые воздействует одна и та же деятельность | |
Последовательная | Функции, выполняющие последовательные преобразования одних и тех же данных | Данные, преобразуемые последовательными функциями | |
Функциональная | Функции, объединяемые для выполнения одной функции | Данные, связанные содной функцией |
Таблица2.2
Описание типов связей
2.3.2.
МОДЕЛИРОВАНИЯ
ПРОЦЕССОВ IDEF3
Метод моделирования IDEF3[14], являющийся частью семейства стандартов IDEF, был разработан в конце 1980-х годов для закрытого проекта ВВС США. Этот метод предназначен для таких моделей процессов, в которых важно понять последовательность выполнения действий и взаимозависимости между ними. Хотя IDEF3 и не достиг статуса федерального стандарта США, он приобрел широкое распространение среди системных аналитиков как дополнение к методу функционального моделирования IDEF0 (модели IDEF3 могут использоваться для детализации функциональных блоков IDEF0, не имеющих диаграмм декомпозиции). Основой модели IDEF3 служит сценарий процесса, который выделяет последовательность действий и подпроцессов анализируемой системы.
Как и в методе IDEF0, основной единицей модели IDEF3 является диаграмма. Другой важный компонент модели — действие, или в терминах IDEF3 «единица работы» (Unit of Work — UOW). Диаграммы IDEF3 отображают действие в виде прямоугольника. Действия именуются с использованием глаголов или отглагольных существительных, каждому из действий присваивается уникальный идентификационный номер. Этот номер не используется вновь даже в том случае, если в процессе построения модели действие удаляется. В диаграммах IDEF3 номер действия обычно предваряется номером его родителя (рис. 2.13).
Рис. 2.13. Изображение и нумерация действия в диаграмме IDEF3
Существенные взаимоотношения между действиями изображаются с помощью связей. Все связи в IDEF3 являются однонаправленными, и хотя стрелка может начинаться или заканчиваться на любой стороне блока, обозначающего действие, диаграммы IDEF3 обычно организуются слева направо таким образом, что стрелки начинаются на правой и заканчиваются на левой стороне блоков. В табл. 2.3 приведены три возможных типа связей.
Таблица 2.3
Типы связей IDEF3
Изображение | Название | Назначение |
Временное предшествование (Temporal precedence) | Исходное действие должно завершиться, прежде чем конечное действие сможет начаться | |
Объектный поток (Object flow) | Выход исходного действия является входом конечного действия (исходное действие должно завершиться, прежде чем конечное действие сможет начаться) | |
Нечеткое отношение (Relationship) | Вид взаимодействия между исходным и конечным действиями задается аналитиком отдельно для каждого случая использования такого отношения |
Связь типа «временное предшествование» показывает, что исходное действие должно полностью завершиться, прежде чем начнется выполнение конечного действия.
Связь типа «объектный поток» используется в том случае, когда некоторый объект, являющийся результатом выполнения исходного действия, необходим для выполнения конечного действия. Обозначение такой связи отличается от связи временного предшествования двойной стрелкой. Наименования потоковых связей должны четко идентифицировать объект, который передается с их помощью. Временная семантика объектных связей аналогична связям предшествования, это означает, что порождающее объектную связь исходное действие должно завершиться, прежде чем конечное действие может начать выполняться.
Связь типа «нечеткое отношение» используется для выделения отношений между действиями, которые невозможно описать с использованием связей предшествования или объектных связей. Значение каждой такой связи должно быть определено, поскольку связи типа «нечеткое отношение» сами по себе не предполагают никаких ограничений. Одно из применений нечетких отношений — отображение взаимоотношений между параллельно выполняющимися действиями.
Завершение одного действия может инициировать начало выполнения сразу нескольких других действий или, наоборот, определенное действие может требовать завершения нескольких других действий до начала своего выполнения. Соединенияразбивают или соединяют внутренние потоки и используются для изображения ветвления процесса:
· разворачивающие соединенияиспользуются для разбиения потока. Завершение одного действия вызывает начало выполнения нескольких других;
· сворачивающие соединенияобъединяют потоки. Завершение одного или нескольких действий вызывает начало выполнения другого действия.
В табл. 2.4 описаны три типа соединений.
Таблица 2.4
Типы соединений
Графическое обозначение | Название | Вид | Правила инициации |
& | Соединение «и» | Разворачивающее | Каждое конечное действие обязательно инициируется |
Сворачивающее | Каждое исходное действие обязательно должно завершиться | ||
X | Соединение «исключающее «или»» | Разворачивающее | Одно и только одно конечное действие инициируется |
Сворачивающее | Одно и только одно исходное действие должно завершиться | ||
О | Соединение «или» | Разворачивающее | Одно или несколько конечных действий инициируются |
Сворачивающее | Одно или несколько исходных действий должны завершиться |
Соединения «и» инициируют выполнение конечных действий. Все действия, присоединенные к сворачивающему соединению «и», должны завершиться, прежде чем начнется выполнение следующего действия. На рис. 2.14 после обнаружения пожара инициируются включение пожарной сигнализации, вызов пожарной охраны, и начинается тушение пожара. Запись в журнал производится только тогда, когда все три перечисленных действия завершены.
Рис. 2.14. Соединения «и»
Соединение «исключающее «или»» означает, что вне зависимости от количества действий, связанных со сворачивающим или разворачивающим соединением, инициировано будет только одно из них, и поэтому только оно будет завершено перед тем, как любое действие, следующее за сворачивающим соединением, сможет начаться. Если правила активации соединения известны, они обязательно должны быть документированы либо в его описании, либо пометкой стрелок, исходящих из разворачивающего соединения. На рис. 2.15 соединение «исключающее «или»» используется для отображения того факта, что студент не может одновременно быть направлен на лекции по двум разным курсам.
Рис. 2.15. Соединение «исключающее «или»»
Соединение «или» предназначено для описания ситуаций, которые не могут быть описаны двумя предыдущими типами соединений. Аналогично связи нечеткого отношения соединение «или» в основном определяется и описывается непосредственно системным аналитиком. На рис. 2.16 соединение J2 может активизировать проверку данных чека и/или проверку суммы наличных. Проверка чека инициируется, если покупатель желает расплатиться чеком, проверка суммы наличных — при оплате наличными. То и другое действие инициируется при частичной оплате как чеком, так и наличными.
В рассмотренных примерах все действия выполнялись асинхронно, т.е. они не инициировались одновременно. Однако существуют случаи, когда время начала или окончания параллельно выполняемых действий должно быть одинаковым, т.е. действия должны выполняться синхронно. Для моделирования такого поведения системы используются различные виды синхронных соединений, которые обозначаются двумя двойными вертикальными линиями внутри прямоугольника.
Рис. 2.16. Соединения «или»
Например, в спортивных состязаниях выстрел стартового пистолета, запуск секундомера и начало состязания должны произойти одновременно. На рис. 2.17 представлена модель этого примера, построенная с использованием синхронного соединения.
Синхронное разворачивающее соединение не обязательно должно иметь парное сворачивающее соединение, т.е. начинающиеся одновременно действия не обязаны оканчиваться одновременно. Возможны также ситуации синхронного окончания асинхронно начавшихся действий.
Рис. 2.17. Синхронное соединение
Все соединения на диаграммах должны быть парными, из чего следует, что любое разворачивающее соединение имеет парное себе сворачивающее. Однако типы соединений не обязательно должны совпадать.
Соединения могут комбинироваться для создания более сложных ветвлений. Комбинации соединений следует использовать с осторожностью, поскольку перегруженные ветвлением диаграммы могут оказаться сложными для восприятия.
Действия в IDEF3 могут быть декомпозированы или разложены на составляющие для более детального анализа. Метод IDEF3 позволяет декомпозировать действие несколько раз, что обеспечивает документирование альтернативных потоков процесса в одной модели.
2.3.3.