Синтаксис и семантика IDEF0-диаграмм
Метод IDEF0 можно считать следующим этапом развития хорошо известного графического языка функционального описания систем SADT (Structured Analysis and Design Technique). Исторически IDEF0, как стандарт, был разработан в 1981 году в рамках обширной программы автоматизации промышленных предприятий США, которая носила обозначение ICAM (Integrated Computer Aided Manufacturing). Собственно семейство стандартов IDEF унаследовало свое обозначение от названия этой программы (IDEF=ICAM DEFinition). В процессе практической реализации, участники программы ICAM столкнулись с необходимостью разработки новых методов анализа процессов взаимодействия в промышленных системах. При этом кроме усовершенствованного набора функций для описания бизнес-процессов, одним из требований к новому стандарту было наличие эффективной методологии взаимодействия в рамках аналитик-специалист. Другими словами, новый метод должен был обеспечить групповую работу над созданием модели, с непосредственным участием всех аналитиков и специалистов, занятых в рамках проекта.
В результате поиска соответствующих решений появился метод функционального моделирования IDEF0. C 1981 года стандарт IDEF0 претерпел несколько незначительных изменений, в основном ограничивающего характера, и последняя его редакция была выпущена в декабре 1993 года Национальным институтом по стандарам и технологиям США (NIST).
Графический язык IDEF0 достаточно прост и гармоничен. В его основе лежат четыре основных понятия.
Первым из них является понятие функционального блока(Activity Box). Функциональный блок графически изображается в виде прямоугольника (рис.1) и представляет собой некоторую конкретную функцию в рамках рассматриваемой системы. По требованиям стандарта название каждого функционального блока должно быть сформулировано, по возможности, в глагольном наклонении (например, «производить продукцию», а не «производство продукции»).
Каждая из четырех сторон функционального блока имеет свое определенное значение (роль), а именно:
· верхняя сторона имеет значение «Управление» (Control);
· левая сторона имеет значение «Вход» (Input);
· правая сторона имеет значение «Выход» (Output);
· нижняя сторона имеет значение «Механизм» (Mechanism).
Каждый функциональный блок в рамках единой рассматриваемой системы должен иметь свой уникальный идентификационный номер.
Вторым понятием метода IDEF0 является понятие интерфейсной дуги(Arrow). Интерфейсные дуги часто называют потоками или стрелками. Интерфейсная дуга отображает элемент системы, который обрабатывается функциональным блоком или оказывает иное влияние на функцию, отображенную данным функциональным блоком.
|
Рис.1. Функциональный блок
Графическим отображением интерфейсной дуги является однонаправленная стрелка. Каждая интерфейсная дуга должна иметь свое уникальное наименование (Arrow Label). По требованию стандарта, наименование должно быть, по возможности, оборотом существительного.
С помощью интерфейсных дуг отображают различные объекты системы. Такими объектами могут быть элементы реального мира (детали, вагоны, сотрудники и т.д.) или информация (документы, данные, инструкции и т.д.).
В зависимости от того, к какой из сторон подходит данная интерфейсная дуга, она носит название «входящей», «исходящей», «механизма» или «управляющей». Кроме того, «источником» (началом) и «приемником» (концом) каждой функциональной дуги могут быть только функциональные блоки. При этом «источником» может быть только выходная сторона блока, а «приемником» любая из трех оставшихся.
Необходимо отметить, что любой функциональный блок по требованиям стандарта должен иметь, по крайней мере, одну управляющую интерфейсную дугу и одну исходящую. Это и понятно – каждый процесс должен протекать по каким-то правилам (отображаемым управляющей дугой), а также выдавать некоторый результат (выходящая дуга), иначе его рассмотрение не имеет смысла. В настоящее время это требование дополнено наличием хотя бы одного механизма и входящей дуги у каждого функционального блока.
При построении IDEF0 – диаграмм важно правильно отделять входящие интерфейсные дуги от управляющих, что часто бывает непросто. К примеру, на рис.2 изображен функциональный блок «Обработать заготовку».
В реальном процессе рабочему, производящему обработку, выдают заготовку и технологические указания по обработке (или правила техники безопасности при работе на станке). Ошибочно может показаться, что и заготовка и документ с технологическими указаниями являются входящими объектами. На самом деле, в этом процессе заготовка обрабатывается по правилам, отраженным в технологических указаниях, которые должны, соответственно, изображаться управляющей интерфейсной дугой.
В другом случае (рис.3) технологические указания обрабатываются главным технологом в целях внесения изменений. При этом старые указания отображаются уже входящей интерфейсной дугой, а управляющим объектом являются, например, новые промышленные стандарты, исходя из которых, проводятся данные изменения.
|
Рис.2. Представление функции «Обработать заготовку»
|
Рис.3. Представление функции технолога
Приведенные выше примеры подчеркивают внешне схожую природу входящих и управляющих интерфейсных дуг. Однако для систем одного класса всегда есть определенные разграничения. Например, в случае рассмотрения предприятий и организаций, существуют пять основных видов объектов: материальные потоки (детали, товары, сырье и т.д.), финансовые потоки (наличные и безналичные средства, инвестиции и т.д.), потоки документов (коммерческие, финансовые и организационные документы), потоки информации (данные о намерениях, устные распоряжения и т.д.) и ресурсы (сотрудники, станки, машины и т.д.). При этом в различных случаях входящими и исходящими интерфейсными дугами могут отображаться все виды объектов, управляющими - только относящиеся к потокам документов и информации, а дугами-механизмами - только ресурсы.
Обязательное наличие интерфейсных дуг является одним из главных отличий стандарта IDEF0 от других методов (например, DFD (Data Flow Diagram) или WFD (Work Flow Diagram)).
Третьим основным понятием стандарта IDEF0 является декомпозиция (Decomposition). Операция декомпозиции применяется при разбиении сложного процесса на составляющие его функции. При этом уровень детализации процесса определяется непосредственно разработчиком модели.
Декомпозиция позволяет постепенно и структурировано представлять модель системы в виде иерархической структуры отдельных диаграмм, что делает ее менее перегруженной и легко читаемой.
Модель IDEF0 всегда начинается с представления системы как единого целого – одного функционального блока с интерфейсными дугами, выходящими за пределы рассматриваемой области. Такая диаграмма с одним функциональным блоком называется контекстной диаграммой, и обозначается идентификатором А-0.
В пояснении к контекстной диаграмме должна быть указана цель (Purpose) построения диаграммы в виде краткого описания и зафиксирована точка зрения (Viewpoint).
Определение и формализация цели разработки IDEF0 – модели является крайне важным моментом. Фактически, цель определяет соответствующие области в исследуемой системе, на которых необходимо сосредоточиться в первую очередь. Например, если моделируется деятельность предприятия с целью построения его информационной системы, то построенная модель будет существенно отличаться от той, которая была разработана для того же самого предприятия, но уже с целью оптимизации технологических процессов.
При построении модели точка зрения определяет основное направление развития модели и уровень необходимой детализации. Четкое фиксирование точки зрения позволяет разгрузить модель, отказавшись от детализации и исследования отдельных элементов, не являющихся необходимыми, исходя из выбранной цели. Например, функциональные модели одного и того же предприятия с точек зрения главного технолога и финансового директора будут существенно различаться по направленности их детализации. Это связано с тем, что в конечном итоге, финансового директора мало интересуют производственные аспекты обработки сырья, а главному технологу ни к чему прорисованные схемы финансовых потоков. Правильный выбор точки зрения существенно сокращает временные затраты на построение конечной модели.
В процессе декомпозиции функциональный блок, который в контекстной диаграмме отображает систему как единое целое, подвергается детализации на другой диаграмме. Получившаяся диаграмма второго уровня содержит функциональные блоки, отображающие главные подфункции функционального блока контекстной диаграммы и называется дочерней (Child diagram) по отношению к нему (каждый из функциональных блоков, принадлежащих дочерней диаграмме соответственно называется дочерним блоком – Child Box). В свою очередь, функциональный блок - предок называется родительским блоком по отношению к дочерней диаграмме (Parent Box), а диаграмма, к которой он принадлежит – родительской диаграммой (Parent Diagram). Каждая из подфункций дочерней диаграммы может быть далее детализирована путем аналогичной декомпозиции соответствующего ей функционального блока. Важно отметить, что в каждом случае декомпозиции функционального блока все интерфейсные дуги, входящие в данный блок, или исходящие из него фиксируются на дочерней диаграмме. Этим достигается структурная целостность IDEF0 – модели. Графически механизм декомпозиции показан на рис.4.
Следует обратить внимание на взаимосвязь нумерации функциональных блоков и диаграмм - каждый блок имеет свой уникальный номер доминирования на диаграмме (цифра в правом нижнем углу прямоугольника), а черточка под левым верхним углом указывает на существование дочерней для этого блока диаграммы. Отсутствие этого обозначения говорит о том, что декомпозиции для данного блока не существует.
|
Рис.4. Декомпозиция функциональных блоков
Часто бывают случаи, когда отдельные интерфейсные дуги не имеет смысла продолжать рассматривать в дочерних диаграммах ниже какого-то определенного уровня в иерархии, или наоборот - отдельные дуги не имеют практического смысла выше какого-то уровня. Например, интерфейсную дугу, изображающую «деталь» на входе в функциональный блок «Обработать на токарном станке» не имеет смысла отражать на диаграммах более высоких уровней – это будет только перегружать диаграммы и делать их сложными для восприятия. С другой стороны, иногда необходимо избавиться от отдельных «концептуальных» интерфейсных дуг и не детализировать их глубже некоторого уровня. Для решения подобных задач в стандарте IDEF0 предусмотрено понятие туннелирования. Обозначение туннеля (Arrow Tunnel) в виде двух круглых скобок вокруг начала интерфейсной дуги обозначает, что эта дуга не была унаследована от функционального родительского блока и появилась (из туннеля) только на этой диаграмме. В свою очередь, такое же обозначение вокруг конца интерфейсной дуги (стрелки) в непосредственной близи от блока–приемника означает тот факт, что в дочерней, по отношению к этому блоку, диаграмме эта дуга отображаться и рассматриваться не будет. Чаще всего отдельные объекты и соответствующие им интерфейсные дуги не рассматриваются на некоторых промежуточных уровнях иерархии. В таком случае они сначала «погружаются в туннель», а затем, при необходимости, «возвращаются из туннеля». Однако «правилом хорошего тона» в настоящее время стало минимальное использование механизмов туннелирования и растуннелирования. Альтернативой этих механизмов является разветвление и слияние дуг.
Последним из понятий IDEF0 является глоссарий (Glossary). Для каждого из элементов IDEF0 (диаграмм, функциональных блоков, интерфейсных дуг) существующий стандарт подразумевает создание и поддержание набора соответствующих определений, ключевых слов, повествовательных изложений и т.д., которые характеризуют объект, отображенный данным элементом. Этот набор называется глоссарием и является описанием сущности данного элемента. Например, для управляющей интерфейсной дуги «распоряжение об оплате» глоссарий может содержать перечень полей соответствующего дуге документа, необходимый набор виз и т.д. Глоссарий гармонично дополняет наглядный графический язык, снабжая диаграммы необходимой дополнительной информацией. Глоссарии реализованы в виде свойств каждого объекта, которые создаются всякий раз при его создании.
Обычно IDEF0-модели несут в себе сложную и концентрированную информацию. Для ограничения их перегруженности и удобочитаемости, в стандарте приняты соответствующие ограничения сложности:
· ограничение количества функциональных блоков на диаграмме тремя-шестью. Верхний предел (шесть) заставляет разработчика использовать иерархии при описании сложных объектов, а нижний предел (три) гарантирует, что на соответствующей диаграмме достаточно деталей, чтобы оправдать ее создание;
· ограничение количества подходящих к одному функциональному блоку (выходящих из одного функционального блока) интерфейсных дуг четырьмя.
Разумеется, строго следовать этим ограничениям вовсе необязательно, однако они являются весьма действенными в реальной работе.
Стандарт IDEF0 содержит набор процедур, позволяющих разрабатывать и согласовывать модель большой группой людей, принадлежащих к разным областям деятельности моделируемой системы. Обычно процесс разработки является итеративным и состоит из следующих условных этапов:
· создание модели группой специалистов, относящихся к различным сферам деятельности предприятия. Эта группа в терминах IDEF0 называется авторами (Authors). Построение первоначальной модели является динамическим процессом, в течение которого авторы опрашивают компетентных лиц о структуре различных процессов. На основе имеющихся положений, документов и результатов опросов создается черновик (Model Draft) модели;
· распространение черновика для рассмотрения, согласований и комментариев. На этой стадии происходит обсуждение черновика модели с широким спектром компетентных лиц (в терминах IDEF0 – экспертов и читателей) на предприятии. При этом каждая из диаграмм черновой модели письменно критикуется и комментируется, а затем передается автору. Автор, в свою очередь, также письменно соглашается с критикой или отвергает ее с изложением логики принятия решения и вновь возвращает откорректированный черновик для дальнейшего рассмотрения. Этот цикл продолжается до тех пор, пока авторы и читатели не придут к единому мнению.
· официальное утверждение модели. Утверждение согласованной модели происходит руководителем рабочей группы в том случае, если у авторов модели и читателей отсутствуют разногласия по поводу ее адекватности. Окончательная модель представляет собой согласованное представление о предприятии (системе) с заданной точки зрения и для заданной цели.
Наглядность графического языка IDEF0 делает модель вполне читаемой и для лиц, которые не принимали участия в проекте ее создания, а также эффективной для проведения показов и презентаций. В дальнейшем, на базе построенной модели могут быть организованы новые проекты, нацеленные на производство изменений на предприятии (в системе).
Обобщая сказанное, моделирование с использованием метода IDEF0 включает:
1) концептуальный этап (определение объекта и цели моделирования, обоснование точки зрения, подбор субъектов и установление сроков моделирования);
2) этап разработки модели (построение IDEF0-диаграмм, проведение циклов «автор-читатель»);
3) проведение экспериментов с моделью (изучение модели «AS IS», получение ответов на вопросы типа «что будет если...»);
4) интерпретация результатов (построение модели «TO BE», документирование результатов).