Оригинальная документация на IDEF1X содержит не только описание визуального языка, но рекомендации по моделированию. В частности, разработчики предлагают придерживаться описываемой ниже последовательности действий.
1. подготовка;
2. определение сущностей;
3. определение отношений;
4. определение ключей;
5. определение атрибутов.
Каждая фаза состоит из нескольких шагов, отличающихся друг от друга по содержанию.
Фаза
| Шаг
| Описание
|
1.
| 1.1. Определение целей моделирования
| Должны быть определены назначение модели и границы моделирования (очерчена область моделирования). Например, необходимо определиться, будет ли это модель типа «как есть» на самом деле (as is), или типа «как должно быть» (should be).
|
| 1.2. Разработка плана моделирования
| Необходимо установить состав и последовательность выполнения работ, участие персонала, а также оценить затраты.
|
| 1.3. Организация команды
| Участники команды должны совместно выполнять по крайней мере пять основных ролей: руководитель, моделировщик, поставщик информации, эксперт в предметной области, участник группы приемочного контроля. Назначение каждому участнику команды одной основной роли позволит распределить ответственность.
|
| 1.4. Сбор информации
| Сбор материала для моделирования на основе сформулированных целей.
|
| 1.5. Утверждение условных соглашений
| Согласование условных соглашений, форм представления информации. Например, правил формирования наименований сущностей.
|
2.
| 2.1. Выявление сущностей
| Поиск объектов, которые могут стать сущностями. При выявлении сущностей может быть полезно отвечать на такой набор вопросов относительно каждого объекта-кандидата:
- имеет ли объект различимые характеристики?
- существует ли несколько экземпляров объекта?
- отличим ли один экземпляр от другого?
- ссылается ли он на что-то или характеризует что-то?
Положительные ответы на первые три вопроса идут в пользу того, что объект надо рассматривать как сущность, положительный ответ на последний вопрос свидетельствует в пользу варианта атрибутного характера.
|
| 2.2. Определение сущностей
| Составление словаря сущностей, включающего: наименование сущности, пояснение смысла сущности (собственно определение), синонимы наименования сущности.
|
3.
| 3.1. Выявление взаимосвязанных сущностей
| Определение пар сущностей, между которыми может существовать связь. Новичкам может быть полезно воспользоваться матрицей связей, в которой строки и столбцы помечены наименованиями сущностей, а факт возможной связи между сущностью-строкой и сущностью-столбцом показывается крестом в ячейке пересечения этих строки и столбца.
|
| 3.2. Определение отношений
| Для каждой выявленной связь указывается вид зависимости сущностей, наименование и развернутое словесное описание. Естественно, в процессе определения отношений могут быть отвергнуты одни выявленные связи и/или добавлены другие.
|
| 3.3. Построение концептуального уровня модели
| Изображается концептуальный уровень модели, содержащий определенные ранее сущности и отношения, при этом допустимо использовать связи «многие ко многим».
|
4.
| 4.1. Устранение неопределенных отношений
| Все неопределенные отношения заменяются на совокупность связей «один ко многим» и/или связей типа «наследование», при этом обычно формируются новые сущности. Как правило, новые сущности абстрактны, имеют вспомогательный характер и отражают взаимодействие исходных сущностей. Наименования новых сущностей часто сложные, например: сущность «Поставщик-склад» описывает некоторое отношение между сущностью «Поставщик» и сущностью «Склад».
|
| 4.2. Формирование функциональных представлений.
| Поскольку модель становится сложна, то эффективной работы с ней, в частности рецензирования, целесообразно нарисовать некоторое количество фрагментов, соответствующих определенной точке зрения, — так называемых функциональных представлений. Каждое представление изображается на одной диаграмме.
|
| 4.3. Выявление первичных ключей
| Выявляются все кандидаты на роль первичного ключа, из них выбирается первичный ключ. Оставшиеся ключи помечаются как альтернативные первичные ключи (alternate key)
|
| 4.4. Миграция первичных ключей
| Первичный ключ родительской (родовой) сущности добавляется в состав атрибутов дочерней (категориальной) сущности. Он становится так называемым внешним ключом (foreign key). В зависимости от вида связи ключ может войти в состав как первичного ключа, так и описательных атрибутов.
|
| 4.5. Проверка ключей и отношений
| Модель должна удовлетворять следующим основным требованиям:
- отсутствие отношений «многие ко многим»;
- осуществлено добавление (миграция) внешних ключей в соответствии с имеющимися отношениями;
- все атрибуты атомарны, т.е. атрибут любого экземпляра сущности может иметь только одно значение;
- никакой атрибут первичного ключа не может принимать неопределенное значение;
- сущности со сложным (многоатрибутным) первичным ключом не могут быть разделены на несколько сущностей с более простыми уникальными ключами;
- нет дублирования отношений, когда пара сущностей связываются одинаковыми отношениями, но по различным путям, обычно с использованием промежуточных сущностей.
|
| 4.6. Определение ключей
| Для каждого ключа указывается наименование, определение, синонимы.
|
| 4.7. Формирование логического уровня модели
| Функциональные представления модели изображаются на логическом уровне, т.е. они включают сущности, отношения, первичные и внешние ключи.
|
5.
| 5.1. Выявление неключевых атрибутов
| Процесс аналогичен вычленению сущностей, но теперь отбираются характеристики.
|
| 5.2. Привязка атрибутов к сущностям
| Каждый атрибут должен быть помещен в состав одной из сущностей.
|
| 5.3. Определение атрибутов
| Для каждого атрибута указывается наименование, определение, синонимы.
|
| 5.4. Усовершенствование модели
| Анализ и улучшение структуры модели, нормализация.
|
| 5.5. Формирование физического уровня модели
| Функциональные представления модели изображаются на физическом уровне, т.е. они включают полные описания сущностей, всех атрибутов и отношений. На основе словарей сущностей, атрибутов и отношений формируется документация.
|