Text
                    С. В. Маклаков
Создание
информационных
систем
с AllFusion Modeling Suite

Москва . “^ИИИОГШИФИ” . 2003

УДК 681.3 ББК 32.97 М15 Маклаков С. В. М15 Создание информационных систем с AllFusion Modeling Suite. - М.: ДИАЛОГ-МИФИ, 2003 -432 с. ISBN 5-86404-181-5 Книга представляет собой практическое руководство по созданию инфор- мационных систем с помощью пакета CASE-средства фирмы Computer Associates - AllFusion Modeling Suite. Она содержит описание методологии в объеме, необходи- мом для практической работы, а также набор примеров и упражнений. Детально опи- сано каждое из инструментальных средств, входящих в пакет AllFusion Modeling Suite: • AllFusion Process Modeler 4.1 (BPwin 4.1); • AllFusion ERwin Data Modeler 4.1 (ERwin 4.1); • AllFusion Data Model Validator 4.1 (ERwin Examiner); • AllFusion Model Manager 4.1 (ModelMart 4.1); • AllFusion Component Modeler 4.1 (Paradigm Plus). Книга предназначена как для специалистов в области информационных техноло- гий (системных аналитиков, проектировщиков, администраторов баз данных), так и для студентов, изучающих основы системного анализа и проектирования информаци- онных систем. Учебно-справочное издание Маклаков Сергей Владимирович Создание информационных систем с AllFusion Modeling Suite Редактор О. А. Голубев Корректор В. С. Кустов Макет И. М. Чумаковой Лицензия ЛР N 071568 от 25.12.97. Подписано в печать 4.04.2003 Формат 60x84/16. Бум. офс. Печать офс. Гарнитура Таймс. Усл. печ. л. 25,11. Уч.-изд. л. 13,79. Тираж 3 000 экз. Заказ SH, Закрытое акционерное общество “ДИАЛОГ-МИФИ” 115409, Москва, ул. Москворечье, 31, корп. 2. Т.: 320-43-55, 320-43-77 Http://www.bitex.ru/~dialog. E-mail; dialog@bitex.ru Подольская типография 142100, г. Подольск, Московская обл., ул. Кирова, 25 ISBN 5-86404-181-5 © Маклаков С. В., 2003 © Оригинал-макет, оформление обложки ЗАО “ДИАЛОГ-МИФИ”, 2003
Предисловие В 1998 году вышла книга автора, посвященная инструментальным сред- ствам системного анализа и проектирования информационных систем- BPwin и ERwin (Маклаков С. BPwin и ERwin. CASE-средства разработки информационных систем. М.: Диалог-МИФИ). Книга выдержала два изда- ния и пользовалась популярностью среди специалистов в области инфор- мационных технологий. BPwin является средством, которое позволяет облегчить проведение об- следования предприятия и построить функциональные модели. ERwin явля- ется системой проектирования баз данных. С 1998 года эти инструменталь- ные средства непрерывно совершенствовались. Логическим завершением этого развития явился выпуск в 2002 году фирмой Computer Associates (СА) интегрального пакета инструментальных средств, поддерживающих все эта- пы разработки информационных систем - AllFusion Modeling Suite 4.1. В этот пакет входит 5 продуктов: 1. AllFusion Process Modeler 4.1. AllFusion Process Modeler является новым именем хорошо известного BPwin. Вообще говоря, в документации и пресс-релизах СА используются оба наименования - новое AllFusion Process Modeler 4.1 и "старое" BPwin 4.1. В предлагаемой читателю кни- ге будут также использоваться оба наименования, причем это относится как к AllFusion Process Modeler, так и к другим продуктам, входящим в AllFusion Modeling Suite. 2. AllFusion ERwin Data Modeler 4.1 - инструмент создания моделей дан- ных и генерации схем баз данных. "Старое" название - ERwin 4.1. 3. AllFusion Data Model Validator 4.1 - система поиска и исправления оши- бок модели данных. Прежнее название - ERwin Examiner. 4. AllFusion Model Manager 4.1. Система организации коллективной работы, хранилище моделей BPwin и ERwin. "Старое" название - ModelMart 4.1. 5. AllFusion Component Modeler 4.1 - инструмент создания объектных мо- делей. "Старое" название - Paradigm Plus. Выход нового интегрированного пакета инструментальных средств Computer Associates и пожелания читателей побудили автора написать кни- гу, представляющую собой практическое руководство по созданию инфор- мационных систем с помощью эффективных инструментов анализа, проек- 21И4ИОГЛ1И0И 3
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suita тирования и кодогенерации AllFusion Modeling Suite 4.1. Она адресована специалистам в области информационных технологий: системным аналити- кам, руководителям проектов, разработчикам - и может быть также полезна для студентов и аспирантов, изучающих основы системного анализа и про- ектирования информационных систем. Книга состоит из семи глав и двух приложений. Гл. 1 посвящена изложению основ методологии функционального моде- лирования и построению моделей IDEFO, IDEF3 и DFD с помощью AllFu- sion Process Modeler. В ней также рассматриваются стоимостный анализ и основы имитационного моделирования. В гл. 2 рассматриваются принципы построения модели данных и генера- ции баз данных с помощью ERwin. В гл. 3 излагаются принципы создания отчетов на основе информации функциональной модели и модели данных. Рассматриваются как встроен- ные средства BPwin и ERwin, предназначенные для создания отчетов, так и использование внешних генераторов отчетов RPTwin и Crystal Reports. Гл. 4 посвящена анализу, поиску и исправлению ошибок моделирования данных с помощью AllFusion Data Model Validator. В гл. 5 рассматривается связывание модели данных и функциональной модели. В гл. 6 описываются методы коллективной работы над большими проек- тами и специализированное хранилище ModelMart, предназначенное для хранения, документирования, слияния, интеграции и сравнения моделей, созданных в BPwin и ERwin. Гл. 7 посвящена языку объектного проектирования UML, построению объектной модели с помощью AllFusion Component Modeler и технологии связывания объектной модели с моделью данных ERwin. Приложение А представляет собой практикум по созданию функциональ- ной модели с помощью BPwin. Оно содержит 16 сквозных упражнений. Приложение Б содержит список макросов ERwin. Автор приносит благодарность фирме ЗАО "Инновация +" (www.innoplus.ru) за возможность использования лицензионных программных средств. Автор также благодарит Матвеева Дениса Викторовича за помощь в создании гл. 7. Особую признательность автор выражает своей жене Елене за помощь в оформлении рукописи. 4
Введение Введение Технология создания информационных систем (далее - ИС) предъявляет особые требования к методикам реализации и программным инструмен- тальным средствам, а именно: 1. Реализацию проектов по созданию ИС принято разбивать на стадии ана- лиза (прежде чем создавать ИС, необходимо понять и описать бизнес- логику предметной области), проектирования (необходимо определить модули и архитектуру будущей системы), непосредственного кодирова- ния, тестирования и сопровождения. Известно, что исправление ошибок, допущенных на предыдущей стадии, обходится примерно в 10 раз доро- же, чем на текущей, откуда следует, что наиболее критическими являют- ся первые стадии проекта. Поэтому крайне важно иметь эффективные средства автоматизации ранних этапов реализации проекта. 2. Проект по созданию сложной ИС невозможно реализовать в одиночку. Коллективная работа существенно отличается от индивидуальной, по- этому при реализации крупных проектов необходимо иметь средства координации и управления коллективом разработчиков. 3. Жизненный цикл создания сложной ИС сопоставим с ожидаемым вре- менем ее эксплуатации. Другими словами, в современных условиях ком- пании перестраивают свои бизнес-процессы примерно раз в два года, столько же требуется (если работать в традиционной технологии) для создания ИС. Может оказаться, что к моменту сдачи ИС она уже никому не нужна, поскольку компания, ее заказавшая, вынуждена перейти на новую технологию работы. Следовательно, для создания ИС жизнен- но необходим инструмент, значительно (в несколько раз) уменьшающий время разработки ИС. 4. Вследствие значительного жизненного цикла может оказаться, что в про- цессе создания системы внешние условия изменились. Обычно внесение из- менений в проект на поздних этапах создания ИС - весьма трудоемкий и до- рогостоящий процесс. Поэтому для успешной реализации крупного проекта необходимо, чтобы инструментальные средства, на которых он реализует- ся, были достаточно гибкими к изменяющимся требованиям. На современном рынке средств разработки ИС достаточно много систем, в той или иной степени удовлетворяющих перечисленным требованиям. 5
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В настоящей книге рассматривается вполне конкретная технология разра- ботки (см. рисунок), основывающаяся на решениях фирмы Computer Asso- ciates, которая является, по мнению автора, одной из лучших на сегодняш- ний день по критерию стоимость/эффективность. Общая схема взаимодействия инструментальных средств AllFusion Modeling Suite 4.1 Для проведения анализа и реорганизации бизнес-процессов предназна- чено CASE-средство верхнего уровня AllFusion Process Modeler (BPwin), поддерживающее методологии IDEF0 (функциональная модель), IDEF3 (WorkFlow Diagram) и DFD (DataFlow Diagram). Функциональная модель предназначена для описания существующих бизнес-процессов на предпри- ятии (так называемая модель AS-IS) и идеального положения вещей - того, к чему нужно стремиться (модель ТО-BE). Методология IDEF0 предписы- вает построение иерархической системы диаграмм - единичных описаний фрагментов системы. Сначала проводится описание системы в целом и ее взаимодействия с окружающим миром (контекстная диаграмма), после чего проводится функциональная декомпозиция - система разбивается на под- системы и каждая подсистема описывается отдельно (диаграммы декомпо- зиции). Затем каждая подсистема разбивается на более мелкие и так далее до достижения нужной степени подробности. После каждого сеанса деком- позиции проводится сеанс экспертизы: каждая диаграмма проверяется экс- пертами предметной области, представителями заказчика, людьми, непо- 6
Введение средственно участвующими в бизнес-процессе. Такая технология создания модели позволяет построить модель, адекватную предметной области на всех уровнях абстрагирования. Если в процессе моделирования нужно осветить специфические стороны технологии предприятия, BPwin позволя- ет переключиться на любой ветви модели на нотацию IDEF3 или DFD и создать смешанную модель. Нотация DFD включает такие понятия, как "внешняя ссылка" и "хранилище данных", что делает ее более удобной (по сравнению с IDEF0) для моделирования документооборота. Методоло- гия IDEF3 включает элемент "перекресток", что позволяет описать логику взаимодействия компонентов системы. На основе модели BPwin можно построить модель данных. Для построе- ния модели данных Computer Associates предлагает мощный и удобный ин- струмент - AllFusion ERwin Data Modeler (ERwin). Хотя процесс преобразо- вания модели BPwin в модель данных плохо формализуется и поэтому пол- ностью не автоматизирован, Computer Associates предлагает удобный инструмент для облегчения построения модели данных на основе функцио- нальной модели - механизм двунаправленной связи BPwin - ERwin (стрел- ка 1 на рисунке). ERwin имеет два уровня представления модели - логиче- ский и физический, причем модель данных может содержать как оба этих уровня, так и только один из них. Модели, содержащие только один уро- вень, могут быть синхронизированы, что особенно удобно при создании ге- терогенных информационных систем. На логическом уровне данные не свя- заны с конкретной СУБД, поэтому могут быть наглядно представлены даже для неспециалистов. Физический уровень данных - это, по существу, ото- бражение системного каталога, который зависит от конкретной реализации СУБД. Создание одного логического уровня и нескольких соответствующих ему физических позволяет вести одновременную разработку баз данных для нескольких СУБД. ERwin позволяет проводить процессы прямого и обрат- ного проектирования баз данных (стрелка 2). Это означает, что по модели данных можно сгенерировать схему базы данных или автоматически соз- дать модель данных на основе информации системного каталога. Кроме то- го, ERwin позволяет выравнивать модель и содержимое системного катало- га после редактирования. Для больших, содержащих сотни таблиц моделей данных существенной проблемой становится поиск и исправление ошибок. Решение этой пробле- мы вручную - слишком трудоемкая задача, которая может недопустимо за- тянуть выполнение проекта. AllFusion Data Model Validator (ERwin Exami- ner) - основанный на базе знаний инструмент, который позволяет анализи- ровать структуру баз данных с целью выявления недочетов и ошибок проек- 7
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite тирования. ERwin Examiner дополняет функциональность ERwin, автомати- зируя трудоемкую задачу поиска и исправления ошибок. ERwin Examiner может использовать в качестве источника метаданных готовую модель ER- win, DDL-скрипт или провести обратное проектирование базы данных (стрелки 3 и 4). При проектировании больших ИС ключевой проблемой является созда- ние качественной документации по моделям. BPwin и ERwin позволяют ге- нерировать разнообразные отчеты, которые могут быть использованы для анализа и документирования моделей. Отчеты могут быть экспортированы в распространенные форматы - текстовый, MS Office, HTML и др. Резуль- таты экспорта могут быть использованы для создания отчетов с помощью средств других производителей, например Crystal Reports. BPwin поддержи- вает также экспорт и импорт модели в текстовый файл формата IDL, кото- рый является стандартом для экспорта и импорта моделей IDEF0, позволяет разрабатывать функциональные модели одновременно инструментальными средствами различных производителей. Создание современных ИС, основанных на широком использовании рас- пределенных вычислений, объединении традиционных и новейших инфор- мационных технологий, требует тесного взаимодействия всех участников проекта: менеджеров, бизнес-аналитиков и системных аналитиков, админи- страторов баз данных, разработчиков. Для этого использующиеся на разных этапах и разными специалистами средства моделирования и разработки должны быть объединены общей системой организации совместной работы. Фирма Computer Associates предлагает систему ModelMart - хранилище мо- делей, к которому открыт доступ для участников проекта создания ИС (стрелка 5 на рисунке). ModelMart удовлетворяет всем требованиям, предъ- являемым к средствам разработки крупных ИС, а именно: 1. Совместное моделирование. Каждый участник проекта имеет инстру- мент поиска и доступа к интересующей его модели в любое время. При совместной работе используются 3 режима: незащищенный, защищен- ный и режим просмотра. В режиме просмотра запрещается любое изме- нение моделей. В защищенном режиме модель, с которой работает один пользователь, не может быть изменена другими пользователями. В неза- щищенном режиме пользователи могут работать с общими моделями в реальном масштабе времени. Возникающие при этом конфликты раз- решаются при помощи специального модуля. В дополнение к стан- дартным средствам организации совместной работы ModelMart позволя- ет сохранять множество версий, снабженных аннотациями, с последую- 8
Введение щам сравнением предыдущих и новых версий. При необходимости воз- можен возврат к предыдущим версиям. 2. Создание библиотек решений. ModelMart позволяет формировать биб- лиотеки стандартных решений, содержащие наиболее удачные фрагмен- ты реализованных проектов, накапливать и использовать типовые моде- ли, объединяя их при необходимости "сборки" больших систем. На ос- нове существующих баз данных с помощью ERwin возможно восстанов- ление моделей (обратное проектирование), которые в процессе анализа пригодности их для новой системы могут объединяться с типовыми мо- делями из библиотек моделей. 3. Управление доступом. Для каждого участника проекта определяются права доступа, в соответствии с которыми они получают возможность работать только с определенными моделями. Права доступа могут быть определены как для групп, так и для отдельных участников проекта. Роль специалистов, участвующих в различных проектах, может менять- ся, поэтому в ModelMart можно определять права доступа и управлять правами доступа участников проекта к библиотекам, моделям и даже к специфическим областям модели. 4. Архитектура ModelMart. ModelMart реализована на архитектуре клиент- сервер. В качестве платформы реализации хранилища выбраны РСУБД Sybase, Microsoft SQL Server, Informix и Oracle. Клиентскими приложе- ниями являются ERwin и BPwin. В ModelMart реализован доступ к хра- нилищу моделей через API, что позволяет постоянно наращивать воз- можности интегрированной среды путем включения новых инструмен- тов моделирования и анализа. Как было указано выше (см. п. 3), при разработке крупных проектов критическим становится время реализации проекта. Одним из решений про- блемы может стать автоматическая генерация кода приложения CASE- средствами на основе модели предметной области. Эту задачу решает тех- нология кодогенерации, основанная на объектно-ориентированном проек- тировании. Существует несколько CASE-средств, поддерживающих языки объектно-ориентированного проектирования, в том числе ставший в по- следнее время стандартом UML. Одним из них является AllFusion Compo- nent Modeler (Paradigm Plus). Этот инструмент позволяет строить объектные модели и генерировать на основе полученной модели приложения на языках программирования C++, Visual Basic, Java и др. Поскольку генерация кода реализована на основе знаний предметной области, полученный код адек- 9
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite ватно отражает бизнес-логику. Paradigm Plus поддерживают не только пря- мую генерацию кода, но и обратное проектирование, т. е. создание объект- ной модели по исходному коду приложения (рис. 1, стрелка 6). В гл. 7 в качестве примера рассматриваются основные принципы пост- роения объектной модели при помощи AllFusion Component Modeler (Para- digm Plus). В ней также рассматривается преобразование объектной модели Paradigm Plus в модель данных ERwin и обратно (рис. 1 стрелка 8). 10
________________Гпава 1__________________ Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 (BPwin 4.1) 1.1. Инструментальная среда BPwin 4.1 1.1.1. Общее описание интерфейса BPwin 4.1 BPwin имеет достаточно простой и интуитивно понятный интерфейс пользователя, дающий возможность аналитику создавать сложные модели при минимальных усилиях. Computer Associates BPwin - ЦА-О) MANAGE MOVIE RENTAL - Movie Rental [Dde.bp! ]] l± ->Eie Edu View Pricing BPwin - Aligning Technology with Business Process |Й| Movtc Rent :"й-Ь MANAGE MOVIE RENTAL H-И RENT MOVIE i-И VALIDATE CUSTOMER [- SCAN MOVIE 4a PRODUCE RENTAL IN1» & PROCESS RETURNS " r« RECEIVE MOVIE Existing jCuatOiwsx- Employee Jd___________ Customer Jtetails_____ Movie ..Bet айв.... MANAGE MOVIE RBI I Al. II 4в INSPECT FOR DAMAGE* । Validate Special -Mode! Rental Clerk NUM Рис. 1.1.1. Интегрированная среда разработки модели BPwin 4.1 При запуске BPwin по умолчанию появляется основная панель инстру- ментов, палитра инструментов (вид которой зависит от выбранной нота- ции) и, в левой части, навигатор модели - Model Explorer (рис. 1.1.1). zirwiormnon и
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Функциональность панели инструментов доступна из основного меню BPwin (табл. 1.1.1). Таблица 1.1.1. Описание элементов управления основной панели инструментов BPwin 4.1 Элемент управления Описание Соответствующий пункт меню IQj Создать новую модель File/New Qi? I Открыть модель File/Open Сохранить модель File/Save Напечатать модель File/Print Вызвать генератор отчетов Report Builder Tools/Report Builder |55Г. Выбор масштаба View/Zoom |р|Е0| Масштабирование View/Zoom ли Проверка правописания Tools/Spelling ид Включение и выключение навигатора мо- дели Model Explorer View/Model Explorer Включение и выключение дополнительной панели инструментов работы с ModelMart ModelMart L1.2. Создание новой модели При создании новой модели возникает диалог, в котором следует ука- зать, будет ли создана модель заново, или она будет открыта из файла либо из хранилища ModelMart, внести имя модели и выбрать методологию, в ко- торой будет построена модель (рис. 1.1.2). Как было указано выше, BPwin поддерживает три методологии - IDEF0, IDEF3 и DFD, каждая из которых решает свои специфические задачи. В BPwin возможно построение смешанных моделей, т. е. модель может со- держать одновременно как диаграммы IDEF0, так и диаграммы IDEF3 и DFD. Состав палитры инструментов изменяется автоматически, когда происходит переключение с одной нотации на другую, поэтому палитра ин- струментов будет рассмотрена позже. 12
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 И BPwin (Г gumeaPi6cen(IDEFtn Г Eiocew Flow (IDEF3I Рис. 1.1.2. Диалог создания модели После щелчка по кнопке ОК появляется диалог Properties for New Models (рис. 1.1.3), в который следует внести свойства модели. (Более подробно свойства модели будут рассмотрены в 1.2.1.) Рис. 1.1.3. Диалог Properties for New Models 13
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Модель в BPwin рассматривается как совокупность работ, каждая из ко- торых оперирует некоторым набором данных. Работа изображается в виде прямоугольников, данные - в виде стрелок. Если щелкнуть по любому объ- екту модели левой кнопкой мыши, появляется всплывающее контекстное меню, каждый пункт которого соответствует редактору какого-либо свойст- ва объекта. 1.1.3. Установка цвета и шрифта объектов Пункты контекстного меню Font и Color вызывают диалог Arrow Properties или Activity Properties для установки шрифта (в том числе его раз- мера и стиля) и цвета объекта. В нижней части вкладки Font диалогов Arrow Properties и Activity Properties (рис. 1.1.4) находятся группа опций Apply setting to, позволяющих изменить шрифт для всех работ или стрелок на текущей диаграмме, в модели, и группа Global, позволяющая изменить шрифт одновременно для всех объектов модели. Рис. 1.1.4. Вкладка Font диалога Activity Properties Кроме того, BPwin позволяет установить шрифт по умолчанию для объ- ектов определенного типа на диаграммах и в отчетах. Для этого следует вы- брать меню Model/Default Fonts, после чего появляется следующее каскад- ное меню, каждый пункт которого служит для установки шрифтов для оп- ределенного типа объектов: 14
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 • Context Activity - работа на контекстной диаграмме; • Context Arrow - стрелки на контекстной диаграмме; • Decomposition Activity - работы на диаграмме декомпозиции; • Decomposition Arrow - стрелки на диаграмме декомпозиции; • Node Tree Text - текст на диаграмме дерева узлов; • Frame User Text - текст, вносимый пользователем в каркасе диаграмм; • Frame System Text - системный текст в каркасе диаграмм; • Text Blocks - текстовые блоки; • Parent Diagram Text - текст родительской диаграммы; • Parent Diagram Title Text - текст заголовка родительской диаграммы; • Report Text - текст отчетов. Если на компьютере установлена операционная система Windows NT, возможно некорректное отображение на диаграммах кириллических шрифтов. Для корректной работы BPwin необходимо отредактировать регистры NT. В разделе HKEY_LOCAL_MACHINE SOFTWARE Microsoft WindowsNT CurrentWersion FontMapper следует установить 204-ю таблицу - DEFAULT ОХООООООсс (204). В разделе HKEY_LOCAL_MACHINE SOFTWARE Microsoft WindowsNT CurrentWersion FontSubstitutes следует для всех стандартных шрифтов установить ссылку на 204-ю табли- цу, например: Arial,0 "Arial,204" 15
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 1.1.4. Model Explorer - навигатор модели процессов Инструмент навигации Model Explorer имеет три вкладки - Activities, Diagrams и Objects. Вкладка Activities (рис. 1.1.5) показывает в виде раскры- вающегося иерархического списка все работы модели. Одновременно могут быть показаны все модели, открытые в BPwin. Работы с диаграмм IDEF0 показываются зеленым цветом, IDEF3 - желтым и DFD - голубым. Деятельность компании ЁНВ Сборка продета Подготовка компонент ьа Установка материнской платы и винчеСТ Рис. 1.1.5. Вкладка Activities навигатора Model Explorer В Деятельность компании Разработать конфигурацию ЙИ Продажи и маркетинг 1-а Предоставление информации о ценах фЯ Оформление заказов &Д Исследование рынка S Разработке прогнозов продаж Разработке маркеткгоеых материалов Привлечение новых клиентов Производство продукта__________________ Т вотирование компьютеров Установка модема Установка дисковода CD-ROM _________ Установка флоппи- дисковода -S Инсталляция допо/иигельного програм* L-B Инсталляция операционкой системы HS Отгрузка и получение Щелчок по работе во вкладке Activity переключает левое окно BPwin на диаграмму, на которой эта работа размещена. Для редактирования свойств работы следует щелкнуть по ней правой кнопкой мыши. Появляется контекстное меню. В табл. 1.1.2 приведено значение пунктов меню. Таблица 1.1.2. Контекстное меню редактирования свойств работы Пункт меню Описание Insert Before Создать новую работу на той же самой диаграмме. В списке работ новая работа будет вставлена перед текущей Insert After Создать новую работу на той же самой диаграмме. В списке работ новая работа будет вставлена после текущей Decompose Декомпозировать работу. В результате будет создана новая диаграмма декомпозиции 16
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Пункт меню Описание Name Вызов редактора имени работы Definition/Note Вызов редактора определения и примечания к работе Font Изменения шрифта работы Color Изменения цвета работы Costs Задание стоимости работы Data Usage Ассоциация работы с данными UDP Задание свойств, определяемых пользователем UOW Задание свойств для работ IDEF3 Если с помощью вкладки Activities можно перейти на стандартные диа- граммы (контекстную и декомпозиции, см. 1.2), то вторая вкладка - Diag- rams (рис. 1.1.6)- служит для перехода на любую диаграмму модели. ж Деятельность компании Деятемйюсп» компании ВВ Продажи и маркетинг | |4Я Оформление заказов ____| Исследование рьнса . Производство продукт, i ёДЯ Сборка продакта I Тестирование компьютеров чя Отгрузка и получение Swtn Lane diagrams Organization Charts Node T rec diagram Дерево узлов “Деятельность компании Quff * FEO diagrams FEO для анализа работы Сборка и тестирование компьютеров . нмв Продажи иИмаркетмнг IDEF3 Scenario diagram рЙЯ FEO Сценарий* путь неисправных компонент. FEO * Сценарий * Сборка настольных компьютеров * 1. Рис. 1.1.6. Вкладка Diagrams навигатора Model Explorer После перехода на вкладку Objects на ней показываются все объекты, соответствующие выбранной на вкладке Diagrams диаграмме, в том числе работы, хранилища данных, внешние ссылки, объекты ссылок и перекрест- ки (рис. 1.1.7). 17
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite -jJjsi F-@ Отслеживание расписания и управление сборкой и тестированием Сборка настольных компьютеров Сборка ноутбуков [Е Data Store* Список заказов г-[Е Список клиентов ME Список продуктов I-:; п External References 1~1Я Звонки клиентов ,'й^ Маркетинговые материалы . ж 5-1п Прогноз продаж Рис. 1.1.7. Вкладка Objects навигатора Model Explorer 1.2. Создание модели в стандарте IDEF0 1.2.1. Принципы построения модели IDEF0 На начальных этапах создания ИС необходимо понять, как работает ор- ганизация, которую собираются автоматизировать. Для описания работы предприятия необходимо построить модель. Такая модель должна быть аде- кватна предменной области; следовательно, она должна содержать в себе знания всех участников бизнес-процессов организации. Наиболее удобным языком моделирования бизнес-процессов является IDEF0, предложенный более 20 лет назад Дугласом Россом (SoftTech, Inc.) и называвшийся первоначально SADT - Structured Analysis and Design Tech- nique. (Подробно методология SADT излагается в книге Дэвида А. Марка и Клемента Мак-Гоуэна "Методология структурного анализа и проектиро- вания SADT" (М.: Метатехнология, 1993.) В начале 70-х годов вооруженные силы США применили подмножество SADT, касающееся моделирования процессов, для реализации проектов в рамках программы ICAM (Integrated Computer-Aided Manufacturing). В дальнейшем это подмножество SADT бы- ло принято в качестве федерального стандарта США под наименованием IDEF0. Подробные спецификации на стандарты IDEF можно найти на сайте http://www.idef.com. В IDEFO система представляется как совокупность взаимодействующих работ или функций. Такая чисто функциональная ориентация является принципиальной - функции системы анализируются независимо от объек- 18
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 тов, которыми они оперируют. Это позволяет более четко смоделировать логику и взаимодействие процессов организации. Под моделью в IDEF0 понимают описание системы (текстовое и графичес- кое), которое должно дать ответ на некоторые заранее определенные вопросы. Моделируемая система рассматривается как произвольное подмно- жество Вселенной. Произвольное потому, что, во-первых, мы сами умозри- тельно определяем, будет ли некий объект компонентом системы, или мы будем его рассматривать как внешнее воздействие, и, во-вторых, оно зави- сит от точки зрения на систему. Система имеет границу, которая отделяет ее от остальной Вселенной. Взаимодействие системы с окружающим миром описывается как вход (нечто, что перерабатывается системой), выход (ре- зультат деятельности системы), управление (стратегии и процедуры, под управлением которых производится работа) и механизм (ресурсы, необ- ходимые для проведения работы). Находясь под управлением, система пре- образует входы в выходы, используя механизмы. Процесс моделирования какой-либо системы в IDEF0 начинается с опре- деления контекста, т. е. наиболее абстрактного уровня описания системы в целом. В контекст входит определение субъекта моделирования, цели и точки зрения на модель. Под субъектом понимается сама система, при этом необходимо точно установить, что входит в систему, а что лежит за ее пределами; другими словами, мы должны определить, что мы будем в дальнейшем рассмат- ривать как компоненты системы, а что как внешнее воздействие. На опреде- ление субъекта системы будет существенно влиять позиция, с которой рас- сматривается система, и цель моделирования - вопросы, на которые постро- енная модель должна дать ответ; другими словами, первоначально необ- ходимо определить область (Scope) моделирования. Описание области как системы в целом, так и ее компонентов является основой построения моде- ли. Хотя предполагается, что в течение моделирования область может кор- ректироваться, она должна быть в основном сформулирована изначально, поскольку именно область определяет направление моделирования и когда должна быть закончена модель. При формулировании области необходимо учитывать два компонента - широту и глубину. Широта подразумевает оп- ределение границ модели-мы определяем, что будет рассматриваться внутри системы, а что снаружи. Глубина определяет, на каком уровне дета- лизации модель является завершенной. При определении глубины системы необходимо не забывать об ограничениях времени - трудоемкость построе- ния модели растет в геометрической прогрессии от глубины декомпозиции. 19
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite После определения границ модели предполагается, что новые объекты не должны вноситься в моделируемую систему; поскольку все объекты модели взаимосвязаны, внесение нового объекта может быть не просто арифмети- ческой добавкой, но в состоянии изменить существующие взаимосвязи. Внесение таких изменений в готовую модель является, как правило, очень трудоемким процессом (так называемая проблема "плавающей области"). Цель моделирования (Purpose). Модель не может быть построена без чет- ко сформулированной цели. Цель должна отвечать на следующие вопросы: • Почему этот процесс должен быть замоделирован? • Что должна показывать модель? • Что может получить читатель? Формулировка цели позволяет команде аналитиков сфокусировать уси- лия в нужном направлении. Примерами формулирования цели могут быть следующие утверждения: "Идентифицировать и определить текущие про- блемы, сделать возможным анализ потенциальных улучшений", "Идентифи- цировать роли и ответственность служащих для написания должностных инструкций", "Описать функциональность предприятия с целью написания спецификаций ИС" и т. д. Точка зрения (Viewpoint). Хотя при построении модели учитываются мнения различных людей, модель должна строиться с единой точки зрения. Точку зрения можно представить как взгляд человека, который видит сис- тему в нужном для моделирования аспекте. Точка зрения должна соот- ветствовать цели моделирования. Очевидно, что описание работы пред- приятия с точки зрения финансиста и технолога будет выглядеть совер- шенно по-разному, поэтому в течение моделирования важно оставаться на выбранной точке зрения. Как правило, выбирается точка зрения челове- ка, ответственного за моделируемую работу в целом. Часто при выборе точ- ки зрения на модель важно задокументировать дополнительные альтерна- тивные точки зрения. Для этой цели обычно используют диаграммы FEO (For Exposition Only), которые будут описаны в дальнейшем. IDEFO-модель предполагает наличие четко сформулированной цели, единст- венного субъекта моделирования и одной точки зрения. Для внесения области, цели и точки зрения в модели IDEF0 в BPwin следует выбрать пункт меню Model/Model Properties, вызывающий диалог Model Properties (рис. 1.2.1). Во вкладку Purpose следует внести цель и точку зрения, а во вкладку Definition - определение модели и описание области. 20
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Рис. 1.2.1. Диалог задания свойств модели Во вкладке Status того же диалога можно описать статус модели (черно- вой вариант, рабочий, окончательный и т. д.), время создания и последнего редактирования (отслеживается в дальнейшем автоматически по системной дате). Во вкладке Source описываются источники информации для пост- роения модели (например, "Опрос экспертов предметной области и анализ документации"). Вкладка General служит для внесения имени проекта и модели, имени и инициалов автора и временных рамок модели - AS-IS и ТО-ВЕ. Модели AS-IS и ТО-BE. Целью построения функциональных моделей обычно является выявление наиболее слабых и уязвимых мест деятельности организации, анализ преимуществ новых бизнес-процессов и степени изме- нения существующей структуры организации бизнеса. Анализ недостатков и "узких мест" начинают с построения модели AS-IS (Как есть), т. е. модели существующей организации работы. Модель AS-IS может строиться на ос- нове изучения документации (должностных инструкций, положений о пред- приятии, приказов, отчетов и т. п.), анкетирования и опроса служащих пред- приятия (организация опроса должна быть итерационной и реализовать цикл автор-читатель, см. 1.2.9), создания фотографии рабочего дня и других 21
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite источников. Полученная модель AS-IS служит для выявления неуправляе- мых работ, работ не обеспеченных ресурсами, ненужных и неэффективных работ, дублирующихся работ и других недостатков в организации деятель- ности предприятия. Исправление недостатков, перенаправление информа- ционных и материальных потоков приводит к созданию модели ТО-ВЕ (Как будет) - модели идеальной организации бизнес-процессов. Как прави- ло, строится несколько моделей ТО-BE, среди которых определяют наи- лучший вариант (см. 1.2.2). Выбор оптимальной модели может осуществ- ляться, например, с помощью метрик BPwin (см. 1.3). Рис. 1.2.2. Схема построения моделей "ТО-ВЕ" как результат анализа модели "AS-IS" Следует указать на распространенную ошибку при создании модели AS-IS - это создание идеализированной модели. Примером может служить создание модели на основе знаний руководителя, а не конкретного испол- нителя работ. Руководитель знаком с тем, как предполагается выполнение работы по руководствам и должностным инструкциям, и часто не знает, как на самом деле подчиненные выполняют рутинные работы. В результате получается приукрашенная, искаженная модель, которая несет ложную ин- формацию и которую невозможно в дальнейшем использовать для анализа. Такая модель называется SHOULD BE (Как должно бы быть). Технология проектирования ИС подразумевает сначала создание модели AS-IS, ее анализ и улучшение бизнес-процессов, т. е. создание модели ТО- ВЕ, и только на основе модели ТО-ВЕ строится модель данных, прототип и затем окончательный вариант ИС. Построение системы на основе модели AS-IS приводит к автоматизации предприятия по принципу "все оставить как есть, только чтобы компьютеры стояли", т. е. ИС автоматизирует несо- вершенные бизнес-процессы и дублирует, а не заменяет существующий до- кументооборот. В результате внедрение и эксплуатация такой системы при- водит лишь к дополнительным издержкам на закупку оборудования, созда- ние программного обеспечения и сопровождение того и другого. 22
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Иногда текущая модель AS-IS и будущая ТО-BE различаются очень сильно, так что переход от начального состояния к конечному становится неочевидным. В этом случае необходима третья модель, описывающая про- цесс перехода от начального к конечному состоянию системы, поскольку такой переход - это тоже бизнес-процесс. Результат описания модели можно получить в отчете Model Report. Диа- лог настройки отчета по модели вызывается из пункта меню Tools/Re- ports/Model Report. В диалоге настройки следует выбрать необходимые поля, при этом автоматически отображается очередность вывода информа- ции в отчете (рис. 1.2.3). Model Леяпльнссп.шпмм ' “ЭР Scope * - ч! 'Цр 4Р Viewport ЮР DeetnnDate 5Р imeFrem JlP S;M«m L«l Rewsxn Date , •'fcp'Sla&;' Z 'uP^fwLiBlReTOMriDik У-;.... r»Pg4.J Model Напе: Деятельность компании [Definition: Эта учебная модель, описывавшая деятельное! Scope: Обцее управление бизнесом компании: исследование тестирование и продажа продуктов Viewpoint: Viewpoint: Директор Tine Frane: (AS-IS) Status: WORKING Purpose: Purpose: Моделировать текучие (AS-IS) бизнес-нроцессы компании Source: Материалы курса по BPwin [Author Name: Ваше имя Рис. 1.2.3. Отчет по модели Диаграммы IDEF0. Основу методологии IDEF0 составляет графичес- кий язык описания бизнес-процессов. Модель в нотации IDEF0 представ- ляет собой совокупность иерархически упорядоченных и взаимосвязанных диаграмм. Каждая диаграмма является единицей описания системы и распо- лагается на отдельном листе. Модель может содержать четыре типа диаграмм: • контекстную (в каждой модели может быть только одна контекстная диаграмма); 23
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • декомпозиции; • дерева узлов; • только для экспозиции (FEO). Контекстная диаграмма является вершиной древовидной структуры диа- грамм и представляет собой самое общее описание системы и ее взаимо- действия с внешней средой. После описания системы в целом проводится разбиение ее на крупные фрагменты. Этот процесс называется функ- циональной декомпозицией, а диаграммы, которые описывают каждый фрагмент и взаимодействие фрагментов, называются диаграммами деком- позиции. После декомпозиции контекстной диаграммы проводится деком- позиция каждого большого фрагмента системы на более мелкие и т. д., до достижения нужного уровня подробности описания. После каждого се- анса декомпозиции проводятся сеансы экспертизы - эксперты предметной области указывают на соответствие реальных бизнес-процессов созданным диаграммам. Найденные несоответствия исправляются, и только после про- хождения экспертизы без замечаний можно приступать к следующему сеан- су декомпозиции. Так достигается соответствие модели реальным бизнес- процессам на любом уровне модели. Синтаксис описания системы в целом и каждого ее фрагмента одинаков во всей модели. Диаграмма дерева узлов показывает иерархическую зависимость работ, но не взаимосвязи между работами. Диаграмм деревьев узлов может быть в модели сколь угодно много, поскольку дерево может быть построено на произвольную глубину и не обязательно с корня. Диаграммы для экспозиции (FEO) строятся для иллюстрации отдельных фрагментов модели, для иллюстрации альтернативной точки зрения либо для специальных целей. 1.2.2. Работа (Activity) Работы обозначают поименованные процессы, функции или задачи, ко- торые происходят в течение определенного времени и имеют распозна- ваемые результаты. Работы изображаются в виде прямоугольников. Все ра- боты должны быть названы и определены. Имя работы должно быть выра- жено сочетанием отглагольного существительного, обозначающего процесс, например: "Изготовление детали", "Прием заказа" и т. д. Работа "Изго- товление детали" может иметь, например, следующее определение: "Ра- бота относится к полному циклу изготовления изделия от контроля качества сырья до отгрузки готового упакованного изделия". При создании новой 24
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 модели (меню File/New) автоматически создается контекстная диаграмма с единственной работой, изображающей систему в целом (рис. 1.2.4). Задание Чертеж Сырье Изготовление изделия ^гяяяжкяявяжкяяяяягвгя!! Готовое изд елие Другая модель работы Персонал предприятия Рис. 1.2.4. Пример контекстной диаграммы Для внесения имени работы следует щелкнуть по работе правой кнопкой мыши, выбрать в меню Name и в появившемся диалоге внести имя работы. Для описания других свойств работы служит диалог Activity Properties (рис. 1.2.5). Рис. 1.2.5. Редактор задания свойств работы Диаграммы декомпозиции содержат родственные работы, т. е. дочерние работы, имеющие общую родительскую работу. Для создания диаграммы 25
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite декомпозиции следует щелкнуть по кнопке «XJ. Возникает диалог Activity Box Count (рис. 1.2.6), в котором следует указать нотацию новой диаграммы и количество работ на ней. Остановимся пока на нотации IDEF0 и щелкнем на ОК. Появляется диаграмма декомпозиции (рис. 1.2.7). Допусти- мый интервал числа работ 2-8. Декомпозировать работу на одну работу не имеет смысла: диа- граммы q количеством работ более восьми полу- чаются перенасыщенными и плохо читаются. Для обеспечения наглядности и лучшего понимания моделируемых процессов рекомендуется исполь- зовать от 3 до 6 блоков на одной диаграмме. |Activity Box Count I OK I Caned | НФ | Рис. 1.2.6. Диалог Activity Box Count Если оказывается, что количество работ недостаточно, то работу можно добавить в диаграмму, щелкнув сначала по кнопке Hl на палитре инстру- ментов, а затем по свободному месту на диаграмме. Работы на диаграммах декомпозиции обычно располагаются по диаго- нали от левого верхнего угла к правому нижнему. Такой порядок называется порядком доминирования. Согласно этому принципу расположения в левом верхнем углу помещается самая важная работа или работа, выполняемая по времени первой. Далее вправо вниз рас- полагаются менее важные или выполняемые позже работы. Такое распо- ложение облегчает чтение диаграмм, кроме того, на нем основывается поня- тие взаимосвязей работ (см. ниже). предприятия Рис. 1.2.7. Пример диаграммы декомпозиции 26
Гпава 1. Создание моделей бизнес-процессов с A/IFusion Process Modeler 4.1 Каждая из работ на диаграмме декомпозиции мо- жет быть, в свою очередь, декомпозирована. На диа- грамме декомпозиции работы нумеруются автомати- чески слева направо. Номер работы показывается в правом нижнем углу. В левом верхнем углу изобра- жается небольшая диагональная черта, которая пока- зывает, что данная работа не была декомпозирована. Так, на рис. 1.2.8 работа "Сборка изделия" имеет но- мер 3 и не была еще декомпозирована. Работа "Кон- троль качества" (номер 4) имеет нижний уровень де- композиции. Рис. 1.2.8. Пример декомпозируем ых работ 1.2.3. Стрелка (Arrow) Взаимодействие работ с внешним миром и между собой описыва- ется в виде стрелок. Стрелки представляют собой некую информацию и обозначаются существительными (например, "Заготовка", Изделие", "Заказ"} или именными сочетаниями (например, "Готовое изделие"). В IDEF0 различают пять типов стрелок. Вход (Input) - материал или информация, которые используются или преобразуются работой для получения результата (выхода). Допускается, что работа может не иметь ни одной стрелки входа. Каждый тип стрелок подходит к определенной стороне прямоугольника, изображающего работу, или выходит из нее. Стрелка входа рисуется как входящая в левую грань ра- боты. При описании технологических процессов (для этого и был придуман IDEF0) не возникает проблем определения входов. Действительно, "Сырье" на рис. 1.2.4 - это нечто, что перерабатывается в процессе "Изготовление изделия" для получения результата. При моделировании ИС, когда стрел- ками являются не физические объекты, а данные, не все так очевидно. Например, при "Приеме пациента" карта пациента может быть и на входе и на выходе, между тем качество этих данных меняется. Другими словами, в нашем примере для того, чтобы оправдать свое назначение, стрелки входа и выхода должны быть точно определены с тем, чтобы указать на то, что данные действительно были переработаны (например, на выходе - "Запол- ненная карта пациента"). Очень часто сложно определить, являются ли данные входом или управлением. В этом случае подсказкой может служить то, перерабатываются/изменяются ли данные в работе или нет. Если изменя- ются, то скорее всего это вход, если нет - управление. Управление (Control) - правила, стратегии, процедуры или стандарты, которыми руководствуется работа. Каждая работа должна иметь хотя бы одну стрелку управления. Стрелка управления рисуется как входящая 27
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite в верхнюю грань работы. На рис. 1.2.4 стрелки "Задание" и "Чертеж" - управление для работы "Изготовление изделия". Управление влияет на ра- боту, но не преобразуется работой. Если цель работы изменить процедуру или стратегию, то такая процедура или стратегия будет для работы входом. В случае возникновения неопределенности в статусе стрелки (управление или контроль) рекомендуется рисовать стрелку управления. Выход (Output) - материал или информация, которые производятся ра- ботой. Каждая работа должна иметь хотя бы одну стрелку выхода. Работа без результата не имеет смысла и не должна моделироваться. Стрелка выхо- да рисуется как исходящая из правой грани работы. На рис. 1.2.4 стрелка "Готовое издели " является выходом для работы "Изготовление издели ". Механизм (Mechanism) - ресурсы, которые выполняют работу, напри- мер персонал предприятия, станки, устройства и т. д. Стрелка механизма рисуется как входящая в нижнюю грань работы. На рис. 1.2.4 стрелка "Пер- сонал предприяти" является механизмом для работы "Изготовление из- дели". По усмотрению аналитика стрелки механизма могут не изображаться в модели. Вызов (Call) - специальная стрелка, указывающая на другую модель ра- боты. Стрелка механизма рисуется как исходящая из нижней грани работы. На рис. 1.2.4 стрелка "Другая модель работы" является вызовом для рабо- ты "Изготовление изделия ". Стрелка вызова используется для указания то- го, что некоторая работа выполняется за пределами моделируемой системы. В BPwin стрелки вызова используются в механизме слияния и разделения моделей. Граничные стрелки. Стрелки на контекстной диаграмме служат для описания взаимодействия системы с окружающим миром. Они могут начи- наться у границы диаграммы и заканчиваться у работы и наоборот. Такие стрелки называются граничными. Для внесения граничной стрелки входа надо: • щелкнуть по кнопке с символом стрелки —dl в палитре инструментов и перенести курсор к левой стороне экрана, пока не появится начальная темная полоска; • щелкнуть один раз по полоске (откуда выходит стрелка) и еще раз в левой части работы со стороны входа (где заканчивается стрелка); • вернуться в палитру инструментов и выбрать опцию редактирования стрелки JLI; 28
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 • щелкнуть правой кнопкой мыши на линии стрелки, во всплывающем ме- ню выбрать Name и добавить имя стрелки во вкладке Name диалога Arrow Properties (рис. 1.2.9). Стрелки управления, выхода и механизма изображаются аналогично. Для рисования стрелки выхода, например, следует щелкнуть по кнопке с символом стрелки на палитре инструментов, щелкнуть в правой части ра- боты со стороны выхода (где начинается стрелка), перенести курсор к правой стороне экрана, пока не появится начальная штриховая полоска, и щелкнуть один раз по штриховой полоске. Имена вновь внесенных стрелок автоматически заносятся в словарь (Arrow Dictionary). Рис. 1.2.9. Диалог Arrow Properties ICOM-коды. Диаграмма декомпозиции предназначена для детализации работы. В отличие от моделей, отображающих структуру организации, ра- бота на диаграмме верхнего уровня в IDEF0 - это не элемент управления нижестоящими работами. Работы нижнего уровня-это то же самое, что и работы верхнего уровня, но в более детальном изложении. Как следст- вие этого границы работы верхнего уровня - это то же самое, что и границы 29
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite диаграммы декомпозиции. ICOM (аббревиатура от Input, Control, Output и Mechanism) - коды, предназначенные для идентификации граничных стре- лок. Код ICOM содержит префикс, соответствующий типу стрелки (I, С, О или М), и порядковый номер (рис. 1.2.10). Рис. 1.2.10. Фрагмент диаграммы декомпозиции с ICOM-кодом (II, С1 и С2) BPwin вносит ICOM-коды автоматически. Для отображения ICOM-кодов следует включить опцию ICOM codes на вкладке Display диалога Model Properties (меню Model/Model Properties). Словарь стрелок редактируется при помощи специального редактора Arrow Dictionary, в котором определяется стрелка и вносится относящийся к ней комментарий (рис. 1.2.11). I SWui W0RKIN Ним Починенный компьютер Пр^лас^|«ит!:стч1^»ВИЯ. Пррмяенньмкомгюпеиты______ Пипнзияямк._______________ Пр^аиныепрдкчкты__________ Про“3»одство1В>радкта ПИЯЯ38!«*И.№ ___ у/адпн . W0HKIN W0RKIN 2 HacTOflbwe и портативные комгь Результаты тестирования__________ Сборка и тестирование компьютеров ________..Дмайн . iV/ORKIN Ready Рис. 1.2.11. Словарь стрелок Словарь стрелок решает очень важную задачу. Диаграммы создаются аналитиком для того, чтобы провести сеанс экспертизы, т. е. обсудить диа- грамму со специалистом предметной области. В любой предметной области формируется профессиональный жаргон, причем очень часто жаргонные выражения имеют нечеткий смысл и воспринимаются разными специали- стами по-разному. В то же время аналитик-автор диаграмм вынужден упот- 30
Гпава 1. Создание моделей бизнас-процессов с AllFusion Process Modeler 4.1 реблять те выражения, которые наиболее понятны экспертам. Поскольку формальные определения часто сложны для восприятия, аналитик вынуж- ден употреблять профессиональный жаргон, а, чтобы не возникло неодно- значных трактовок, в словаре стрелок каждому понятию можно дать расши- ренное и, если это необходимо, формальное определение. Помимо словаря стрелок BPwin содержит еще 14 словарей (работ, хра- нилищ данных, внешних ссылок, объектов ссылок, перекрестков, сущно- стей, атрибутов, центров затрат, ресурсов, ролей, групп ролей, свойств UDP, ключевых слов UDP и изображений). Интерфейс большинства словарей унифицирован. Назначение кнопок панели управления словарем приведено в табл. 1.2.1. Таблица 1.2.1. Кнопки панели управления словарем (слева направо) Кнопка Назначение Сохранить словарь (Зй Предварительный просмотр печати словаря я» Печать словаря А Экспорт словаря в текстовый файл Импорт словаря из текстового файла В Удаление объектов из словаря. Удалить можно только те объекты, которые не используются в модели Содержимое словаря стрелок можно распечатать в виде отчета (меню Tools/Reports/Arrow Report) и получить тем самым толковый словарь тер- минов предметной области, использующихся в модели. Несвязанные граничные стрелки (unconnected border arrow). При де- композиции работы входящие в нее и исходящие из нее стрелки (кроме стрелки вызова) автоматически появляются на диаграмме декомпозиции (миграция стрелок), но при этом не касаются работ. Такие стрелки называ- ются несвязанными и воспринимаются в BPwin как синтаксическая ошибка. На рис. 1.2.12 приведен фрагмент диаграммы декомпозиции с несвязан- ными стрелками, генерирующийся BPwin при декомпозиции работы "Из- готовление изделия" (см. рис. 1.2.3). Для связывания стрелок входа, управ- ления или механизма необходимо перейти в режим редактирования стрелок, щелкнуть по наконечнику стрелки и щелкнуть по соответствующему 31
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite сегменту работы. Для связывания стрелки выхода необходимо перейти в режим редактирования стрелок, щелкнуть по сегменту выхода работы и за- тем по стрелке. ? Задание 7 Чертеж Готовое изделие Сырье Брак । Персонал предприятия Рис. 1.2.12. Пример несвязанных стрелок Внутренние стрелки. Для связи работ между собой используются внут- ренние стрелки, т. е. стрелки, которые не касаются границы диаграммы, на- чинаются у одной и кончаются у другой работы. Для рисования внутренней стрелки необходимо в режиме рисования стрелок щелкнуть по сегменту (например, выхода) одной работы и затем по сегменту (например, входа) другой. В IDEF0 различают пять типов связей работ. Связь по входу (output-input), когда стрелка выхода вышестоящей работы (далее - просто выход) направляется на вход ниже- стоящей (например, на рис. 1.2.13 стрелка "Детали” связывает работы "Изготовление деталей и Сборка изделия "). Связь по управлению (output-control), когда выход вышестоящей работы направля- ется на управление нижестоящей. Связь по входу показывает доминирование вышестоя- щей работы. Данные или объекты выхода вы- шестоящей работы не меняются в нижестоя- щей. На рис. 1.2.14 стрелка "Чертеж" связы- вает работы "Создание чертежа детали" и "Изготовление детали", при этом чертеж не претерпевает изменений в процессе изго- товления деталей. Изготовление s деталей Г Детали Сборка изделия S ГЯиидалинийь. Рис. 1.2.13. Связь по входу ' < Создание | чертежа |. детали £ Чертеж Изготовление деталей Рис. 1.2.14. Связь по управлению 32
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Обратная связь по входу (output-input feedback), когда выход ниже- стоящей работы направляется на вход вышестоящей. Такая связь, как пра- вило, используется для описания циклов. На рис. 1.2.15 стрелка "Брак" свя- зывает работы "Переработка сырья" и "Контроль качества", при этом выявленный на контроле брак направляется на вторичную переработку. Рис. 1.2.15. Обратная связь по входу Обратная связь по управлению (output-control feedback), когда выход нижестоящей работы направляется на управление вышестоящей (стрелка "Рекомендации", рис. 1.2.16). Обратная связь по управлению часто свиде- тельствует об эффективности бизнес-процесса. В случае, изображенном на рис. 1.2.16, качество изделия может быть повышено путем непосредст- венного регулирования процессами изготовления деталей и сборки изделия в зависимости от результата (выхода) работы "Контроль качества". ______Г...Z Изготовление I деталей | ]Н___________ Детали!, ^д“ д“я (собранное и: изделие 1WJWWWSW Рекомендации Контроль ' качества Рис. 1.2.16. Обратная связь по управлению Связь выход-механизм (output-mechanism), когда выход одной работы направляется на механизм другой. Эта взаимосвязь используется реже ос- тальных и показывает, что одна работа подготавливает ресурсы, необходи- мые для проведения другой работы (рис. 1.2.17). Рис. 1.2.17. Связь выход-механизм 33
С, 5. Маклаков. Создание информационных систем с AllFusion Modeling Suite Явные стрелки. Явная стрелка имеет источником одну-единственную работу и назначением тоже одну-единственную работу. Разветвляющиеся и сливающиеся стрелки. Одни и те же данные или объекты, порожденные одной работой, могут использоваться сразу в нескольких других работах. С другой стороны, стрелки, порожденные в разных работах, могут представлять собой одинаковые или однородные данные или объекты, которые в дальнейшем используются или перера- батываются в одном месте. Для моделирования таких ситуаций в IDEF0 ис- пользуются разветвляющиеся и сливающиеся стрелки. Для разветвления стрелки нужно в режиме редактирования стрелки щелкнуть по фрагменту стрелки и по соответствующему сегменту работы. Для слияния двух стрелок выхода нужно в режиме редактирования стрелки сначала щелкнуть по сег- менту выхода работы, а затем по соответствующему фрагменту стрелки. Смысл разветвляющихся и сливаю- щихся стрелок передается именова- нием каждой ветви стрелок. Сущест- вуют определенные правила именова- ния таких стрелок. Рассмотрим их на примере разветвляющихся стрелок. Ес- ли стрелка именована до разветвления, а после разветвления ни одна из ветвей не именована, то подразумевается, что каждая ветвь моделирует те же данные или объекты, что и ветвь до разветвле- ния (рис. 1.2.18). Если стрелка именована до разветв- ления, а после разветвления какая-либо из ветвей не именована, то подразуме- вается, что эти ветви соответствуют именованию. Если при этом какая-либо ветвь после разветвления осталась не- именованной, то подразумевается, что она моделирует те же данные или объ- Рис. 1.2.18. Пример именования разветвляющейся стрелки екты, что и ветвь до разветвления Рис. 1.2.19. Пример именования (рис. 1.2.19). разветвляющейся стрелки Недопустима ситуация, когда стрелка до разветвления не именована, а после разветвления не именована какая-либо из ветвей. BPwin определяет такую стрелку как синтаксическую ошибку (рис. 1.2.20). 34
Глава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Правила именования сливающихся стрелок полностью аналогичны - ошибкой будет считаться стрелка, которая после слияния не именована, а до слияния не именована какая-либо из ее ветвей. Для именования отдель- ной ветви разветвляющихся и сливающихся стрелок следует выделить на диаграмме только одну ветвь, после этого вызвать редактор имени и присвоить имя стрелке. Это имя будет соответствовать только выделенной ветви. Рис. 1.2.20. Пример неверного именования разветвляющейся стрелки Тоннелирование стрелок. Вновь внесенные граничные стрелки на диаг- рамме декомпозиции нижнего уровня изображаются в квадратных скобках и автоматически не появляются на диаграмме верхнего уровня (рис. 1.2.21). Заготовка Изготовление I деталей | Рис. 1.2.21. Неразрешенная (unresolved) стрелка Для их "перетаскивания" наверх нужно сначала выбрать кнопку мЯ на палитре инструментов и щелкнуть по квадратным скобкам граничной стрелки. Появляется диалог Border Arrow Editor (рис. 1.2.22). iBorder Artow Editor Нои do you went Io molve Wt limeP Kewi’ve'ito’bofiB airmi c Chaw 1 to resolved landed lumd , {K || Cancel | , Help | Рис. 1.2.22. Диалог Border Arrow Editor 35
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Если выбрать опцию Resolve it to border arrow, стрелка мигрирует на диаграмму верхнего уровня, а если Change it to resolved rounded tunnel - стрелка будет затоннелирована и не попадет на другую диаграмму. Тон- нельная стрелка изображается с круглыми скобками на конце (рис. 1.2.23). Тоннель "не в родительской диаграмме" Тоннель "не в дочерней работе" Рис. 1.2.23. Типы тоннелирования стрелок Тоннелирование может быть применено для изображения малозначимых стрелок. Если на какой-либо диаграмме нижнего уровня необходимо изо- бразить малозначимые данные или объекты, которые не обрабатываются или не используются работами на текущем уровне, то их необходимо на- править на вышестоящий уровень (на родительскую диаграмму). Если эти данные не используются на родительской диаграмме, их нужно направить еще выше и т. д. В результате малозначимая стрелка будет изображена на всех уровнях и затруднит чтение всех диаграмм, на которых она при- сутствует. Выходом является тоннелирование стрелки на самом нижнем уровне. Такое тоннелирование называется "не в родительской диаграмме". Другим примером тоннелирования может быть ситуация, когда стрелка механизма мигрирует с верхнего уровня на нижний, причем на нижнем уровне этот механизм используется одинаково во всех работах без исклю- чения. (Предполагается, что не нужно детализировать стрелку механизма, т. е. стрелка механизма на дочерней работе именована до разветвления, а после разветвления ветви не имеет собственного имени.) В этом случае стрелка механизма на нижнем уровне может быть удалена, после чего на родительской диаграмме она может быть затоннелирована, а в коммен- тарии к стрелке или в словаре можно указать, что механизм будет исполь- зоваться во всех работах дочерней диаграммы декомпозиции. Такое тонне- лирование называется "не в дочерней работе" (рис. 1.2.23). L2.4. Нумерация работ и диаграмм Все работы модели нумеруются. Номер состоит из префикса и числа. Может быть использован префикс любой длины, но обычно используют префикс А. Контекстная (корневая) работа дерева имеет номер АО. Работы 36
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 декомпозиции АО имеют номера Al, А2, АЗ и т. д. Работы декомпозиции нижнего уровня имеют номер родительской работы и очередной порядко- вый номер, например работы декомпозиции АЗ будут иметь номера А31, А32, АЗЗ, А34 и т. д. Работы образуют иерархию, где каждая работа может иметь одну родительскую и несколько дочерних работ, образуя дерево. Та- кое дерево называют деревом узлов, а вышеописанную нумерацию - нуме- рацией по узлам. Имеются незначительные варианты нумерации, которые можно настроить во вкладке Presentation диалога Model Properties (меню Edit/Model Properties). Диаграммы IDEF0 имеют двойную нумерацию. Во-первых, диаграммы имеют номера по узлу. Контекстная диаграмма всегда имеет номер А-0, де- композиция контекстной диаграммы - номер АО, остальные диаграммы де- композиции-номера по соответствующему узлу (например, Al, А2, А21, А213 и т. д.). BPwin автоматически поддерживает нумерацию по узлам, т. е. при проведении декомпозиции создается новая диаграмма и ей автома- тически присваивается соответствующий номер. В результате проведения экспертизы диаграммы могут уточняться и изменяться, следовательно, мо- гут быть созданы различные версии одной и той же (с точки зрения ее расположения в дереве узлов) диаграммы декомпозиции. BPwin позво- ляет иметь в модели только одну диаграмму декомпозиции в данном узле. Прежние версии диаграммы можно хранить в виде бумажной копии либо как FEO-диаграмму. (К сожалению, при создании FEO-диаграмм отсутст- вует возможность отката, т. е. можно получить из диаграммы декомпозиции FEO, но не наоборот.) В любом случае следует отличать различные версии одной и той же диаграммы. Для этого существует специальный номер - С- number, который должен присваиваться автором модели вручную. C-num- ber - это произвольная строка, но рекомендуется придерживаться стандарта, когда номер состоит из буквенного префикса и порядкового номера, причем в качестве префикса используются инициалы автора диаграммы, а поряд- ковый номер отслеживается автором вручную, например МСВ00021. 1.2.5. Диаграммы дерева узлов и FEO Диаграмма дерева узлов показывает иерархию работ в модели и позво- ляет рассмотреть всю модель целиком, но не показывает взаимосвязи между работами (стрелки) (рис. 1.2.24). Процесс создания модели работ является итерационным, следовательно, работы могут менять свое расположение в дереве узлов многократно. Чтобы не запутаться и проверить способ де- 37
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite композиции, следует после каждого изменения создавать диаграмму дерева узлов. Впрочем, BPwin имеет мощный инструмент навигации по модели - Model Explorer, который позволяет представить иерархию работ и диа- грамм в удобном и компактном виде, однако этот инструмент не является составляющей стандарта IDEF0. Изготовление изделия Переработка сырья Изготовление деталей Сборка изделия Контроль качества • Выбор способа Тестирование изготовления детали изделия Проверка качества полуфабриката Переработка полуфабриката в * Выработка рекомендаций деталь ивг----------ркг ДО Изготовление изделия отаип---- МСВ0002 Рис. 1.2.24. Диаграмма дерева узлов Для создания диаграммы дерева узлов следует выбрать в меню пункт Diagram/Add Node Tree. Возникает эксперт создания диаграммы дерева уз- лов Node Tree Wizard. В первом диалоге эксперта необходимо внести имя диаграммы дерева узлов, узел верхнего уровня и глубину дерева - Number of Levels (по умолчанию 3). Поскольку дерево узлов не обязательно в ка- честве верхнего уровня должно иметь контекстную работу и произвольную глубину. В одной модели можно создавать множество диаграмм деревьев узлов. Имя дерева узлов по умолчанию совпадает с именем работы верхнего уровня, а номер диаграммы автоматически генерируется как номер узла верхнего уровя плюс литера "N", например AON. Если в модели создается два дерева узлов, имеющие в качестве верхнего уровня одну и ту же работу, то по умолчанию диаграммы получат идентичные номер и имя. Поэтому ре- комендуется при создании диаграммы дерева узлов внести имя диаграммы, отличное от значения по умолчанию. Второй диалог эксперта Node Tree Wizard (рис. 1.2.25) позволяет задать свойства диаграммы дерева узлов. 38
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Node Tree Wizard - Step 2 of 2 Node Tree Name: Деятельность компанииДиВ e Drawing ~ a— 'BoxSize — P Sufeteitavoj * H each tornote* P Show node nunfeit Г One 420 pa low P Showtoxet Г Alonoteo {Beck *| ?;»- I I Frith | Cancel | Help | Puc. 1.2.25. Диалог настройки диаграммы дерева узлов По умолчанию нижний уровень декомпозиции показывается в виде спи- ска, остальные работы-в виде прямоугольников. Для отображения всего дерева в виде прямоугольников следует выбрать опцию Bullet Last Level. Группа Connection Style позволяет выбрать стиль соединительных линий - диагональные (по умолчанию) или ортогональные. Диаграммы "только для экспозиции" (FEO) часто используются в модели для иллюстрации других точек зрения, для отображения отдельных деталей, которые не поддерживаются явно синтаксисом IDEF0. Диаграммы FEO по- зволяют нарушить любое синтаксическое правило, поскольку по сути явля- ются просто картинками - копиями стандартных диаграмм и не включаются в анализ синтаксиса. Например, работа на диаграмме FEO может не иметь стрелок управления и выхода. С целью обсуждения определенных аспектов модели с экспертом предметной области может быть создана диаграмма только с одной работой и одной стрелкой, поскольку стандартная диаграм- ма декомпозиции содержит множество деталей, не относящихся к теме об- суждения и дезориентирующих эксперта. Но если FEO используется для ил- люстрации альтернативных точек зрения (альтернативный контекст), реко- мендуется все-таки придерживаться синтаксиса IDEF0. Для создания диаграммы FEO следует выбрать пункт меню Diagram/Add FEO Diagram. В возникающем диалоге Add New FEO Diagram следует указать имя диа- граммы FEO и тип родительской диаграммы (рис. 1.2.26). 39
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 1.2.26. Диалог создания FEO-диаграммы Новая диаграмма получает номер, который генерируется автоматически (номер родительской диаграммы по узлу + постфикс F, например A1F). 1.2.6. Каркас диаграммы На рис. 1.2.27 показан типичный пример диаграммы декомпозиции с граничными рамками, которые называются каркасом диаграммы. AUTN*0R> Кия—I ноли» ________Задами д' £“₽ьв|П^^15ВЭПНк —сырь" клоса гюн Чертеж Рекомендации [1згатял8ии& полуфабрикат деталей | Детали Собранное изделие Контроль В? качествам Готовое изделие. Брак ЯССЕ* imrr АО Персонал |— ’ предприятия Д Изготовление изделия 1МШИВ: МСВ00021 Рис. 1.2.27. Пример диаграммы декомпозиции с каркасом 40
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Каркас содержит заголовок (верхняя часть рамки) и подвал (нижняя часть). Заголовок каркаса используется для отслеживания диаграммы в про- цессе моделирования. Нижняя часть используется для идентификации и по- зиционирования в иерархии диаграммы. Смысл элементов каркаса приведен в табл. 1.2.2 и 1.2.3. Таблица 1.2.2. Поля заголовка каркаса (слева направо) Поля Смысл Used At Используется для указания на родительскую работу в случае, если на текущую диаграмму ссылались по- средством стрелки вызова Autor, Date, Rev, Project Имя создателя диаграммы, дата создания и имя про- екта, в рамках которого была создана диаграмма. REV - дата последнего редактирования диаграммы Notes 123456789 10 Используется при проведении сеанса экспертизы. Эксперт должен (на бумажной копии диаграммы) ука- зать число замечаний, вычеркивая цифру из списка каждый раз при внесении нового замечания Status Статус отображает стадию создания диаграммы, ото- бражая все этапы публикации Working Новая диаграмма, кардинально обновленная диаграм- ма или новый автор диаграммы Draft Диаграмма прошла первичную экспертизу и готова к дальнейшему обсуждению Recommended Диаграмма и все ее сопровождающие документы прошли экспертизу. Новых изменений не ожидается Publication Диаграмма готова к окончательной печати и публикации Reader Имя читателя (эксперта) Date Дата прочтения (экспертизы) Context Схема расположени Работа, являющаяся прямоугольником, с диаграмме (А-0) noi нижнем углу показь диаграммы: CONTEXT: АО ™ я работ в диаграмме верхнего уровня, родительской, показана темным (стальные - светлым. На контекстной сазывается надпись ТОР. В левом шается номер по узлу родительской 41
С. В. Маклакое. Создание информационных систем с AllFusion Modeling Suite Таблица 1.2.3. Поля подвала каркаса (слева направо) Поле Смысл Node Номер узла диаграммы (номер родительской работы) Title Имя диаграммы. По умолчанию - имя родительской работы Number C-Number, уникальный номер версии диаграммы Page Номер страницы, может использоваться как номер страницы при формировании папки Значения полей каркаса задаются в диалоге Diagram Properties (меню Diagram/Diagram Properties) - рис. 1.2.28. Рис. 1.2.28. Диалог Diagram Properties 1.2.7. Слияние и расщепление моделей Возможность слияния и расщепления моделей обеспечивает коллек- тивную работу над проектом. Так, руководитель проекта может создать де- композицию верхнего уровня и дать задание аналитикам продолжить де- композицию каждой ветви дерева в виде отдельных моделей. После окон- чания работы над отдельными ветвями все подмодели могут быть слиты в единую модель. С другой стороны, отдельная ветвь модели может быть отщеплена для использования в качестве независимой модели, для дора- ботки или архивирования. 42
Гпаеа 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.7 BPwin применяет для слияния и разветвления моделей стрелки вызова. Для слияния необходимо выполнить следующие условия: • обе сливаемые модели должны быть открыты в BPwin; • имя модели-источника, которое присоединяют к модели-цели, должно совпадать с именем стрелки вызова работы в модели-цели (рис. 1.2.29); Модель работы Рис. 1.2.29. Условия слияния моделей • стрелка вызова должна исходить из недекомпозируемой работы (работа должна иметь диагональную черту в левом верхнем углу) (рис. 1.2.30); Модель сборки Рис. 1.2.30. Стрелка вызова работы "Сборка изделия"модели-цели • имена контекстной работы подсоединяемой модели-источника и работы на модели-цели, к которой мы подсоединяем модель-источник, должны совпадать (рис. 1.2.29); • модель-источник должна иметь по крайней мере одну диаграмму деком- позиции. Для слияния моделей нужно щелкнуть правой кнопкой мыши по работе со стрелкой вызова в модели-цели и во всплывающем меню выбрать пункт Merge Model. 43
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Появляется диалог, в котором следует указать опции слияния модели (рис. 1.2.31). При слиянии моделей объединяются и словари стрелок и ра- бот. В случае одинаковых определений возможна перезапись определений или принятие определений из модели-источника. То же относится к именам стрелок, хранилищам данных и внешним ссылкам. (Хранилища данных и внешние ссылки - объекты диаграмм потоков данных, DFD, будут рас- смотрены ниже.) Continue with merge? Activities Сборка изделия Cut from —Л г"~т * — Model Модель сворки , Model Изготовление изделия ,-VaijiCut/Pssteoptens -------------------- - • Р CutZPaste ende dcbonsnes Г* Rename matchng data stores P ijvawnte asstnc (wide I" Repame matchng externals Г” Rename matchng arrows I OK I Cancel | He|p | Puc. 1.2.31. Диалог Continue with merge? После подтверждения слияния (кнопка ОК) модель-источник подсоеди- няется к модели-цели, стрелка вызова исчезает, а работа, от которой отходи- ла стрелка вызова, становится декомпозируемой - к ней подсоединяется диаграмма декомпозиции первого уровня модели-источника. Стрелки, ка- сающиеся работы на диаграмме модели-цели, автоматически не мигрируют в декомпозицию, а отображаются как неразрешенные. Их следует тоннели- ровать вручную. На рис. 1.2.32 показано, как выглядят модели в окне Model Explorer после слияния. В процессе слияния модель-источник остается неизменной и к модели- цели подключается фактически ее копия. Не нужно путать слияние моделей с синхронизацией. Если в дальнейшем модель-источник будет редактиро- ваться, эти изменения автоматически не попадут в соответствующую ветвь модели-цели. 44
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Рис. 1.2.32. Вид моделей в Model Explorer после слияния. Выделены модель-источник и присоединенная ветвь модели-цели Разделение моделей производится аналогично. Для отщепления ветви от модели следует щелкнуть правой кнопкой мыши по декомпозированной работе (работа не должна иметь диагональной черты в левом верхнем углу) и выбрать во всплывающем меню пункт Split Model. В появившемся диало- ге Split Options следует указать имя создаваемой модели. После подтвер- ждения расщепления в старой модели работа станет недекомпозированной (признак - диагональная черта в левом верхнем углу), будет создана стрелка вызова, причем ее имя будет совпадать с именем новой модели, и, наконец, будет создана новая модель, причем имя контекстной работы будет совпа- дать с именем работы, от которой была "оторвана" декомпозиция. 1.2.8. Рекомендации по рисованию диаграмм В реальных диаграммах к каждой работе может подходить и от каждой мо- жет отходить около 10 стрелок. Если диаграмма содержит 6-8 работ, то она мо- жет содержать 30-40 стрелок, причем они могут сливаться, разветвляться и пе- ресекаться. Такие диаграммы могут стать очень плохо читаемыми. В IDEF0 существуют соглашения по рисованию диаграмм, которые при- званы облегчить чтение и экспертизу модели. Некоторые из этих правил BPwin поддерживает автоматически, выполнение других следует обеспе- чить вручную. • Прямоугольники работ должны располагаться по диагонали с левого верхнего в правый нижний угол (порядок доминирования). При создании 45
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite новой диаграммы декомпозиции BPwin автоматически располагает ра- боты именно в таком порядке. В дальнейшем можно добавить новые ра- боты или изменить расположение существующих, но нарушать диаго- нальное расположение работ по возможности не следует. Порядок доми- нирования подчеркивает взаимосвязь работ, позволяет минимизировать изгибы и пересечения стрелок. • Следует максимально увеличивать расстояние между входящими или выходящими стрелками на одной грани работы. Если включить опцию Automatically space arrows на вкладке Layout диалога Model Properties (меню Model/Model Properties), BPwin будет располагать стрелки нуж- ным образом автоматически. • Следует максимально увеличить расстояние между работами, поворо- тами и пересечениями стрелок. • Если две стрелки проходят параллельно (начинаются из одной и той же грани одной работы и заканчиваются на одной и той же грани другой работы), то по возможности следует их объединить и назвать единым термином. • Обратные связи по входу рисуются "нижней" петлей, обратная связь по управлению - "верхней" (см. рис. 1.2.14, 1.2.15). BPwin автомати- чески рисует обратные связи нужным образом. Его можно "обмануть", но лучше этого не делать. • Циклические обратные связи следует рисовать только в случае крайней необходимости, когда подчеркивают значение повторно используемого объекта. Принято изображать такие связи на диаграмме декомпозиции. BPwin не позволяет создать циклическую обратную связь за один прием. Если все же необходимо изобразить такую связь, следует сначала соз- дать обычную связь по входу, затем разветвить стрелку, направить но- вую ветвь обратно ко входу работы-источника и, наконец, удалить ста- рую ветвь стрелки выхода (рис. 1.2.33). Повторно используемые компоненты Рис. 1.2.33. Пример обратной циклической связи 46
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 • Следует минимизировать число пересечений, петель и поворотов стре- лок. Это ручная и, в случае насыщенных диаграмм, творческая работа (рис. 1.2.34). Рис. 1.2.34. Минимизация пересечений и поворотов стрелок • Если нужно изобразить связь по входу, необходимо избегать "нависа- ния" работ друг над другом. В этом случае BPwin изображает связи по входу в виде петли, что затрудняет чтение диаграмм (рис. 1.2.35). Рис. 1.2.35. Пример правильного (справа) и неправильного (слева) расположения работ при изображении связи по входу 1.2.9. Проведение экспертизы Цикл автор-читатель. Этот цикл (рис. 1.2.36) предназначен для обес- печения обратной связи при построении модели. Он включает определен- ные формализованные процедуры, предписывающие правила координации деятельности участников создания модели. В работе над моделью прини- мают участие специалисты разных профилей - аналитики (авторы), экспер- ты предметной области (читатели), библиотекари и комитет технического контроля. Обычно библиотекарь выделяется для больших проектов. Цикл автор-читатель содержит следующие этапы. 3. Папка с ответами >а замечания 1.Папка X АВТОР ЧИТАТЕЛЬ библиотекарь; . Окончательный вариант без замечаний 2. замечаниями Рис. 1.2.36. Цикл автор-читатель 47
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite На очередном этапе декомпозиции аналитик создает диаграмму на осно- ве общих знаний, анализа документации и опроса экспертов. Общие знания не позволяют создать диаграмму достаточно корректно, поэтому она нуж- дается в уточнении и дополнении. Все коммуникации при создании модели контролируются библиоте- карем. Он ответственен за прохождение папок и архивирование диаграмм модели. После создания диаграмма посылается библиотекарю для помеще- ния в архив. Автором формируется папка и передается для распространения биб- лиотекарю (одна копия направляется автору). В папку должна входить те- кущая диаграмма. Кроме того, в папку могут включаться сопутствующие отчеты, в том числе словарь стрелок и работ, диаграмма верхнего уровня, дерево узлов и любая необходимая дополнительная документация. На папке регистрируются входящие данные - дата, автор, данные читателя и т. д., по- сле чего папка направляется эксперту предметной области (читателю). Читатель рецензирует папку и записывает свои комментарии. Замечания вносятся в диаграмму по определенным правилам. Если читатель решил внести замечание, он должен указать номер замечания, затем внести текст замечания и в каркасе диаграммы, в разделе Notes, зачеркнуть цифру, соот- ветствующую номеру замечания (рис. 1.2.37). ып ЙЕАОД сотвгт; Сырье wrat' У // (^йание? ’’ЦертеяС’ Переработка $ сырья | Изготовлений деталей '$ Полуфабрикат @*уаачкыб терпя»« вучше Заеотоекв 'римхАпаГ 77V ******* чертмш ''-Ъздымт Рекомендации газг----- АО | Сборка 4 изделия Детали* Персонал г предприятия Jt Изготовление изделия CF) &тбрак<и aitHbif вздымая ьрерабашыв (ются f_ Собранное ч | изделие \ (*Брак) Контроль качества отовое изделие '«имаас: МСВ00021 Рис. 1.2.37. Внесение замечаний в диаграмму 48
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 После рецензирования папки возвращаются библиотекарю. Библиоте- карь должен обеспечивать проведение рецензирования в срок. Затем папки регистрируются и направляются автору. Автор вносит ответ на замечания и, если он согласен с замечаниями, вносит изменения в модель. На практике зачастую сеанс экспертизы прово- дится в форме устного собеседования между автором и экспертом. В этом случае особенно важно вносить замечания эксперта и комментарии автора в диаграмму для документирования всех идей, возникших в результате мо- делирования. Если это необходимо, проводится дополнительная экспертиза у того же или у другого эксперта. После прохождения нескольких циклов число замечаний обычно умень- шается и диаграмма становится стабильной. В процессе изменения диаг- рамма может менять свой статус, который должен быть отражен в каркасе (см. табл. 1.2.1). Когда автор считает, что диаграмма уже достаточно прора- ботана и достигла уровня Recommended, он пересылает ее на утверждение в комитет технического контроля, где она проходит окончательную экспер- тизу. После внесения замечаний и окончательных изменений диаграмма (или набор диаграмм) окончательно утверждается, получает статус Publica- tion и может быть распечатана и распространена среди участников проекта. 1.3. Стоимостный анализ (АВС) и свойства, определяемые пользователем (UDP) 1.3.1. Стоимостный анализ (Activity Based Costing) Как было указано ранее, обычно сначала строится функциональная мо- дель существующей организации работы - AS-IS (Как есть). После построе- ния модели AS-IS проводится анализ бизнес-процессов, потоки данных и объектов перенаправляются и улучшаются, в результате строится модель ТО-ВЕ. Как правило, строится несколько моделей ТО-ВЕ, из которых по ка- кому-либо критерию выбирается наилучшая. Проблема состоит в том, что таких критериев много и непросто определить важнейший. Для того чтобы определить качество созданной модели с точки зрения эффективности биз- нес-процессов, необходима система метрики, т. е. качество следует оцени- вать количественно. BPwin предоставляет аналитику два инструмента для оценки модели- стоимостный анализ, основанный на работах (Activity Based Costing, ABC), и свойства, определяемые пользователем (User Defined Properties, UDP). ABC является широко распространенной методикой, используемой между- 49
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite народными корпорациями и государственными организациями (в том числе Департаментом обороны США) для идентификации истинных движителей затрат в организации. Стоимостный анализ представляет собой соглашение об учете, исполь- зуемое для сбора затрат, связанных с работами, с целью определить общую стоимость процесса. Стоимостный анализ основан на модели работ, потому что количественная оценка невозможна без детального понимания функ- циональности предприятия. Обычно АВС применяется для того, чтобы по- нять происхождение выходных затрат и облегчить выбор нужной модели работ при реорганизации деятельности предприятия (Business Process Re- engineering, BPR). С помощью стоимостного анализа можно решить такие задачи, как определение действительной стоимости производства продукта, определение действительной стоимости поддержки клиента, идентификация работ, которые стоят больше всего (те, которые должны быть улучшены в первую очередь), обеспечение менеджеров финансовой мерой предла- гаемых изменений и др. АВС может проводиться только тогда, когда модель работы последова- тельная (следует синтаксическим правилам IDEF0), корректная (отражает бизнес), полная (охватывает всю рассматриваемую область) и стабильная (проходит цикл экспертизы без изменений), другими словами, когда созда- ние модели работы закончено. АВС включает следующие основные понятия: • объект затрат - причина, по которой работа выполняется; обычно, ос- новной выход работы, стоимость работ есть суммарная стоимость объ- ектов затрат {"Готовое изделие", рис. 1.3.1). Чертеж сырье Изготовление ------- изделия Персонал Л предприятия 4 Брак изделие Of мкт мтрлт Рис. 1.3.1. Иллюстрация терминов АВС • движитель затрат - характеристики входов и управлений работы ("Сы- рье", "Чертеж", рис. 1.3.1), которые влияют на то, как выполняется и как долго длится работа; • центры затрат, которые можно трактовать как статьи расхода. При проведении стоимостного анализа в BPwin сначала задаются едини- цы измерения времени и денег. Для задания единиц измерения следует вы- 50
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 звать диалог Model Properties (меню Edit/Model Properties), вкладка ABC Units (рис. 1.3.2). Если в списке выбора отсутствует необходимая валюта (например, рубль), ее можно добавить. Символ валюты по умолчанию берется из наст- роек Windows. Диапазон измерения времени в списке Unit ofmeasurment достаточен для большинства случаев - от секунд до лет. 3] Model Properties Рис. 1.3.2. Настройка единиц измерения валюты и времени Затем описываются центры затрат (cost centers). Для внесения центров затрат необходимо вызвать диалог Cost Center Dictionary (меню Dictionary /Cost Center (рис. 1.3.3). Каждому центру затрат следует дать подробное описание в окне Definition. Список центров затрат упорядочен. Порядок в списке можно менять при помо- щи стрелок, расположенных справа от списка. Задание определенной последо- вательности центров затрат в списке, во-первых, облегчает последующую рабо- ту при присвоении стоимости работам, а во-вторых, имеет значение при исполь- зовании единых стандартных отчетов в разных моделях. Хотя, как было указано в 1.2.5, BPwin сохраняет информацию о стандартном отчете в файле BPWIN- RPT.INI, информация о центрах затрат и UDP сохраняется в виде указателей, т. е. хранятся не названия центров затрат, а их номера. Поэтому, если нужно ис- пользовать один и тот же стандартный отчет в разных моделях, списки центров затрат должны быть в них одинаковы. 51
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite гаурчая сцла ______ затраты на оплату раоочих, занятых ^ооркои и тестированием компьютеров г Транспортные расходы . Расходы на доставку компьютеров на любые расстояния __ _ „ ! Управление___ _________ Затраты на управление, связанные с составлением графика работ, Формированием па i Рис. 1.3.3. Диалог Cost Center Dictionary Для задания стоимости работы (для каждой работы на диаграмме деком- позиции) следует щелкнуть правой кнопкой мыши по работе и на всплы- вающем меню выбрать Costs (рис. 1.3.4). Во вкладке Costs диалога Activity Properties указывается частота проведения данной работы в рамках общего процесса (окно Frequency) и продолжительность (Duration). Затем следует выбрать в списке один из центров затрат и в окне Cost задать его стоимость. Аналогично назначаются суммы по каждому центру затрат, т. е. задается стоимость каждой работы по каждой статье расхода. Если в процессе назна- чения стоимости возникает необходимость внесения дополнительных цен- тров затрат, диалог Cost Center Editor вызывается прямо из диалога Activity Cost соответствующей кнопкой. [Activity Properties ЕЗ UDP Values | UOW | Sauce | Я<*я | BasSMe Нате | Oefinbgn | Status | FM | Cotar Costs ’____________ Cost Center £ds« 1 frequency. | {др ' CualKn| Dw, Duration s Frequency 1,0000 ? Days OK | Cancel | jippiy | Help Рис. 1.3.4. Задание стоимости работ в диалоге Activity Cost 52
Глава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Общие затраты по работе рассчитываются как сумма по всем центрам затрат. При вычислении затрат вышестоящей (родительской) работы сна- чала вычисляется произведение затрат дочерней работы на частоту работы (число раз, которое работа выполняется в рамках проведения родительской работы), затем результаты складываются. Если во всех работах модели включен режим Compute from Decompositions, подобные вычисления авто- матически проводятся по всей иерархии работ снизу вверх (рис. 1.3.5). Рис. 1.3.5. Вычисление затрат родительской работы Этот достаточно упрощенный принцип подсчета справедлив, если рабо- ты выполняются последовательно. Встроенные возможности BPwin позво- ляют разрабатывать упрощенные модели стоимости, которые тем не менее оказываются чрезвычайно полезными для предварительной оценки затрат. Если схема выполнения более сложная (например, работы производятся альтернативно), можно отказаться от подсчета и задать итоговые суммы для каждой работы вручную (Override Decompositions). В этом случае результа- ты расчетов с нижних уровней декомпозиции будут игнорироваться, при расчетах на верхних уровнях будет учитываться сумма, заданная вручную. На любом уровне результаты расчетов сохраняются независимо от выбран- ного режима, поэтому при выключении опции Override Decompositions рас- чет снизу вверх производится обычным образом. Для проведения более тонкого анализа можно воспользоваться специа- лизированным средством стоимостного анализа EasyABC (ABC Technology, Inc.). BPwin имеет двунаправленный интерфейс с EasyABC. Для экспорта данных в EasyABC следует выбрать пункт меню File/Export/Node Tree, за- дать в диалоге Export Node Tree необходимые настройки и экспортировать дерево узлов в текстовый файл (.txt). Файл экспорта можно импортировать в EasyABC. После проведения необходимых расчетов результирующие дан- ные можно импортировать из EasyABC в BPwin. Для импорта нужно выб- рать меню File/Import/Costs и в диалоге Import Activity Costs выбрать необ- ходимые установки. Результаты стоимостного анализа могут существенно повлиять на очеред- ность выполнения работ. Рассмотрим пример, изображенный на рис. 1.3.6. 53
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Предположим, что для оценки качества изделия необходимо провести три работы: • внешний осмотр - стоимость 50 руб.; • пробное включение - стоимость 150 руб.; • испытание на стенде - стоимость 300 руб. Предположим также, что с точки зрения технологии очередность прове- дения работ несущественна, а вероятность выявления брака одинакова (50 %). Пусть необходимо проверить восемь изделий. Если проводить рабо- ты в убывающем по стоимости порядке, то стоимость, затраченная на получение готового изделия, составит: 300 руб. (Испытание на стенде) * 8 + 150 руб. (Пробное включение) * 4 + + 50 руб. (Внешний осмотр) * 2 = 3100 руб. Если проводить работы в возрастающем по стоимости порядке, то стои- мость, затраченная на получение готового изделия, составит: 50 руб. (Внешний осмотр) * 8 + 150 руб. (Пробное включение)* 4 + + 300 руб. (Испытание на стенде) * 2 = 1600 руб. Следовательно, с целью минимизации затрат первой должна быть вы- полнена наиболее дешевая работа, затем - средняя по стоимости и в конце - наиболее дорогая (рис. 1.3.6). Рис. 1.3.6. Фрагмент диаграммы декомпозиции работы "Контроль качества" Результаты стоимостного анализа наглядно представляются в специаль- ном отчете BPwin - Activity Cost Report (меню Tools/Report/Activity Cost Report). Отчет позволяет документировать имя, номер, определение и стоимость работ, как суммарную, так и раздельно по центрам затрат (рис. 1.3.7). 54
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Activity Based Costing Report Corl Report 3 Updd»| New-| Modet Иэготовлегме изделия , A.............................................. octivrty |АО Изготовление изделия vr Options dumber of Levels Г" 117 Actidygeme Cost Center Options Odd» | Afitwity number 4 P Uefntion 3l? Ac My costs Aclmtji Ordemg Г Afcftahetical & Hierarchical J j C Breadth Fist : 5P Cott center name Б P Cost eerier definition 7P Cos’center costs Tne Period Options - Г Activity duration Г" Activity frequency Report Found Labeled Г* Fixed column C lab delated | Г Comma<fMM |- fBDEtabte ’*>T [Г HPTwh } - J pMuKyduedfotmat—j r Repeating group | Г filled i *’£ | Heeder 17 M«Mgr 17 Remove speed char ABC Options _ - Г Calcdate al non-leaf node costs Рис. 1.3.7. Диалог настройки отчета no стоимости работ Результаты отображаются и непосредственно на диаграммах. В левом нижнем углу прямоугольника работы может показываться либо стоимость (по умолчанию), либо продолжительность, либо частота проведения работы. Настройка отображения осуществляется в диалоге Model Properties (меню Model/Model Properties), вкладка Display, опции ABC Data и ABC Units. 1.3.2. Свойства, определяемые пользователем (User Defined Properties) ABC позволяет оценить стоимостные и временные характеристики сис- темы. Если стоимостных показателей недостаточно, имеется возможность внесения собственных метрик - свойств, определенных пользователем (User Defined Properties, UDP). UDP позволяют провести дополнительный анализ, хотя и без суммирующих подсчетов. Для описания UDP служит диалог UDP Dictionary (меню Dictionary/UDP) (рис. 1.3.8). UDP можно поставить в соответствие одно или несколько клю- чевых слов. Ключевые слова могут быть использованы для отбора UDP при печати отчетов или при присвоении свойств работам и стрелкам. Ключевые слова должны быть описаны в словаре UDP Keyword List (рис. 1.3.9). Для внесения нового ключевого слова следует щелкнуть по кнопке - и в таб- лице диалога UDP Keyword List задать значение ключевого слова. 55
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Application Text List (Multiple selections) COS-Customer Order Information ESS-Employee She! System PIS-Parts and Inve | PTS-Procedures a I Change History Custoawr Satisfaction Paragraph I ext „ integer List (Single selection) Рис. 1.3.8. Диалог описания UDP Для создания нового свойства (UDP) следует в словаре UDP Dictionary перейти к нижней строке списка и дважды щелкнуть по полю Name. В режиме редактирования имени следует внести имя UDP. В поле UDP Туре (рис. 1.3.10) описывается тип свойства. Имеется возможность задания 18 различных типов UDP (табл. 1.3.1), в том числе управляющих команд и массивов. Таблица 1.3.1. Типы UDP и их использование Тип Использование Text При задании свойства стрелки или работы просто вносится текст, например это может быть просто дополнительное пояснение Paragraph Text Значение свойства этого типа - текст в несколько строк Integer Значение свойства этого типа - целое число, например значение свойства "Количество баллов" Command Командная строка. При задании значения UDP в списке свойств справа от имени свойства появляется кнопка Я. При щелчке по этой кнопке выполняется командная стро- ка. С помощью этого свойства можно связать с объектом модели документацию, хранящуюся в формате приложе- ния Windows, например Word, Excel и т. д. 56
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Tun Использование Character Значение свойства этого типа - один сивол Date mm/dd/yy (yy) Значение свойства этого типа - дата Real Number Значение свойства этого типа - действительное число, на- пример значение свойства "Потребление электроэнергии, кВт-ч" Text List (Single selection) Массив строк. Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваивать только одно значение из предварительно заданного списка Integer List (Single selection) Массив целых чисел. Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваивать только одно значение из предварительно заданного списка Command List Массив команд. Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваивать только одно значение из предварительно заданного списка Date List mm/dd/yy(yy) (Single selection) Массив дат. Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваивать только одно значение из предварительно заданного списка Real Number List (Single selection) Массив действительных чисел. Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваивать только одно значение из предварительно заданного списка Character List (Single selection) ^Массив символов. Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваивать только одно значение из предварительно заданного списка Text List (Multiple selections) Массив строк (множественный выбор). Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваи- вать одновременно несколько значений из предварительно заданного списка Integer List (Multiple selections) Массив целых чисел (множественный выбор). Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно при- сваивать одновременно несколько значений из предвари- тельно заданного списка 57
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Тип Использование Date List (Multiple selections) Массив дат (множественный выбор). Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваи- вать одновременно несколько значений из предварительно заданного списка Real Number List (Multiple selections) Массив действительных чисел (множественный выбор). Значения свойства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваивать одновременно несколько значений из предварительно заданного списка Character List (Multiple selections) Массив символов (множественный выбор). Значения свой- ства этого типа должны быть определены в диалоге UDP Dictionary (поле Value). Объекту модели можно присваи- вать одновременно несколько значений из предварительно заданного списка Для присвоения свойству ключевого слова следует перейти к полю Keyword и выбрать из списка необходимые ключевые слова. Одному свой- ству может соответствовать несколько разных ключевых слов, одно ключе- вое слово может соответствовать разным свойствам. Рис. 1.3.9. Диалог описания ключевых слов UDP Рис. 1.3.10. Выбор типа UDP |text List (Multipie selections) Paragraph Text Integer Command Character Date: dd.mm.yyfyy) Real Number Каждой работе можно поставить в соответствие набор UDP. Для этого следует щелкнуть правой кнопкой мыши по работе и выбрать пункт меню UDP. Во вкладке UDP Values диалога Activity Properties можно задать зна- чения UDP. Свойства типа List отображаются списком выбора, который за- полнен предварительно определенными значениями. Свойства типа Command могут иметь в качестве значения командную строку, которая выполняется при нажатии на кнопку -i-. Например, свой- 58
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 ство "Спецификации" категории "Дополнительная документация" может иметь значение C:\MSOffice97\Office\WINWORD.EXE specl.doc. UDPVAw | Utt* I Source | Rotes | Еох'Ме Рис. 1.3.11. Задание значений LDP Кнопка Filter служит для задания фильтра по ключевым словам UDP. По умолчанию в списке показываются свойства всех категорий. Кнопка Dictionary вызывает диалог User Defined Property Dictionary (рис. 1.3.12), который позволяет создавать и редактировать как UDP, так и ключевые слова UDP. Add Keloid | Dglele Keywords j Add Membm | | Ur^ate Member | growse [ Puc. 1.3.12. Диалог User Defined Property Dictionary 59
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В верхнем окне диалога вносится имя UDP, в списке выбора Datatype описывается тип свойства. Для внесения ключевого слова следует задать имя в окне New Keywords и щелкнуть по кнопке Add Keywords. Для при- своения ключевого слова необходимо выбрать UDP из списка User-Defined Properties, затем ключевое слово из списка Keywords и щелкнуть по кнопке Update. Одно ключевое слово может объединять несколько свойств, в то же время одному свойству может соответствовать несколько ключевых слов. Свойство типа List может содержать массив предварительно определенных значений. Для определения области значений UDP типа List следует задать значение свойства в окне New Member и щелкнуть по кнопке Add Member. Значения из списка можно редактировать и удалять (кнопки Update Member и Delete Member). Если работе ставится в соответствие значение UDP, то на диаграмме в правом верхнем углу работы отображается метка в виде канцелярской скрепки (рис. 1.3.13). плана Рис. 1.3.13. Метка UDP Отображение метки UDP на диаграммах модели можно отменить. Для этого необходимо перейти в меню Tools/Preferences. Для отмены отображе- ние метки UDP в диалоге Preferences (рис. 1.3.14) необходимо выключить опцию Display UDP Marker. Рис. 1.3.14. Диалог Preferences 60
Гпаеа 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Результат задания значений UDP можно проанализировать в отчете Diagram Object Report (меню Tools/Report/Diagram Object Report, рис. 1.3.15). Diagram Object Report Reports1 l^odeTree Report Report on P ActvPej I Data Stores Г Externals Г R er er ent s Г Junctom Мой: Изготовление изделия " 4 f Report Format Humber of Leyek Adnty Opbont 2> Arrow Ophora Г IfputName Г' Inpt^D^inibon Г Author Narr® Г QbwtType Г Facts Г Objects Г" Desertion Г Constraints User-Deined Properbet и 1 Г Corirol Detyrfton Г Output Name Г" Ojftrut Defitvbcn Г MecfoName Г* MechDefptan Г" Cal Arrow Name ( Г" Cal Arrow Detntion | F$ed Column , I TabDdmted рГ £огф$еЙН : Г £DE Table Г EPTwei MdtrValuH Format t7 Repeal Group ( <^0ted * P Remove Specui Char ActiWv Ordcrng [Change History 5 — — 7^ Hierarc&cel E! Arrow Ordering—- №abeteal Рис. 1.3.15. Диалог настройки отчета Diagram Object Report В левом нижнем углу диалога настройки отчета показывается список UDP. С помощью кнопки UDP Filters можно установить фильтр по ключе- вым словам. 1.3.3. Использование UDP для экспорта данных функциональной модели в MS Project Как было показано в предыдущих разделах, функциональная модель, создаваемая с помощью BPwin позволяет выявить недостатки бизнес- процессов и построить идеальную модель деятельности, т. е. оптимальную последовательность действий, документооборот и использование ресурсов при осуществлении проектов (например, проектов по реорганизации пред- приятий). Но, к сожалению, она не позволяет решать задачи управления проектом. Совместное использование средств функционального моделиро- вания и управления проектами позволило бы комплексно решить задачу по реорганизации предприятий и внедрению ИС, включая анализ, реорганиза- цию функций и управление проектом, созданным на основе реорганизован- ныых бизнес-процессов. В настоящее время существует много специализи- рованных средств управления проектами, наиболее известным из которых 61
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite является Project 2000 компании Microsoft. Project 2000 поддерживает многие аспекты управления проектами, такие, как построение графика работ, учет расходов и потребление ресурсов, контроль выполнения работ, организация взаимодействия членов проектной команды, анализ результатов и создание отчетов по проекту. В стандартном наборе средств BPwin 4.1 отсутствует возможность экс- порта данных функциональной модели в средства управления проектами. Однако эта задача может быть решена с помощью свойств, определяемых пользователем (UDP). Применяя UDP, можно экспортировать данные из BPwin 4.1 в Project 2000, причем в результате такого экспорта сетевой график создается автоматически. Рассмотрим пример, иллюстрирующий процедуру такого экспорта. Первым этапом является создание функцио- нальной модели, создание и присвоение значений UDP. На рис. 1.3.16- 1.3.17 показаны контекстная диаграмма (А-0) и диаграмма декомпозиции первого уровня (АО) рассматриваемого примера. Методология структурного анализа --------------------------g Разработка рекомендаций по реорганизации предприятия Рекомендации по реорганизации предприятия 0| Консультанты Рис. 1.3.16. Контекстная диаграмма рассматриваемой модели Методология структурного анализа езультаты бследоваиия Петров Анализ 1 результатов обследования, построение модели ТО-ВЕ з| Рекомендации по реорганизации предприятия Сидоров Консультанты Рис. 1.3.17. Диаграмма декомпозиции АО рассматриваемой модели 62
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 UDP, созданные в модели, приведены в табл. 1.3.2. Таблица 1.3.2 Свойство (UDP) Tun Примечание ID Text Идентификатор задачи в проекте Project 2000 Outline Level Text Уровень вложенности задачи в проекте Project 2000 Predecessors Text Идентификатор предшествующей задачи (для после- довательно выполняющихся задач) Start Date- Дата начала задачи Finish Date Дата окончания задачи Значения UDP, присвоенные работам модели приведены в табл. 1.3.3. Таблица 1.3.3 Имя работы Значения свойств (UDP) Activity Name ID Outline Level Predecessors Start Finish Разработка рекомендаций по реорганизации предпри- ятия 1 1 14.03.02 16.06.02 Разработка плана обследо- вания 2 2 14.03.02 16.04.02 Обследование предприятия и построение модели AS-IS 3 2 2 16.04.02 16.05.02 Анализ результатов обсле- дования, построение модели ТО-ВЕ 4 2 3 16.05.02 16.06.02 Экспорт данных непосредственно из BPwin 4.1 в Project 2000 невозмо- жен, однако можно перенести данные через промежуточный экспорт в MS Excel. Для экспорта данных из BPwin 4.1 в MS Excel следует сгенерировать отчет по объектам (меню Tools/Reports/Diagram Object Report) и экспорти- ровать его MS Excel по протоколу DDE, как описано в 2.1.1. На рис 1.3.18 показаны диалог Diagram Object Report, в котором приведены необходимые настройки отчета. Кроме значений UDP в отчет включены наименования работ, которые будут использованы в качестве наименования задач в проек- те Project 2000, и наименования стрелок механизма, которые будут исполь- зоваться как название ресурсов. 63
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 1.3.18. Настройки отчета для экспорта данных в диалоге Diagram Object Report Для успешного экспорта необходимо предварительно запустить MS Excel, после чего щелкнуть по кнопке Report диалога Diagram Object Report. Результат экспорта - книга MS Excel - показан на рис. 1.3.19. £3 Micfusufl Excel Book? * z- л u>ioo% ио -Г ТжТ I ч.,. -|21' 16.06.02 16 04.02' 16.05.02 IRORn? 2 3 2 2 2 , _ „ r A > В С D E ; F 1-(Activity Name Mechanism Name Finish ID Outline Level Predecessors ^Разработка рекомендаций no pet Консультанты ^Разработкаплана обследованияйванов МОбслвдование предприятия и по; Петров Анализ результатов обследован! Сидоров 2 Start i 3 14 03 02 , 14 03 02 16 04.02 . Л5"п?= 1 ►лг £ < ►,H\slieetl/ Рис. 1.3.19. Результат экспорта данных в MS Excel После завершения экспорта следует сохранить файл и выйти из MS Excel. Затем нужно запустить Project 2000. В окне Project 2000 следует пе- рейти в меню File/Open. В нижнем раскрывающемся списке Files of Type диалога Open надо выбрать Microsoft Excel Workbooks, в верхнем окне- 64
Глава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 выбрать предварительно сохраненный файл MS Excel. Появляется диалог Import Mapping (рис. 1.3.20). Рис. 1.3.20. Диалог Import Mapping Для импорта данных необходимо создать новую карту импорта. Для это- го следует щелкнуть по кнопке New Мар и в появившемся диалоге Define Import/Export Мар установить опции, как показано на рис. 1.3.21. Рис. 1.3.21. Диалог Define Import/Export Map 65
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Таблица соответствия полей в средней части диалога должна соответст- вовать табл. 1.3.4. Таблица 1.3.4 То: Microsoft Project Field From: Worksheet Field Name Activity Name ID ID Outline Level Outline Level Predecessors Predecessors Start Start Finish Finish Resource Names Mechanism Name После редактирования таблицы соответствия полей необходимо щелк- нуть по кнопке ОК в диалоге Define Import/Export Мар и затем по кнопке Open в диалоге Open. В Project 2000 автоматически создает проект на осно- ве импортированных данных. Диаграмма Гантта созданного проекта пока- зана на рис. 1.3.22. 1*1 Ра1раОопаремммццацмилореоргени)«1*«ипредприя1И1 Разработка плана обследования 1| Ч J Обследование предприятия и построение модели AS-IS J ЯЙНН№Пвт>к* * j Анализ результатов обследования, построение модели ТСН Сидоров . .....................................в ! I и ; : Рис. 1.3.22. Результат импорта данных в проект MS Project Заметим, что работы (Activity) функциональной модели конвертирова- лись в задачи (Task) проекта Project 2000, а стрелки механизмов - в ресурсы. 1.4. Дополнение созданной модели процессов организационными диаграммами, диаграммами DFD и Workflow (IDEF3) 1.4.1. Диаграммы потоков данных (Data Flow Diagramming) Диаграммы потоков данных (Data flow diagramming, DFD) используются для описания документооборота и обработки информации. Подобно IDEF0, DFD представляет модельную систему как сеть связанных между собой ра- бот. Их можно использовать как дополнение к модели IDEF0 для более на- глядного отображения текущих операций документооборота в корпора- тивных системах обработки информации. DFD описывает: 66
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 • функции обработки информации (работы); • документы (стрелки, arrows), объекты, сотрудников или отделы, которые участвуют в обработке информации; • внешние ссыпки (external references), которые обеспечивают интерфейс с внешними объектами, находящимися за границами моделируемой системы; • таблицы для хранения документов (хранилище данных, data store). В BPwin для построения диаграмм потоков данных используется нота- ция Гейна - Сарсона. Для того чтобы дополнить модель IDEF0 диаграммой DFD, нужно в процессе декомпозиции в диалоге Activity Box Count "кликнуть" по радио- кнопке DFD. В палитре инструментов на новой диаграмме DFD появляются новые кнопки: H - добавить в диаграмму внешнюю ссылку (External Reference). Внешняя ссылка является источником или приемником данных извне модели. - добавить в диаграмму хранилище данных (Data store). Хранилище данных позволяет описать данные, которые необходимо сохранить в памяти прежде, чем использовать в работах. В отличие от стрелок IDEF0, которые представляют собой жесткие взаимосвязи, стрелки DFD показывают, как объекты (включая данные) дви- гаются от одной работы к другой. Это представление потоков совместно с хранилищами данных и внешними сущностями делает модели DFD более похожими на физические характеристики системы - движение объектов (data flow), хранение объектов (data stores), поставка и распространение объектов (external entities) (рис. 1.4.1). 67
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В отличие от IDEF0, где система рассматривается как взаимосвязанные работы, DFD рассматривает систему как совокупность предметов. Контек- стная диаграмма часто включает работы и внешние ссыпки. Работы обычно именуются по названию системы, например "Система обработки инфор- мации”. Включение внешних ссылок в контекстную диаграмму не отменяет требования методологии четко определить цель, область и единую точку зрения на моделируемую систему. Работы. В DFD работы представляют собой функции системы, преоб- разующие входы в выходы. Хотя работы изображаются прямоугольниками со скругленными углами, смысл их совпадает со смыслом работ IDEF0 и IDEF3. Так же как работы IDEF3, они имеют входы и выходы, но не под- держивают управления и механизмы, как IDEF0. Внешние сущности. Внешние сущности изображают входы в систему и/или выходы из системы. Внешние сущности изображаются в виде прямоу- гольника с тенью и обычно располагаются по краям диаграммы. Одна внешняя сущность может быть использована многократно на одной или не- скольких диаграммах. Обычно такой прием применяют, чтобы не рисовать слишком длинных и запутанных стрелок. Стрелки (потоки данных). Стрелки описывают движение объектов из одной части системы в другую. Поскольку в DFD каждая сторона работы не имеет четкого назначения, как в IDEF0, стрелки могут подходить и выхо- дить из любой грани прямоугольника работы. В DFD также применяются двунаправленные стрелки для описания диалогов типа команды-ответа ме- жду работами, между работой и внешней сущностью и между внешними сущностями (рис. 1.4.2). 4о 415 РЛбСТА системы аб-р-аботки информации Клиент | твявяяв» Рис. 1.4.2. Внешняя сущность Хранилище данных. В отличие от стрелок, описывающих объекты в движении, хранилища данных изображают объекты в покое (рис. 1.4.3). 1 Данные клиента Рис. 1.4.3. Хранилище данных 68
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4. Т В материальных системах хранилища данных изображаются там, где объекты ожидают обработки, например в очереди. В системах обработ- ки информации хранилища данных являются механизмом, который позво- ляет сохранить данные для последующих процессов. Слияние и разветвление стрелок. В DFD стрелки могут сливаться и разветвляться, что позволяет описать декомпозицию стрелок. Каждый но- вый сегмент сливающейся или разветвляющейся стрелки может иметь соб- ственное имя. Построение диаграмм DFD. Диаграммы DFD могут быть построены с использованием традиционного структурного анализа, подобно тому как строятся диаграммы IDEF0. Сначала строится физическая модель, отобра- жающая текущее состояние дел. Затем эта модель преобразуется в логи- ческую модель, которая отображает требования к существующей системе. После этого строится модель, отображающая требования к будущей систе- ме. И наконец, строится физическая модель, на основе которой должна быть построена новая система. Альтернативным подходом является подход, популярный при создании программного обеспечения, называемый событийным разделением (event partitioning), в котором различные диаграммы DFD выстраивают модель системы. Во-первых, логическая модель строится как совокупность работ и документирования того, что они (эти работы) должны делать. Затем модель окружения (environment model) описывает систему как объект, взаимодействующий с событиями из внешних сущностей. Модель окружения обычно содержит описание цели системы, одну контекстную диаграмму и список событий. Контекстная диаграмма содержит один пря- моугольник работы, изображающий систему в целом, и внешние сущности, с которыми система взаимодействует. Наконец, модель поведения (behavior model) показывает, как система об- рабатывает события. Эта модель состоит из одной диаграммы, в которой каждый прямоугольник изображает каждое событие из модели окружения. Хранилища могут быть добавлены для моделирования данных, которые не- обходимо запоминать между событиями. Потоки добавляются для связи с другими элементами, и диаграмма проверяется с точки зрения соот- ветствия модели окружения. Полученные диаграммы могут быть преобразованы с целью более на- глядного представления системы, в частности работы на диаграммах могут быть декомпозированы. 69
С. В. Маклаков, Создание информационных систем с AllFusion Modeling Suite Нумерация объектов. В DFD номер каждой работы может включать префикс, номер родительской работы (А) и номер объекта. Номер объекта - это уникальный номер работы на диаграмме. Например, работа может иметь номер А. 12.4. Уникальный номер имеют хранилища данных и внеш- ние сущности независимо от их расположения на диаграмме. Каждое храни- лище данных имеет префикс D и уникальный номер, например D5. Каждая внешняя сущность имеет префикс Е и уникальный номер, например Е5. 1.4.2. Метод описания процессов IDEF3 Наличие в диаграммах DFD элементов для описания источников, прием- ников и хранилищ данных позволяет более эффективно и наглядно описать процесс документооборота. Однако для описания логики взаимодействия информационных потоков более подходит IDEF3, называемая также workflow diagramming - методологией моделирования, использующая гра- фическое описание информационных потоков, взаимоотношений между процессами обработки информации и объектов, являющихся частью этих процессов. Диаграммы Workflow могут быть использованы в моделиро- вании бизнес-процессов для анализа завершенности процедур обработки информации. С их помощью можно описывать сценарии действий сот- рудников организации, например последовательность обработки заказа или события, которые необходимо обработать за конечное время. Каждый сценарий сопровождается описанием процесса и может быть использован для документирования каждой функции. IDEF3 - это метод, имеющий основной целью дать возможность анали- тикам описать ситуацию, когда процессы выполняются в определенной по- следовательности, а также описать объекты, участвующие совместно в од- ном процессе. Техника описания набора данных IDEF3 является частью структурного анализа. В отличие от некоторых методик описаний процессов IDEF3 не ограничивает аналитика чрезмерно жесткими рамками синтаксиса, что может привести к созданию неполных или противоречивых моделей. IDEF3 может быть также использован как метод создания процессов. IDEF3 дополняет IDEF0 и содержит все необходимое для построения моделей, кото- рые в дальнейшем могут быть использованы для имитационного анализа. Каждая работа в IDEF3 описывает какой-либо сценарий бизнес-процесса и может являться составляющей другой работы. Поскольку сценарий опи- сывает цель и рамки модели, важно, чтобы работы именовались отглаголь- ным существительным, обозначающим процесс действия, или именным словосочетанием, содержащим такое существительное. 70
Глава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Точка зрения на модель должна быть задокументирована. Обычно это точка зрения человека, ответственного за работу в целом. Также необ- ходимо задокументировать цель модели - те вопросы, на которые призвана ответить модель. Диаграммы. Диаграмма является основной единицей описания в IDEF3. Важно правильно построить диаграммы, поскольку они предназначены для чтения другими людьми (а не только автором). Единицы работы - Unit of Work (UOW). UOW, также называемые ра- ботами (activity), являются центральными компонентами модели. В IDEF3 работы изображаются прямоугольниками с прямыми углами и имеют имя, выраженное отглагольным существительным, обозначающим процесс дей- ствия, одиночным или в составе словосочетания, и номер (идентификатор); другое имя существительное в составе того же словосочетания, зависимое от отглагольного существительного, обычно отображает основной выход (результат) работы (например, "Изготовление изделия"). Часто имя суще- ствительное в имени работы меняется в процессе моделирования, поскольку модель может уточняться и редактироваться. Идентификатор работы при- сваивается при создании и не меняется никогда. Даже если работа будет удалена, ее идентификатор не будет вновь использоваться для других работ. Обычно номер работы состоит из номера родительской работы и порядко- вого номера на текущей диаграмме. Работа в IDEF3 требует более подробного описания, чем работа в IDEF0. Каждая UOW должна иметь ассоциированный документ, который включает текстовое описание компонентов работы: объектов (Objects) и фактов (Facts), связанных с работой, ограничений (Constraints), накладываемых на работу, и дополнительное описание работы (Description). Эта информа- ция заносится во вкладку UOW диалога Activity Properties (рис. 1.4.4). Пример значений свойств UOW приведен в табл. 1.4Л. Таблица 1.4.1. Пример текстового описания компонентов UOW Тип Использование Name Подготовка компонентов Definition Подготавливаются все компоненты компьютера согласно специ- фикации заказа Objects Компоненты: винчестеры, корпуса, материнские платы, видео- карты, звуковые карты, дисководы CD-ROM и флоппи, модемы, программное обеспечение Constrains Установка модема требует установки дополнительного про- граммного обеспечения 71
С. В. Маклаков. Создение информеционных систем с AllFusion Modeling Suite Рис. 1.4.4. Вкладка UOW диалога Activity Properties Связи. Связи показывают взаимоотношения работ. Все связи в IDEF3 однонаправленны и могут быть направлены куда угодно, но обычно диа- граммы IDEF3 стараются построить так, чтобы связи были направлены сле- ва направо. В IDEF3 различают три типа стрелок, изображающих связи, стиль которых устанавливается во вкладке Style (рис. 1.4.5) диалога Arrow Properties (пункт контекстного меню Style). Рис. 1.4.5. Вкладка Style диалога Arrow Properties 72
Глава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Старшая (Precedence) стрелка - сплошная линия, связывающая единицы работ (LJOW). Рисуется слева направо или сверху вниз. Показывает, что ра- бота-источник должна закончиться прежде, чем работа-цель начнется. Стрелка отношения (Relational Link) - пунктирная линия, использую- щаяся для изображения связей между единицами работ (UOW), а также ме- жду единицами работ и объектами ссылок. Потоки объектов (Object Flow) - стрелка с двумя наконечниками, приме- няется для описания того факта, что объект используется в двух или более единицах работы, например когда объект порождается в одной работе и ис- пользуется в другой. Старшая связь и поток объектов. Старшая связь показывает, что рабо- та-источник заканчивается ранее, чем начинается работа-цель. Часто ре- зультатом работы-источника становится объект, необходимый для запуска работы-цели. В этом случае стрелку, обозначающую объект, изображают с двойным наконечником. Имя стрелки должно ясно идентифицировать отображаемый объект. Поток объектов имеет ту же семантику, что и стар- шая стрелка. Отношение показывает, что стрелка является альтернативой старшей стрелке или потоку объектов в смысле задания последовательности выпол- нения работ - работа-источник не обязательно должна закончиться прежде, чем работа-цель начнется. Более того, работа-цель может закончиться преж- де, чем закончится работа-источник (рис. 1.4.6). Начало Окончание работы- работы - источника источника Начало Окончание работы- работы - цели цели Старшая или поток объектов Начало Начало работы - работы - источника цели Окончание Окончание работы- работы- источника цели Отношение Начало Начало работы - работы - источника цели Окончание работы - цепи Окончание работы - источника Отношение Рис. 1.4.6. Временная диаграмма выполнения работ Перекрестки (Junction). Окончание одной работы может служить сиг- налом к началу нескольких работ, или же одна работа для своего запуска может ожидать окончания нескольких работ. Перекрестки используются 73
С. В. Маклаков. Создание информационных систем с AIIFusion Modeling Suite для отображения логики взаимодействия стрелок при слиянии и разветв- лении или для отображения множества событий, которые могут или должны быть завершены перед началом следующей работы. Различают перекрестки для слияния (Fan-in Junction) и разветвления (Fan-out Junction) стрелок. Пе- рекресток не может использоваться одновременно для слияния и разветвле- ния. Для внесения перекрестка служит кнопка IS (добавить в диаграмму перекресток - Junction) в палитре инструментов. В диалоге Junction Туре Editor необходимо указать тип перекрестка. Смысл каждого типа приведен в табл. 1.4.2. Таблица 1.4.2. Типы перекрестков Обозна- чение Наименование Смысл в случае слияния стрелок (Fan-in Junction) Смысл в случае разветвления стрелок (Fan-out Junction) Is Асинхронное"И" (Asynchronous AND) Все предшествующие процессы должны быть завершены Все следующие про- цессы должны быть запущены II & II Синхронное"И" (Synchronous AND) Все предшествующие процессы завершены одновременно Все следующие про- цессы запускаются од- новременно Асинхронное "ИЛИ" (Asynchronous OR) Один или несколько предшествующих процессов должны быть завершены Один или несколько следующих процессов должны быть запущены Н 1 Синхронное "ИЛИ" (Synchronous OR) Один или несколько предшествующих процессов завершены одновременно Один или несколько следующих процессов запускаются одновре- менно X Исключающее "ИЛИ" XOR (Exclusive OR) Только один предше- ствующий процесс за- вершен Только один следу- ющий процесс запус- кается Все перекрестки на диаграмме нумеруются, каждый номер имеет пре- фикс J. Можно редактировать свойства перекрестка при помощи диалога Junction Properties (вызывается из контекстного меню). В отличие от IDEF0 и DFD в IDEF3 стрелки могут сливаться и разветвляться только через пере- крестки. Рис. 1.4.7-1.4.11 иллюстрируют смысл перекрестков каждого типа. 74
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Рис. 1.4.7. Перекрестки для слияния и разветвления типа синхронного "И". Здесь после завершения работы 1 одновременно запускаются работы 2 и 4. Для запуска работы 5 требуется одновременное завершение работ 3 и 4 Рис. 1.4.8. Перекрестки для слияния и разветвления типа асинхронного "И". Здесь после завершения работы 1 запускаются работы 2 и 4 (не обязательно одновременно). Для запуска работы 5 требуется завершение работ 3 и 4 (не обязательно одновременное) Рис. 1.4.9. Перекрестки для слияния и разветвления типа асинхронного "ИЛИ". Здесь после завершения работы I запускается либо работа 2, либо работа 3, либо работа 4, либо их сочетание (не обязательно одновременно). Для запуска работы 5 требуется завершение любой из работ 2, 3 и 4 или их сочетания (не обязательно одновременное) 75
C. S, Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 1.4.10. Перекрестки для слияния и разветвления типа синхронного "ИЛИ". Здесь после завершения работы 1 запускается либо работа 2, либо работа 3, либо работа 4, либо их сочетание. Если запускается более одной работы, требуется их одновременный запуск. Для запуска работы 5 требуется завершение любой из работ 2, 3 и4 или их сочетания. Если завершается более чем одна работа, требуется их одновременное завершение Рис. 1.4.11. Перекрестки для слияния и разветвления типа исключающего "ИЛИ”. Здесь после завершения работы 1 запускается только одна работа - либо работа 3, либо работа 4. Для запуска работы 5 требуется завершение только одной из работ, 3 или 4 Правила создания перекрестков. На одной диаграмме IDEF3 может быть создано несколько перекрестков различных типов. Определенные со- четания перекрестков для слияния и разветвления могут приводить к логическим несоответствиям. Чтобы избежать конфликтов, необходимо соблюдать следующие правила: 1. Каждому перекрестку для слияния должен предшествовать перекресток для разветвления. 2. Перекресток для слияния "И" не может следовать за перекрестком для разветвления типа синхронного или асинхронного "ИЛИ" (рис. 1.4.12). Действительно, после работы 1 может запускаться только одна работа - 76
Глава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 2 или 3, а для запуска работы 4 требуется окончание обеих работ - 2 и 3. Такой сценарий не может реализоваться. Рис. 1.4.12. Неверное размещение перекрестков. Перекресток для слияния "И” не может следовать за перекрестком для разветвления "ИЛИ" 3. Перекресток для слияния "И" не может следовать за перекрестком для разветвления типа исключающего "ИЛИ" (рис. 1.4.13). Рис. 1.4.13. Неверное размещение перекрестков. Перекресток для слияния "И" не может следовать за перекрестком для разветвления типа исключающего "ИЛИ" 4. Перекресток для слияния типа исключающего "ИЛИ" не может сле- довать за перекрестком для разветвления типа "И" (рис. 1.4.14). Здесь после завершения работы 1 запускаются обе работы - 2 и 3, а для запус- ка работы 4 требуется, чтобы завершилась одна и только одна работа - или 2, или 3. Рис. 1.4.14. Неверное размещение перекрестков. Перекресток для слияния типа исключающего "ИЛИ" не может следовать за перекрестком для разветвления типа "И" 77
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 5. Перекресток, имеющий одну стрелку на одной стороне, должен иметь более одной стрелки на другой. Объект ссылки. Объект ссылки в IDEF3 вы- ражает некую идею, концепцию или данные, ко- торые нельзя связать со стрелкой, перекрестком или работой (рис. 1.4.15). Для внесения объекта ссылки служит кнопка cSJ (добавить в диаграмму объект ссылки - Referent) в палитре инструмен- тов. Объект ссылки изображается в виде прямо- угольника, похожего на прямоугольник работы. Имя объекта ссылки задается в диалоге Referent Properties (пункт контекст- ного меню Name), в качестве имени можно использовать имя какой-либо стрел- ки с других диаграмм или имя сущности из модели данных. Объекты ссылки должны быть связаны с единицами работ или перекрестками пунктирными ли- ниями. Официальная спецификация IDEF3 различает три стиля объектов ссы- лок - безусловные (unconditional), синхронные (synchronous) и асинхронные (asynchronous). BPwin поддерживает только безусловные объекты ссылок. Син- хронные и асинхронные объекты ссылок, используемые в диаграммах перехо- дов состояний объектов, не поддерживаются. При внесении объектов ссылок помимо имени следует указывать тип объекта ссылки. Типы объектов ссылок приведены в табл. 1.4.3. Таблица 1.4.3. Типы объектов ссылок Тип объекта ссылки Цель описания OBJECT Описывает участие важного объекта в работе GOTO Инструмент циклического перехода (в повторяющейся последо- вательности работ), возможно на текущей диаграмме, но не обя- зательно. Если все работы цикла присутствуют на текущей диа- грамме, цикл может также изображаться стрелкой, возвращаю- щейся на запуск. GOTO может ссылаться на перекресток UOB (Unit of behavior) Применяется, когда необходимо подчеркнуть множественное использование какой-либо работы, но без цикла. Например, ра- бота "Контроль качества" может быть использована в процессе "Изготовление изделия" несколько раз, после каждой единичной операции. Обычно этот тип ссылки не используется для модели- рования автоматически запускающихся работ 78
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Тип объекта ссылки Цель описания NOTE Применяется для документирования важной информации, относя- щейся к каким-либо графическим объектам на диаграмме. NOTE яв- ляется альтернативой внесению текстового объекта в диаграмму ELAB (Elaboration) Используется для усовершенствования графиков или их более детального описания. Обычно употребляется для детального описания разветвления и слияния стрелок на перекрестках Декомпозиция работ. В IDEF3 декомпозиция используется для детали- зации работ. Методология IDEF3 позволяет декомпозировать работу много- кратно, т. е. работа может иметь множество дочерних работ. Это позволяет в одной модели описать альтернативные потоки. Декомпозиция может быть сценарием или описанием. Описание включает все возможные пути разви- тия процесса. Сценарий является частным случаем описания и иллюст- рирует только один путь реализации процесса. По умолчанию при декомпо- зиции на диаграмму IDEF3 создается описание. Чтобы создать сценарий, необходимо перейти в меню Diagram/Add IDEF3 Scenario. Возможность множественной декомпозиции предъявляет дополни- тельные требования к нумерации работ. Так, номер работы состоит из номера родительской работы, номера декомпозиции и собственного но- мера работы на текущей диаграмме (рис. 1.4.16). Номер родительской работы Номер декомпозиции Номер работы Рис. 1.4.16. Номер единицы работы (UOW) Для описания номер декомпозиции равен единице. Для сценария номер декомпозиции всегда больше единицы. При создании сценария или описания необходимо придерживаться до- полнительных ограничений - в сценарии или декомпозиции может су- ществовать только одна точка входа. За точкой входа следует работа или перекресток. Для декомпозиции может существовать только одна точка вы- хода. Сценарий, который не является декомпозицией, может иметь несколь- ко точек выхода. Рассмотрим процесс декомпозиции диаграмм IDEF3, включающий взаи- модействие автора (аналитика) и одного или нескольких экспертов пред- метной области. 79
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Описание сценария, области и точки зрения. Перед проведением се- анса экспертизы у экспертов предметной области должны быть задоку- ментированы сценарии и рамки модели для того, чтобы эксперт мог понять цели декомпозиции. Кроме того, если точка зрения моделирования отли- чается от точки зрения эксперта, она должна быть особенно тщательно за- документирована. Возможно, что эксперт самостоятельно не сможет передать необходи- мую информацию. В этом случае аналитик должен приготовить список во- просов для проведения интервью. Определение работ и объектов. Обычно эксперт предметной области передает аналитику текстовое описание сценария. В дополнение к этому может существовать документация, описывающая интересующие процессы. Изо всей этой информации аналитик должен составить список кандидатов на работы (отглагольные существительные, обозначающие процесс, одиноч- ные или в составе именного словосочетания) и кандидатов на объекты (су- ществительные, обозначающие результат выполнения работы), которые не- обходимы для перечисленных в списке работ. В некоторых случаях целесообразно создать графическую модель для представления ее эксперту предметной области. Графическая модель может быть также создана после сеанса сбора информации для того, чтобы детали форматирования диаграммы не смущали участников. Поскольку разные фрагменты модели IDEF3 могут быть созданы раз- личными группами аналитиков в разное время, IDEF3 поддерживает про- стую схему нумерации работ в рамках всей модели. Разные аналитики опе- рируют различными диапазонами номеров, работая при этом независимо. Пример выделения диапазона приведен в табл. 1.4.4. Таблица 1.4.4. Диапазоны номеров работ Аналитик Диапазон номеров IDEF3 Иванов 1-999 Петров 1000-1999 Сидоров 2000-2999 Последовательность и согласование. Если диаграмма создается после проведения интервью, аналитик должен принять некоторые решения, отно- сящиеся к иерархии диаграмм, например определить, сколько деталей включать в одну диаграмму. Если последовательность и согласование диа- грамм неочевидны, может быть проведена еще одна экспертиза для детали- 80
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 зации и уточнения информации. Важно различать подразумевающее согла- сование (согласование, которое подразумевается в отсутствие связей) и яс- ное согласование (согласование, ясно изложенное в мнении эксперта). Работы, перекрестки и документирование объектов. IDEF3 позволяет внести информацию в модель различными способами. Например, логика взаимодействия может быть отображена графически в виде комбинации пе- рекрестков. Та же информация может быть отображена в виде объекта ссылки типа ELAB (Elaboration). Это позволяет аналитику вносить инфор- мацию в удобном в данный момент времени виде. Важно учитывать, что модели могут быть реорганизованы, например для их представления в более презентабельном виде. Выбор формата для презентации часто имеет важное значение для организации модели, поскольку комбинация перек- рестков занимает значительное место на диаграмме и использование иерар- хии перекрестков затрудняет расположение работ на диаграмме. 1.4.3. Организационные диаграммы и диаграммы Swim Lane BPwin 4.1 содержит набор инструментов для моделирования организа- ционной структуры предприятия. В отличие от версии 2.5 он содержит че- тыре новых словаря - словарь изображений (bitmap), словарь ресурсов, сло- варь ролей и словарь групп ролей. Словарь изображений служит для импор- та файлов в формате bmp в модель. Импортированные изображения можно использовать в диаграммах для улучшения их внешнего вида. Для импорта изображения следует перейти в меню Dictionary/Bitmaps. Появляется диалог Bitmap Dictionary (рис. 1.4.17), в котором следует щелкнуть по кнопке Im- port и найти файл формата bmp. Рис. 1.4.17. Диалог Bitmap Dictionary 81
С. В. Маклакоа. Создание информационных систем с AllFusion Modeling Suite Словарь Role Group Dictionary (меню Dictionary/Role Group, рис. 1.4.18) позволяет создать и определить свойства групп ролей. Группы ролей могут использоваться как на организационных диаграммах, так и на диаграммах Swim Lane. В качестве значения группы ролей может быть название пред- приятия, отдела, цеха или название региона, города и т. д. Я Gk Д Л. А Д __________________________________________________________________\ Defmben Importance Вспомогательные службы Т ранспоргньй отдел, ремонгно • эксллутеционный отдел Scissors Meckm Технология Отдел главгого технолога Tools Medwm Управление Дирекция, отдел планирования и маркегин-а Cabinet High 'll 1 авйэйИетЖякет Рис. 1.4.18. Словарь групп ролей Для каждой группы ролей может быть внесено описание, указано изо- бражение, предварительно импортированное в словаре изображений, и ука- зана важность группы ролей. Словарь ролей вызывается из меню Dictionary/Role (рис. 1.4.19). Рис. 1.4.19. Словарь ролей Ролью может быть должность или позиция конкретного исполнителя. Каждой роли может соответствовать одна или несколько групп ролей. Кро- ме того, в словаре ролей для каждой роли можно внести определение (Definition), связать роль с изображением (Bitmap) и геометрической фигу- рой (Shape), указать важность роли (Importance). Словарь ресурсов (меню Dictionary/Resource, рис. 1.4.20) позволяет соз- дать ресурс и связать его с комбинацией "группа ролей/роль". Ресурсом для роли может быть конкретный исполнитель. В качестве значения ресурса, например, можно использовать фамилию и имя сотрудника. 82
Гпааа 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Computer Л-» ocidlt j> BPwin (Г»е uur< r Dictionary] ИвамрвИЛл____ Мякишев М.М. Петров П.П.__ Сиаооов С. С. Управление./ г енеральный директор Т синология / Сборщик 1....... .. Технология/Технплпг .Вспомогательные службы/ Разнорабочий 2 „.Технология / Тестировщик * 5ОЛОГИЯ / Т ехнолог „„'Управленю / Генеральный директор Рис. 1.4.20. Словарь ролей На основе информации, внесенной в словари изображений, групп ролей, ролей и ресурсов, можно создать организационную диаграмму. Организа- ционная диаграмма позволяет документировать и представить в виде дерева структуру организации (например, штатное расписание и т. д.). Для созда- ния организационной диаграммы следует выбрать меню Diagram/Add Or- ganization Chart. Появляется гид Organization Chart Wizard. В первом диало- ге гида (рис. 1.4.21) следует внести название и имя автора диаграммы, груп- пу ролей и роль для верхнего уровня иерархического дерева. Рис. 1.4.21. Первый диалог гида Organization Chart Wizard 83
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Второй диалог гида (рис. 1.4.22) позволяет создать второй уровень ие- рархического дерева. Верхний список содержит все доступные роли с ассо- циированными ресурсами, нижний - роли и ресурсы второго уровня иерар- хии. Кнопка Add позволяет перенести роли и ресурсы из верхнего списка в нижний, кнопка Remove - из нижнего в верхний. Рис. 1.4.22. Создание второго уровня организационной диаграммы в Organization Chart Wizard Третий диалог, Organization Chart Wizard предназначен для изменения свойств организационной диаграммы. В группе Drawing можно указать, ка- кая именно информация будет ото- бражаться на блоках диаграммы (на- именование блока, имя группы ролей, роль и ресурс). Для отображения ико- нок на диаграмме в группе Draw Style следует выбрать опцию Bitmap. После щелчка по кнопке Finish создается организационная диаграмма (рис. 1.4.23). Управление - Генеральный директор- Иванов И И. Технология» Технолог - Сидоров С.С. Технология ~ Тестировщик - Петров ПЛ. А Технология ~ Сборщик 1 - Мякишев М.М. Рис. 1.4.23. Первый и второй уровни организационной диаграммы 84
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Для дополнения диаграммы следует щелкнуть правой кнопкой мыши по блоку и выбрать в контекстном меню один из пунктов: • Edit subordinate list - редактирование блока; • Add subordinates - добавляет нижний уровень; • Add sibling on left - добавляет блок на текущий уровень слева от редак- тируемого блока; • Add sibling on rigth - добавляет блок на текущий уровень справа от редактируемого блока. Созданные в словаре Role Dictionary роли могут быть также исполь- зованы в диаграмме Swim Lane. Диаграмма Swim Lane является разно- видностью диаграммы IDEF3, позволяющей явно описать роли и ответст- венности исполнителей в конкретной технологической операции. Эта диаг- рамма разделена на горизонтальные полосы, с каждой полосой может быть связана роль или UDP типа Text List. Полоса может содержать объекты диа- граммы IDEF3 (UOW, перекрестки и объекты ссылок), относящиеся к соответствующей роли. Для создания диаграммы Swim Lane следует выбрать меню Diagram/Add Swim Lane diagram. Появляется гид Swim Lane diagram Wizard. В первом диалоге гида (рис. 1.4.24) следует внести название и имя автора диаграммы, выбрать имя и номер диаграммы IDEF3, на основе которой будет построена диаграмма, и группу ролей, из которой можно будет выбрать роли, связан- ные с диаграммой. Рис. 1.4.24. Первый диалог гида Swim Lane Diagram Wizard 85
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Во втором диалоге гида следует выбрать роли, на основе которых будет создана диаграмма. Диаграмма будет разделена на количество полос, ука- занных в колонке Display Swim Line. После щелчка по кнопке Finish (рис. 1.4.25) создается новая диаграмма, все объекты которой расположены произвольно. Расположить объекты на полосах, соответствующих ролям, следует вручную (рис. 1.4.26). Рис. 1.4.25. Выбор ролей во втором диалоге гида Swim Lane Diagram Wizard Рис. 1.4.26. Диаграмма Swim Lane 86
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 1.4.4. Использование нетрадиционного синтаксиса на диаграммах функциональной модели BPwin 4.1 позволяет нарушить традиционный синтаксис нотаций IDEF0, IDEF3 и DFD и использовать для работы не прямоугольники, а практически любые геометрические фигуры. Кроме того, можно разместить на работе изображение, импортированное в словарь Bitmap Dictionary. Для исполь- зования нетрадиционного синтаксиса необходимо щелкнуть по работе и выбрать в контекстном меню пункт Box Style. Во вкладке Box Style (рис. 1.4.27) следует выбрать опцию Custom и указать геометрическую фи- гуру (Shape) и изображение (Bitmap). Рис. 1.4.27. Вкладка Box Style диалога Activity Properties После щелчка по кнопке ОК на диаграмме работа отображается в нетра- диционном синтаксисе (рис. 1.4.28). Рис. 1.4.28. Отображение работы в виде овала на диаграмме 1DEF0 87
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Использование нетрадиционного синтаксиса может быть полезно при решении ряда задач, например при преобразовании диаграммы IDEF3 в имитационную модель Arena (рис. 1.4.29, см. также 1.4.6). Рис. 1.4.29. Диаграмма IDEF3, выполненная в синтаксисе имитационной модели Arena 1.4.5. Создание смешанной модели В результате дополнения диаграмм IDEF0 диаграммами DFD и IDEF3 может быть создана смешанная модель, которая наилучшим образом опи- сывает все стороны деятельности предприятия (рис. 1.4.30). Иерархию ра- бот в смешанной модели можно увидеть в окне Model Explorer. Работы в нотации IDEF0 изображаются зеленым цветом, IDEF3 - желтым, DFD- синим. Авторы нотаций IDEFO, IDEF3 и DFD не предполагали совместного ис- пользования диаграмм различной нотации в одной модели, поэтому созда- ние смешанной модели имеет ряд особенностей. Во-первых, существуют определенные правила декомпозиции работы одной нотации в диаграмму другой. Во-вторых, BPwin позволяет разместить объекты одной нотации на диаграмме другой. Рассмотрим эти особенности. 88
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Деятельность компании ЬН Разработать конфигурацию й-® Продажи «.маркетинг Предоставление информации о ценах &Я Формлекие заказов I И? роверка и внесение клиента | Внесение заказа 4i Исследование рынка НЯ Производство продукта $НИ Планирование производства ЕНИ Сборка продукта Подготовка компонентов > Установка материнской платы и винчестера Т вотирование компьютеров Установка модема Установка дисковода CD-ROM •~ЕаО Установка Флоппи-дисковода Инсталляция дополнительного программного обеспечения . ; ? ____ ^-^ Инсталляция операционной системы________________-О _____________________________________________________________SE ггрузка и получение __J | ..« IЛ ..........^..1...: ........ Рис. 1.4.30. Представление смешанной модели в окне Model Explorer BPwin допускает следующие переходы с одной нотации на другую: • IDEF0->DFD; • IDEF0 -> IDEF3; • DFD -> IDEF3. Стандарты на продукцию Заявки на заказ Правилам процедуры Оформление заказов ^бухгалтерская2 I система Рис. 1.4.31. Декомпозируемая работа на диаграмме IDEF0 Декомпозировать работу DFD на диаграмму IDEF0 нельзя, так же как декомпозировать работу IDEF3 на диаграмму любой другой нотации. Декомпозиция работы IDEF0 в диаг- рамму DFD. Для создания дочерней диа- граммы DFD следует при декомпозиции в диалоге Activity Box Count (см. рис. 1.2.5) выбрать радиокнопку DFD. Создается но- вая диаграмма DFD, и стрелки, которые касаются родительской работы, мигриру- ют на диаграмму нижнего уровня так, как если бы это была диаграмма IDEF0 (рис. 1.4.31 и 1.4.32). 89
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Стрелки входа родительской работы на дочерней диаграмме DFD пока- зываются входящими стрелками с левой стороны диаграммы DFD, стрелки управления - входящими стрелками с верхней стороны диаграммы и т. д. Хотя нотация DFD не включает понятия "управление" и "механизм" и можно создавать внутренние стрелки исходящими из любой грани работы и входящими в любую грань, BPwin не позволяет связать граничные стрел- ки на диаграмме DFD произвольным образом. Стрелки можно связать толь- ко так, как если бы это была диаграмма IDEF0, т. е. входящую с верхней грани диаграммы стрелку - только к верхней грани работы и т. д. Стандарты на продукцию Правила и процедуры Проверка и внесение клиента 2 Внесение заказа Займы клиентов Бухгалтерская система 400 * Е: 2 3 4 |TITLE: Оформление заказов |number: Рис. 1.4.32. Диаграмма DFD. Декомпозиция работы "Оформление заказов" Согласно нотации DFD диаграмма не должна иметь граничных стрелок - все стрелки должны начинаться и заканчиваться на работах, хранилищах данных или внешних сущностях. Поэтому, если строго следовать правилам нотации,следует: 1. удалить все граничные стрелки на диаграмме DFD; 2. создать соответствующие внешние сущности и хранилища данных; 3. создать внутренние стрелки, начинающиеся с внешних сущностей вме- сто граничных стрелок; 4. стрелки на диаграмме IDEF0 затоннелировать. Результат этих действий представлен на рис. 1.4.33 и 1.4.34. 90
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Стандарты на продм<Ц№0(1 Правила и ( процедуры Затки на заказ Оформление заказов ^бухгалтерская система Рис. 1.4.33. Тоннелирование стрелок на диаграмме IDEF0 Рис. 1.4.34. Замена граничных стрелок внутренними на диаграмме DFD Строго придерживаться правил нотации DFD при создании смешанных моделей не всегда удобно, поэтому BPwin позволяет создавать граничные стрелки на диаграммах DFD и не идентифицирует такие стрелки как синтак- сическую ошибку. Межстраничные ссылки (Off-Page Reference) и внешние сущности (External Reference) на диаграммах DFD и IDEF0. Нотация DFD включает межстраничные ссылки - инструмент, позволяющий описать переход стрел- ки (т. е. передачу данных или объектов) с одной диаграммы на другую. Для создания межстраничной ссылки на диаграмме DFD следует создать новую граничную стрелку. У границы диаграммы эта стрелка будет помечена квад- ратными скобками, так же как неразрешенная стрелка на диаграмме IDEF0. Затем следует щелкнуть правой кнопкой мыши по квадратным скобкам и выбрать в контекстном меню пункт Off-Page Reference. Появляется диалог Off-Page Arrow Reference (рис. 1.4.35). В нем необ- ходимо указать диаграмму, на которую будет направлена стрелка, и, если это диаграмма в нотации IDEF0, границу, от которой будет исходить стрел- ка (Destination border). 91
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 1.4.35. Создание межстраничной ссылки на диаграмме DFD В результате будет создана межстраничная ссылка (см., например, ссыл- ку на диаграмму А23 на рис. 1.4.34) как на диаграмме-источнике, так и на диаграмме-назначении. Межстраничная ссылка может быть поме- чена как C-number диаграммы, как номер диаграммы по узлу (как на рис. 1.4.34) или как имя диаграммы. Для изменения метки следует перейти в меню Model/Model Properties и во вкладке Display диалога Model Properties и в группе Off-Page Reference label выбрать нужную опцию. BPwin позволяет создать на границе диаграммы не только межстранич- ную ссылку, но и внешнюю сущность и тоннель. Для создания внешней сущности на диаграмме DFD следует создать но- вую граничную стрелку. У границы диаграммы эта стрелка будет помечена квадратными скобками. Затем следует щелкнуть правой кнопкой мыши по квадратным скобкам и выбрать в контекстном меню пункт External Refe- rence. Далее в диалоге External Reference надо выбрать имя внешней сущно- сти или внести это имя. На диаграмме DFD можно также создать тоннельную стрелку, хотя но- тация DFD не предусматривает создания такого элемента. Для этого следует щелкнуть правой кнопкой мыши по квадратным скобкам и выбрать в кон- текстном меню пункт Arrow Tunnel. В результате BPwin позволяет создавать на диаграмме DFD четыре типа граничных стрелок (рис. 1.4.36, сверху вниз): 92
Глава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 • обычная граничная стрелка (не допускается нотацией DFD); • межстраничная ссылка; • тоннельная стрелка (не предусмотрена нотацией DFD); • внешняя ссылка. 2 Заказы клиентов Стандарты на Отчеты в бухгалтерию Л --------------Rp Внесение Информация дли заказа постищия*^ продукцию г Прогноз продаж Отчет диспетчеру Дислег^р" Рис. 1.4.36. Граничные стрелки на диаграмме DFD Маркетинговые Исследование мггеРи,лы рынка Запрос *3' информации о , "ценах Информация г- 3 для Поставщик- поставщика Рис. 1.4.37. Граничные стрелки на диаграмме IDEF0 Интересной особенностью BPwin является то, что те же самые типы стрелок можно создать на диаграмме IDEF0 (рис. 1.4.37): • обычная граничная стрелка; • межстраничная ссылка (не предусмотрена нотацией IDEF0); • тоннельная стрелка; • внешняя ссылка (не предусмотрена нотацией IDEF0). BPwin допускает создание внешних сущностей на диаграммах IDEF0, но в отличие от DFD их можно создавать только на границе диаграммы. Размещение на диаграммах IDEF0 и DFD внешних сущностей, межстра- ничных ссылок и тоннелей, хотя и является формально нарушением синтак- сиса, существенно облегчает построение смешанных моделей. Декомпозиция работы IDEF0 или DFD в диаграмму IDEF3. Стрелки на диаграммах IDEF0 и DFD означают потоки информации или объектов, передаваемых от одной работы к другой. На диаграммах IDEF3 стрелки мо- гут показывать только последовательность выполнения работ, т. е. имеют иной смысл, нежели стрелки IDEF0 и DFD. Поэтому при декомпозиции ра- боты IDEF0 или DFD в диаграмму 1DEF3 стрелки не мигрируют на нижний уровень. Если необходимо показать на дочерней диаграмме IDEF3 (рис. 1.4.38) те же объекты, что и на родительских диаграммах IDEF0 (рис. 1.4.39) или DFD, необходимо использовать объекты ссылки (referent). 93
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 1.4.38. Фрагмент дочерней диаграммы IDEF3 Рис. 1.4.39. Фрагмент родительской диаграммы IDEFO 1.4.6. Имитационное моделирование Перед современными предприятиями часто встает задача оптимизации технологических процессов. Метод функционального моделирования позво- ляет обследовать существующие бизнес-процессы, выявить их недостатки и построить идеальную модель деятельности предприятия. Построение функциональной модели осуществляется от общего к частному - сначала описывается общая схема деятельности предприятия, затем шаг за шагом все более и более подробно описываются конкретные технологические про- цессы. Такой подход весьма эффективен, однако на уровне наибольшей де- тализации, когда рассматриваются конкретные технологические операции, для оптимизации этих операций функциональной модели может оказаться недостаточно. В этом случае целесообразно использовать имитационное моделирование. Имитационное моделирование - это метод, позволяющий строить моде- ли, учитывающие время выполнения функций. Полученную модель можно "проиграть" во времени и получить статистику происходящих процессов так, как это было бы в реальности. В имитационной модели изменения про- цессов и данных ассоциируются с событиями. "Проигрывание" модели за- ключается в последовательном переходе от одного события к другому. 94
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Одним из наиболее эффективных инструментов имитационного модели- рования является система Arena фирмы System Modeling Corporation (http://www.sm.com). Arena позволяет строить имитационные модели, проигры- вать их и анализировать результаты такого проигрывания. Имитационное моде- лирование - это универсальное средство для оптимизации процессов, поэтому модели с помощью Arena могут быть построены для самых разных сфер дея- тельности - производственных технологических операций, складского учета, банковской деятельности, обслуживания клиентов в ресторане и т. д. и т. п. В настоящей книге описана версия Arena BE 3.6.1. Имитационная модель Arena включает следующие основные элементы: источники и стоки (Create и Dispose), процессы (Process) и очереди (Queue). Источники - это элементы, от которых в модель поступает информация или объекты. Скорость поступления данных или объектов от источника обычно задается статистической функцией. Сток-это устройство для приема ин- формации или объектов. Понятие очереди близко к понятию хранилища данных-это место, где объекты ожидают обработки. Времена обработки объектов (производительность) в разных процессах могут быть разными. В результате перед некоторыми процессами могут накапливаться объекты, ожидающие своей очереди. Часто целью имитационного моделирования яв- ляется минимизация количества объектов в очередях. Тип очереди в имита- ционной модели может быть конкретизирован. Очередь может быть похожа на стек - пришедшие последними в очередь объекты первыми отправляются на дальнейшую обработку (LIFO: last-in-first-out). Альтернативой стеку может быть последовательная обработка, когда первыми на дальнейшую обработку отправляются объекты, пришедшие первыми (FIFO: first-in-first- out). Могут быть заданы и более сложные алгоритмы обработки очереди. Процессы-это аналог работ в функциональной модели. В имитационной модели может быть задана производительность процессов. Простейшая имитационная модель, созданная в Arena, показана на рис. 1.4.40. Рис. 1.4.40. Простейшая имитационная модель 95
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Для построения моделей Arena имеет на- бор средств, которые включают палитру ин- струментов, набор гидов и др. Для создания модели сначала нужно щелкнуть по кнопке New на панели инструментов. Слева появля- ется палитра инструментов (рис. 1.4.41), кото- рая содержит два типа модулей. Модули типа Flowchart (в том числе Create, Dispose и Process) служат для отображения потоков объектов и могут быть перенесены на рабочее пространство модели drag & drop. Модули типа Data (например, Queue) не могут быть размещены в рабочем пространстве мо- дели и служат для настройки параметров мо- дели. Окно редактирования параметров появ- ляется в нижней части модели, когда фокус < • Basic Process Рис. 1.4.41. Палитра инструментов Arena установлен на модуле типа Data. Перенесем из панели инструментов в рабочее пространство модели по одному модулю Create, Dispose и Process. Связи между модулями уста- навливаются автоматически (хотя могут быть и переопределены вручную). Модуль Create является источником сущностей в системе. Так, например, если описывается изготовление изделий, то модуль Create может описывать поступление заготовок на конвейер. Модуль Process отвечает за обработку сущностей. Например, он может имитировать станок, обрабатывающий за- готовки. Модуль Dispose является стоком сущностей из системы. Он может моделировать снятие готовых изделий с конвейера. Для задания свойств модулю типа Flowchart необходимо дважды щелк- нуть по нему и в появившемся диалоге задать значения параметров. Для за- дания свойств модулю Resourse (типа Data) необходимо щелкнуть по нему один раз на панели инструментов и в нижнее окно внести значения пара- метров (например, Busy/Hour = 15, Idle/Hour = 15 и Per Use = 2.5). Для контроля проигрывания модели необходимо внести в модель модуль Simulate и задать параметры этого модуля (например, Run Length = 40, Hours/Day = 8). Для проигрывания модели необходимо перейти в меню Run/Go. После проигрывания модели автоматически генерируются отчеты в формате Crystal Reports (рис. 1.4.42). 96
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 О Basic Process , RfiflonS Category 0 ver view i ^Category by Replication Detail on Entities Detail on Processes ^Detail on Queues Detail on Resources ^Summary of Entities ^Summary of Processes ^Summary of Queues ^Summary of Resources H' Category Oveiview.rpt & NoName E3 Project 1 Entity - Cycle Time : - Entity 1 \ Ж NVACost 2001 Category Overview Report ne iti NVA Time £ T otal Cost ' Ф VACost & VATime * ф Wait Cost & -Wait Time I Ж WIP Ф Process Ё- Resource le Time der faerage 0S2 Half Width (Incffidtni) Cyd* Гмп* Average 0ХЮ Helf Width (Irsuffldert) ^Cost der Puc. 1.4.42. Отчет no результатам проигрывания модели Модель в Arena может быть гораздо более сложной, чем представленная на рис. 1.4.40. Она может включать сотни модулей различных типов. Моду- ли, обрабатывающие сущности (подобные модулю Server из примера), мо- гут иметь различные состояния, например "ожидание" или "работа". Каж- дому состоянию можно поставить в соответствие определенное изобра- жение и тем самым анимировать имитационную модель. В поставку Arena входит набор примеров. Один из примеров (файл Mortgage Extention 1 .doe) приведен на рис. 1.4.43. Рис. 1.4.43. Модель обработки документа 97
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Модель показывает систему обработки документа (закладной). Сначала документ регистрирует секретарша (иконка слева в нижней части рисунка, затем просматривает клерк (иконка справа). Затем клерк либо принимает документ, либо возвращает. Очередь документов показывается в виде набо- ра иконок сверху от процесса Review Application и в виде графика в правой нижней части рисунка. Иконки, отображающие секретаря и клерка, могут быть разными в зависимости от состояния (занят - ожидает), следовательно, модель может быть анимирована. Создавать имитационные модели без предварительного анализа бизнес- процессов не всегда представляется возможным. Действительно, не поняв сути бизнес-процессов предприятия, бессмысленно пытаться оптимизиро- вать конкретные технологические процессы. Поэтому функциональные мо- дели и имитационные модели не заменяют, а дополняют друг друга, при этом они могут быть тесно взаимосвязаны. Имитационная модель дает боль- ше информации для анализа системы; в свою очередь, результаты такого анализа могут стать причиной модификации модели процессов. Наиболее целесообразно сначала создать функциональную модель, а затем на ее осно- ве строить имитационную модель. Для поддержки такой технологии инст- рументальное средство функционального моделирования BPwin 4.1 имеет возможность преобразования диаграмм IDEF3 в имитационную модель Arena (версии 3.6 и выше). Для преобразования диаграммы IDEF3 в модель Arena необходимо, чтобы BPwin 4.1 и Arena одновременно были запущены. В BPwin 4.1 следует открыть диаграмму IDEF3 и затем выбрать меню File/Export/Arena. Далее экспорт производится автоматически. Поскольку имитационная модель имеет гораздо больше параметров, чем диаграмма IDEF3, в BPwin 4.1 имеется возможность задать эти пара- метры с помощью свойств, определяемых пользователем (UDP). В поставку BPwin 4.1 входят примеры моделей с предварительно внесенными UDP для экспорта в Arena (каталог Program Files/Computer Associates/BPwin 4.1 /Samples/Arena/) и модель ArenaBEUDPs.bpl, в которой определены все не- обходимые для экспорта UDP и которую можно использовать в качестве шаблона для создания новых моделей. В том же каталоге находится файл BPwin IDEF3 to Arena BE mappings.doc, содержащий описание UDP, необ- ходимых для построения имитационной модели. На рис. 1.4.44 показан пример функциональной модели, а на рис. 1.4.45 - результат экспорта этой модели в Arena. 98
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Рис. 1.4.44. Диаграмма IDEF3 - пример для иллюстрации экспорта в Arena Рис. 1.4.45. Имитационная модель Arena - результат импорта из BPwin К сожалению, поставляемые с BPwin примеры после экспорта в Arena не могут быть сразу же "проиграны". В свойствах модели содержатся ошиб- ки. Arena не допускает использования символа & в названии работы и в ка- честве разделителя дробной части для действительных чисел используется не запятая, а точка. Ресурсы объектов модели могут быть исправлены с помощью диалога Resource (рис. 1.4.46), после чего успешно "проиграны". 99
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Resource HE [Document _____ _J , 1и« 1 / » 'У~- ‘ I Fixed Capacity v| Busy Z Hour Idle/Hour PerUse- fTF [Гл ] ooo I OK ,|- Сеж. I Help I Puc. 1.4.46. Диалог Resource для редактирования ресурсов объектов имитационной модели Arena Совместное использование CASE-инструмента построения функци- ональной модели BPwin и системы имитационного моделирования Arena позволяет наиболее эффективно оптимизировать технологические процессы практически в любой сфере деятельности. 1.5. Использование обучающего модуля BPwin Для вызова обучающей программы в BPwin следует перейти в меню Help/BPwin online Tutorial. Появляется диалог BPwin Tutorial (рис. 1.5.1), в котором можно выбрать один из 10 уроков. Рис. 1.5.1. Диалог BPwin Tutorial 100
Гпава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4.1 Уроки представляют собой последовательное изложение материала как по методологии построения моделей (рис. 1.5.2) и нотациям IDEFO, IDEF3 и DFD, так и по технике работы с BPwin (рис. 1.5.3). а 1 uIoimI I орк; №E3 Buclne» Modeling Overview, cent Working Together... Each modeling methodology has its own advantages. However, Business Proces» modeling (IDEFO) is best suited as an analysis and logical design technique. It is generally performed in the early phases of a project, though it may suit your needs entirely. An analysis using Business Process modeling (IDEFO) can feed a design process ; using Process Flow models (IDEF3) and Data l( Flow Diagrams (DFD). /’i/c 15 2 Об\ чение построению смешанных моделей в BPwin Tutorial Defining the Arrows (ICOMs) After you name the activities in a decomposition diagram, the next step is to draw the appropriate arrows that represent the inputs, outputs, controls, and mechanisms that describe the process. In BPwin, drawing arrows is the easy process of selecting the Arrow tool 1Я in the BPwin Toolbox, and then clicking an originating point and a destination point. You can also branch arrows, but well talk more about that later. Depending on the arrow type (ICOM), arrow origination and destination points can be the sides of activity boxes and any diagram border. BPwin highlights allowable points as you move your mouse over the diagram. Hal Рис. 1.5.3. Обучение технике создания внутренних стрелок 101
_____________________ Глава 2 _________________________ Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 2.1. Отображение модели данных в ERwin 2.1.1. Физическая и логическая модели данных ERwin имеет два уровня представления модели - логический и физиче- ский. Логический уровень - это абстрактный взгляд на данные, на нем данные представляются так, как выглядят в реальном мире, и могут назы- ваться так, как они называются в реальном мире, например "Постоянный клиент", "Отдел" или "Фамилия сотрудника". Объекты модели, представ- ляемые на логическом уровне, называются сущностями и атрибутами (под- робнее о сущностях и атрибутах будет рассказано ниже). Логический уро- вень модели данных может быть построен на основе другой модели, напри- мер на основе модели процессов (см. гл. 1). Логический уровень модели данных является универсальным и никак не связан с конкретной реализаци- ей СУБД. Физический уровень модели данных, напротив, зависит от конкретной СУБД, фактически являясь отображением системного каталога. В физиче- ском уровне модели содержится информация о всех объектах базы данных. Поскольку стандартов на объекты базы данных не существует (например, нет стандарта на типы данных), физический уровень модели зависит от кон- кретной реализации СУБД. Следовательно, одному и тому же логическому уровню модели могут соответствовать несколько разных физических уров- ней различных моделей. Если на логическом уровне модели не имеет боль- шого значения, какой конкретно тип данных у атрибута (хотя и поддержи- ваются абстрактные типы данных), то на физическом уровне модели важно описать всю информацию о конкретных физических объектах - таблицах, колонках, индексах, процедурах и т. д. Разделение модели данных на логи- ческий и физический уровни позволяет решить несколько важных задач. Документирование модели. Многие СУБД имеют ограничение на име- нование объектов (например, ограничение на длину имени таблицы или за- /1ИШГЛ1И0И 102
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 прет использования специальных символов - пробела и т. п.). Зачастую раз- работчики ИС имеют дело с нелокализованными версиями СУБД. Это озна- чает, что объекты базы данных могут называться короткими словами, толь- ко латинскими символами и без использования специальных символов (т. е. нельзя назвать таблицу предложением - только одним словом). Кроме того, проектировщики баз данных нередко злоупотребляют "техническими" наименованиями, в результате таблица и колонки получают наименования типа RTD_324 или CVST_A12 и т. д. Полученную в результате структуру могут понять только специалисты (а чаще всего только авторы модели), ее невозможно обсуждать с экспертами предметной области. Разделение моде- ли на логический и физический уровни позволяет решить эту проблему. На физическом уровне объекты базы данных могут называться так, как того требуют ограничения СУБД. На логической уровне можно этим объектам дать синонимы - имена более понятные неспециалистам, в том числе на ки- риллице и с использованием специальных символов. Например, таблице CUST_A12 может соответствовать сущность Постоянный клиент. Такое соответствие позволяет лучше задокументировать модель и дает возмож- ность обсуждать структуру данных с экспертами предметной области. Масштабирование. ERwin позволяет создавать модели трех типов: • модель, имеющую только логический уровень; • модель, имеющую только физический уровень; • модель, имеющую как логический уровень, так и физический уровень. Создание модели данных, как правило, начинается с создания логиче- ского уровня. После описания логического уровня проектировщик может выбрать необходимую СУБД. В модели, имеющей оба уровня (логический и физический), ERwin автоматически создаст соответствующую физиче- скую модель. Это означает, что каждому объекту логического уровня соот- ветствует объект физического, например каждой сущности соответствует таблица. Модель, имеющая только логический уровень, может быть син- хронизирована с несколькими моделями, имеющими только физический уровень (рис. 2.1.1). Это позволяет эффективно разрабатывать гетерогенные ИС. На основе одной логической модели можно создавать несколько физи- ческих, соответствующих СУБД разных производителей (например, Oracle, Informix, MS SQLServer, Sybase и др.). Синхронизация моделей будет рас- смотрена в последующих главах. 103
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Модель 3 Модель 4 Модель 5 Рис. 2.1.1. Схема уровней в моделях ERwin При создании новой модели в диалоге Create Model (рис. 2.1.2) можно выбрать тип новой модели. Рис. 2.1.2. Диалог Create Model На основе физической модели ERwin может сгенерировать системный ката- лог СУБД или соответствующий SQL-скрипт. Этот процесс называется прямым проектированием (Forward Engineering). Тем самым достигается масштабируе- мость - создав одну логическую модель данных, можно сгенерировать физиче- ские модели под любую поддерживаемую ERwin СУБД. С другой стороны, ERwin способен по содержимому системного каталога или SQL-скригпу воссоз- дать физическую и логическую модель данных (Reverse Engineering). На основе полученной логической модели данных можно сгенерировать физическую мо- дель для другой СУБД и затем сгенерировать ее системный каталог. Следова- тельно, ERwin позволяет решить задачу по переносу структуры данных с одного сервера на другой. Например, можно перенести структуру данных с Oracle на Informix (или наоборот) или перенести структуру dbf-файлов в реляционную СУБД, тем самым облегчив решение по переходу от файл-серверной к клиент- серверной ИС. Заметим, однако, что формальный перенос структуры "плоских" таблиц на реляционную СУБД обычно неэффективен. Для того чтобы извлечь 104
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 выгоды от перехода на клиент-серверную технологию, структуру данных следу- ет модифицировать. Процессы прямого и обратного проектирования будут рас- смотрены ниже. Для переключения между логической и фи- зической моделью данных служит список вы- бора в стандартной панели инструментов ERwin (рис. 2.1.3). При переключении, если физической модели еще не существует, она будет создана автома- тически. Рис. 2.1.3. Переключение между логической и физической моделью 2.1.2. Интерфейс ERwin. Уровни отображения модели Интерфейс выполнен в стиле Windows-приложений, достаточно прост и интуитивно понятен. Рассмотрим кратко основные функции ERwin по отображению модели, а также панели инструментов. Более подробно элементы интерфейса будут рассмотрены в последующих главах. ERwin имеет 8 перемещаемых панелей инструментов: • стандартную (Standard); • палитру инструментов (Toolbox); • выбора шрифтов и цветов (Font & Color); • трансформации таблиц (Transforms); • рисования (Drawing); • выравнивания (Alignment); • работы с сервером базы данных (Database); • работы с хранилищем моделей ModelMart. Для перемещения панели инструментов в удобное место в окне ERwin 1 следует "зацепить" мышью за символ ® в левой части панели и переместить ее методом drag & drop. Элементы стандартной панели инструментов описаны в табл. 2.1.1. Таблица 2.1.1. Стандартная панель инструментов Кнопки Назначение □ G» S в Создание, открытие, сохранение и печать модели @>1 Вызов диалога Report Browser для генерации отчетов. Вызов Report Template Builder-инструмента для публикации отчетов в Internet 105
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Кнопки Назначение Т S ср Изменение уровня просмотра модели: уровень сущностей, уровень атрибутов и уровень определений Изменение масштаба просмотра модели * £ Переключение между областями модели - Subject Area ||l_ogical Список выбора для переключения между логической и физи- ческой моделью Для создания моделей ERwin использует 3 международно признанные системы обозначений (нотации): • Integration DEFinition for Information Modeling (IDEF1X). Эта нотация была разработана для армии США и является федеральным стандартом США. Кроме того, она является стандартом в ряде международных ор- ганизаций (НАТО, Международный валютный фонд и др.). • Information Engineering (IE). Нотация, разработанная Мартином (Martin), Финкельштейном (Finkelstein) и другими авторами, используется пре- имущественно в промышленности. • Dimensional Modeling (DM). Специализированная нотация, предназна- ченная для разработки хранилищ данных. На логическом уровне ERwin поддерживает 2 нотации (IE и IDEF1X), на физическом - 3 (IE, IDEF1X и DM). В дальнейшем во всех примерах, ес- ли это не оговорено особо, будет использоваться нотация IDEF1X. Переключение между нотациями можно сделать во вкладке Notations диалога Model Properties (меню Model/Model Properties) (рис. 2.1.4). (ти||м«т Ham I мт I uopl Hmoawuli Ham * -- - — — -— -e tSQKjragmОЕПтьНжшжМоМпд] r c iMmEmqI • I °K I. Cane<1 I Рис. 2.1.4. Переключение между нотациями во вкладке Notations диалога Model Properties 106
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Палитра инструментов выглядит различно в зависимости от уровня мо- дели и выбранной нотации. Вид палитры на логическом и физическом уров- не приведен в табл. 2.1.2 и 2.1.3 соответственно. Таблица 2.1.2. Палитра инструментов на логическом уровне Вид кнопки IDEF1X Вид кнопки IE Назначение кнопок г*г Указатель (режим мыши) - в этом режиме можно устано- вить фокус на каком-либо объекте модели Qi Создание новой сущности - для создания сущности нужно щелкнуть левой кнопкой мыши по кнопке и один раз по свободному пространству на модели Создание категории. Категория, или категориальная связь, - специальный тип связи между сущностями, которая будет рассмотрена ниже. Для установления категориальной связи нужно щелкнуть левой кнопкой мыши по кнопке ка- тегории, затем один раз щелкнуть по сущности - родовому предку, затем - по сущности-потомку ч ч Создание идентифицирующей связи ч ч Создание связи "многие ко многим" • ч Создание неидентифицирующей связи Таблица 2.1.3. Палитра инструментов на физическом уровне Вид кнопки IDEFIX Вид кнопки IE Вид кнопки DM Назначение кнопок Указатель (режим мыши) - в этом режиме мож- но установить фокус на каком-либо объекте мо- дели в * В Создание новой таблицы. Для создания таблицы нужно щелкнуть левой кнопкой мыши по кнопке и один раз по свободному пространству на мо- дели Создание нового представления (view). Для соз- дания представления нужно щелкнуть левой кнопкой мыши по кнопке и один раз по свобод- ному пространству на модели ч ч Создание идентифицирующей связи 107
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Вид кнопки IDEF1X Вид кнопки IE Вид кнопки DM Назначение кнопок = 0 0 * Создание связи между представлением и вре- менной таблицей 4 Создание неидентифицирующей связи Логическая модель ERwin имеет несколько уровней отображения диа- граммы: уровень сущностей, уровень атрибутов, уровень определений, уро- вень первичных ключей и уровень иконок. Переключиться между первыми тремя уровнями можно с использованием кнопок на стандартной панели инструментов (см. табл. 2.1.1). Переключиться на другие уровни отображе- ния можно при помощи контекстного меню, которое появляется, если щелкнуть по любому месту диаграммы, не занятому объектами модели. В контекстном меню следут выбрать пункт Display Level и затем необходи- мый уровень отображения. ERwin позволяет связать с сущностью большую и малую иконки. При переключении на уровень иконок показывается боль- шая иконка. Для отображения малой иконки следует выбрать в контекстном меню пункт Entity Display/Entity Icon. Малая иконка будет показана слева от имени сущности на всех уровнях отображения модели. В табл. 2.1.4 по- казаны уровни отображения модели. Таблица 2.1.4. Уровни отображения модели Уровень отображения Представление модели Сущности (Entity) [Часть Л Атрибуты (Attribute) Сотрудник Табельный номер Номер паспорта (АК1.1) Фамилия (АК2.1) Имя (АК2.2) Отчество (АК2.3) Дата рождения (АК2.4) Отдел (IE1.1) Первичный ключ (Primary Key) Часть Номер части | Определение (Definition) Часть Содержит информацию о комплектующих Сущности с отображением малых иконок S Счет Иконки (Icon) с отображением малых иконок Счет 108
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Установка цвета и шрифта. Установить шрифт и цвет объектов в ERwin можно несколькими способами. Во-первых, для установки цвета и шрифта объ- екта служит панель инструментов выбора шрифтов и цветов (Font & Color). Зна- чение каждого элемента приведено в табл. 2.1.5. Таблица 2.1.5. Панель инструментов Font& Color Кнопки Назначение ||Arial я>|| Выбор наименования шрифта )10 J Выбор размера шрифта В / U Выбор стиля шрифта Т1 Выбор цвета символов л 4 Выбор цвета заливки Л г Выбор цвета линий Для редактирования шрифта и цвета конкретного объекта следует, щелкнув правой кнопкой мыши по сущности или связи и выбрав из всплы- вающего меню пункт Object Font/Color, вызвать диалог Font/Color, в кото- ром можно выбрать шрифт и установить его размер, стиль и цвет, устано- вить цвет заливки и цвет линий. Имеется возможность изменить шрифт и цвет для всех объектов модели или для какой-либо отдельной категории объектов. Для этого служит диалог Default Fonts & Colors (пункт меню Format/Default Fonts & Colors). Каждая вкладка на диалоге (рис. 2.1.5) позволяет редактировать шрифт и цвет для определенной категории объектов: • General - все объекты модели - цвет фона диаграммы; • Entities (Tables) - наименования сущностей и таблиц; заливка сущностей и таблиц; линии, которыми прорисовываются сущности и таблицы; • Attributes (Columns) - атрибуты и колонки, включая отдельные настрой- ки для атрибутов и колонок внешних ключей; • Relationship - связи, включая имя и обозначение мощности; • Subtypes - иерархия категорий, включая дискриминатор категории; • Drawing Object Text - текстовые блоки; 109
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • Drawing Object Colors - текстовые блоки; Рис. 2.1.5. Диалог Default Fonts & Colors (физический уровень) Помимо таких объектов, как сущности и атрибуты, диаграмма может включать графические элементы. Для их создания служит панель рисования (табл. 2.1.6) Таблица 2.1.6. Панель рисования (Drawing) Кнопки Назначение || I о о Рисование прямоугольников и овалов |\ Z Рисование прямых и ломаных линий & Рисование многоугольников ж Внесение текстовых блоков Графические элементы позволяют делать диаграммы более наглядными. Например, с их помощью можно объединять сущности в блоки и именовать каждый блок (рис. 2.1.6). 110
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Рис. 2.1.6. Использование графических элементов для объединения объектов на диаграмме Изменить шрифт и цвет графических объектов можно с помощью кно- пок панели инструментов Font & Color (см. табл. 2.1.5). ERwin позволяет выровнить объекты на диаграмме. Для этого служит панель выравнивания (табл. 2.1.7). Таблица 2.1.7. Панель выравнивания (Alignment) Кнопки Назначение Ц О Выравнивание объектов по горизонтали (по верхней и нижней кромке) I— ♦ ♦ D9. Выравнивание объектов по вертикали (по левой и правой кромке) Установка одинакового расстояния между объектами по вертикали и горизонтали S’ - Группировка и разгруппировка объектов Операции выравнивания могут проводиться с сущностями, таблицами, представлениями, графическими объектами и текстовыми блоками. Для вы- равнивания необходимо выделить несколько выравниваемых объектов. Для этого при нажатой клавише Ctrl следует щелкнуть левой кнопкой мыши по каждому из объектов. Панели трансформации таблиц (Transforms), работы с сервером базы данных (Database) и работы с хранилищем моделей ModelMart будут рас- смотрены в последующих главах. Для освоения интерфейса pRwin и изучения основ моделирования данных полезно использовать обучающий модуль. Для вызова обучающей программы 111
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite в ERwin следует перейти в меню Help/Tutorial. Появляется диалог ERwin Tutorial (рис. 2.1.7). Всего обучающий модуль ERwin содержит 18 уроков: 1. Введение (Getting Started). 2. Интерфейс ERwin (ERwin Workplase). 3. Основные объекты модели данных (Basic Data Model Objects). 4. Навигатор модели данных (Model Explorer). 5. Домены (Domains). 6. Связи (Relationships). 7. Уровни отображения модели (Display Levels). 8. Подмножества модели (Subject Areas). 9. Индексы (Indexes). 10. Средства повышения уровня представления модели (Presentations Tools). 11. Работа с физическими и логическими моделями данных (Design Layers). 12. Преобразование объектов модели (Transforms). 13. Стандарты именования объектов модели (Naming Standards). 14. Стандарты типов данных (Datatype Standards). 15. Прямое и обратное проектирование (Forward & Reverse Engineering). 16. Синхронизация модели и системного каталога базы данных (Complete Compare). 17. Печать модели (Printing). 18. Создание отчетов (Reporting). В первом окне диалога, ERwin Tutorial, можно выбрать один из первых 10 уроков. Остальные уроки можно выбрать во втором окне диалога, кото- рый появляется после щелчка по кнопке More. Рис. 2.1.7. Диалог ERwin Tutorial 112
Гпава 2. Создание модели данных спомощью AllFusion ERwin Data Modeler 4.1 Уроки представляют собой последовательное изложение материала по технике работы с ERwin. На рис. 2.1.8 в качестве примера приведен фраг- мент третьего урока. Lenon 3- BaiicData Mod.l Object., cont CUSTOMER customer number identftying credit end customer first_name credit csrd exp status code customer address customer phone email Z relationship (migrated j (.key*attrfcutej MOVIE RENTAL RECORD customer number <<? . rental record date Гmigrated I norMcev aitrfcute. PAYMENT 4 ’ payment transaction number type amount date status due date rental status pavrMzfit transacts* number overdue charge rental rate rental date non-identifying relationship Two Types of Relationships Relationships are important because the type of relationship determines how a primary key of the parent entity or table migrates to the child entity or table as a foreign key. There are two types of relationships, as shown in the example to the left. • An identifying relationship is represented by a solid line and through it the primary key of the parent migrates to the primary key area of the child entity or table. • A non-identifying relationship is represented by a dashed line and through it the primary key of the parent migrates to the non-key area of the child entity or table. Рис. 2.1.8. Вводный урок, поясняющий основные объекты модели данных в ERwin Tutorial 2.1.3. Подмножества модели и сохраняемые отображения При создании реальных моделей данных количество сущностей и атри- бутов может исчисляться сотнями. Для более удобной работы с большими моделями в ERwin предусмотрены подмножества модели (Subject Area), в которые можно включить тематически общие сущности. В подмножество модели может входить произвольный набор сущностей, связей и текстовых комментариев. Для создания, удаления или редактирования подмножеств модели нужно вызвать диалог Subject Areas (меню Model/Subject Areas), в котором указывается имя подмножества и входящие в него сущности (рис. 2.1.9). Все изменения, сделанные в любой Subject Area, автоматически отображаются на общей модели. Одна и та же сущность может входить в несколько Subject Area. 113
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 2.1.9. Диалог Subject Area Editor По умолчанию исходная модель получает имя Main Subject Area. При создании нового подмножества следует в диалоге Subject Area Editor указать ее имя и список входящих в него объектов. Для включения сущности в Subject Area нужно выбрать ее в левом списке диалога и щелкнуть по кнопке Сущность можно переместить в Subject Area вместе со всеми связанными с ней сущностями. Для этого следует воспользоваться кнопкой SliEl, причем можно задать уровень взаимосвязи (рис. 2.1.10) как для сущностей-потомков (Descedants), так и для сущностей-предков (An- cestors). Рис. 2.1.10. Диалог задания уровня перемещения сущностей Например, если в модели сущность Клиент связана с сущностью Заказ, а та, в свою очередь, с сущностью Предмет заказа, то при перемещении сущности Клиент со связанными сущностями уровня 2 (потомки) будут перемещены все 3 сущности. 114
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 ERwin позволяет разбить модель на несколько Subject Area, каждая из которых может соответствовать определенной задаче, например финан- совой, производственной, маркетинговой и т. д. Для перехода от одного подмножества к другому служит список выбора на стандартной панели ин- струментов (см. табл. 2.1.1). Subject Area можно создавать как в логической, так и в физической модели данных. Хранимое отображение (Stored Display) - представление подмножества модели, отображающее специфический аспект структуры данных. Одна Subject Area может включать в себя несколько хранимых отображений. В хранимое отображение входят те же самые сущности и связи, что и в Subject Area, но они могут по-разному располагаться на экране, иметь разные уровни отображения (см. табл. 2.1.4), различный масштаб и цвет объектов или фона. Для создания хранимого отображения служит диалог Stored Displays (меню Format/Stored Display Settings). При определении нового хранимого отображения следует задать его имя, ав- тора, описание и свойства как для логической, так и для физической модели. При создании Subject Area в нее может не входить либо родительская, либо дочерняя сущность. По умолчанию связи с сущностями, которые не вошли в Subject Area ("висячие связи"), не показываются. Для отображе- ния таких связей следует включить опцию Show Dangling Relationships во вкладке General диалога Stored Displays (рис. 2.1.11). Хранимое отображение позволяет отобразить линии связей не только ортогональными, но и диагональными. Для представления связей диаго- нальными линиями следует во вкладке General выбрать опцию Diagonal (по умолчанию установлена опция Orthogonal). Рис. 2.1.11. Диалог Stored Display Editor 115
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Для переключения между хранимыми отображениями служат вкладки в нижней части диаграммы (рис. 2.1.12). Я Предмет заказа Клиент \ Цровень сущностей /ыр'овань атрибутов X Мрсвеиь опрамлениЯ / Рис. 2.1.12. Переключение между хранимыми отображениями 2.1.4. Model Explorer - навигатор модели данных Для поиска и редактирования объектов модели данных ERwin содержит специальную панель - Model Explorer. При запуске ERwin она располагает- ся слева от окна модели. Model Explorer содержит 3 вкладки - Model, Sub- ject Areas и Domains. Вкладка Model (рис. 2.1.13) содержит в ви- де раскрывающегося списка все объекты мо- дели как физического, так и логического уровня - сущности, таблицы, атрибуты, ко- лонки, связи, представления, объекты физиче- ской памяти и др. Model Explorer позволяет редактировать объекты непосредственно в списке. Для этого необходимо щелкнуть пра- вой кнопкой мыши по объекту. Появляется контекстное меню, содержащее следующие пункты: • New - создание объекта; • Goto-переход к соответствующему объ- екту на диаграмме; • Delete - удаление объекта; • Rename - переименование объекта; • Properties - редактирование свойств объекта. г : Q<£ Model Sources vr Vaidation Rules V it Default Values ? Transforms <3 Entities - □ ВременньЛ +]• a Attributes Н-ф KeyGrojs b'; & Primary Key s• о Номер сотруфшка £ Foreign Key1 ' £ Foreign Кеуб -pl Parent Relationships . S-q! Chid Relationships •*=.. И Отдел EJ Постоянный * D Проект В Сотруанк. i-S Часть l S~9 Subject Areas +-9 <Main Subject Area> 9 Персонал Рис. 2.1.13. Вкладка Model панели Model Explorer После выбора пункта меню Properties появляется диалог для редактиро- вания объекта - для сущности это будет диалог Entities, для атрибутов - At- tributes и т. д. Панель Model Explorer позволяет также переносить и копировать объек- ты. Например, атрибуты (колонки) можно переносить из сущности (табли- цы) в сущность (таблицу) внутри Model Explorer методом drag & drop. 116
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Вкладка Subject Areas (рис. 2.1.14) служит для отображения и редакти- рования подмножеств модели (Sub- ject Area). В ней содержится раскры- вающийся список подмножеств мо- дели, включающий все объекты под- множеств - хранимые отображения, сущности, атрибуты и др. В списке вкладки Subject Areas можно прово- дить такие же манипуляции с объек- тами, как и во вкладке Model. На- пример, можно копировать сущ- ность из одного подмножества мо- дели в другое путем перенеса его в списке методом drag & drop. Во вкладке Domains (рис. 2.1.15) отображаются домены, созданные с модели. Домены, представляющие собой абстрактные атрибуты (колон- ки), будут рассмотрены ниже. Для создания атрибута на основе домена достаточно перенести его из списка вкладки Domains в прямоугольник сущности методом drag & drop. ^~^ИМИМГ*~~“ <Main SubjectArea> -< 4* Персонал ~ ? Stored Displays • Qb Уровень определений Q Уровень сущностей - Q Уровень атрибутов + □ Времен*^ S Отдел Attitudes :• S> Номер отдела • о Наименование отдела еу Groups & Ptinary Key • q Номер отдела h-qI Parent Relationships gp числятся q! Chid Relationships S Постоянный Сотрудник Ж- О Часть Рис. 2.1.14. Вкладка Subject Areas панели Model Explorer Рис. 2.1.15. Вкладка Domains панели Model Explorer 2.2. Создание логического уровня модели данных 2.2.1. Подуровни логического уровня модели данных Различают 3 подуровня логического уровня модели данных, отличаю- щиеся по глубине представления информации о данных: • диаграмма сущность-связь (Entity Relationship Diagram (ERD); • модель данных, основанная на ключах (Key Based model (КВ); • полная атрибутивная модель (Fully Attributed model (FA). Диаграмма сущность-связь включает сущности и взаимосвязи, отражаю- щие основные бизнес-правила предметной области. Такая диаграмма не слиш- ком детализирована, в нее включаются основные сущности и связи между ними, 117
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite которые удовлетворяют основным требованиям, предъявляемым к ИС. Диа- грамма сущность-связь может включать связи "многие ко многим" и не вклю- чать описание ключей. Как правило, ERD используется для презентаций и обсу- ждения структуры данных с экспертами предметной области. Модель данных, основанная на ключах, - более подробное представ- ление данных. Она включает описание всех сущностей и первичных ключей и предназначена для представления структуры данных и ключей, которые соответствуют предметной области. Полная атрибутивная модель - наиболее детальное представление структуры данных: представляет данные в третьей нормальной форме и включает все сущности, атрибуты и связи. 2.2.2. Сущности и атрибуты Основные компоненты диаграммы ERwin - это сущности, атрибуты и связи. Каждая сущность является множеством подобных индивидуальных объектов, называемых экземплярами. Каждый экземпляр индивидуален и должен отличаться ото всех остальных экземпляров. Атрибут выражает определенное свойство объекта. На физическом уровне сущности соответ- ствует таблица, экземпляру сущности - строка в таблице, а атрибуту - ко- лонка таблицы. Построение модели данных предполагает определение сущностей и ат- рибутов, т. е. необходимо определить, какая информация будет храниться в конкретной сущности и в конкретном атрибуте. Сущность можно опреде- лить как объект, событие или концепцию, информация о которых должна сохраняться. Сущности должны иметь наименование с четким смысловым значением, именоваться существительным в единственном числе, не носить "технических" наименований и быть достаточно важными для того, чтобы их моделировать. Именование сущности в единственном числе облегчает в дальнейшем чтение модели. Фактически имя сущности дается по имени ее экземпляра. Примером может быть сущность Заказчик (но не Заказчики'.) с атрибутами Номер заказчика, Фамилия заказчика и Адрес заказчика. На уровне физической модели ей может соответствовать таблица Customer с колонками Customer_number, Customer_name и Customer_address. Для внесения сущности в модель необходимо (убедившись предвари- тельно, что вы находитесь на уровне логической модели) щелкнуть на кноп- ке сущности ! на панели инструментов, затем щелкнуть на том месте диа- граммы, где необходимо расположить новую сущность. Щелкнув правой кнопкой мыши по сущности и выбрав из всплывающего меню пункт Entity Properties, можно вызвать диалог Entities, в котором определяются имя, опи- сание и комментарии сущности (рис. 2.2.1). 118
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Каждая сущность должна быть полностью определена с помощью тек- стового описания во вкладке Definition. Вкладки Note, Note 2, Note 3, UDP (User Defined Properties - Свойства, определенные пользователем) служат для внесения дополнительных комментариев и определений к сущности. В ранних версиях ERwin вкладкам Note2 и Note3 соответствовали окна Query и Sample. Вкладка Definition используется для ввода определения сущности. Эти определения полезны как на логическом уровне, поскольку позволяют по- нять, что это за объект, так и на физическом уровне, поскольку их можно экспортировать как часть схемы и использовать в реальной базе данных (CREATE COMMENT on entity_name). Вкладка Note позволяет добавлять дополнительные замечания о сущно- сти, которые не были отражены в определении, введенном во вкладке Definition. Здесь можно ввести полезное замечание, описывающее какое- либо бизнес-правило или соглашение по организации диаграммы. Во вкладке Note 2 можно задокументировать некоторые возможные за- просы, которые, как ожидается, будут использоваться по отношению к сущ- ности в базе данных. При переходе к физическому проектированию запи- санные запросы помогут принимать такие решения в отношении проекти- рования, которые сделают базу данных более эффективной. Вкладка Note 3 позволяет вводить примеры данных для сущности (в произвольной форме). 119
С, В. Маклаков, Создание информационных систем с AllFusion Modeling Suite Во вкладке Icon каждой сущности можно поставить в соответствие изо- бражение, которое будет отображаться в режиме просмотра модели на уров- не иконок (см. табл. 2.1.4). В этой вкладке можно задать как большую иконку, которая будет отображаться на уровне Icon, так и малую иконку, которая будет отображаться на всех уровнях просмотра модели. Для связы- вания изображения с сущностью необходимо щелкнуть по кнопке xJ, в появившемся диалоге Icons щелкнуть по кнопке Import и выбрать соответ- ствующий файл формата bmp. После выбора иконки она отображается во вкладке Icon диалога Entities (рис. 2.2.2). Рис. 2.2.2. Вкладка Icon диалога Entity Editor Применение свойств, определяемых пользователем (UDP), аналогично их использованию в BPwin (см. гл. 1). Для определения UDP служит диалог User-Defined Properties (вызывается из меню Model/UDP Dictionary). В нем необходимо указать вид объекта, для которого заводится UDP (диаграмма в целом, сущность, атрибут и т. д.), и тип данных. Для внесения нового свойства следует внести имя, тип данных, значение по умолчанию и опре- деление. Следующая строка таблицы появляется автоматически. ERwin поддерживает для UDP 6 типов данных: • Date. Дата. Используется формат MM/DD/YY. Для выбора значения да- ты можно использовать контекстный календарь. • Int. Целое число. • Real. Действительное число. • Text. Строка (ASCII). • List. Список. При задании списка в диалоге User-Defined Property Editor значения следует разделять запятой, значение по умолчанию выделяется символом ~ (рис. 2.2.3). 120
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 • Command. Команда - выполняемая строка. На рис. 2.2.3 свойство Docu- ment имеет тип Command. Рис. 2.2.3. Диалог Use Defined Properties Значение свойств, определяемых пользователем, задается во вкладке UDP диалога Entity Editor. Если присвоить сущности значение "C:\DOCU- MENTS\BPwin\UDP.doc" свойства Document (рис. 2.2.4), то из вкладки мож- но редактировать файл UDP.doc (кнопка 3 в строке таблицы UDP). Рис. 2.2.4. Вкладка UDP диалога Entities 121
С. В. Маклаков. Создание информационных счетам с AllFusion Modeling Suite ERwin автоматически сохраняет историю всех изменений, связанных с объектами (сущностями, атрибутами, таблицами, колонками и т. д.). Во вкладке History диалога Entities (рис. 2.2.5) отображается список измене- ний. Каждому изменению в окне Comment можно дать комментарий. Рис. 2.2.5. Вкладка History диалога Entities Как было указано выше, каждый атрибут хранит информацию об опре- деленном свойстве сущности, а каждый.экземпляр сущности должен быть уникальным. Атрибут или группа атрибутов, которые идентифицируют сущность, называется первичным ключом. Для описания атрибутов следует, щелкнув правой кнопкой по сущности, выбрать в появившемся меню пункт Attributes. Появляется диалог Attributes (рис. 2.2.6). Рис. 2.2.6. Диалог Attributes 122
Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Если щелкнуть по кнопке New, то в появившемся диалоге New Attribute (рис. 2.2.7) можно указать имя атрибута, имя соответствующей ему в физи- ческой модели колонки и домен. Домен атрибута будет использоваться при определении типа колонки на уровне физической модели. I ок I New Attribute ^Чертеж детали Рис. 2.2.7. Диалог New Attribute Для атрибутов первичного ключа во вкладке General диалога Attributes необходимо сделать пометку в окне выбора Primary Key. Вкладка Definition позволяет записывать определения отдельных ат- рибутов. Определения атрибутов можно также сгенерировать как часть схемы (CREATE COMMENT on entity_name.attribute_name). Вкладка Note позволяет добавлять замечания об одном или нескольких атрибу- тах сущности, которые не вошли в определения. Вкладка UDP служит для задания значений свойств, определяемых пользователем. Предвари- тельно эти свойства должны быть внесены в диалог User-Defined Proper- ty Editor как свойства атрибутов. Во вкладке History диалога Attributes отображается история создания и изменения свойств атрибута. Вкладка Key Group (рис. 2.2.8) позволяет включить атрибут в состав первичного, альтернативного или инвертированного ключа (см. 2.2.5). 123
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 2.2.8. Вкладка Key Group диалога Attributes Для большей наглядности диаграммы каждый атрибут можно связать с иконкой. При помощи списка выбора Icon во вкладке General можно свя- зать иконку с атрибутом. Рис. 2.2.9. Диалог Icons Каждому домену соответствует стандартная иконка, однако можно им- портировать и дополнительные изо- бражения. Кнопка справа от списка выбора Icon вызывает диалог Icons (рис. 2.2.9), щелкнув по кнопке Import, можно добавить в список необходимую иконку. Деталь_______________ Номер детали Ф Название детали М Вес детали £g] Дата изготовления ф Чертеж детали Рис. 2.2.10. Отображение сущности на уровне атрибутов с включенной опцией Attribute Icon 124
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Для отображения иконки атрибута следует щелкнуть правой кнопкой мыши по любому свободному месту диаграммы, выбрать в контекстном ме- ню пункт Entity Display и в каскадном меню включить опцию Attribute Icon. Малая иконка будет показана слева от имени атрибута на уровне атрибутов отображения модели. Как видно из рис. 2.2.10, имя сущности показывается над прямоугольником, изображающим сущность, список атрибутов сущно- сти-внутри прямоугольника. Список разделен горизонтальной чертой, выше которой расположены атрибуты первичного ключа, ниже - неключе- вые атрибуты. Очень важно дать атрибуту правильное имя. Атрибуты должны имено- ваться в единственном числе и иметь четкое смысловое значение. Соблюде- ние этого правила позволяет частично решить проблему нормализации дан- ных уже на этапе определения атрибутов. Например, создание в сущности Сотрудник атрибута Телефоны сотрудника противоречит требованиям нормализации, поскольку атрибут должен быть атомарным, т. е. не содер- жать множественных значений. Согласно синтаксису IDEF1X имя атрибута должно быть уникально в рамках модели (а не только в рамках сущности!); следовательно, новый атрибут, если его имя совпадает с уже существую- щим, должен быть переименован. Рис. 2.2.11. Диалог Model Naming Options На практике такое переименование не всегда удобно, поэтому по умол- чанию эта опция выключена, однако в случае необходимости ее можно включить. Во вкладке Duplicate Names диалога Model Naming Options (меню 125
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Names/Model Naming Options) (рис. 2.2.11) можно задать следующие режи- мы именования атрибутов: • Allow duplicate names - позволить внесение одинаковых имен (опция по умолчанию). • Automatically Rename duplicate names - переименовывать атрибуты. Если установлена эта опция, при попытке внесения уже существующего име- ни атрибута ERwin переименовывает его. Например, если атрибут Ком- ментарий уже существует в модели, другой атрибут (в другой сущно- сти) будет назван Комментарий/2, затем Комментарий/3 и т. д. • Ask - запрашивать возможные действия каждый раз при внесении одно- именных атрибутов. ERwin будет показывать на экране окно-диалог Edit Unique Name каждый раз, когда вводится неуникальное имя сущности или атрибута. В диалоге Edit Unique Name можно ввести другое имя или разрешить дублирование. При этом новое имя не проверяется на уни- кальность. • Disallow duplicate names - запретить внесение одинаковых имен. Если двойное имя обнаружено, то ERwin выдает на экран окно с сообщением, что ввод неуникальных имен запрещается. Помимо общепринятых правил именования атрибутов часто бывает по- лезным следовать правилам, разработанным внутри организации (корпора- тивным стандартам). Создание и применение собственных стандартов име- нования атрибутов и сущностей будет рассмотрено в 2.2.9. Каждый атрибут должен быть определен (вкладка Definition), при этом следует избегать циклических определений, например когда термин 1 опре- деляется через термин 2, термин 2 - через термин 3, а термин 3, в свою оче- редь, - через термин 1 (рис. 2.2.12). Рис. 2. 2.12. Циклическое определение атрибутов Иногда определение атрибута легче дать через описание области значе- ний. Например, оценка школьника - это число, принимающее значения 2, 3, 4 и 5. Часто приходится создавать производные атрибуты, т. е. атрибуты, зна- чение которых можно вычислить из других атрибутов. Примером произ- 126
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 водного атрибута может служить Возраст сотрудника, который может быть вычислен из атрибута Дата рождения сотрудника. Такой атрибут может привести к конфликтам; действительно, если вовремя не обновить значение атрибута Возраст сотрудника, он может противоречить значе- нию атрибута Дата рождения сотрудника. Производные атрибуты- ошибка нормализации, однако их вводят для повышения производительно- сти системы-если необходимо узнать возраст сотрудника, можно обра- титься к соответствующему атрибуту, а не проводить вычисления (которые на практике могут быть значительно более сложными, чем в приведенном примере) по дате рождения. ERwin позволяет переносить атрибуты внутри и между сущностями. Для этого необходимо щелкнуть мышью по атрибуту. Указатель приобретает вид кисти руки, после чего можно воспользоваться техникой drag & drop для переноса атрибута. Во время переноса указатель выглядит как показано на рис. 2.2.13. Рис. 2.2.13. Вид указателя во время переноса атрибута 2.2.3. Связи Связь является логическим соотношением между сущностями. Каждая связь должна именоваться глаголом или глагольной фразой (Relationship Verb Phrases) (рис. 2.2.14). Имя связи выражает некоторое ограничение или бизнес-правило и облегчает чтение диаграммы, например: • Каждый КЛИЕНТ <размещает> ЗАКАЗы; • Каждый ЗАКАЗ <выполняется> СОТРУДНИКОМ. ______размещает_____выполняется______ IjOweHTj-----------------------------*[^Зака^Г ^Сотруднйк^ Рис. 2.2.14. Имя связи - Relationship Verb Phrases Связь показывает, какие именно заказы разместил клиент и какой имен- но сотрудник выполняет заказ. По умолчанию имя связи на диаграмме не показывается. Для отображения имени следует в контекстном меню, кото- рое появляется, если щелкнуть левой кнопкой мыши по любому месту диа- граммы, не занятому объектами модели, выбрать пункт Relationship Display и затем включить опцию Verb Phrase. 127
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite На логическом уровне можно установить идентифицирующую связь "один ко многим", связь "многие ко многим" и неидентифицирующую связь "один ко многим" (соответственно это кнопки слева направо в палитре ин- струментов). В IDEF1X различают зависимые и независимые сущности. Тип сущно- сти определяется ее связью с другими сущностями. Идентифицирующая связь устанавливается между независимой (родительский конец связи) и за- висимой (дочерний конец связи) сущностями. Когда рисуется идентифици- рующая связь, ERwin автоматически преобразует дочернюю сущность в за- висимую. Зависимая сущность изображается прямоугольником со скруг- ленными углами (сущность Заказ на рис. 2.2.15). Экземпляр зависимой сущности определяется только через отношение к родительской сущности, т. е. в структуре на рис. 2.2.15 информация о заказе не может быть внесена и не имеет смысла без информации о клиенте, который его размещает. При установлении идентифицирующей связи атрибуты первичного ключа роди- тельской сущности автоматически переносятся в состав первичного ключа дочерней сущности. Эта операция дополнения атрибутов дочерней сущно- сти при создании связи называется миграцией атрибутов. В дочерней сущ- ности новые атрибуты помечаются как внешний ключ - (FK). Заказ Рис. 2.2.15. Идентифицирующая связь между независимой и зависимой таблицей В дальнейшем, при генерации схемы базы данных, атрибуты первичного ключа получат признак NOT NULL, что означает невозможность внесения записи в таблицу заказов без информации о номере клиента. При установлении неидентифицирующей связи (рис. 2.2.16) дочерняя сущность остается независимой, а атрибуты первичного ключа родитель- ской сущности мигрируют в состав неключевых компонентов родительской сущности. Неидентифицирующая связь служит для связывания независи- мых сущностей. Сотрудник Рис. 2.2.16. Неидентифицирующая связь 128
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Экземпляр сущности Сотрудник может существовать безотносительно к какому-либо экземпляру сущности Отдел, т. е, сотрудник может работать в организации не числясь в каком-либо отделе. Идентифицирующая связь показывается на диаграмме сплошной линией с жирной точкой на дочернем конце связи (см. рис. 2.2.15), неидентифици- рующая - пунктирной (см. рис. 2.2.16). Для создания новой связи следует: • установить курсор на нужной кнопке (идентифицирующая или неиден- тифицирующая связь) в палитре инструментов (табл.2.1.3) и нажать ле- вую кнопку мыши; • щелкнуть сначала по родительской, а затем по дочерней сущности. Форму линии связи можно изменить. Для этого нужно захватывать мы- шью нужную линию связи и переносить ее с места на место, пока линия не начнет выглядеть лучше. В палитре инструментов кнопка соответствует идентифицирующей свя- зи, кнопка - связи "многие ко многим" и кнопка соответствуют не- идентифицирующей связи. Для редактирования свойств связи следует щелкнуть правой кнопкой мыши по связи и выбрать в контекстном меню пункт Relationship Properties. Во вкладке General появившегося диалога можно задать мощность, имя и тип связи (рис. 2.2.17). Мощность связи (Cardinality) служит для обозначения отношения чис- ла экземпляров родительской сущности к числу экземпляров дочерней. Различают 4 типа мощности (рис. 2.2.18): • общий случай, когда одному экземпляру родительской сущности соот- ветствуют 0, 1 или много экземпляров дочерней сущности не помечается каким-либо символом; • символом Р помечается случай, когда одному экземпляру родительской сущности соответствуют 1 или много экземпляров дочерней сущности (исключено нулевое значение); • символом Z помечается случай, когда одному экземпляру родительской сущности соответствуют 0 или 1 экземпляр дочерней сущности (исклю- чены множественные значения); • цифрой помечается случай точного соответствия, когда одному экземп- ляру родительской сущности соответствует заранее заданное число эк- земпляров дочерней сущности. 129
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 2.2.17. Диалог Relationships По умолчанию Символ, обозначающий мощность связи, не показывается на диаграмме. Для отображения имени следует в контекстном меню, кото- рое появляется, если щелкнуть правой кнопкой мыши по любому месту диа- граммы, не занятому объектами модели, выбрать пункт Relationship Display и затем включить опцию Cardinality. Имя связи (Verb Phrase) - фраза, характеризующая отношение между родительской и дочерней сущностями. Для связи "один ко многим" иденти- фицирующей или неидентифицирующей достаточно указать имя, характе- ризующее отношение от родительской к дочерней сущности (Parent-to- Child). Для связи "многие ко многим" следует указывать имя как Parent-to- Child, так и Child-to-Parent. ' —---—--—• 0,1 или много ------------• 1 или много р ------------• 0 или 1 Z < точно N (5) 5 Рис. 2.2.18. Обозначения мощности Тип связи (идентифицирующая/неидентифицирующая). Для неиден- тифицирующей связи можно указать обязательность (Nulls). В случае обяза- тельной связи (No Nulls) при генерации схемы базы данных атрибут внеш- 130
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 него ключа получит признак NOT NULL, несмотря на то, что внешний ключ не войдет в состав первичного ключа дочерней сущности. В случае необяза- тельной связи (Nulls Allowed) внешний ключ может принимать значение NULL. Необязательная неидентифицирующая связь помечается прозрачным ромбом со стороны родительской сущности (см. рис. 2.2.16). Gfcerff OeMm Rofanone I RIAclom I UOF | Рис. 2.2.19. Вкладка Rolename диалога Relationships Во вкладке Definition можно дать более полное определение связи для того, чтобы в дальнейшем иметь возможность на него ссылаться. Во вкладке Rolename (рис. 2.2.19) можно задать имя роли и правила ссы- лочной целостности. Имя роли (функциональное имя) - это синоним атрибута внешнего ключа, который показывает, какую роль играет атрибут в дочерней сущности. Имя роли (функциональное) Имя атрибута (базовое) Рис. 2.2.20. Имена ролей внешних ключей В примере, приведенном на рис. 2.2.20, в сущности Сотрудник внешний ключ Номер отдела имеет функциональное имя "Где работает", которое показывает, какую роль играет этот атрибут в сущности. По умолчанию в списке атрибутов показывается только имя роли. Для отображения полно- го имени атрибута (как функционального имени, так и имени роли) следует в контекстном меню, которое появляется, если щелкнуть правой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, вы- брать пункт Entitiy Display и затем включить опцию Rolename/Attribute. Полное имя показывается как функциональное имя и базовое имя, разде- ленные точкой (см. рис. 2.2.20). 131
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Обязательным является применение имен ролей в том случае, когда два или более атрибута одной сущности определены по одной и той же области, т. е. они имеют одинаковую область значений, но разный смысл. На рис. 2.2.21 сущность Продажа валюты содержит информацию об акте обмена валюты, в котором участвуют две валюты - проданная и купленная. Информация о валютах содержится в сущности Валюта. Следовательно, сущности Продажа валюты и Валюта должны быть связаны дважды и первичный ключ - Номер валюты должен дважды мигрировать в сущ- ность Валюта в качестве внешнего ключа. Необходимо различать эти атри- буты, которые содержат информацию о номере проданной и купленной ва- люты (имеют разный смысл), но ссылаются на одну и ту же сущность Ва- люта (имеют общую область значений). В примере на рис. 2.2.21 атрибуты получили имена ролей Проданная и Купленная. Валюта Продажа валюты_________ Номер валюты Ь пр0Дзется-«[ Проданная.Номер валюты (FK) —-----—-----1 Купленная.Номер валюты (FK) Имя валюты I покупается — ~ ............................................ Рис. 2.2.21. Случай обязательности имен ролей Другим примером обязательности присвоения имен ролей являются ре- курсивные связи (иногда их называют "рыболовным крючком" - fish hook), когда одна и та же сущность является и родительской и дочерней од- новременно. При задании рекурсивной связи атрибут должен мигрировать в качестве внешнего ключа в состав неключевых атрибутов той же сущно- сти. Атрибут не может появиться дважды в одной сущности под одним именем, поэтому обязательно должен получить имя роли. На рис. 2.2.20 сущность Сотрудник содержит атрибут первичного ключа Табельный но- мер. Информация о руководителе сотрудника содержится в той же сущно- сти, поскольку руководитель работает в той же организации. Чтобы со- слаться на руководителя сотрудника, следует создать рекурсивную связь (на рис. 2.2.20 связь руководит/подчиняется) и присвоить имя роли (Руко- водитель). Заметим, что рекурсивная связь может быть только неидентифи- цирующей. В противном случае внешний ключ должен был бы войти в со- став первичного ключа и получить при генерации схемы признак NOT NULL. Это сделало бы невозможным построение иерархии - у дерева под- чиненности должен быть корень - сотрудник, который никому не подчиня- ется в рамках данной организации. Связь руководит/подчиняется на рис. 2.2.20 позволяет хранить древо- видную иерархию подчиненности сотрудников. Такой вид рекурсивной свя- 132
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 зи называется иерархической рекурсией (hierarchical recursion) и задает связь, когда руководитель (экземпляр родительской сущности) может иметь множество подчиненных (экземпляров дочерней сущности), но подчинен- ный имеет только одного руководителя (рис. 2.2.22). И^орхическоя рекурсия Сетевая рекурсия Рис. 2.2.22. Подчиненность экземпляров сущности в иерархической и сетевой рекурсии Другим видом рекурсии является сетевая рекурсия (network recursion), когда руководитель может иметь множество подчиненных и, наоборот, подчиненный может иметь множество руководителей. Сетевая рекурсия за- дает паутину отношений между экземплярами родительской и дочерней сущностей. Это случай, когда сущность находится сама с собой в связи "многие ко многим". Для разрешения связи "многие ко многим" необходимо создать новую сущность (подробно связь "многие ко многим" будет рас- смотрена ниже). Родственное отношение Рис. 2.2.23. Пример реализации сетевой рекурсии На рис. 2.2.23 рассмотрен пример реализации сетевой рекурсии. Струк- тура моделирует родственные отношения между членами семьи любой сложности. Атрибут Тип отношения может принимать значения "отец- сын", "мать-дочь", "дед-внук", "свекровь-невестка", "тесть-зять" и т. д. По- скольку родственное отношение связывает всегда двух людей, от сущности Родственник к сущности Родственное отношение установлены две иден- тифицирующие связи с именами ролей "Старший" и "Младший". Каждый член семьи может быть в родственных отношениях с любым другим членом семьи, более того, одну и ту же пару родственников могут связывать разные типы родственных отношений. Если атрибут мигрирует в качестве внешнего ключа более чем на один уровень, то на первом уровне отображается полное имя внешнего ключа (имя роли + базовое имя атрибута), на втором и более - только имя роли. 133
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite На рис. 2.2.24 изображена структура данных, которая содержит сущность Команда, сущность Игрок, в которой хранится информация об игроках ка- ждой команды, и сущность Гол, содержащая информацию и голах, которые забивает каждый игрок. Атрибут внешнего ключа Номер команды сущно- сти Игрок имеет имя роли "В какой команде играет". На следующем уровне, в сущности Гол, отображается только имя роли соответствующего атрибута внешнего ключа (В какой команде играет). Правила ссылочной целостности (referential integrity (RI) - логичес- кие конструкции, которые выражают бизнес-правила использования данных и представляют собой правила вставки, замены и удаления. При генерации схемы базы данных на основе опций логической модели, задаваемых во вкладке RI Actions (рис. 2.2.25), будут сгенерированы правила деклара- тивной ссылочной целостности, которые должны быть предписаны для ка- ждой связи, и триггеры, обеспечивающие ссылочную целостность. Рис. 2.2.25. Вкладка RI Actions диалога Relationships Триггеры представляют собой программы, выполняемые всякий раз при выполнении команд вставки, замены или удаления (INSERT, UPDATE или DELETE). Между сущностями Команда и Игрок (см. рис. 2.2.24) существу- ет идентифицирующая связь. Что будет, если удалить команду? Экземпляр сущности Игрок не может существовать без команды (атрибут первичного ключа В какой команде играет. Номер команды не может принимать зна- чение NULL); следовательно, нужно либо запретить удаление команды, по- 134
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 ка в ней числится хотя бы один игрок (для удаления команды сначала нуж- но удалить всех игроков), либо сразу удалять вместе с командой всех ее иг- роков. Такие правила удаления называются ограничением и каскадом (Parent RESTRICT и Parent CASCADE, см. рис. 2.2.25). Заметим, что сущ- ности Игрок и Гол, в свою очередь, тоже связаны идентифицирующей связью и в случае удаления каскадом команды будут удалены все игроки команды и все голы, которые они забили. Выполнение команды на удаление одной строки реально может привести к удалению 1000 строк в базе дан- ных, поэтому использовать правило удаления каскадом следует с осторож- ностью. В том случае, если установлено правило ограничения удаления, при попытке выполнить удаление команды, в которой есть хотя бы один игрок, сервер реляционной СУБД возвратит ошибку. На рис. 2.2.20 установлена необязательная неидентифицирующая связь между сущностями Отдел и Сотрудник. Экземпляр сущности Сотрудник может существовать без ссылки на отдел (атрибут внешнего ключа Где ра- ботает. Номер отдела может принимать значение NULL). В этом случае возможно установление правила установки в нуль - SET NULL. При удале- нии отдела атрибут внешнего ключа сущности Сотрудник - Где работает. Номер отдела примет значение NULL. Это означает, что при удалении от- дела сотрудник остается работать в организации, не будучи приписан к ка- кому-либо отделу, и информация о нем сохраняется. Возможна установка еще двух правил удаления (если таковые поддер- живаются СУБД): • SET DEFAULT - при удалении атрибуту внешнего ключа присваивается значение по умолчанию. Например, при удалении команды игроки могут быть переведены в другую команду. • NONE - при удалении значение атрибута внешнего ключа не меняется. Запись об игроке "повисает в воздухе", т. е. ссылается на несуществую- щую уже команду. Такая ситуация характерна для "плоских" таблиц. На- пример, если информация об игроках и командах хранится в dbf-файлах, можно удалить запись о команде, при этом файл игроков "ничего не бу- дет знать" о том, что соответствующей команды не существует. Поэтому в настольных или файл-серверных системах функциональность, обеспе- чивающая правила ссылочной целостности, реализуется в клиентском приложении. Правила удаления управляют тем, что будет происходить в базе данных при удалении строки. Аналогично правила вставки и обновления управляют тем, что будет происходить с базой данных, если строки изменяются или добавляются. Например, можно установить правило, которое разрешает 135
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite вносить новую команду только в том случае, когда в нее зачислен хотя бы один игрок. Желаемое поведение может быть достигнуто следующими дей- ствиями: • Задать мощность связи между сущностями Команда и Игрок, равную One or more - 1 или более (тип Р). Предполагается, что установлена идентифицирующая связь. • Присвоить действие RI-триггера Parent Insert-CASCADE для того, чтобы при создании новой строки в таблице Команда автоматически создава- лась хотя бы одна строка в дочерней таблице Игрок. • Присвоить связи действие RI-триггера Parent Delete-CASCADE для того, чтобы при удалении строки из таблицы Команда соответствующая стро- ка или строки из таблицы Игрок тоже удалялись. ERwin автоматически присваивает каждой связи значение ссылочной целостности, устанавливаемой по умолчанию, прежде чем добавить ее в диаграмму. Режимы RI, присваиваемые ERwin по умолчанию (приведены в табл. 2.2.1), могут быть изменены во вкладке RI Defaults редактора Model Properties (меню Model/Model Properties). Таблица 2.2.1. Значения RI, присваиваемые в ERwin по умолчанию, а также возможные режимы для каждого типа связи Идентифици- рующая связь Неидентифи-цирующая связь Категориаль- пая связь Nulls Allowed No Nulls Child Delete. Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE, NONE Child Delete. Режимы по умолчанию NONE NONE NONE NONE Child Insert. Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE, NONE Child Insert. Режимы по умолчанию RESTRICT SET NULL RESTRICT RESTRICT 136
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Идентифици- рующая связь Неидентифи-цирующая связь Категориаль- ная связь Nulls Allowed No Nulls Child Update. Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE, NONE Child Update. Режимы по умолчанию RESTRICT SET NULL RESTRICT RESTRICT Parent Delete. Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE, NONE Parent Delete. Режимы по умолчанию RESTRICT SET NULL RESTRICT CASCADE Parent Insert Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE, NONE Parent Insert Режимы по умолчанию NONE NONE NONE NONE Parent Update. Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE, NONE Parent Update. Режимы по умолчанию RESTRICT SET NULL RESTRICT CASCADE Связь "многие ко многим" может быть создана только на уровне логи- ческой модели. На рис. 2.2.26 вверху показан пример связи "многие ко мно- гим". Врач может принимать много пациентов, пациент может лечиться у нескольких врачей. Такая связь обозначается сплошной линией с двумя точками на концах. 137
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Врач_________ Номер врача I * .принимает Л 'лечится у Пациент________ Номер пациента Рис. 2.2.26. Связь "многие ко многим" Для внесения связи следует установить курсор на кнопке I в палитре инструментов, щелкнуть сначала по одной, а затем по другой сущности. Связь "многие ко многим" должна именоваться двумя фразами - в обе стороны (в примере "принимает/лечится"). Это облегчает чтение диаграм- мы. Связь на рис. 2.2.26 следует читать так: Врач <принимает> Пациента, Пациент <лечится> у Врача. Нотация требует, чтобы на физическом уровне связь "многие ко многим" была преобразована. По умолчанию при переходе к физическому уровню ERwin автоматически не преобразует связь "многие ко многим". В этом случае на физическом уровне диаграмма выглядит так же, как и на логиче- ском (рис. 2.2.26), однако при генерации схемы такая связь игнорируется. Для автоматического преобразования связи следует во вкладку General диалога Model d uheggt Auto-Transform Logical Objects включить опцию Many-To-Many Relationships with Association Table. Преобразование связи включает создание новой таблицы и двух новых связей "один ко многим" от старых к новой таблице (рис. 2.2.27, сверху). При этом имя новой табли- це присваивается автоматически как Имя1_Имя2. Рис. 2.2.27. Иллюстрация автоматического разрешения связи "многие ко многим" на уровне физической модели Автоматического решения проблемы связи многие-ко-многим не всегда оказывается достаточно. В примере таблица Doctor_Patient имеет смысл ви- зита к врачу, поэтому ее следует переименовать согласно бизнес-логике в Visit. Один и тот же пациент может много раз посещать врача, поэтому для того, чтобы идентифицировать визит, необходимо в состав первичного ключа таблицы Visit добавить дополнительную колонку, например дату- время посещения (VisitDatetime, рис. 2.2.28). Visit( DoctorlD: NOT NULL PatientID: NOT NULL VIsftDatetime: NOT NULL Doctor________________ DoctorlD: NOT NULL Patient__________________ PatientID: NOT NULL Puc. 2.2.28. Дополнение модели при разрешении связи "многие ко многим" на уровне физической модели 138
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Следует заметить, что после внесения дополнительной колонки на физи- ческом уровне на логическом уровне представление модели не изменится, диаграмма будет выглядеть так, как на рис. 2.2.26. Для преобразования связи "многие ко многим" принудительно необходимо щелкнуть по связи правой кнопкой мыши и выбрать пункт меню Create Associa- tion Table. Many-To-Many Relationship Transform Wizard (рис 2.2.29). Рис. 2.2.29. Диалог Мапу-То-Мапу Relationship Transform Wizard Диалог Many-To-Many Relationship Transform Wizard предлагает 4 шага для преобразования связи. Для перехода к следующему шагу надо щелкнуть по кнопке Next (Далее). На втором и третьем шаге следует задать имя вновь создаваемой таблицы и имя преобразования. По своим результатам прину- дительное преобразование не отличается от автоматического. Подробнее операции преобразования будут описаны в 2.2.7. 2.2.4. Типы сущностей и иерархия наследования Как было указано выше, связи определяют, является ли сущность неза- висимой или зависимой. Различают несколько типов зависимых сущностей. Характеристическая - зависимая дочерняя сущность (рис. 2.2.30), ко- торая связана только с одной родительской и по смыслу хранит информа- цию о характеристиках родительской сущности. Сотрудник Хобби Рис. 2.2.30. Пример характеристической сущности "Хобби" 139
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Ассоциативная - сущность, связанная с несколькими родительскими сущностями. Такая сущность содержит информацию о связях сущностей. Примером ассоциативной сущности является Visit на рис. 2.2.28. Именующая - частный случай ассоциативной сущности, не имеющей собственных атрибутов (только атрибуты родительских сущностей, мигри- ровавших в качестве внешнего ключа). Примером именующей сущности яв- ляется Doctor JPatient на рис. 2.2.28. Категориальная - дочерняя сущность в иерархии наследования. Иерархия наследования (или иерархия категорий) представляет собой особый тип объединения сущностей, которые разделяют общие характери- стики. Например, в организации работают служащие, занятые полный рабо- чий день (постоянные служащие) и совместители. Из их общих свойств можно сформировать обобщенную сущность (родовой предок) Сотрудник (см. рис. 2.2.31), чтобы представить информацию, общую для всех типов служащих. Специфическая для каждого типа информация может быть рас- положена в категориальных сущностях (потомках) Постоянный сотруд- ник и Совместитель. Обычно иерархию наследования создают, когда несколько сущностей имеют общие по смыслу атрибуты, либо когда сущности имеют общие по смыслу связи (например, если бы Постоянный сотрудник и Совмес- титель имели сходную по смыслу связь "работает в" с сущностью Организация), либо когда это диктуется бизнес-правилами. Для каждой категории можно указать дискриминатор - атрибут родово- го предка, который показывает, как отличить одну категориальную сущ- ность от другой (атрибут Тип на рис. 2.2.31). Сотрудник Рис. 2.2.31. Иерархия наследования. Неполная категория Иерархии категорий делятся на 2 типа - полные и неполные. В полной категории одному экземпляру родового предка (сущность Сотрудник, рис. 2.2.32) обязательно соответствует экземпляр в каком-либо потомке, 140
Гпаев 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 т. e. в примере служащий обязательно является либо совместителем, либо консультантом, либо постоянным сотрудником. Если категория еще не выстроена полностью и в родовом предке могут существовать экземпляры, которые не имеют соответствующих экземпля- ров в потомках, то такая категория будет неполной. На рис. 2.2.31 показана неполная категория - сотрудник может быть не только постоянным или со- вместителем, но и консультантом, однако сущность Консультант еще не внесена в иерархию наследования. На рис. 2.2.32 показан пример полной категории. Сотрудник Постоянный сотрудник Совместитель Табельный номер (FK) Табельный номер (FK) Ставка Консультант_________ Табельный номер (FK) Организация Рис. 2.2.32. Иерархия наследования. Полная категория Полная категория помечается символом -гг, неполная - “Т“г. Возможна комбинация полной и неполной категорий. На рис. 2.2.33 по- мимо постоянных сотрудников и совместителей могут быть и консультан- ты, что не отражено в иерархии (неполная категория), но каждый постоян- ный сотрудник либо мужчина, либо женщина (полная категория). )ПОЛ Совместитель | [ Постоянный сотрудник Рис. 2.2.33. Иерархия наследования. Комбинация полной и неполной категорий Для создания категориальной связи следует: установить курсор на кнопке в палитре инструментов и нажать ле- вую кнопку мыши; 141
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • щелкнуть сначала по родовому предку, а затем по потомку; • для установления второй связи в иерархии категории следует сначала щелкнуть по символу категории, затем по второму потомку. Для редактирования категорий нужно щелкнуть правой кнопкой мыши по символу категории и выбрать в контекстном меню пункт Subtype Relation- ship Editor. В диалоге Subtype Relationship (рис. 2.2.34) можно указать атрибут- дискриминатор категории (список Discriminator Attribute Choice) и тип катего- рии - полная/неполная (радиокнопки Complete/Incomplete). Рис. 2.2.34. Диалог Subtype Relationship Рассмотрим возможные стадии построения иерархии наследования. Определение сущностей с общими (по определению) атрибутами. Предположим, в процессе проектирования созданы сущности Постоянный сотрудник и Совместитель (рис. 2.2.35). Можно заметить, что часть атри- бутов у этих сущностей (Фамилия, Имя, Отчество, Дата рождения, Должность) имеет одинаковый смысл. Постоянный сотрудник Табельный номер Фамилия Имя Отчество Дата рооедения Должность Совместитель Табельный номер Фамилия Имя Отчество Дата рождения Должность Ставка Рис. 2.2.35. Сущности с общими по смыслу атрибутами Перенос общих атрибутов в сущность - родовой предок. В случае об- наружения совпадающих по смыслу атрибутов следует создать новую сущ- ность (Сотрудник) - родовой предок и перенести в нее общие атрибуты (Фамилия, Имя, Отчество, Дата рождения, Должность). 142
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Создание неполной структуры категорий. Создается категориальная связь от новой сущности-родового предка к старым сущностям-потомкам. Новая сущность дополняется атрибутом-дискриминатором категории (Тип) (см. рис. 2.2.36). Создание полной структуры категорий. Проводится дополнительный поиск сущностей, имеющих общие по смыслу атрибуты с родовым предком. В примере это сущность Консультант (рис. 2.2.36). Консультант_ Табельный номер Фамилия Имя Отчество Дата рождения Организация Рис. 2.2.36. Дополнительная сущность с общими по смыслу атрибутами Общие атрибуты переносятся в родового предка, и категория преобразу- ется в полную (признак полной категории устанавливается в диалоге Subtype Relationship). Сущность Консультант не имеет атрибута Долж- ность, поэтому в родовом предке значение этого атрибута в случае кон- сультанта будет NULL. В зависимости от бизнес-правил атрибут Долж- ность может быть перенесен обратно из родового предка в сущности- потомки Постоянный сотрудник и Совместитель. Комбинации полной и неполной структур категорий. При необходимо- сти создание иерархии категорий можно продолжить. Для каждого потомка мо- жет найтись сущность с общими атрибутами, тогда сущность-потомок стано- вится родовым предком для новых потомков и т. д. (см. рис. 2.2.33). 2.2.5. Ключи Каждый экземпляр сущности должен быть уникален и отличаться от других атрибутов. Первичный ключ (primary key) - это атрибут или группа атрибутов, однозначно идентифицирующая экземпляр сущности. Атрибуты первично- го ключа на диаграмме не требуют специального обозначения - это те ат- рибуты, которые находятся в списке атрибутов выше горизонтальной ли- нии. При внесении нового атрибута в диалоге Attributes для того, чтобы сделать его атрибутом первичного ключа, нужно включить флажок Primary Key в нижней части вкладки General. На диаграмме неключевой атрибут можно внести в состав первичного ключа, воспользовавшись режимом пе- реноса атрибутов (см. 2.2.2). 143
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Сотрудник Табельный номер Фамилия Имя Отчество Номер паспорта Должность Номер комнаты Город Улиид Дом Выбор первичного ключа может оказаться непростой задачей, решение которой в состоянии повлиять на эффективность будущей ИС. В одной сущности могут оказаться несколько атрибутов или наборов атрибутов, претендующих на роль первичного ключа. Такие претенденты называются потенциальными ключами (candidate key). Ключи могут быть сложными, т. е. содержа- щими несколько атрибутов. Сложные первичные ключи не требуют специального обозначения - это список атрибутов выше горизонтальной линии. Рассмотрим кандидатов на первичный ключ сущности Сотрудник (рис. 2.2.37). Здесь можно выделить следующие потенциаль- ные ключи: 1. Табельный номер. 2. Номер паспорта. 3. Фамилия + Имя + Отчество. Рис. 2.2.37. Определение первичного ключа для сущности "Сотрудник" Для того чтобы стать первичным, потенциальный ключ должен удовле- творять ряду требований. Уникальность. Два экземпляра не должны иметь одинаковых значений возможного ключа. Потенциальный ключ № 3 (Фамилия + Имя + Отчест- во) является плохим кандидатом, поскольку в организации могут работать полные тезки. Компактность. Сложный возможный ключ не должен содержать ни од- ного атрибута, удаление которого не приводило бы к утрате уникальности. Для обеспечения уникальности ключа № 3 дополним его атрибутами Дата рождения и Цвет волос. Если бизнес-правила говорят, что сочетания атри- бутов Фамилия + Имя + Отчество + Дата рождения достаточно для од- нозначной идентификации сотрудника, то Цвет волос оказывается лишним, т. е. ключ Фамилия + Имя + Отчество + Дата рождения + Цвет волос не является компактным. При выборе первичного ключа предпочтение должно отдаваться более простым ключам, т. е. ключам, содержащим меньшее количество атрибутов. В примере ключи № 1 и 2 предпочтительней ключа № 3. Атрибуты ключа не должны содержать нулевых значений. Если допус- кается, что сотрудник может не иметь паспорта или вместо паспорта иметь 144
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 какое-либо другое удостоверение личности, то ключ № 2 не подойдет на роль первичного ключа. Если для обеспечения уникальности необходимо дополнить потенциальный ключ дополнительными атрибутами, то они не должны содержать нулевых значений. Дополняя ключ № 3 атрибутом Дата рождения, нужно убедиться в том, что даты рождения известны для всех сотрудников. Значение атрибутов ключа не должно меняться в течение всего времени существования экземпляра сущности. Сотрудница организации может вый- ти замуж и сменить как фамилию, так и паспорт. Поэтому ключи № 2 и 3 не подходят на роль первичного ключа. Каждая сущность должна иметь по крайней мере один потенциальный ключ. Многие сущности имеют только один потенциальный ключ. Такой ключ становится первичным. Некоторые сущности могут иметь более одно- го возможного ключа. Тогда один из них становится первичным, а осталь- ные - альтернативными ключами. Альтернативный ключ (Alternate Key) - это потенциальный ключ, не ставший первичным. ERwin позволяет выделить атрибуты альтернативных ключей, и по умолчанию в дальнейшем при генерации схемы базы данных по этим атрибутам будет генерироваться уникальный индекс. При работе ИС часто бывает необходимо обеспечить доступ к несколь- ким экземплярам сущности, объединенным каким-либо одним признаком. Для повышения производительности в этом случае используются неуни- кальные индексы. ERwin позволяет на уровне логической модели назначить атрибуты, которые будут участвовать в неуникальных индексах. Атрибуты, участвующие в неуникальных индексах, называются инверсионными вхо- дами (Inversion Entries). Inversion Entry - это атрибут или группа атрибу- тов, которые не определяют экземпляр сущности уникальным образом, но часто используются для обращения к экземплярам сущности. ERwin гене- рирует неуникальный индекс для каждого Inversion Entry. Создать альтернативные ключи и инверсионные входы можно во вклад- ке Key Group диалога Attributes (см. рис. 2.2.8). Если щелкнуть по кнопке расположенной в правой верхней части вкладки, вызывается диалог Key Groups (рис. 2.2.38). В верхней части диалога находится список ключей, в нижней - список атрибутов, доступных для включения в состав ключа (слева), и список ключевых атрибутов. Каждый вновь созданный ключ дол- жен иметь хотя бы один атрибут. Для включения атрибута в состав ключа следует выделить его в левом списке и щелкнуть по кнопке [Я. 145
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Key Gioups Для создания нового ключа следует щелкнуть по кнопке New. Появляет- ся диалог New Key Group (рис. 2.2.39). Имя нового ключа присваивается ав- томатически (Alternate Key N для альтернативного ключа и Inversion Entry N для инверсионного входа, где N - порядковый номер ключа). Рис. 2.2.39. Диалог New Key Group Каждому ключу соответствует индекс, имя которого также присваивает- ся автоматически (XAKNENTITY для альтернативного ключа и XIENEN- TITY для инверсионного входа, где N - порядковый номер ключа, ENTITY - имя сущности). Имена ключа и индекса при желании можно из- менить вручную. 14©
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Сотрудник Отдел_________ Номер отдела ------------- > Табельный номер Где работает.Номер отдела (FK) Фамилия (АК11) Имя (АК1.2) Отчество (АК1.3) Номер паспорта (АК2.1) Должность (IE1.1) Номер комнаты (IE3.1) Город (IE2.1) Улица (IE22) Дом Дата рождения (АК1.4,1Е4.1) Рис. 2.2.40. Сущность "Сотрудник" с отображением ключей На диаграмме атрибуты альтернативных ключей обозначаются как (AKn.m), где п - порядковый номер ключа, m - порядковый номер атрибута в ключе. Когда альтернативный ключ содержит несколько атрибутов, (AKn.m) ставится после каждого. На рис. 2.2.40 атрибуты Фамилия, Имя, Отчество и Дата рождения входят в альтернативный ключ № 1 (АК1), Номер паспорта составляет альтернативный ключ № 2 (АК2). Инверсион- ные входы обозначаются как (IEn.m), где п - порядковый номер входа, m - порядковый номер атрибута. Инверсионный вход IE1 (атрибут Должность) позволяет выбрать всех сотрудников, занимающих одинаковую должность, IE2 (атрибуты Город и Улица) - всех сотрудников, живущих на одной ули- це, IE3 (атрибут Номер комнаты) - всех сотрудников, работающих в одной комнате, a IE4 (атрибут Дата рождения) - всех сотрудников, родившихся в один день. Если один атрибут входит в состав нескольких ключей, ключи перечисляются в скобках через запятую (атрибут Дата рождения входит в состав АК1 и IE4). По умолчанию номера альтернативных ключей и ин- версионных входов рядом с именем атрибута на диаграмме не показывают- ся. Для отображения номера следует в контекстном меню, которое появля- ется, если щелкнуть левой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Display Options/Entities и затем включить опцию Alternate Key Designator (АК). Внешние ключи (Foreign Key) создаются автоматически, когда связь соединяет сущности: связь образует ссылку на атрибуты первичного ключа в дочерней сущности и эти атрибуты образуют внешний ключ в дочерней сущности (миграция атрибутов ключа). Атрибуты внешнего ключа обозна- чаются символом (FK) после своего имени (см. рис. 2.2.40). Атрибут внеш- него ключа Где работает.Номер отдела ("Где работает" - имя роли) явля- ется атрибутом первичного ключа (РК) в сущности Отдел. Зависимая сущность может иметь один и тот же внешний ключ из не- скольких родительских сущностей. Сущность может также получить один 147
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite и тот же внешний ключ несколько раз от одного и того же родителя через несколько разных связей. Когда ERwin обнаруживает одно из этих событий, он распознает, что два атрибута одинаковы, и помещает атрибут внешнего ключа в зависимой сущности только один раз. Хотя во вкладке Key Group диалога Attribute Editor этот атрибут будет входить в два внешних ключа, на диаграмме он показывается только один раз. Это комбинирование или объединение идентичных атрибутов называется унификацией. Унификация производится, поскольку правила нормализации запрещают существование в одной сущности двух атрибутов с одинаковыми именами. В некоторых случаях (рис. 2.2.41) этот результат соответствует действи- тельности. Сотрудники работают в отделах, каждый сотрудник ведет не- сколько проектов. Сущность Отдел связана идентифицирующей связью с сущностями Сотрудник и Проект, ее первичный ключ Номер отдела мигрирует в состав первичного ключа дочерних сущностей в качестве внешнего ключа. Но сущность Сотрудник, в свою очередь, тоже имеет идентифицирующую связь с сущностью Проект и атрибуты ее первичного ключа (в том числе Номер отдела - второй раз!) мигрируют в состав пер- вичного ключа сущности Проект. Сотрудник___ Табельный номер Номер отдела (FK) Отдел________ Номер отдела Проект_________ Номер отдела (FK) Табельный номер (FK) Дата начала проекта ....а Рис. 2.2.41. Унификация атрибута По смыслу это одно и то же значение номера отдела, поскольку в отделе реализутся проекты, которые ведут сотрудники того же отдела. ERwin уни- фицирует атрибуты и отображает на диаграмме только один атрибут Номер отдела. Есть и другие случаи, когда унификация нежелательна. Например, когда два атрибута имеют одинаковые имена, но на самом деле они отличаются по смыслу и необходимо, чтобы это отличие отражалось в диаграмме. В этом случае необходимо использовать имена ролей атрибутов внешнего ключа. В некоторых случаях бывает целесообразно иметь в дочерней сущности ссылку не на первичный, а на альтернативный ключ. ERwin позволяет соз- 148
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 давать связи, при которых в дочернюю сущность мигрируют атрибуты од- ного из альтернативных ключей. Для создания такой связи необходимо соз- дать идентифицирующую или неидентифицирующую связь, щелкнуть по связи правой кнопкой мыши, выбрать пункт меню Relationship Properties и в списке выбора Migrated Key (диалог Relationships, вкладка Rolename) выбрать ключ, атрибуты которого будут мигрировать в дочернюю сущность (рис. 2.2.42). Genad I Detrition Rolenane | HI Actions | UDP | Рис. 2.2.42. Выбор ключа, атрибуты которого будут мигрировать в дочернюю сущность В результате в дочерней сущности внешний ключ содержит атрибуты альтернативного ключа родительской сущности (рис. 2.2.43). КЛИЕНТ Рис. 2.2.43. Миграция атрибутов альтернативного ключа 2.2.6. Нормализация данных Нормализация - процесс проверки и реорганизации сущностей и атрибу- тов с целью удовлетворения требований к реляционной модели данных. Нормализация позволяет быть уверенным, что каждый атрибут определен для своей сущности, значительно сократить объем памяти для хранения ин- формации и устранить аномалии в организации хранения данных. В резуль- тате проведения нормализации должна быть создана структура данных, при которой информация о каждом факте хранится только в одном месте. Про- 149
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite цесс нормализации сводится к последовательному приведению структуры данных к нормальным формам - формализованным требованиям к органи- зации данных. Известно 6 нормальных форм: • первая нормальная форма (1NF); • вторая нормальная форма (2NF); • третья нормальная форма (3NF); • нормальная форма Бойса - Код да (усиленная 3NF); • четвертая нормальная форма (4NF); • пятая нормальная форма (5NF). На практике обычно ограничиваются приведением данных к третьей нормальной форме (полная атрибутивная модель, FA, см. 2.2.1). В данном подразделе будут достаточно кратко рассмотрены первые три нормальные формы и, в качестве иллюстрации, четвертая нормальная форма. Для углубленного изучения нормализации следует рекомендовать книгу К. Дж. Дейта "Введение в системы баз данных" (Пер. с англ. - 6-е изд. - К.: Диалектика, 1998-784 с.). Нормальные формы основаны на понятии функциональной зависимости (в дальнейшем будет использоваться термин "зависимость"). Приведем формальное определение для функциональной зависимости. Функциональная зависимость (FD). Атрибут В сущности Е функцио- нально зависит от атрибута А сущности Е тогда и только тогда, когда каж- дое значение А в Е связало с ним точно одно значение В в Е, т. е. А одно- значно определяет В. Полная функциональная зависимость. Атрибут В сущности Е полно- стью функционально зависит от ряда атрибутов А сущности Е тогда и толь- ко тогда, когда В функционально зависит от А и не зависит ни от какого подряда А. Сотрудник______________ Табельный номер_______ Фамилия Имя Отчество Должность Хобби Оклад Телефон Дата зачисления или увольнения Рис. 2.2.44. Ненормализованная сущность "Сотрудник" 150
Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 На рис. 2.2.44 в сущности Сотрудник значения атрибутов Фамилия, Имя и Отчество однозначно определяются значением атрибута Табель- ный номер, т. е. атрибуты Фамилия, Имя и Отчество зависят от атрибута Табельный номер. Функциональные зависимости определяются бизнес- правилами предметной области. Так, если оклад сотрудника определяется только должностью, то атрибут Оклад зависит от атрибута Должность', ес- ли оклад зависит еще, например, от стажа, то такой зависимости нет. В нижеследующих примерах будем считать для определенности, что такая зависимость есть. Рассмотрим нормальные формы. Первая нормальная форма (1NF). Сущность находится в первой нор- мальной форме тогда и только тогда, когда все атрибуты содержат атомар- ные значения. Среди атрибутов не должно встречаться повторяющихся групп, т. е. несколько значений для каждого экземпляра. На рис. 2.2.44 ат- рибуты Телефон и Хобби являются нарушением первой нормальной формы. Что будет, если у сотрудника несколько рабочих телефонов? Запись значе- ния колонки через разделитель, например "124-56-78, 124-56-79, 124-56-90" или "Аквалангист, мотоциклист, шахматист", приводит к ряду проблем. Размера поля может не хватить для хранения данных (нельзя увеличивать список телефонов до бесконечности), по такой колонке невозможно по- строить индекс и т. д. и т. п. Сущность, приведенная на рис. 2.2.45, не явля- ется решением проблемы. Что будет, если у сотрудника появится четвертый телефон или третье хобби? Эту информацию будет негде хранить. Сотрудник___ Табельный номер Фамилия Имя Отчество Должность Хобби №1 Хобби №2 Оклад Телефон № 1 Телефон № 2 Телефон № 3 Рис. 2.2.45. Еще один пример ненормализованной сущности Другой ошибкой нормализации является хранение в одном атрибуте разных по смыслу значений. На рис. 2.2.44 атрибут Дата зачисления или увольнения хранит информацию как о зачислении, так и об увольнении со- трудника. Если хранится только одно значение, то невозможно понять, ка- кая именно дата внесена. Если внести атрибут-признак типа даты, тип мож- но будет определить, но останется возможность хранения только одной да- ты для каждого сотрудника. 151
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Для приведения сущности к первой нормальной форме следует: • разделить сложные атрибуты на атомарные; • создать новую сущность; • перенести в нее все "повторяющиеся" атрибуты; • выбрать возможный ключ для нового РК (или создать новый РК); • установить идентифицирующую связь от прежней сущности к новой, РК прежней сущности станет внешним ключом (FK) для новой сущности. На рис. 2.2.46 показана сущность Сотрудник, приведенная к первой нормальной форме. Сотрудник________ Табельный номер Фамилия Имя Отчество Должность Оклад Дата зачисления Дата увольнения Хобби_______________ Табельный номер (FK) Хобби Телефон_____________ Табельный номер (FK) Телефон Рис. 2.2.46. Сущность "Сотрудник", приведенная к первой нормальной форме Вторая нормальная форма (2NF). Сущность находится во второй нор- мальной форме, если она находится в первой нормальной форме и каждый неключевой атрибут полностью зависит от первичного ключа (не должно быть зависимости от части ключа). Вторая нормальная форма имеет смысл только для сущностей, имеющих сложный первичный ключ. Проект____________________ Наименование проекта Табельный номер руководителя Дата начала Дата завершения Фамилия Имя Отчество Должность Рис. 2.2.47. Сущность "Проект" Предположим, сущность Проект содержит информацию о проекте, ко- торым руководит сотрудник, причем информация содержится как непосред- ственно о проекте, так и о руководителе проекта (рис. 2.2.47). Атрибуты Фамилия, Имя, Отчество и Должность зависят только от атрибута Та- бельный номер руководителя, но вовсе не от Наименования проекта. Другими словами, имеется зависимость только от части ключа. 152
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Для приведения сущности ко второй нормальной форме следует: • выделить атрибуты, которые зависят только от части первичного ключа, создать новую сущность; • поместить атрибуты, зависящие от части ключа, в их собственную (но- вую) сущность; • установить идентифицирующую связь от прежней сущности к новой (рис. 2.2.48). Проект___________________________ Наименование проекта Руководитель.Табельный номер (FK) Дата завершения Дата начала Сотрудник Табельный номер Фамилия Имя Отчество Должность Рис. 2.2.48. Сущность "Проект", приведенная ко второй нормальной форме Вторая нормальная форма позволяет избежать следующих аномалий при выполнении операций: • Обновления (UPDATE). Имеет место дублирование данных о сотрудни- ке, если он руководит несколькими проектами. Если данные о сотрудни- ке изменяются, необходимо менять несколько записей (по числу ведо- мых проектов). • Вставки (INSERT). Невозможно ввести данные о сотруднике, если он в данный момент не руководит проектами. • Удаления (DELETE). Если сотрудник временно прекращает руководство проектами, данные о нем теряются. На рис. 2.2.48 показана сущность Проект, приведенная ко второй нор- мальной форме. Третья нормальная форма (3NF). Сущность находится в третьей нор- мальной форме, если она находится во второй нормальной форме и никакой неключевой атрибут не зависит от другого неключевого атрибута (не долж- но быть взаимозависимости между неключевыми атрибутами). На рис. 2.2.46 сущность Сотрудник находится во второй нормальной форме (имеется только один атрибут первичного ключа, поэтому не может быть зависимости неключевых атрибутов от части ключа), но неключевой атрибут Оклад зависит от другого неключевого атрибута -Должности. Для приведения сущности ко второй нормальной форме следует: 153
С. В. Маклаков, Создание информационных систем с AllFusion Modeling Suite • создать новую сущность и перенести в нее атрибуты с одной и той же зависимостью от неключевого атрибута; • использовать атрибут(ы), определяющий эту зависимость, в качестве первичного ключа новой сущности; • установить неидентифицирующую связь от новой сущности к старой (рис. 2.2.49). Сотрудник Хобби Табельный номер (FK) । Хобби Телефон_____________ Табельный номер (FK) Телефон Рис. 2.2.49. Сущность "Сотрудник", приведенная к третьей нормальной форме В третьей нормальной форме каждый атрибут сущности зависит от клю- ча, от всего ключа целиком и ни от чего другого, кроме как от ключа. Третья нормальная форма также позволяет избежать ряда аномалий: • Обновления (UPDATE). Имеет место дублирование данных об окладе, если должность занимают несколько сотрудников. Если оклад, соответ- ствующий должности, меняется, необходимо менять несколько записей (по числу сотрудников на одной должности). • Вставки (INSERT). Невозможно ввести данные об окладе, соответст- вующем должности, если в данный момент нет сотрудника, занимающе- го эту должность. • Удаления (DELETE). В случае удаления из таблицы сотрудника, зани- мающего уникальную должность, данные об окладе теряются. Четвертая нормальная форма (4NF) требует отсутствия многозначных зависимостей между атрибутами. В примере на рис. 2.2.50 (слева) преподаватель читает лекции по не- скольким предметам и курирует несколько групп студентов. Одна группа студентов может изучать несколько предметов, одному предмету могут обу- чаться несколько групп студентов. Имеется многозначная зависимость между атрибутами Предмет и Группа. При этом возможна аномалия: если у преподавателя появляется новая группа, приходится добавлять несколько записей, по числу читаемых предметов. 154
Гпава 2. Создание модели данных спомощью AllFusion ERwin Data Modeler 4.1 Для приведения сущности к четвертой нормальной форме следует соз- дать новую сущность и перенести атрибуты с многозначной зависимостью в разные сущности (рис. 2.2.50, справа). Связь между новыми сущностями при этом устанавливать нельзя, поскольку в результате миграции атрибутов внешних ключей атрибуты с многозначной зависимостью вновь окажутся в одной сущности. Ссылочную целостность в этом случае следует поддер- живать при помощи триггеров. Преподаватель-предмет Номер преподавателя Преподаватель Предмет Номер преподавателя Предмет Группа _ ——----------------- Преподаватель-группа Номер преподавателя Группа Рис. 2.2.50. Иллюстрация четвертой нормальной формы Поддержка нормализации в ERwin. ERwin не содержит полного алго- ритма нормализации и не может проводить нормализацию автоматически, однако его возможности облегчают создание нормализованной модели дан- ных. Запрет на присвоение неуникальных имен атрибутов в рамках модели (при соответствующей установке опции Unique Name) облегчает соблюде- ние правила "один факт - в одном месте". Имена ролей атрибутов внешних ключей и унификация атрибутов также облегчают построение нормализо- ванной модели. 2.2.7. Денормализация В результате нормализации все взаимосвязи данных становятся правиль- но определеными, исключаются аномалии при оперировании данными, мо- дель данных становится легче поддерживать. Однако часто нормализация данных не ведет к повышению производительности ИС в целом. Рассмот- рим примеры на рис. 2.2.44 и 2.2.49. Для получения полной информации о сотруднике из ненормализованной структуры данных достаточно обра- титься к одной таблице (см. рис. 2.2.44). После приведения структуры дан- ных к третьей нормальной форме (рис. 2.2.49) информация о сотруднике содержится уже в четырех таблицах. Хотя общее количество строк в этих таблицах может быть меньше, чем в исходной (до нормализации), теперь для получения полной информации о сотруднике серверу базы данных не- обходимо обращаться одновременно к четырем таблицам (объединение таблиц, join). Время выполнения запроса с объединением может во много 155
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite раз превосходить время выполнения запроса к одной таблице; другими сло- вами, в приведенном примере общая производительность ИС в результате нормализации скорее всего упадет. В целях повышения производительности при переходе на физический уровень приходится сознательно отходить от нормальных форм для того, чтобы использовать возможности конкретно- го сервера или ИС в целом. В отличие от процесса нормализации денормализация не может быть пред- ставлена в виде четко сформулированных правил. К сожалению, в каждом кон- кретном случае приходится искать конкретные решения, которые используют специфику ИС и предметной области и не могут быть тиражированы. Примером денормализации могут служить производные атрибуты, кото- рые являются нарушением первой нормальной формы (см. 2.2.6). Другой пример денормализации приведен на рис. 2.2.51. Сотрудник_______ Табельный номер Должность (FK) Фамилия Имя Отчество Сотрудник_______ Табельный номер Должность (FK) Фамилия Имя Отчество Оклад 3 Должность Должность Оклад Рис. 2.2.51. Пример денормализации Слева данные находятся в третьей нормальной форме, но для получения из базы данных информации о сотруднике, включая его оклад, приходится обращаться к таблицам Должность и Сотрудник. Если в таблицу Сотруд- ник добавить колонку Оклад (рис. 2.2.51, справа), то тогда при выборке ин- формации о сотруднике достаточно обратиться только к таблице Сотруд- ник (исключается объединение). При этом нарушается третья нормальная форма и возникают аномалии, в том числе аномалии при обновлении (если оклад соответствующий должности меняется, необходимо менять несколько записей по числу сотрудников на одной должности). Для решения пробле- мы можно делать выборку только из таблицы Сотрудник, а обновлять зна- чение оклада только в таблице Должность. Но при этом возникает проти- воречие между старым значением оклада, хранящимся в таблице Сотруд- ник, и новыми данными, хранящимися в таблице Должность. Чтобы избежать противоречия, можно создать утилиту (процедуру сервера), кото- рая будет запускаться во время минимальной загрузки сервера, например 156
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 ночью, и выравнивать значения колонок. Если при выборке должности все- гда необходимо самое свежее значение, то такое решение неприемлемо. Ес- ли задача позволяет подождать до начала следующего дня после редак- тирования справочника Должность, то такое решение вполне допустимо. Заметим, что приведенный пример следует воспринимать исключитель- но как иллюстрацию, а не как руководство к действию. Еще один пример денормализации данных будет рассмотрен в гл. 6. Поддержка денормализации в ERwin. Денормализация, как правило, проводится на физическом уровне модели. ERwin позволяет сохранить на логическом уровне нормализованную структуру, при этом построить на уровне физическом структуру (возможно, денормализованную), которая обеспечивает лучшую производительность, используя особенности кон- кретной СУБД и бизнес-правил предметной области. Для поддержки денормализации ERwin позволяет создавать сущности, атрибуты, ключи и домены только на уровне логической модели, включив в соответствующих редакторах опцию Logical Only (см., например, рис. 2.2.1 и 2.2.7). Такие объекты не будут отображаться на уровне физиче- ской модели и не будут создаваться при генерации базы данных. С другой стороны, таблицы, колонки, домены и индексы можно создавать только на уровне физической модели (опция Physical Only). Кроме того, ERwin имеет набор инструментов, сведенных в панель тран- сформации (табл. 2.2.2), который может быть использован для денормали- зации модели. Таблица 2.2.2. Панель трансформации таблиц (Transforms) Кнопки Назначение 10-0 Преобразование связи "многие ко многим" Замена иерархии наследования идентифицирующими связями Миграция первичного ключа и неключевых атрибутов в иерар- хии наследования от потомков к предку & Миграция первичного ключа и неключевых атрибутов в иерар- хии наследования от предка к потомкам Рассмотрим каждую кнопку панели трансформации таблиц. Преобразование связи "многие ко многим" было рассмотрено в гл. 2.2.3. Замена иерархии наследования идентифицирующими связями. Причи- ной преобразований иерархии наследования может быть желание упростить 157
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite модель или увеличить производительность ИС. В любом случае такие пре- образования должны проводиться только после анализа производительно- сти выполнения SQL-запросов. Для преобразования следует щелкнуть по символу иерархии и затем по кнопке замены иерархии на палитре инструментов. Возникает диалог Super- type Subtype Identifying Wizard, который предлагает 4 шага для преобразования связи. Для перехода к следующему шагу надо щелкнуть по кнопке Next (Далее). На втором шаге следует задать имя преобразования (рис. 2.2.52). Supeitype Subtype Identity Wizard Рис. 2.2.52. Внесение имени преобразования в диалог Supertype Subtype Identifying Wizard На рис. 2.2.53 показана иерархия категории до и после преобразования. Сотрудник________ Табельный номер Фамилия Имя Дата рождения Должность Тип “Г Постоянный сотрудник Совместитель Постоянный сотрудник Табельный номер (FK) Ставка Рис. 2.2.53. Иерархия категории до (слева) и после (справа) преобразования Совместитель________ Табельный номер (FK) 158
Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Все преобразования показываются во вкладке Model окна Model Explorer (рис. 2.2.54). i-H Qb Domains Model Sources ( ? vr Validation Rules ; «• Default Values i S ТГ Transforms - Преобразование категории Сотрудник Й Source Objects Г д1 is а Совместитель от а Постоянный сотрудник г- ^3 Т абельный номер | £5 Табельный номер i В Target Objects I i" & R/4 I si P/5 j i & Табельный номер ( Табельный номер j > Q Entities • +’ Subject Areas | Puc. 2.2.54. Отображение преобразований во вкладке Model окна Model Explorer Преобразование можно удалить из списка. Щелкнув правой кнопкой по имени преобразования (на рис. 2.2.54 - "Преобразование категории Со- трудник"), следует выбрать в каскадном меню Delete/Reverse Transform. В результате преобразование "откатывается" - две идентифицирующие свя- зи превращаются в категорию. Если выбрать Delete/Resolve Transform, то имя преобразования исчезает из списка, но идентифицирующие связи ос- таются, т. е. преобразование становится необратимым. Миграция первичного ключа и неключевых атрибутов в иерархии наследования от потомков к предку. Это преобразование также применя- ется для иерархии категорий. Для преобразования следует щелкнуть по сим- волу иерархии и затем по кнопке миграции первичного ключа и неключе- вых атрибутов в иерархии наследования от потомков к предку на палитре инструментов. В результате преобразования (рис. 2.2.55, справа) потомки удаляются, а все их атрибуты мигрируют в предка. 159
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Сотрудник_______ Табельный номер Фамилия Имя Дата рождения Должность Тип Сотрудник_______ Табельный номер Фамилия Имя Дата рождения Должность Тип Ставка Постоянный сотрудник Совместитель_________ Табельный номер (FK) У Табельный номер (FK) Ставка | Рис. 2.2.55. Миграция первичного ключа и неключевых атрибутов в иерархии наследования от потомков к предку Миграция первичного ключа и неключевых атрибутов в иерархии наследования от предка к потомкам. Для преобразования следует щелк- нуть по символу иерархии и затем по кнопке миграции первичного ключа и неключевых атрибутов в иерархии наследования от предка к потомкам на палитре инструментов. В результате преобразования (рис. 2.2.56, справа) предок удаляется, а все его атрибуты мигрируют в каждого из потомков. Сотрудник______ Табельный номер Фамилия Имя Дата рождения Должность Тип Постоянный сотрудник Совместитель__________ Табельный номер (FK) |[ Табельный номер (FKj Постоянный сотрудник Табельный номер Ставка фамилия Имя Дата рождения Должность Тип Совместитель Табельный номер Фамилия Имя Дата рождения Должность Тип Ставка Рис. 2.2.56. Миграция первичного ключа и неключевых атрибутов в иерархии наследования от предка к потомкам 160
Гпава 2. Создание модели данныхспомощью AllFusion ERwin Data Modeler 4.1 2.2.8. Домены Домен можно определить как абстрактный атрибут, на основе которого можно создавать обычные атрибуты, при этом создаваемые атрибуты будут иметь все свойства домена-прародителя. Каждый атрибут может быть опре- делен только на одном домене, но на каждом домене может быть определе- но множество атрибутов. В понятие домена входит не только тип данных, но и область значений данных. Например, можно определить домен "Воз- раст" как положительное целое число и определить атрибут Возраст со- трудника как принадлежащий этому домену. В ERwin домен может быть определен только один раз и использоваться как в логической, так и в физической модели. Домен может быть создан на основе другого домена и наследовать все свойства домена-прародителя. По умолчанию ERwin имеет 4 предопреде- ленных домена: String, Number, Blob, Datetime. Домены позволяют облегчить работу с данными как разработчикам на этапе проектирования, так и администраторам баз данных на этапе экс- плуатации системы. На логическом уровне домены можно описать без кон- кретных физических свойств. На физическом уровне они автоматически по- лучают специфические свойства, которые можно изменить вручную. Так, домен "Возраст" может иметь на логическом уровне тип Number, на физи- ческом уровне колонкам домена будет присвоен тип INTEGER. Создать домен можно во вкладке Domains окна Model Explorer (см. рис. 2.1.13). Рис. 2.2.57. Диалог Domain Dictionary 161
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Для создания нового домена во вкладке Domains следует выбрать роди- тельский домен из списка Domains (см. рис. 2.1.13), щелкнуть по нему пра- вой кнопкой мыши и выбрать пункт Properties. Появляется диалог Domain Dictionary (рис. 2.2.57), где следует щелкнуть по кнопке New. В появившем- ся диалоге New Domain (рис. 2.2.58) следует набрать имя домена в поле Logical Name. Можно также указать имя домена на физическом уровне в поле Physical Name, после чего щелкнуть по кнопке ОК. Если физическое имя не указано, по умолчанию оно принимает значение логического имени. Новый домен можно создать на основе уже созданного пользователем домена либо на основе изначально существующего. Новый домен наследует все свойства родительского домена. Эти свойства в дальнейшем можно пе- реопределить. В случае изменения свойств родительского домена (напри- мер, имени порождаемого атрибута, Name Inherited by Attribite) это свойство автоматически изменяется у дочернего домена и в порожденных атрибутах. В диалоге Domain Dictionary Editor можно связать домен и иконкой, с которой он будет отображаться в списке доменов (Domain Icon), и икон- кой, с которой атрибут, определенный на домене, будет отображаться в модели (Icon Inherited by Attribite). Рис. 2.2.58. Диалог New Domain Каждый домен может быть описан во вкладке Definition, снабжен ком- ментарием во вкладке Note или свойством, определенным пользователем во вкладке UDP. Во вкладке Datatype может быть задан абстрактный тип данных домена, правила валидации и значение по умолчанию. Соответствие 162
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 абстрактных типов данных и типов данных конкретного сервера будет рас- смотрено ниже. Рис. 2.2.59. Создание нового атрибута с помощью диалога Independent Attribute Browser Jijvt создания атрибута на основе домена необходимо выбрать домен в списке окна Model Explorer и по методу drag & drop перенести его в ка- кую-либо сущность (рис. 2.2.59). В ней будет создан новый атрибут с име- нем, которое было задано в поле Name Inherited by Attribute диалога Domain Dictionary. Если значение поля не задано, по умолчанию принимается имя домена. В дальнейшем в случае необходимости имя атрибута можно изме- нить. При задании имени атрибута в поле Name Inherited by Attribute можно использовать макросы (подробнее макросы ERwin будут рассмотрены в гл. 2.3). Например, если для домена Адрес задано имя %EntityName()%Att- Domain, то при создании атрибута в сущности Сотрудник он получит имя Сотру дникАдрес. Gamal 'ORACLE | Connart | UDP | • ORACLE Datoype INTEGER NUMBER!) NIIMRPRfH Nul Option* Г HQT NULL ’ a NULL | Ордера a_Bjap:cra 3 _J XAtfeHName BETWEEN WAND 75 lefatA. |Возраст2то_У^лчанию . 2? Рис. 2.2.60. Вкладка ORACLE диалога Domain Dictionary на физическом уровне 163
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite На физическом уровне диалог Domain Dictionary Editor позволяет редак- тировать физические свойства домена. На рис. 2.2.60 показана вкладка ORACLE. Имя этой вкладки зависит от выбранного сервера базы данных. На ней можно задать конкретный тип данных, соответствующих домену, правила присвоения NULL-значений, правила валидации (правила проверки допустимых значений) и задания значения по умолчанию. Правила валида- ции и значения по умолчанию должны быть предварительно описаны и именованы (создание правил валидации и значений по умолчанию будет описано в гл. 2.3). Для вызова диалогов редактирования правил валидации и значений по умолчанию служат кнопки справа от соответствующего списка выбора (Valid и Default). Рассмотрим функции других вкладок диалога Domain Dictionary Editor. General. Задание родительского домена (Domain Parent) и имени, при- сваиваемого колонке при ее создании с помощью Independent Column Browser. С помощью опции Physical Only домен можно определить только на уровне физической модели. Comment. Внесение комментария к атрибуту. UDP. Свойства, определяемые пользователем. Домены могут быть использованы при генерации схемы базы данных для создания типов, определяемых пользователем для тех СУБД, которые поддерживают такие конструкции (DB2, Rdb, Interbase, SQL Anywhere, SQL Server и SYBASE). Типы, определяемые пользователем, представляют собой синонимы существующих в базе данных типов, создаваемых для удобства работы с данными. При выборе соответствующего сервера на вкладке General появляется флажок: • Distinct Types - для DB2/CS и DB2/UDB; • Domains - для Rdb и Interbase; • User Datatypes - для SQL Anywhere, SQL Server и SYBASE. Для создания типов, определяемых пользователем, необходимо вклю- чить соответствующую опцию. При генерации схемы базы данных колонки, определенные на соответствующем домене, будут иметь тип, определяемый пользователем. 164
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 2.2.9. Стандарты именования объектов модели При разработке больших ИС, когда над созданием модели данных рабо- тают несколько специалистов, крайне важно соблюдать общие правила именования объектов (например, имена сущностей должны вноситься в верхнем регистре, атрибутов - в нижнем, имена сущностей, в которых бу- дет храниться информация, так или иначе касающаяся клиентов, должны начинаться с префикса CUST и т. д.). Такие правила можно разработать в виде текстового документа (регламента) и организационными мерами до- биваться их выполнения. Однако если количество объектов модели исчис- ляется тысячами, контролировать выполнение правил вручную становится практически невозможно. ERwin имеет специальный набор инструментов для разработки и контроля выполнения стандартов именования объектов как логического, так и физи- ческого уровня. Применение этих инструментов состоит из трех этапов: 1. Создания стандарта именования объектов (глоссария имен и правил име- нования объектов). 2. Установки стандарта для модели. 3. Проверки имен объектов модели на соответствие стандарту. Для создания глосссария имен следует перейти в меню Tools/Names /Edit Naming Standards. Возникает диалог ERwin Naming Standards Editor (рис. 2.2.61). й ERwin Naming Standaids Editot - Untitled Descript ton Г P Г icust imovi jsto le mp ipay cu [mo ST EM PA ,Г jP' description description description description description $ customer movie __ « store | employee Ffe ModaMart £d* V»w Hdc I'D.eg В Rea# r-'T”' Puc. 2.2.61. Вкладка Glossary диалога ERwin Naming Standards Editor 165
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Вкладка Glossary позволяет описать все слова, из которых будут состав- ляться имена объектов. Имя каждого объекта может быть образовано из трех составляющих: 1. Основы (prime), которая характеризует предметную область объекта, на- пример "Клиент", "Сотрудник", "Заказ". 2. Квалификатора (modifier), который уточняет использование основы, на- пример "Постоянный" для основы "Клиент" или "Совместитель" для ос- новы "Сотрудник". 3. Класса (class), характеризующего тип данных объекта, например "Дата", "Номер", "Изображение". Имя объекта может содержать основу, два квалификатора и класс. Таблица во вкладке Glossary имеет следующие столбцы: • Word/Words-слово, используемое в качестве составляющего элемента имени объекта; • Abbreviation - сокращение слова, используемого в качестве составляю- щего элемента имени объекта; • Alternate Abbreviation - альтернативное сокращение слова, используемо- го в качестве составляющего элемента имени объекта; • Р (Prime) - разрешение использовать слово в качестве основы; • Ml (Modifier!) - разрешение использовать слово в качестве первого ква- лификатора; • М2 (Modifier2) - разрешение использовать слово в качестве второго ква- лификатора; • С (Class) - разрешение использовать слово в качестве класса; • Description - описание слова. В примере на рис. 2.2.61 показано, что в качестве основы можно исполь- зовать слова "customer", "cust", "CU", "payment", "pay" и "PA". В качестве первого квалификатора можно использовать "movie", "movi", "МО", "pay- ment", "pay" и "РА", в качестве второго квалификатора - "store", "sto", "ST", "payment", "pay" и "PA". И наконец, в качестве класса допускается исполь- зование "employee", "emp", "ЕМ", "payment", "pay" и "РА". Глоссарий имен можно импортировать из текстового файла. Для этого необходимо щелкнуть по кнопке Import и выбрать текстовый файл с расши- рением csv. Данные в файле должны быть разделены запятыми. Признак 166
Гпава 2. Создание моделиданныхспомощью AllFusion ERwin Data Modeler 4.1 разрешения использовать слово в качестве составляющего показывается ли- терой X. На рис. 2.2.62 показан пример такого файла. Результат импорта по- казан на рис. 2.2.61. NamStan - Блокнот IRIW IS! Файл Правка., Поиск Справка customer,cust,CU,X,,,,description, mouie,moui,M0,,X,,.description, store, sto,ST,,,X,.description, employee,emp,EM,,,,X,description, payment,pay,PA,X,X,X,X,description, Puc. 2.2.62. Пример текстового файла для импорта глоссария имен Данные глоссария можно также экспортировать в текстовый файл (кноп- ка Export). Вкладки Logical и Physical диалога ERwin Naming Standards Editor слу- жат для создания правил именования объектов (рис. 2.2.63). For Нф prest Я Рис. 2.2.63. Вкладка Logical диалога ERwin Naming Standards Editor В примере на рис. 2.2.63 заданы следующие правила именования объек- тов логического уровня: • имя сущности может состоять из трех частей - первого квалификатора, второго квалификатора и основы, причем части должны следовать в ука- занном порядке; 167
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • имя атрибута и домена также может состоять из трех частей - первого квалификатора, основы и класса. Для объектов физического уровня (таблиц, колонок и доменов) правила именования во вкладке Physica задаются аналогично. Созданный стандарт именования может быть сохранен в файле (меню File/Save, расширение файла-nsm) или в хранилище ModelMart (меню ModelMart/Save). Следующим шагом является установка стандарта для модели данных. Для установки стандарта следует перейти в меню Tools/Names/Model Nam- ing Options. Возникает диалог Model Naming Options (рис. 2.2.64). Рис. 2.2.64. Вкладка General диалога Model Naming Options Диалог Model Naming Options содержит 5 вкладок. • General. Служит для установки стандарта именования. Стандарт имено- вания можно выбрать из файла или хранилища ModelMart. Кнопка Edit служит для вызова диалога ERwin Naming Standards Editor. • Logical (рис. 2.2.65). Служит для задания дополнительных правил име- нования - регистра и максимальной длины имени объектов на логиче- ском уровне. • Physical. Позволяет задать регистр и максимальную длину имени объек- тов на физическом уровне. • Name Mapping (рис. 2.2.66). Содержит правила переименования объек- тов при конвертации логического уровня модели в физический. Таблица вкладки имеет 6 колонок: 168
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 1. Object Type. Показывает тип объектов. 2. ERwin Macro. Позволяет задать макрос, используемый при переиме- новании. Так, на рис. 2.2.66 макрос %EntityName означает, что имя таблицы будет скопировано из имени сущности, а макрос Х%КеуТу- pe%TableName означает, что в первой позиции имени индекса будет литера X, затем последует наименование типа ключа, затем-имя таблицы, например: XPKCustomer. 3. Use Glossary - разрешение использования глоссария для именования объектов. 4. Abbreviation Туре - указание типа сокращения (обычное или альтер- нативное), которое будет использоваться в качестве имени объекта. 5. Prefix - префикс. 6. Suffix - суффикс. • Duplicate Names (см. рис. 2.2.11). Был рассмотрен в гл. 2.2.2. General Lojpcal j Ffysical | Name Mapping | Dupfcale Name» | Object Type J Сам* • | Maximum Length’ ( Eitlea UPPER |20 Donahs lower 25 АЯгШе' lower 25 Ratabonshto* 4 Initial 20 КеуОгацв - ' tf » ' Initial 20 VaMetKH Rutes •> lower 20 /’«i 2 2 65 Нкладка logic al dua юга Model Naming Option r Puc. 2.2.66. Вклаока Name Mapping оиалога Model Naming Options 169
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite После задания стандартов и правил именования можно проверить име- на объектов модели на соответствие этим стандартам. Для этого следует перейти в меню Tools/Names/Check Standards Compliance. Возникает диалог Check Name Standards Compliance (рис. 2.2.67). Select Objects Io Check P Tables P Columns P Romans Puc. 2.2.67. Диалог Check Name Standards Compliance на физическом уровне модели В диалоге Check Name Standards Compliance можно указать тип прове- ряемых объектов и опцию проверки порядка слов в имени объекта. Щелчок по кнопке Start запускает процесс проверки. Если в процессе проверки находится имя объекта, не соответствующее стандарту, возникает диалог Check Name Standards Compliance (рис. 2.2.68), где можно переименовать объект с "неправильным" именем. Table "Customer" has wod(sj which are NOT defrad n the Namrtg Standard Ffe's glossary Noneonfanimg Name ] * r' Replace the Name W№ |CUSTOMFR| г* Puc. 2.2.68. Вид диалога Check Name Standards Compliance при обнаружении несоответствия стандарту именования 2.3. Создание физического уровня модели данных 2.3.1. Подуровни физического уровня модели данных Различают два подуровня физического уровня модели данных: • трансформационная модель (Transformation Model); • модель СУБД (DBMS Model). Трансформационная модель содержит информацию для реализации от- дельного проекта, который может быть частью общей ИС и описывать под- 170
Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 множество предметной области. ERwin поддерживает ведение отдельных проектов, позволяя проектировщику выделять подмножество модели в виде предметных областей (Subject Area). Трансформационная модель позволяет проектировщикам и администраторам баз данных лучше представлять, ка- кие объекты базы данных хранятся в словаре данных, и проверить, насколь- ко физический уровень модели данных удовлетворяет требованиям к ИС. Модель СУБД автоматически генерируется из трансформационной мо- дели и является точным отображением системного каталога СУБД. ERwin непосредственно поддерживает эту модель путем генерации системного каталога. 2.3.2. Выбор сервера Физический уровень модели зависит от выбранного сервера. Для выбора СУБД служит редактор Target Server (меню Database/Choose Database дос- тупно только на физическом уровне) (рис. 2.3.1). ERwin поддерживает практически все распространенные СУБД, всего более 20 реляционных и нереляционных баз данных. Для выбора СУБД нужно щелкнуть по соответствующей кнопке рядом с именем СУБД. Диалог Target Server позволяет задать тип данных и опцию NULL для новых колонок, а также правила ссылочной целостности, принимаемые по умолчанию. Тип данных можно выбрать в раскрывающемся списке Default Datatype, который автоматически заполняется типами данных, под- держиваемых выбранным сервером. Группа кнопок Default Non-Key Null Option позволяет разрешить или за- претить значения NULL для неключевых колонок. ( (Miipuh । Awn' hit* ч I (twin I <нqt I Server TagaSQLpflMS' -; , Г AS/400 Г [ngn r DB2 Г IrterBsse Г нвов ' г 0DBC/ Г INFORMIX Generic Г SQLBase Г SYBASE Tarori'-DerktopDBMS..............АссенУешоп * с Е«р*с Рой 3 <-£]„« CdBASEIV ГЕ-аАж Defa* Access Datatype Defa* Non-KeyNul Optan ~ |fext(18) 3 Г NULL Рис. 2.3.1. Диалог Target Server 171
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite При смене СУБД ERwin предлагает автоматически преобразовать тип данных каждой колонки на доступный для новой СУБД. Правила соответ- ствия типов могут быть заданы предварительно (см. 2.4.1). Для автоматиче- ского преобразования следует в ответ на запрос нажать Yes. iCompulei Associates FRwin : J Would you like to convert dalnlypei* Iroin ORACI Г to Access9 1 his Is NOT unduablr I' Yes~| № | Cancel | л, P Convert Qomain Datatypes Рис. 2.3.2. Предупреждение при конвертировании типов данных 2.3.3. Таблицы, колонки и представления (view) Для внесения новой таблицы в модель на физическом уровне служит кнопка §! на палитре инструментов. Связи между таблицами создаются так же, как и на логическом уровне. Щелкнув правой кнопкой мыши по таблице и выбрав во всплывающем меню пункты Table Properties или Columns, мож- но вызвать редакторы для задания свойств таблиц и колонок. ERwin автоматически создает имена таблиц и колонок на основе имен соответствующих сущностей и атрибутов, учитывая максимальную длину имени и другие синтаксические ограничения, накладываемые СУБД. При генерации имени таблицы или колонки по умолчанию все пробелы автома- тически преобразуются в символы подчеркивания, а длина имени обрезает- ся до максимальной длины, допустимой для выбранной СУБД. Все измене- ния, сделанные в редакторах Tables или Columns, не отражаются на именах сущностей и атрибутов, поскольку информация на логическом и физиче- ском уровнях в ERwin хранится отдельно. Редактор Tables позволяет задать свойства любой таблицы модели, в том числе имя таблицы, синонимы, правила валидации, процедуры и т. д. Пере- ключиться на другую таблицу можно при помощи раскрывающегося списка выбора в верхней части диалога (рис. 2.3.3). 172
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Рис. 2.3.3. Диалог Tables Окно Name служит для задания имени текущей таблицы. Окно Owner позволяет внести имя владельца таблицы, отличное от имени пользователя, производящего генерацию схемы базы данных. Окно выбора Physical Only служит для создания объектов только на физическом уровне. Если выбрана опция Generate, при генерации схемы базы данных будет выполняться ко- манда CREATE TABLE. Кнопка DB Sync служит для немедленной синхро- низации модели с системным каталогом базы данных. Диалог Tables содержит следующие закладки: Dimensional. Доступна только на уровне моделирования хранилищ дан- ных (Dimensional Modeling) и будет рассмотрена ниже. Comment. Внесение комментария к таблице. Volumetries. Служит для оценки размера базы данных. Physical Props. Позволяет задать параметры таблицы (табл. 2.3.1). Partitions. Служит для задания значений разделения. Доступна только для Oracle 8.x и 9.x. UDP. Задание свойств, определяемых пользователем. Validation. Задание правил валидации. 173
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite History. Содержит историю создания и редактирования таблицы. Synonym. Задание синонимов таблицы (если сервер таковые поддерживает). Таблица 2.3.1. Некоторые параметры таблицы (для ORACLE) Параметр Назначение TABLESPACE Имя табличного пространства, в котором будет создана таблица PCTFREE Задает относительный (в процентах) размер пространства, которое нужно оставить свободным для обновлений и вставок в каждом блоке данных PCTUSED Задает относительный (в процентах) размер пространства, по которому СУБД определяет, что блок в сегменте мож- но снова занести в список свободных (рекомендуется ос- тавлять зазор между значениями параметров PCTFREE и PCTUSED не менее 20 %, например PCTFREE = 20, PCTUSED=50) CACHE Флаг использования кеша PCTINCREASE Фактор относительного увеличения последующих экстен- тов таблицы (рекомендуется значение 0 или 1) INITIAL Размер начального экстента, выделенного для таблицы NEXT Размер следующего экстента, выделенного для таблицы MINEXTENT Количество начальных экстентов, выделенных для табли- цы (рекомендуется значение 1) MAXEXTENT Максимальное количество экстентов, выделенных для таблицы (СУБД использует это значение для формирова- ния сообщения, что объект преодолел предельный выде- ленный для него размер) FREELISTS Количество списков свободного пространства (рекомен- дуется значение 1) PARALLEL Степень параллелизма при выполнении команды созда- ния таблицы Для задания свойств колонок, отличных от значения по умолчанию, слу- жит редактор Columns (рис. 2.3.4). Чтобы вызвать его, нужно щелкнуть пра- вой кнопкой мыши по таблице и выбрать во всплывающем меню пункт Columns. 174
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 По умолчанию ERwin присваивает режимы нулевых значений всем не- ключевым колонкам, исходя из значений по умолчанию, устанавливаемых в редакторе Target Server. Для колонок первичного ключа и альтернативных ключей устанавливается режим NOT NULL. Режим NOT NULL не присваи- вается автоматически инверсионным входам (Inversion Entry). Columns О S SB General | ORACLE | Comment | UDP | ! ДД Фамилед Имя Отчество Датадюждения Гилсотрудника Номер_сотрудника Номердэтдела Г Physical Orfc. ! чсЬЬиЬ Blob floats .08 S№ | , '• .. .p. OK | -Cancel, | Рис. 2.3.4. Диалог Columns Внешне диалог Columns напоминает диалог Attributes (см. рис. 2.2.6). В правой части диалога находятся закладки: General. Позволяет поставить в соответствие колонке определенный до- мен, создать колонку только на физическом уровне и включить ее в состав первичного ключа. Закладка, соответствующая выбранной СУБД (на рис. 2.3.5 - ORAC- LE). Имя закладки устанавливается автоматически соответствующей вы- бранной СУБД. Позволяет задать тип данных, опцию NULL, правила вали- дации и значение по умолчанию. Правила валидации и значение по умолча- нию должны быть описаны и именованы предварительно соответственно в диалогах Validation Rules и Default/Initial Values. Для вызова этих диало- гов служат кнопки ial справа от соответствующих раскрывающихся спи- сков. Для СУБД Access, AS/400, PROGRESS и Teradata создаются дополни- тельные закладки для задания свойств. 175
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Gegeul ORACLE | СокмШ { LDP | > I > ORACLE Datatype INTEGER NUMBER!) NHMRFAM NJ Opton- C NflT NULL ₽ HULL XAtfwIdName BETWEEN 18 AND 75 *пзВ1. Рис. 2.3.5. Закладка ORACLE (соответствует выбранной СУБД) диалога Columns Comment. Служит для внесения комментария к каждой колонке. UDP. Задание свойств, определяемых пользователем. Data Source. Доступна только при моделировании хранилищ данных (см. ниже). Index. Служит для включения колонки в состав индексов. History. Содержит историю создания и изменения свойств атрибута. В левой части диалога содержится упорядоченный список колонок таб- лицы. Кнопки IsSl предназначены для перемещения колонки в списке на позицию вверх и вниз. Кнопки New, Rename и Delete служат соответст- венно для создания, переименования и удаления колонки. При помощи кнопки Reset можно переустановить свойства колонки, заданные вручную, на значения по умолчанию. Кнопка DB Sync позволяет запустить процесс синхронизации модели с системным каталогом базы данных. Представления (view), или, как их иногда называют, временные или про- изводные таблицы, представляют собой объекты базы данных, данные в ко- торых не хранятся постоянно, как в таблице, а формируются динамически при обращении к представлению. Представление не может существовать само по себе, а определяется только в терминах одной или нескольких таб- лиц. Применение представлений позволяет разработчику баз данных обес- печить каждому пользователю или группе пользователей свой взгляд на данные, что решает проблемы простоты использования и безопасности данных. ERwin имеет специальные инструменты для создания и редактиро- вания представлений. Палитра инструментов на физическом уровне (см. табл. 2.1.3) содержит кнопки внесения представлений и установления связей между таблицами и представлениями. Для внесения представления 176
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 нужно щелкнуть по кнопке в палитре инструментов, затем по свобод- ному месту диаграммы. По умолчанию представление получает номер V_n, где п — уникальный порядковый номер представления. Для установления связи нужно щелкнуть по кнопке д [ затем по родительской таблице и, на- конец, по представлению (рис. 2.3.6). Связи с представлениями и прямоугольни- ки представлений показываются на диаграмме пунктирными линиями. CUSTOMER Custom erlD CustomerName Customer Address Age Category Country Region City ____ [ CustomerName! CUSTOMER.CustomerName CustomerAddress: CUSTOMER. CustomerAddress । City: CUSTOMER.City ; OrderAmount: ORDER.OrderAmount ; OrderDate: ORDER.OrderDate OrderShipDate ORDER.OrderShipDate ORDER_________ Custom er ID (FK) OrderlD OrderAmount OrderDate OrderShip Date .....О V.43_ ; oty" customer, city Customercount <Count(’)> Рис. 2.3.6. Создание представления Для редактирования представления служит диалог Views (рис. 2.3.7). Для его вызова следует щелкнуть правой кнопкой мыши по представлению и выбрать в меню пункт Database View Properties. Рис. 2.3.7. Диалог Views 177
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Раскрывающийся список View позволяет выбрать для редактирования любое представление модели. Окно Name служит для редактирования име- ни, a Owner - владельца представления. Диалог Views имеет следующие закладки: Select (рис. 2.3.7). Имеет два списка: в правом отображаются колонки представления, в левом - колонки, доступные для включения в представле- ние. Кнопка New Expression позволяет задать выражение в качестве выход- ного столбца. Например, для представления V_16 на рис. 2.3.6 в качестве колонок созданы City и выражение с именем "Количество клиен- товвгороде", которое представляет собой агрегативную функцию, под- считывающую количество строк, Count(*). По умолчанию при создании связи ERwin включает в представление все колонки родительских таблиц. From. Позволяет выбрать родительские таблицы представления. По умолчанию включаются таблицы, с которыми связано представление. Каждой таблице можно задать синоним (поле Alias), который будет исполь- зоваться при создании SQL-команды создания представления. Where. Закладка содержит 3 поля - Where, Group By и Having. На основе этой информации ERwin генерирует SQL-команду создания представления, причем на основе содержания этих полей генерируются предложения SQL- запроса. Для представления V 43 (рис. 2.3.6 и 2.3.8) в поле Where содержат- ся значения в поле Country-Россия', в поле Group By-City, Having- Count(*)>2. В результате представление будет содержать информацию о количестве клиентов в российских городах, при условии, что количество клиентов в этих городах больше двух. Select I йот Where | SQL | Comment | UDP | gavma ||СоипЦя]> J Г WITH Рис. 2.3.8. Вкладка Where диалога Views 178
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 SQL. Закладка содержит поле, в котором отображается SQL-запрос соз- дания представления и окно выбора User-Defined SQL. По умолчанию оп- ция User-Defined SQL выключена, и SQL-запрос генерируется автоматиче- ски на основе информации, занесенной в закладки Select, From и Where. За- прос можно задать вручную, включив эту опцию, но в этом случае список полей и связи представления на диаграмме отображаться не будут. Для представления V 42 (см. рис. 2.3.6) SQL-запрос будет выглядеть так: "CREATE VIEW V_42 (CustomerName, CustomerAddress, City, OrderAmount, OrderDate, OrderShipDate) AS SELECT DISTINCT CUSTOMER.CustomerName, CUSTOMER.CustomerAddress, CUSTOMER.City, ORDER.OrderAmount, ORDER.OrderDate, ORDER.OrderShipDate FROM CUSTOMER, ORDER", а для V_43 - так: "CREATE VIEW V_43 (City, Customercount) AS SELECT CUSTOMER.City, Count(*) FROM CUSTOMER WHERE Country='Россия' GROUP BY City HAVING Count(*)>2" В закладке Comment можно внести комментарий для представления. UDP позволяет связать с представлением свойства, определяемые поль- зователем. Для редактирования свойств колонок представления служит редактор View Columns (рис. 2.3.9). Для его вызова следует щелкнуть правой кнопкой мыши по представлению и выбрать в меню пункт Database View Columns. View Columns <delatA> — Blob Картинка -О Datelime —Number BZJ jeej| Ir'*'-1 11 * I □ CuslomeilU. CUSTOMERCustomeiiD El Name: tUSTOMER.Name_____________ □ Category: CUSTOMER. Categoiy □ Age: CUSTOMER Age El CustomerlD: ORDER.CustomerlD □ OrderlD: ORDER.OrderlO Суррогатный_ключ UMS fieaet | OB Sire | |~ 0K~ | Caned [ I’uc. 2.J.U. Дио-Юг View Columns 179
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Редактор содержит следующие закладки: General. Позволяет ассоциировать колонку с доменом. По умолчанию колонка представления принадлежит тому же домену, что и колонка роди- тельской таблицы. Select. Так же как в диалоге Views (закладка Select, кнопка New Expression), здесь можно создать выражение (в том числе включающее агре- гативные функции) для колонки. AS/400 или Access. Используются для задания специфических свойств колонок представлений в AS/400 или Access. Comment содержит комментарий для каждой колонки. UDP позволяет связать с колонкой свойства, определяемые пользователем. Data Source. Позволяет связать источник данных с колонкой при проек- тировании хранилищ данных. 2.3.4. Правила валидации и значения по умолчанию ERwin поддерживает правила валидации для колонок, а также значение, присваиваемое колонкам по умолчанию. Правило валидации задает список допустимых значений для конкретной колонки и/или правила проверки до- пустимых значений. Значение по умолчанию - значение, которое нужно ввести в колонку, если никакое другое значение не задано явным образом во время ввода данных. С каждой колонкой или доменом можно связать значение по умолчанию (если выбранная СУБД поддерживает домены). Если щелкнуть по кнопке 18, расположенной справа от раскрывающего- ся списка Valid (см. рис. 2.3.5), появляется диалог Validation Rules (рис. 2.3.10), который служит для задания правил валидации. Редактор содержит следующие закладки: General. Закладка позволяет выбрать тип правила (кнопки выбора в верхней части закладки). Тип Min/Max означает, что значение колонки бу- дет проверяться на вхождение в заданный диапазон. В случае выбора типа Valid Value List задается список допустимых значений. Тип User-Defined позволяет задать вручную фрагмент SQL-выражения, соответствующий правилу валидации, который будет использоваться при генерации схемы ба- зы данных. Если выбран тип Min/Max, то закладке General можно задать максимальное и минимальное значение колонки. Например, в таблице CUSTOMER значение, вводимое в колонку Age, должно быть больше 18, но меньше 75. Для описания этого правила можно создать правило валида- ции с именем "Проверка возраста", которое содержит выражение Age BETWEEN 18 AND 75. 180
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Закладка, соответствующая выбранной СУБД (на рис. 2.3.11 - ORACLE). На этой закладке отображается фрагмент SQL-выражения, соот- ветствующий правилу валидации, например Age BETWEEN 18 AND 75. Ис- пользование этого правила валидации гарантирует, что диапазон вводимых значений будет от 18 до 75. СУБД выдаст сообщение об ошибке, если вво- димый возраст находится вне границ заданного диапазона. Comment. Служит для внесения комментария к правилу валидации. UDP. Задание свойств, определяемых пользователем. В верхней части диалога Validation Rules содержится список правил ва- лидации. Чтобы ввести новое значение в список допустимых значений, нужно щелкнуть по кнопке New и ввести наименование правила. Наимено- вание правила валидации (как и наименование значения по умолчанию) мо- жет быть разным на логическом и физическом уровне. Чтобы переимено- вать имеющееся правило, нужно щелкнуть по кнопке Rename. Для удаления значения служит кнопка Delete. По умолчанию ERwin создает выражение - команду языка СУБД, ис- пользуя значения, связанные с правилом валидации, и разделяя значения за- пятыми, например: С, D, М. В некоторых случаях правила синтаксиса СУБД требуют, чтобы каждое значение в команде заключалось в одинарные ка- 181
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite вычки: ‘С’, ‘D’, ‘М’. Чтобы автоматически заключить каждое значение в одинарные кавычки, нужно включить опцию Quote. беги* al ORACLE | Comment | UDP | ftWft'tlw&tf«М •’ ' Ajfrt'toSetvet Рис. 2.3.11. Закладка ORACLE диалога Validation Rules Редактор Default/Initial Values (рис. 2.3.12) позволяет создать значение, которое автоматически, по умолчанию, присваивается колонке. Для вызова редактора служит кнопка -В справа от раскрывающегося списка Default диалога Columns (см. рис. 2.3.5). Например, дате приема сотрудника может быть присвоено значение по умолчанию "сегодняшнее число", т. е. автома- тически задается, что все новые сотрудники зачисляются в день ввода ин- формации о них в базу данных. Default/Initial Values О Рис. 2.3.12. Диалог Default/Initial Values 182
Гпаеа 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Для создания нового значения по умолчанию следует щелкнуть по кноп- ке New, ввести имя значения по умолчанию в диалоге New Default Value и щелкнуть по кнопке ОК. В окне Default Name показывается список всех имен значений по умолчанию. Для удаления и переименования значения служат соответственно кнопки Delete и Rename. После создания правила валидации и значения по умолчанию их можно присвоить одной или нескольким колонкам или доменам. 2.3.5. Индексы В таблице базы данных данные обычно хранятся в том же порядке, в ко- тором их ввели в таблицу. Многие реляционные СУБД имеют страничную организацию, при которой физически таблица может храниться фрагмен- тарно в разных областях диска, причем строки таблицы располагаются на страницах неупорядоченно. Хотя такой способ хранения и позволяет бы- стро вводить новые данные, но для того, чтобы найти нужную строку, при- дется просмотреть всю таблицу. В промышленных системах каждая таблица может содержать миллионы строк, поэтому простой перебор ведет к катаст- рофическому падению производительности ИС. Чтобы решить проблему поиска данных, СУБД использует особый объ- ект, называемый индексом. Он подобен содержанию книги, которое указы- вает на все номера страниц, посвященных конкретной теме. Индекс содер- жит отсортированную по колонке или нескольким колонкам информацию и указывает на строки, в которых хранится конкретное значение колонки. Например, если необходимо найти клиента по имени (рис. 2.3.13), мож- но создать индекс по колонке CustomerName таблицы CUSTOMER. В ин- дексе имена клиентов будут отсортированы в алфавитном порядке. Для имени индекс будет содержать ссылку, указывающую, в каком месте табли- цы хранится эта строка. CUSTOMER Рис. 2.3.13. Таблицы CUSTOMER и ORDER Для поиска клиента серверу направляется запрос с критерием поиска' {CustomerName - ’Иванов"). При выполнении запроса СУБД просматривает 183
С. 5. Маклаков. Создание информационных систем с AllFusion Modeling Suite индекс, вместо того чтобы просматривать по порядку все строки таблицы CUSTOMER. Поскольку значения в индексе хранятся в определенном по- рядке, просматривать нужно гораздо меньший объем данных, что значи- тельно уменьшает время выполнения запроса. Индекс можно создать для всех колонок таблицы, по которым часто производится поиск. При генерации схемы физической базы данных ERwin автоматически созда- ет отдельный индекс на основе первичного ключа каждой таблицы, а также на основе всех альтернативных ключей, внешних ключей и инверсионных входов, поскольку эти колонки наиболее часто используются для поиска данных. Мож- но отказаться от генерации индексов по умолчанию и для повышения произво- дительности создать собственные индексы. Администратор СУБД должен ана- лизировать наиболее часто выполняемые запросы и создавать индексы с различ- ными колонками и порядком сортировки для увеличения эффективности поиска при работе конкретных приложений. При создании индекса на основе ключа ERwin вводит в его состав все колонки ключа. Например, если в сущности CUSTOMER (см. рис. 2.1.3) три атрибута назначены как АК1, ERwin автоматически создает индекс и вклю- чает в него все три атрибута (CustomerName, Region, City). Следовательно, на уровне логической модели можно неявно создать индекс, включая ко- лонки в состав альтернативных ключей и инверсионных входов. ERwin автоматически генерирует имя индекса, созданного на основе ключа по принципу X + имя ключа + имя таблицы (физическое имя табли- цы, а не логическое имя сущности!), где имя РК-для первичного ключа, IFn - для внешнего, АКп - для альтернативного, 1Еп - для инверсионного входа. Например, по умолчанию при создании таблицы CUSTOMER (см. рис. 2.3.13) будут созданы индексы ХРК CUSTOMER (первичный ключ, в состав войдет колонка CustomerlD), ХАК1 CUSTOMER (альтерна- тивный ключ, колонки CustomerName, Region, City), XIE1CUSTOMER (ин- версионный вход 1, колонка Region) и XIE2CUSTOMER (инверсионный вход 2, колонка Customer Address). Изменить характеристики существующего индекса или создать новый можно в редакторе Indexes (рис. 2.3.14). Для его вызова следует щелкнуть правой кнопкой мыши по таблице и выбрать во всплывающем меню пункт Indexes. В редакторе Indexes можно изменить имя индекса, изменить его опреде- ление так, чтобы он принимал уникальные или дублирующиеся значения, или изменить порядок сортировки данных. 184
Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Рис. 2.3.14. Диалог Indexes ERwin создает индексы, которые могут содержать либо повторяющиеся, ли- бо только уникальные значения. При создании нового уникального индекса (кнопка New, диалог New Index, рис. 2.3.15) следует включить опцию Unique, для создания индекса с неповторяющимися значениями опцию следует выклю- чить. Если на основе колонки создается уникальный индекс, то при попытке вставить запись с неуникальным (повторяющимся) значением сервер выдаст ошибку и значение не будет вставлено. Например, уникальный индекс в таблице CUSTOMER, построенный на колонке CustomerName, предотвратит от внесе- ния двух строк с информацией об одном и том же клиенте. Иногда необходимо разрешить повторяющиеся значения, если ожидает- ся, что индексированная колонка будет с большой вероятностью содержать повторяющуюся информацию. Например, на основе инверсионных входов, которые используются для доступа к нескольким строкам и поэтому могут содержать повторяющиеся значения, генерируется неуникальный индекс. Неуникальный индекс генерируется также на основе внешнего ключа. На основе первичного и альтернативных ключей генерируются уникальные индексы. И наоборот, при создании нового индекса автоматически создается альтер- нативный ключ для уникального и инверсионный вход для неуникального ин- декса, а также соответствующее ключу имя индекса. Имя сгенерированного ин- декса в дальнейшем при необходимости можно изменить вручную. 185
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 2.3.15. Диалог New Index По умолчанию ERwin автоматически сохраняет значения в индексе в порядке возрастания (значения сортируются по алфавиту от А до Z, а числа от 0 до 9). Если нужно изменить порядок сортировки для колонки и выбранная СУБД поддерживает режим сортировки по убыванию, следует выбрать колонку и включить опцию DESC (см. рис. 2.3.14). Редактор Index Editor содержит следующие закладки: Members - позволяет включить колонки в состав индекса; Comment - содержит комментарий для каждого индекса; UDP - позволяет связать с индексом свойства, определяемые пользователем; закладка, соответствующая выбранной СУБД (на рис. 2.3.16- ORACLE), задает свойства индекса, специфические для выбранной СУБД. Рис. 2.3.16. Закладка ORACLE диалога Indexes При создании индекса для СУБД ORACLE, SYBASE или SQL Server можно выбирать, в каком объекте физической памяти (создание и редакти- рование объектов физической памяти рассмотрено в 2.3.6) будет храниться индекс, и изменять параметры хранения. В табл. 2.3.2 представлены некото- рые параметры индексов, доступные в закладке, соответствующей выбран- ной СУБД диалога Indexes для ORACLE, SYBASE и SQL Server. 186
Гпаеа 2. Создание модели данных с помощью AllFusion ERwin Data Modeler4.1 Таблица 2.3.2. Некоторые параметры индексов Параметр Назначение ORACLE PCTFREE Задает размер пространства, которое нужно оставить сво- бодным для обновлений и вставок в каждом блоке данных PARALLEL Степень параллелизма при выполнении команды созда- ния таблицы PCTINCREASE Фактор относительного увеличения последующих экстен- тов индекса INITIAL Размер начального экстента, выделенного для индекса NEXT Размер следующего экстента, выделенного для индекса MINEXTENT Количество начальных экстентов, выделенных д ля индекса MAXEXTENT Максимальное количество экстентов, выделенных для индекса FREELISTS Количество списков свободного пространства SQL Server И SYBASE IGNORE_DUP_KEY Разрешает или запрещает использование повторяющихся значений ключа в таблице с уникальным индексом (кла- стеризованным или некластеризованным). Если опция ус- тановлена, то повторяющиеся значения не допускаются; если нет, то повторяющиеся значения разрешаются SORTEDJDATA (для SYBASE и SQL Server 6.5) Ускоряет создание индекса, если данные расположены физически по порядку. Если опция установлена, то значе- ния индекса не сортируются; если нет, то значения индек- са сортируются DUP ROW Разрешает или запрещает использование повторяющихся значений ключа в таблице с кластеризованным индексом. Если опция установлена, то повторяющиеся значения не допускаются; если нет, то повторяющиеся значения разрешаются FILL.FACTOR Задает, сколько сведений можно добавить к странице дан- ных при создании индекса Некоторые СУБД поддерживают кластеризованные и кластеризованные хешированные индексы. ERwin позволяет создать такие индексы для DB2/MVS, DB2/390, HiRDB, INFORMIX, MS Access, MS SQL Server, SYBASE и SQLBase. Для того чтобы сделать индекс кластеризованным, нужно включить опцию CLUSTER в закладке, соответствующей выбранной СУБД. Кластеризованный 187
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite индекс - это специальная техника индексирования, при которой данные в таб- лице физически располагаются в индексированном порядке. Использование кла- стеризованного индекса значительно ускоряет выполнение запросов по индек- сированной колонке. Например, можно создать кластеризованный индекс в таб- лице CUSTOMER по колонке City. Информация о всех клиентах из одного города будет физически располагаться на диске рядом, что значительно повысит скорость выполнения запроса, который делает выборку всех клиентов из какого- то определенного города. Поскольку данные физически расположены в индексированном порядке, для каждой таблицы может существовать только один кластеризованный ин- декс. Если СУБД поддерживает использование кластеризованного индекса, то ERwin автоматически создает индекс первичного ключа кластеризованным. При создании кластеризованного индекса не по первичному ключу ERwin авто- матически снимает кластеризацию с индекса по первичному ключу. Для СУБД SQLBase ERwin позволяет создать кластеризованный хешированный индекс (clustered hashed index). Хеширование - альтернативный способ хранения дан- ных в заранее заданном порядке с целью ускорения поиска, но физически это более сложно, чем простое сохранение строк в алфавитном порядке или в соот- ветствии с числовыми значениями. Кластеризованный или хешированный индекс значительно ускоряет опе- рации поиска и сортировки, но добавление и удаление строк замедляется из- за необходимости реорганизации данных для соответствия индексу. 2.3.6. -3адание объектов физической памяти ERwin поддерживает объекты физической памяти для нескольких СУБД (табл. 2.3.3). Все объекты создаются в модели при обратном проектирова- нии, однако объекты INFORMIX, SQL Server и SYBASE не создаются при прямом проектировании. Таблица 2.3.3. Поддержка ERwin объектов физической памяти СУБД Обратное проектирование (Reverse Engineer) Прямое проектирование (Forward Engineer) DB2/MVS и DB2/390 STOGROUP, DATABASE, TABLESPACE STOGROUP, DATABASE, TABLESPACE DB2/UDB TABLESPACE, NODEGROUP, BUFFERPOOL TABLESPACE, NODEGROUP, BUFFERPOOL 188
Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 СУБД Обратное проектирование (Reverse Engineer) Прямое проектирование (Forward Engineer) DB2/CS TABLESPACE TABLESPACE ORACLE TABLESPACE, ROLLBACK SEGMENT, DATABASE, SEQUENCE TABLESPACE, ROLLBACK SEGMENT, DATABASE, SEQUENCE RED BRICK SEGMENT SEGMENT TERADATA DATABASE DATABASE WATCOM/SQL ANYWHERE DBSPACE DBSPACE INFORMIX - DBSPACE, BLOBSOACE OPENINGRES LOCATION LOCATION SYBASE SEGMENT - SQL Server FILEGROUP Для создания и редактирования объектов физической памяти в ERwin используется набор диалогов, каждый из которых соответствует объекту физической памяти. Диалоги вызываются из пункта главного меню Data- base, подпункты меню соответствуют имени объекта и зависят от выбран- ной СУБД (так, для ORACLE это пункты Tablespase, Rollback Segment, Da- tabase и Sequence). В качестве примера рассмотрим создание и редактиро- вание объектов физической памяти для ORACLE. TABLESPACE (табличное пространство). Табличное пространство представляет собой именованную логическую структуру, которая использу- ется для группировки данных с однотипным методом доступа. Табличное пространство состоит из одного или более файлов данных, которые можно использовать для хранения таблиц, индексов или сегментов отката. Таблич- ное пространство полезно применять, например, чтобы выделить объекты базы данных, которые используются одним приложением или специфиче- ской группой приложений. Диалог ORACLE Tablespace Editor (рис. 2.3.17) имеет 3 закладки: General. Закладка позволяет задать свойства табличного пространства. Comment. Служит для внесения комментария к табличному пространству. UDP. Задание свойств, определяемых пользователем. 189
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite ORACLE TdLlespdce Ed«h.H Puc. 2.3.17. Диалог ORACLE Tablespace Editor Список Tablespace в верхней части диалога показывает все табличные пространства в базе данных. Кнопки New, Rename и Delete служат соответ- ственно для создания, переименования и удаления табличных пространств. При нажатии кнопки New возникает диалог New TABLESPACE, в котором следует задать имя табличного пространства. Свойства табличного про- странства задаются в диалоге ORACLE Physical Object Editor. Данные в таб- личных пространствах доступны, когда области находятся в оперативном режиме (online), и недоступны, когда они находятся в автономном режиме (offline). Окно выбора OFFLINE показывает состояние доступности таблич- ного пространства. Для перевода табличного пространства в offline следует включить опцию, в online - выключить. В закладке General окно выбора TEMPORARY позволяет указать, что табличное пространство будет применяться только для хранения временных объектов, например сегментов, используемых при выполнении запросов с сортировкой (предложение ORDER BY). Поля INITIAL и NEXT позволяют задать размер начального и следую- щего экстента в байтах. Параметр PCTINCREASE указывает, на сколько процентов этот экстент может быть больше предыдущего по размеру. MINEXTENTS - минимальное число экстентов, которое автоматически распределяется при создании таблицы, индекса или кластера табличного пространства. 190
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 MAXEXTENTS - максимальное число экстентов, которое можно связать с таблицей, индексом или кластером табличного пространства. ROLLBACK SEGMENT (сегмент отката). Сегмент отката - это заре- зервированный объем пространства, который используется для хранения "снимка" данных в том виде, в котором они находились до выполнения транзакции. Если транзакция не завершилась, все изменения данных отка- тываются и образ данных, хранящийся в сегменте отката, восстанавливает- ся. Для создания или изменения сегмента отката у пользователя должна быть привилегия CREATE ROLLBACK SEGMENT. Рис. 2.3.18. Диалог ORACLE Rollback Segment Editor Диалог ORACLE Rollback Segment Editor (рис. 2.3.18) имеет 3 закладки: General. Позволяет задать свойства сегмента отката. Comment. Служит для внесения комментария к сегменту отката. UDP. Задание свойств, определяемых пользователем. Список Rollback Segment в верхней части диалога показывает все дос- тупные для редактирования сегменты отката. Кнопки New, Rename и Delete служат соответственно для создания, переименования и удаления сегментов отката. При нажатии кнопки New возникает диалог New Rollback Segment, в котором задается имя сегмента отката. 191
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В закладке General раскрывающийся список TABLESPACE позволяет связать сегмент отката с табличным пространством. Окно выбора PUBLIC позволяет указать, каким будет сегмент отката- частным или общедоступным. Включенная опция PUBLIC делает сегмент отката общедоступным. Если не используется параллельная обработка, обычно создаются общедоступные сегменты отката. Поля INITIAL и NEXT задают размер начального и следующего экстента в байтах. OPTIMAL - оптимальное число управляемых экстентов для каждого сегмента отката. После успешного завершения транзакции Oracle автомати- чески восстанавливает размер сегментов отката до значения, указанного в поле OPTIMAL. MINEXTENTS - минимальное число экстентов, которое можно связать с сегментом отката. MAXEXTENTS - максимальное число экстентов, которое можно связать с сегментом отката. DATABASE (база данных). База данных - это зарезервированный объ- ем памяти для одного или более устройств хранения, которые используются для хранения данных и определений объектов базы данных, например таб- лиц и индексов. Для создания базы данных у пользователя должна быть привилегия DBA. 192
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Диалог ORACLE Database Editor (рис. 2.3.19) имеет 3 закладки: General. Позволяет задать свойства базы данных. Comment. Служит для внесения комментария к базе данных. UDP. Задание свойств, определяемых пользователем. Список DATABASE в верхней части диалога показывает все базы дан- ных сервера. Кнопки New, Rename и Delete служат соответственно для соз- дания, переименования и удаления базы данных. При нажатии кнопки New возникает диалог New DATABASE, в котором следует задать имя базы данных. Список LOGFILE в закладке General показывает имена всех log-файлов (журналов регистрации) в базе данных. Справа от списка находятся поля для ввода параметров log-файлов: MAXLOGFILES - максимальное число log-файлов, которые можно соз- дать для базы данных (допустимый диапазон значений 2-56). MAXLOGHIST - объем памяти, который должен быть зарезервирован в управляющем файле для имен групп архивных log-файлов транзакций. MAXLOGMEMS - максимальное число членов в каждой log-группе. Список DATAFILE показывает имена всех файлов данных в базе данных. Поле MAXDATAFILES позволяет задать максимальное количество файлов. • Поле выбора CONTROL FILE REUSE служит для задания статуса по- вторного использования управляющего файла. Включенная опция позволяет Oracle переписать информацию в управляющих файлах, определенных в па- раметре INIT.ORA CONTROL FILES. Выключенная опция запрещает Orac- le повторно использовать управляющие файлы. ARCHIVE LOG - состояние автоматического архивирования. Разрешает автоматическое архивирование информации log, используемой при восста- новлении. MAXINSTANCES - максимальное число экземпляров, для которых од- новременно может быть установлена база данных (допустимый диапазон значений 1-255). CHARACTER SET - набор символов, используемый базой данных. Все данные в колонках типов CHAR, VARCHAR2, LONG хранятся в заданном наборе символов. После того как база данных создана, набор символов не может быть изменен. Кнопка DB Sync позволяет сгенерировать объекты физической памяти в системном каталоге СУБД сразу после их создания в диалоге ORACLE Database Editor. 193
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite SEQUENCE (последовательность). Последовательность - объект, ко- торый может быть использован для генерации уникальных числовых значе- ний. Чаще всего счетчик используют для генерации значений суррогатного ключа. Диалог ORACLE Sequence Editor (рис. 2.3.20) имеет 3 закладки: General. Позволяет задать свойства последовательности. Comment. Служит для внесения комментария к последовательности. UDP. Задание свойств, определяемых пользователем. Рис. 2.3.20. Диалог ORACLE Sequence Editor Список Sequence показывает имена всех последовательностей. Ниже списка, в закладке General, находятся поля для ввода параметров последова- тельности: Starting Value - начальное значение счетчика (может быть больше еди- ницы в случае отрицательного значения параметра Increment By). Increment By - приращение счетчика (может быть отрицательным). Cache Size - размер кеша. Max Value - максимальное значение счетчика. Min Value - минимальное значение счетчика (может быть задано в слу- чае отрицательного значения параметра Increment By). 194
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 2.3.7. Триггеры и хранимые процедуры Триггеры и хранимые процедуры - это именованные блоки кода SQL, которые заранее откомпилированы и хранятся на сервере для того, чтобы быстро производить выполнение запросов, валидацию данных и выполнять другие часто вызываемые функции. Хранение и выполнение кода на сервере позволяет создавать код только один раз, а не в каждом приложении, работающем с базой данных, что эко- номит время при написании и сопровождении программ. При этом гаранти- руется, что целостность данных и бизнес-правила поддерживаются незави- симо от того, какое именно клиентское приложение обращается к данным. Триггеры и хранимые процедуры не требуется пересыпать по сети из кли- ентского приложения, что значительно снижает сетевой трафик. Хранимой процедурой называется именованный набор предварительно откомпилированных команд SQL, который может вызываться из клиентско- го приложения или из другой хранимой процедуры. Триггером называется процедура, которая выполняется автоматически как реакция на событие. Таким событием может быть вставка, изменение или удаление строки в существующей таблице. Триггер сообщает СУБД, какие действия нужно совершить при выполнении команд SQL INSERT, UPDATE или DELETE для обеспечения дополнительной функционально- сти, выполняемой на сервере. Триггер ссылочной целостности - особый вид триггера, используемый для поддержания целостности между двумя таблицами, которые связаны между собой. Если строка в одной таблице вставляется, изменяется или уда- ляется, то триггер ссылочной целостности (RI-триггер) сообщает СУБД, что нужно делать с теми строками в других таблицах, у которых значение внеш- него ключа совпадает со значением первичного ключа вставленной (изме- ненной, удаленной) строки. По умолчанию ERwin генерирует триггеры, дублирующие декларативную ссылочную целостность. Например, если удаляется клиент из таблицы CUSTOMER (см. рис. 2.3.13), то в зависимости от установленных правил ссылочной целостности могут быть сгенерирова- ны RI-триггеры, которые будут воздействовать на соответствующие уда- ляемому клиенту заказы из таблицы ORDER. Команда DELETE может быть обработана следующими способами: • Проверяется наличие заказов у удаляемого клиента и, если заказы есть, запрещается удаление клиента из таблицы CUSTOMER. Правило ссы- 195
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite лочной целостности, запрещающее вставку, изменение или удаление строки, называется RESTRICT. • Клиент удаляется из таблицы CUSTOMER, и все соответствующие ему строки в таблице ORDER также автоматически удаляются. Правило ссы- лочной целостности, передающее изменение от одной таблицы к другой, называется CASCADE. При этом все заказы удаленного клиента теряют- ся. Если эту информацию необходимо сохранить, можно переопределить триггер ссылочной целостности так, чтобы записать, например, эту ин- формацию в архивную таблицу. • Клиент удаляется, но номеру клиента в таблице заказов автоматически присваивается нулевое значение. Правило ссылочной целостности, из- меняющее текущее значение данных на нулевое, называется SET NULL. Для генерации триггеров ERwin использует механизм шаблонов - специальных скриптов, использующих макрокоманды. При генерации кода триггера вместо макрокоманд подставляются имена таблиц, колонок, пере- менные и другие фрагменты кода, соответствующие синтаксису выбранной СУБД. Шаблоны триггеров ссылочной целостности, генерируемые ERwin, по умолчанию можно изменять, кроме того, можно переопределить как триггеры для конкретной связи, так и шаблоны во всей модели в целом. Шаблоны триггеров ссылочной целостности связываются с сущностями в зависимости от типа связи и роли сущности в этой связи. Тип связи и роль сущности определяют, какое правило ссылочной целостности будет по умолчанию дополнено шаблоном триггера. Связи могут быть: идентифицирующими; неидентифицирующими: 1) nulls allowed, 2) no nulls; связями подтипа (иерархия категорий). Сущность в связи может быть родительская (Parent) или дочерняя (Child). Если сущность является родительской в данной связи, то ERwin присваивает ей шаблон триггера для родительской сущности. Если сущ- ность является дочерней в данной связи, то ERwin присваивает ей шаблон триггера для дочерней сущности. Код триггера, который генерируется шаб- лоном триггера для родительской сущности, указывает СУБД, что нужно делать при вставке, изменении или удалении строки в родительской таблице связи. Код триггера, который генерируется шаблоном триггера для дочер- ней сущности, указывает СУБД, что нужно делать при вставке, изменении или удалении строки в дочерней таблице связи. Ниже приведен текст шаблона триггера, соответствующего правилу ссы- лочной целостности ON PARENT DELETE RESTRICT. 196
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 /* ERwin Builtin %Datetime */ /* %Parent %VerbPhrase %Child ON PARENT DELETE RESTRICT */ select count(*) into numrows from %Child where /* %%JoinFKPK(%Child,:%%Old," = and”) */ %JoinFKPK(%Child,:%01d,“ = and"); if (numrows > 0) then ra i s e_app1icat i on_error( -20001, 'Cannot DELETE %Parent because %Child exists.' ) ; end i f; При генерации схемы СУБД для Oracle 9.x будет сгенерирован триггер: /* ERwin Builtin Fri Nov 08 11:34:50 2002 */ /* CUSTOMER R/8 ORDER ON PARENT DELETE RESTRICT */ select count(*) into numrows from ORDER where /* ORDER.CustomerlD = .-old.CustomerlD */ ORDER.CustomerlD = :old.CustomerlD; if (numrows > 0) then raise_application_error( -20001, 'Cannot DELETE CUSTOMER because ORDER exists.' ) ; end i f; ERwin по умолчанию использует для генерации кода триггера на языке SQL встроенные шаблоны триггеров ссылочной целостности, которые ав- томатически присваиваются каждой связи. Если встроенные шаблоны не удовлетворяют бизнес-правилам, можно изменить коды триггера, гене- рируемые на основе встроенных шаблонов. ERwin позволяет изменить шаб- лон и указать, что при генерации модифицированная версия должна заме- нить встроенный шаблон. ERwin позволяет переопределить триггер, устанавливаемый по умолча- нию, тремя способами: 1. Переопределение типа ссылочной целостности. Для каждой комбина- ции правил ссылочной целостности (например, Parent-Delete RESTRICT) ERwin позволяет создать переопределенный шаблон и использовать этот шаблон вместо шаблона, применяемого по умолчанию, для всех связей диаграммы, которым был присвоен этот тип правила ссылочной целост- ности. Используя в качестве основы встроенный код шаблона, можно 197
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite изменить шаблоны ссылочной целостности во всей модели, изменяя ко- ды триггера только в одном месте. Вновь определяемые шаблоны будут использоваться вместо стандартных шаблонов, если при генерации схе- мы включена опция RI Type Override. 2. Переопределение шаблона триггера для связи. Можно переопреде- лить шаблон, задаваемый по умолчанию, для какой-то конкретной связи. Для этого используется диалог Relationship Template Editor, в котором можно описать шаблоны Relationship Override, применяемые вместо стандартных шаблонов (а также вместо шаблонов RI Type Override, если они есть). Шаблоны Relationship Override будут использоваться вместо стандартных шаблонов, если при генерации схемы включена опция Relationship Override. 3. Переопределение шаблона триггера для сущности. ERwin позволяет создавать собственные триггеры Entity Override для любой сущности в модели. Шаблоны Entity Override используются вместо стандартных шаблонов, а также вместо шаблонов RI Type Override и Relationship Override, если при генерации схемы включена опция Entity Override. ERwin имеет специальные редакторы, облегчающие создание и редакти- рование триггеров и процедур. Рассмотрим простейший пример, в котором переопределим шаблон триггера для сущности. Предположим, что бизнес-правила требуют, чтобы при любом изменении имени клиента (колонка CustomerName таблицы CUSTOMER, рис. 2.3.21) в таблице SECURITY создавалась строка, в кото- рой бы фиксировалось прежнее значение имени, новое значение, дата изме- нения и имя пользователя, произведшего изменение. В качестве СУБД вы- бран ORACLE 9.x. CUSTOMER__________ Customer®: NUMBER CustomerName: VARCHAR2(20) CustomerAddress: VARCHAR2(20) Age: INTEGER Category VARCHAR2(20) Country CHAR(IB) Region: CHARflB) City CHARflB) SECURITY____________ UpdateDate: CHAR(18) OldName: CHAR(18) NewName: CHAR(18) UserUpdate: CHAR(18) Puc. 2.3.21. Таблицы CUSTOMER и SECURITY Для редактирования триггера следует щелкнуть правой кнопкой мыши по таблице и выбрать во всплывающем меню пункт Triggers. Появляется диалог Triggers (рис. 2.3.22.), в нижней части которого имеется 4 закладки: 198
Гпава 2. Создание мЪдели данных с помощью AllFusion ERwin Data Modeler 4.1 General (рис. 2.3.22). Содержимое закладки зависит от выбранной СУБД и позволяет задать основные параметры, которые будут учитываться при генерации триггера. Code (рис. 2.3.23). Отображает код шаблона триггера. Код шаблона мож- но редактировать. Expanded. Отображает код триггера (только для чтения). Comment. Служит для внесения комментария к триггеру. UDP. Задание свойств, определяемых пользователем. Triggers ________ _____________ _______________________ ЕЗ ’ 1 abler |CUSTOMER 3 — I 1*4®» । ь few- I " в«м*.I Petete | Gamal | СиВ- | Expanded | Comment | UDP | Рис. 2.3.22. Диалог Triggers Раскрывающийся список Table позволяет выбрать таблицу, на которой будет создан триггер. На рис. 2.3.22 это таблица CUSTOMER. Кнопки New, Rename и Delete служат соответственно для создания, пе- реименования и удаления триггера. В списке Trigger отображается имя триггера (SecurWrite). Если имя не задано, ERwin генерирует триггеры ссылочной целостности по умолчанию. Кнопки New, Rename и Delete служат соответственно для внесения ново- го триггера в список, переименования и удаления триггера из списка. 199
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Группа окон выбора Trigger On в закладке General позволяет задать тип триггера-при каком событии триггер будет запускаться - при удалении Delete, вставке Insert или обновлении Update-строки таблицы. При выборе любого события ERwin автоматически формирует текст шаблона соответст- вующего триггера ссылочной целостности. Опции Before и After позволяют задать время выполнения триггера-до или после SQL-команд INSERT, UPDATE или DELETE. В примере на рис. 2.3.22 создается триггер, выпол- няемый до команды обновления UPDATE для колонки CustomerName таб- лицы CUSTOMER. Опции Table и Row показывают, каким образом будет выполняться триг- гер. При генерации в текст триггера будут соответственно включены пред- ложения FOR EACH TABLE или FOR EACH ROW. Old - ссылка на прежнее значение при обновлении поля, New - ссыпка на новое значение при обновлении таблицы. В тексте шаблона триггера ис- пользуется макрос %RefClause, при генерации текста триггера по шаблону включается предложение REFERENCES. В примере для нового значения установлено имя newl, для старого - oldl. В списке в нижней части диалога показываются имена родительской таблицы (Parent), дочерней таблицы (Child), имя связи (Verb Phrase) и пра- вило ссылочной целостности (Integrity Rule) в случае, если редактируется триггер ссылочной целостности. №lcl |а1 create trigger ITriggerHaaie tfire %Actions(" or ") on VableHane UefClause tScope /* ERwin Builtin Ibatetine */ /• default body for tTriggerHane »/ begin Insert into Security (OldHane.HewHane, UserUpdate, UpdateDate) ualues (:old1.CustonerHane,:new1.CustonerHane, User, Sysdate); IU I Puc. 2.3.23. Закладка Code диалога Triggers В окне Template Code можно ввести код шаблона триггера. Код шаблона триггера, соответствующий бизнес-правилу рассматриваемого примера (соз- дан на основе шаблона триггера ссылочной целостности), приведен ниже. 200
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 create trigger %TriggerName %Fire %Actions(" or ") on %TableName %RefClause %Scope /* ERwin Builtin %Datetime */ /* default body for %TriggerName */ begin Insert into Security (OldName,NewName, UserUpdate, UpdateDate) values (:oldl.CustomerName,:newl.CustomerName, User, Sysdate); end; / В окне закладки Expanded отображается код триггера (на языке выбран- ного сервера, в примере - Oracle 9.x), автоматически генерируемого по шаб- лону: create trigger SecurWrite BEFORE UPDATE OF CustomerName on CUSTOMER REFERENCING OLD AS oldl NEW AS newl for each row /* ERwin Builtin Fri Nov 08 16:36:33 2002 */ /* default body for SecurWrite */ begin Insert into Security (OldName,NewName, UserUpdate, UpdateDate) values (:oldl.CustomerName,:newl.CustomerName, User, Sysdate); end; / Ниже приведен текст SQL-команд и результат их выполнения (выполне- ны при помощи Oracle SQL*Plus), иллюстрирующих работу триггера. SQL> insert into CUSTOMER (CustomerlD, CustomerName) values (20,'Ivanov'); 1 row created. SQL> update CUSTOMER set CustomerName='Petrov' where CustomerID=20; 1 row updated. SQL> select * from SECURITY; UPDATEDATE OLDNAME NEWNAME USERUPDATE 27-JAN-02 Ivanov Petrov SCOTT Любое изменение имени клиента в таблице CUSTOMER фиксируется в таблице SECURITY, причем регистрируется прежнее значение имени, новое значение, дата изменения и имя пользователя, производившего изменения. 201
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Кнопка Toolbox диалога Triggers вызывает редактор Macro Toolbox, ко- торый значительно облегчает создание текста шаблона триггера (рис. 2.3.24). Macro Toolbox Macros Description > • Entity Macro ,» Relationship Macro ^Cardinality £Child JiChildArtsO Basic Syntax. XCMdFKQ < • Press to Hide Panel “TWVfrnffT——' Base Syntax Example SChWKfl Expansion master, number, mo«,ie_CQpy_numbe томй_оару_п«пЬ«г INTEGER gtMtf.cOTdfan: MWCHAR& SChildFKDecfl ^ChMNK() ^ChMNKDeclO ^ChildPKO ^ChildPKDeclO JJChildParamDeclO '•Entitpld ^EntityName %FocEachFKAtt[) Ful Syntax &№FK(<separalor>/function} ,<pt Ful Syntax Example SJChddFKT' or updatngfcChid) ST updabng(MOtfEJ3ENTAC_RECOR updatnglMOVlE.RENTAL.RECOR Myjit-.rmw.g'XfiR ____ __ htntng_owlomtr INTEGER nwrtt.nrAit INTEGER fl) moUe серу nvmber INTEGER fl) rtnWjearJ_date DATE dee.date Q^TE papn«nt_*nMnL ОЕСММДО payment taw \M₽CHAR(I) oAidw.chase DECMMLQq Puc. 2.3.24. Диалог Macro Toolbox Macro Toolbox содержит 3 секции: слева расположены списки, содержа- щие макросы для таблиц, связей, колонок, ограничений и макросы общего назначения. Все макросы начинаются с символа %. Список макросов приве- ден в приложении. Если выделить макрос в каком-либо списке, в окне Description отобразится синтаксис макроса и пример его использования для связи между таблицами, показанными в правой секции редактора. Таблицы и связи, показываемые в правой части редактора, взяты из примера, содер- жащегося в файле EMOVIES.ER1, который находится в директории Sam- ples/Standard. Для включения макроса в текст шаблона достаточно дважды щелкнуть левой клавишей мыши по соответствующему макросу в одном из списков. Макрос включается в текст шаблона в закладке Code диалога Triggers. Для изменения шаблона триггера ссылочной целостности на уровне мо- дели (переопределение типа ссылочной целостности) служит редактор Trigger Templates Editor, который вызывается из меню Database/RI Triggers/ Global Trigger Templates (рис. 2.3.25). 202
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 ORACLE Triggci Template: PARENT INSERT SET DEF/ P6RFNT INAFRT AFT HI III P&RFNT IMAFRT AFT Nl III BJtwTnflflf Temoiate PARENTDELETE SET DEFAULT mJ PARENT DELETE SET NULL PARENT INSERT CASCADE R^eriftd Integrity Type AAeched Tfiggof TenipMe; PARENT DELETESETDEFAULT PARENT DELETE SET NULL PARENT INSERT CASCADE ‘1PARENT INSERT CASCADE ___Ц— PARENT INSERT SET DEFAULT P6RFMT IMAFRT AFT Ml III ТотДОеНаниг |DARtNT INSERT RESTRICT < /• ERwin Builtin toatetine •/ /• Warent WerbPhrase Whlld ОН РАВЕН select count(*) into nunrows from (Chi Puc. 2.3.25. Диалог Trigger Templates Для изменения шаблона нужно выделить тип триггера в списке, который находится в верхней части редактора, после чего надо щелкнуть по кнопке Detach ->, чтобы отсоединить тот шаблон, который связан с выбранным триггером. В списке Built-In Template или User Override нужно выбрать шаблон, который следует связать с выбранным триггером. Выделив имя шаблона, нужно щелкнуть по кнопке Attach над списком. ERwin свяжет вы- бранный шаблон с триггером и покажет его текст в окне Template Code. Для отмены связывания следует щелкнуть по кнопке <- Rebind. Для создания нового собственного шаблона надо задать его имя в окне Template Name и с помощью Macro Toolbox (кнопка Macro Toolbox») создать текст шаб- лона триггера. Кнопка Add добавит новый шаблон в список User Override. Для переопределения шаблона триггера на уровне связи следует пра- вой кнопкой мыши щелкнуть по связи и во всплывающем меню выбрать пункт Relationship Templates. Появляется диалог Relationship Templates (рис. 2.3.26). Создание шаблона триггера и связывание его с определен- ным правилом ссылочной целостности аналогично созданию и связыва- нию шаблона в диалоге Trigger Template Editor. Для создания и редактирования хранимых процедур ERwin располагает специальными редакторами, аналогичными редакторам, используемым для создания триггеров. В отличие от триггера хранимая процедура не выполня- ется в ответ на какое-то событие, а вызывается из другой программы, кото- рая передает на сервер имя процедуры. Хранимая процедура более гибка, чем триггер, поскольку может вызывать другие хранимые процедуры. Ей можно передавать параметры, и она может возвращать параметры, зна- чения и сообщения. 203
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 2.3.26. Диалог Relationship Templates ERwin не имеет встроенных шаблонов хранимых процедур, которые можно было бы использовать как основу при создании новой хранимой процедуры. Для создания или редактирования хранимой процедуры следует щелкнуть правой кнопкой мыши по таблице и выбрать в меню пункт Stored Procedures. Появляется диалог Stored Procedures (рис. 2.3.27). 204
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Диалог Stored Procedures имеет 4 закладки: General. Содержимое закладки позволяет задать основные параметры, которые будут учитываться при генерации процедуры. Code (см. рис. 2.3.27). Отображает код шаблона процедуры. Код шабло- на можно редактировать. Expanded. Отображает код процедуры (только для чтения). Comment. Служит для внесения комментария к процедуре. UDP. Задание свойств, определяемых пользователем. Список Stored Procedure содержит имена процедур, связанных с редак- тируемой таблицей. Кнопки New, Rename и Delete служат соответственно для создания, переименования и удаления процедуры. В закладке Code можно просмотреть и отредактировать код шаблона процедуры, включающий SQL-команды и макросы ERwin. Здесь можно не- посредственно вводить выражения SQL (при условии соблюдения синтак- сиса выбранной СУБД). Для внесения в текст шаблона макросов можно вос- пользоваться редактором Macro Toolbox (кнопка Toolbox). На рис. 2.3.27 показан код шаблона процедуры с одним возвращаемым параметром, содержащим количество строк текущей таблицы (синтаксис Oracle). Код процедуры показывается в закладке Expanded. ERwin позволяет связывать хранимые процедуры не только с отдельны- ми таблицами, но и со всей моделью. Например, это может быть хранимая процедура, которая выполняет административную функцию. Для создания хранимой процедуры на уровне схемы или для связывания хранимой процедуры с моделью нужно выбрать пункт меню Database/Stored Procedures/Model-LeveL Вызывается диалог Stored Procedures. В отличие от диалога, показанного на рис. 2.3.27, он дополнительно имеет список вы- бора Display, который позволяет установить фильтр для процедур, отобра- жаемых в окне Stored Procedure, и кнопку Sort, устанавливающую сортиров- ку процедур в этом списке. Скрипты "до и после генерации". Скриптами "до и после генерации" (pre & post scripts schema-generation) называются скрипты SQL, которые ERwin выполняет до или сразу же после генерации таблиц или схемы в це- лом (pre & post schema-generation). Например, при прямом проектировании базы данных из модели ERwin может выполнить скрипт "до генерации схе- мы", который удаляет старую базу данных и создает новую до того, как на- чать генерацию таблиц и индексов. Скрипты уровня таблиц могут быть созданы в диалоге Pre & Post Scripts. Скрипты уровня схемы связаны с моделью так же, как и хранимые процеду- ры. Скрипты уровня схемы можно создать в диалоге Pre & Post Scripts (меню 205
С. 6. Маклаков. Создание информационных систем с AllFusion Modeling Suite Database/Pre & Post Scripts/Model-Level) (рис. 2.3.28). Создание скриптов анало- гично созданию хранимых процедур. При создании текста скрипта так же, как и при создании текста храни- мых процедур, может быть использован Macro Toolbox. 2.3.8. Проектирование хранилищ данных Проблемы эффективного использования данных. Корпоративные системы управления предприятием, созданные на основе реляционных СУБД, как правило, эффективно решают задачи учета, контроля и хранения данных. Однако в силу своей специфики реляционная структура не позволя- ет решать задачи анализа имеющейся информации с требуемой производи- тельностью. Особенно остро эта проблема стоит в гетерогенных информа- ционных средах, когда в центральном офисе организации и в филиалах экс- плуатируются СУБД различных производителей (см. рис. 2.3.29 а). Филиалы - сп MSSQLSewer д I dbf Твкст Центр • ORACLE Рис. 2.3.29 а. Гетерогенная информационная система 206
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Такая ситуация часто возникает либо в результате слияния компаний, когда компания превращается в филиал более крупной компании, но при этом нерентабельно перестраивать исторически сложившуюся информаци- онную инфраструктуру, либо вследствие неудовлетворительного управле- ния, когда филиалы не придерживаются корпоративного стандарта и вне- дряют собственные ИС. Одной из основных задач, решаемых в корпоратив- ных ИС, является предоставление аналитической информации, необходи- мой для принятия решений. Для поддержки принятия решения необходим не один заранее подготовленный отчет, а серия разнообразных отчетов, при- чем менеджер не всегда представляет, какой именно отчет понадобится ему в следующие полчаса. Например, при анализе продаж по компании оказыва- ется, что в феврале текущего года произошел спад. Чтобы выяснить причи- ны спада, необходимо просмотреть отчет о продажах в регионах. Отчет о продажах в регионах показывает, что спад произошел, видимо, по причи- не неудовлетворительной работы одного из филиалов, следовательно, необ- ходим отчет о работе данного филиала и т. д. и т. п. Организовать выполне- ние таких отчетов в гетерогенной среде крайне сложно. Для эффективного анализа данных в этом случае необходимо объединять в одном запросе дан- ные из разнородных источников. В настоящее время существуют мониторы транзакций и генераторы отчетов (например, Crystal Reports), обладающие такой функциональностью, однако производительность таких систем не мо- жет быть высокой. В процессе анализа данные, необходимые для принятия решений, должны поступать к потребителю в режиме реального времени. Если же данные собираются из разных источников, то, во-первых, отчет го- товится недопустимо медленно, во-вторых, другие приложения, работаю- щие с реляционными СУБД во время выполнения отчета, скорее всего бу- дут заметно замедляться. Решением проблемы производительности является создание специализи- рованной базы данных - хранилища данных (Data Warehouse), предназна- ченной исключительно для обработки и анализа информации (рис. 2.3.29 б). Филиалы' Центр - ORACLE Хранилище Рис. 2.3.29 б. Пример гетерогенной информационной системы, включающей хранилище данных 207
С. В. Маклаков, Создание информационных систем с AllFusion Modeling Suite Хранилища данных позволяют разгрузить оперативные базы данных и тем самым дают возможность пользователям более эффективно и быстро извлекать необходимую информацию. Они могут быть включены в общую корпоративную сеть, по которой в хранилище по заранее определенному расписанию, как правило в период наименьшей загрузки сети и серверов, копируется накопленная за день или за неделю информация. Поскольку данные меняются редко, то к хранилищу данных не предъявляются жесткие требования, которые обычно предъявляются к обычным базам данных, - от- сутствие аномалий при выполнении операций обновления или удаления и избыточности хранения информации. По этой причине может сложиться неверное представление, что проектировать хранилище проще, чем базу данных, предназначенные для оперативной обработки информации. На са- мом деле проектирование хранилища данных является весьма сложной за- дачей. • Менеджеру, принимающему решения, необходимы самые разнообраз- ные отчеты, причем всякий раз новые. Не всегда возможно выделить специалиста, который бы непрерывно готовил все новые и новые отче- ты. Лучший выход - научить создавать отчеты самого менеджера. Суще- ствуют разнообразные инструменты (например, упомянутый выше Crys- tal Reports), интерфейс которых достаточно прост для того, чтобы не- профессионалы в области информационных технологий могли создавать отчеты. Однако в этом случае конечный пользователь непосредственно обращается к структуре данных. Следовательно, структура данных хра- нилища должна быть понятна пользователям. • Данные в хранилище должны регулярно пополняться. Требуется тща- тельно документировать правила пополнения и резервного копирования данных. Должны быть выделены статические данные, которые модифи- цируются по расписанию: ежедневно, еженедельно, ежеквартально. • Поскольку отчет будет создавать конечный пользователь, должны быть упрощены требования к запросам с целью исключения тех запросов, ко- торые могли бы требовать множественных утверждений SQL в традици- онных реляционных СУБД. • Обработка запросов к хранилищу должна быть проведена с высокой производительностью, желательно в реальном масштабе времени, поэтому должна быть обеспечена поддержка сложных запросов SQL, которые требуют последовательной обработки тысяч или миллионов записей. 208
Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Очевидно, что для решения этой задачи необходимо использовать спе- циальные инструментальные средства. ERwin является незаменимым инст- рументом для проектирования хранилищ данных по нескольким причинам. Хотя реализовать хранилище данных можно на любом сервере базы дан- ных, существуют специализированные серверы, специально предназначен- ные для поддержки хранилищ данных. ERwin поддерживает генерацию схемы базы данных для двух таких серверов - Teradata и Red Brick. Как было указано выше, при проектировании хранилища необходимо создавать подробные спецификации для всех источников данных, в том числе самых разных типов. ERwin поддерживает на физическом уровне прямое и обратное проектирование объектов более чем для 21 типа баз дан- ных, поэтому является идеальным CASE-средством для работы с гетероген- ными ИС. Для эффективного проектирования хранилищ данных ERwin использует размерную (Dimensional) модель. Dimensional - методология проектирова- ния, специально предназначенная для разработки хранилищ данных. Рассмотрим основные особенности техники моделирования хранилищ данных с помощью ERwin. Поддержка методологии Dimensional. Нормализация данных в реляци- онных СУБД приводит к созданию множества связанных между собой таб- лиц. В результате выполнение сложных запросов неизбежно приводит к объединению многих таблиц, что существенно увеличивает время откли- ка. Проектирование хранилища данных подразумевает создание денормали- зованной структуры данных (допускается избыточность данных и возмож- ность возникновения аномалий при манипулировании данными), ориенти- рованной в первую очередь на высокую производительность при выпол- нении аналитических запросов. Нормализация делает модель хранилища слишком сложной, затрудняет ее понимание и ухудшает эффективность вы- полнения запроса. Для эффективного проектирования хранилищ данных ERwin использует размерную модель (Dimensional). Dimensional - методология проектирова- ния, специально предназначенная для разработки хранилищ данных. Моде- лирование Dimensional сходно с моделированием связей и сущностей для реляционной модели, но отличается целями. Реляционная модель акценти- руется на целостности и эффективности ввода данных. Размерная модель (Dimensional) ориентирована в первую очередь на выполнение сложных за- просов к базе данных. 209
С. В, Маклаков. Создание информационных систем с AllFusion Modeling Suite В размерном моделировании принят стандарт модели, называемый схе- мой "звезда" (star schema), которая обеспечивает высокую скорость вы- полнения запроса посредством денормализации и разделения данных. Не- возможно создать универсальную денормализованную структуру данных, обеспечивающую высокую производительность при выполнении любого аналитического запроса. Поэтому схема "звезда" строится так, чтобы обес- печить наивысшую производительность при выполнении одного самого важного запроса либо группы похожих запросов. Схема "звезда" обычно содержит одну большую таблицу, называемую таблицей факта (fad table), помещенную в центр, и окружающие ее мень- шие таблицы, называемые таблицами размерности (dimensional table), со- единенные с таблицей факта в виде звезды радиальными связями. В этих связях таблицы размерности являются родительскими, таблица факта - до- черней. Схема "звезда" может иметь также консольные таблицы (outrigger table), присоединенные к таблице размерности. Консольные таблицы явля- ются родительскими, таблицы размерности - дочерними. В размерной модели иконка показывает роль таблицы в схеме "звезда": СЗ - таблица факта (fact table)-, - таблица размерности (dimensional table)-, - консольная таблица (outrigger table). Прежде чем создать базу данных со схемой типа звезды, необходимо проанализировать бизнес-правила предметной области с целью выяснения центрального вопроса, ответ на который наиболее важен. Все прочие вопро- сы должны быть объединены вокруг этого основного вопроса, и моделиро- вание должно начинаться с этого основного вопроса. Данные, необходимые для ответа на этот вопрос, должны быть помещены в центральную таблицу модели - таблицу факта. Например, если необходимо создавать отчеты об общей сумме дохода от продаж за определенный период как по типу то- вара, так и по продавцам, следует разрабатывать модель так, чтобы каждая запись в таблице факта представляла сумму продаж, осуществленных тем или иным продавцом, с указанием доходов по каждому покупателю и типов проданных товаров (рис. 2.3.30). В примере таблица факта содержит сум- марные данные о продажах (SALE), а таблицы размерности содержат дан- ные о заказчике и заказах (CUSTOMER), продуктах (PRODUCT), продавцах (SALESPEOPLE) и периодах времени (TIME). 210
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Таблица факта является центральной таблицей в схеме "звезда". Она мо- жет состоять из миллионов строк и содержать суммирующие или фактиче- ские данные, которые могут помочь ответить на требуемые вопросы. Она соединяет данные, которые хранились бы во многих таблицах традицион- ных реляционных баз данных. Таблица факта и таблицы размерности связа- ны идентифицирующими связями, при этом первичные ключи таблицы раз- мерности мигрируют в таблицу факта в качестве внешних ключей. В раз- мерной модели направления связей явно не показываются - они определя- ются типом таблиц. Первичный ключ таблицы факта целиком состоит из первичных ключей всех таблиц размерности. В примере (таблица факта SALE) первичный ключ составлен из четырех внешних ключей: Customer- lD, SalespeoplelD, TimelD и ProductID. Таблицы размерности имеют меньшее количество строк, чем таблицы факта, и содержат описательную информацию. Эти таблицы позволяют пользователю быстро переходить от таблицы факта к дополнительной ин- формации. ф CUSTOMER CustomerlD RegionlD CustomerFirstName CustomerLastName CustomerCity Order© OrderAmount фPRODUCT SalespeoplelD RegionlD SalespeopleFirstName ф SALESPEOPLE CustomerlD SalespeoplelD TimelD ProductID □sale ProductID ProductName ProductTypelD ProductTypeName фПМЕ SalespeopleLastName TimelD Periodic day month year Puc. 2.3.30. Схема "звезда" В примере на рис. 2.3.30 таблица SALE -таблица факта; CUSTOMER, TIME, SALESPEOPLE и PRODUCT - таблицы размерности, которые позволя- ют быстро извлекать информацию о том, кто и когда сделал покупку, какой продавец и на какую сумму продал и какие именно товары были проданы. ERwin поддерживает использование вторичных таблиц размерности, на- зываемых консольными таблицами (outrigger), хотя они не требуются для схемы "звезда". Консольные таблицы могут быть связаны только с таблица- ми размерности, причем консольная таблица в этой связи родительская, а таблица размерности - дочерняя. Связь может быть идентифицирующей 211
С. В. Маклаков. Создание информационных счетам с AllFusion Modeling Suite или неидентифицирующей. Консольная таблица не может быть связана с таблицей факта. Она используется для нормализации данных в таблицах размерности. Нормализация данных полезна при моделировании реляцион- ной структуры, но она уменьшает эффективность выполнения запросов к хранилищу данных. В размерной модели главной целью является обеспе- чение высокой эффективности просмотра данных и выполнения сложных запросов. Схема "снежинка" (так называется размерная модель, в которой кон- сольные таблицы используются для нормализации каждой таблицы размер- ности, рис. 2.3.31) обычно препятствует эффективности, потому что требует объединения многих таблиц для построения результирующего набора дан- ных, что увеличивает время выполнения запроса. Поэтому при проектиро- вании не следует злоупотреблять созданием множества консольных таблиц. ф CUSTOMER Рис. 2.3.31. Схема "снежинка" Если денормализованная таблица размерности получается слишком большой, при этом к части колонок запросы делаются чаще, чем к осталь- ным, целесообразно для повышения эффективности разбить одиночную таблицу размерности на две отдельные таблицы размерности. Две получен- ные таблицы можно связать неидентифицирующей связью. В примере на рис. 2.3.30 таблица размерности PRODUCT содержит как информацию о конкретном товаре, так и информацию о типах товаров. Если запросы, связанные с типами товаров, делаются чаще, чем по отдельным товарам, можно создать новую таблицу PRODUCT_TYPE и перенести в нее инфор- мацию о типах (рис. 2.3.32). В этом случае за счет того, что колонки, к ко- торым наиболее часто обращаются запросы, переносятся в новую таблицу, уменьшается время выполнения запроса. 212
Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 фPRODUCT Рис. 2.3.32. Нормализация таблиц размерности ERwin поддерживает методологию размерного моделирования благодаря использованию специальной нотации для физической модели - Dimensional. Для переключения на нотацию Dimensional на физическом уровне (на логическом уровне эта нотация недоступна) необходимо перейти в за- кладку Notation (рис. 2.3.33) диалога Model Properties (меню Model/Model Properties) и выбрать в группе Physical Notation опцию DM (Dimensional Modeling). После переключения на нотацию Dimensional на диаграмме по- казываются иконки размерности для таблиц. Рис. 2.3.33. Выбор нотации DM Затем необходимо установить опцию отображения связей диагональны- ми линиями (Orthogonal). (Устанавливается в группе Relationship lines за- кладки General диалога Stored Displays, меню Format/Stored Display Setting). 213
С. В. Маклакое. Создание информационных систем с AllFusion Modeling Suite Для внесения новой таблицы в модель можно воспользоваться кнопкой Ш в палитре инструментов. В диалоге описания свойств таблицы Tables появляется новая закладка - Dimensional, в которой задаются специфиче- ские свойства таблицы в размерной модели (рис. 2.96). Перечислим их. Роль таблицы в схеме (Dimensional Modeling Role). По умолчанию ERwin автоматически определяет роль таблицы на основании созданных связей (таблица факта, размерности или консольная). Таблица без связей определяется как таблица размерности, таблица факта не может быть роди- тельской в связи, таблица размерности может быть родительской по отно- шению к таблице факта, консольная таблица может быть родительской по отношению к таблице размерности. Для задания роли таблицы вручную необходимо выключить опцию Calculate Automatically. Тип таблицы размерности (Dimension Туре). Каждая таблица размер- ности может содержать неизменяемые либо редко изменяемые данные (Slowly Changing). Поскольку хранилище данных имеет ненормализован- ную структуру, редактирование таблиц размерности может привести к кол- лизиям. Для того чтобы избежать противоречий при хранении данных, ERwin позволяет задать тип редко изменяемых данных, который отличается способом редактирования данных: 214
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 1. Перезаписывание старых данных новыми. При этом старые данные теряются. 2. Создание новой записи в таблице размерности с новыми данными и временем изменения. В этом случае сохраняются старые данные и можно проследить историю изменения редактируемых данных, но необходимо генерировать ключ для ссылки на старые данные. 3. Запись новых данных в дополнительном поле той же самой записи. В этом случае сохраняется первоначальное и последнее новое значение. Все промежуточные данные теряются. Правила хранения данных (Data Warehouse Rules). Для каждой таб- лицы можно задать 6 типов правил манипулирования данными: обновление (Refresh), дополнение (Append), резервное копирование (Backup), восста- новление (Recovery), архивирование (Archiving) и очистка (Purge). Для ус- тановки правил следует в закладке Data Movement диалога Tables (рис. 2.3.35) выбрать имя правила из соответствующего списка выбора. ГЕЫйиГО*- ₽-£««*>, р^. | | ок . | Cncet Рис. 2.3.35. Закладка Data Movement диалога Tables Каждое правило должно быть предварительно описано в диалоге Data Movement Rules (меню Model/Data Movement Rules) (рис. 2.3.36). 215
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 2.3.36. Диалог Data Movement Rules Список в верхней части диалога Data Movement Rules показывает все описанные правила. Для каждого правила должно быть задано имя, тип, оп- ределение (закладка Definition). Например, определение правила дополне- ния данных может включать частоту и время дополнения (ежедневно, в кон- це рабочего дня), продолжительность операции и т. д. Связать правила с оп- ределенной таблицей можно не только с помощью диалога Tables, но и не- посредственно из Data Movement Rules (закладка Attachment). Создание спецификаций для источников данных. При проектирова- нии хранилища данных важно определить источник данных (для каждой колонки), метод, которым исходные данные извлекаются, преобразуются и фильтруются, прежде чем они импортируются в хранилище данных. Хра- нилище данных может объединять информацию из текстовых файлов и многих баз данных, как реляционных, так и нереляционных, в единую систему поддержки принятия решений. 216
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Чтобы поддерживать регулярные обновления и проверки качества дан- ных, необходимо знать источник для каждой колонки в хранилище данных. Для документирования информации об источниках данных используется редактор DataWarehouse Sources (рис. 2.3.37). Рис. 2.3.37. Диалог Data Warehouse Sources Внести новый источник можно, щелкнув по кнопке слева от имени в списке источников. Источник данных может быть описан вручную в диа- логе Data Warehouse Sources либо импортирован. Для импорта источника следует щелкнуть по кнопке Impot. Появляется диалог Data Warehouse Sources - Set Options (рис. 2.3.38). В качестве источника при импорте могут быть использованы другие модели ERwin, хранящиеся в файле, SQL- скрипты, модели, хранящиеся в репозитории ModelMart, либо системные каталоги СУБД, на основе которых в результате обратного проектирования могут быть созданы модели ERwin. Каждому источнику может быть задано имя и определение. 217
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 2.3.38. Настройка импорта источника данных В закладку Data Source редактора Columns (рис. 2.3.39) можно внести информацию об использовании источников данных для каждой колонки в таблице. В поле Transform Comment вносится дополнительная информа- ция о переносе данных из источника в хранилище данных. Для выбора источника данных следует щелкнуть по кнопке__I в правой верхней части закладки Data Source. Появляется диалог Data Warehouse Source Selector (рис. 2.3.40), в окне Available Sources которого показываются все предварительно описанные источники. Для выбора источника следует выбрать в списке необходимую колонку и щелкнуть по кнопке Select. 218
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 ; Columns movie_kev movie.runber movie_title rentd_$tatus rental_date due_date ,-'/Movie Rental POSMOVIE_RENTAL_fiECOHD ГТГ Puc. 2.3.39. Диалог Column Editor Data Warehouse Source Selector ?-£) Central DB В BALANCES j-B CUSTOMERS &-B MARKETS fc-S PRODUCTS ЭЬВ PROMOTIONS (+:-B PURCHASES irG} Regional DB ф-В CUSTOMER ф-В EMPLOYEE —El movie_de$crption Central DB.CUSTOMERS.CUSTJD Regional DB. CUSTOMER. cu$tomer_number Puc. 2.3.40. Диалог Data Warehouse Source Selector 219
С. В. Макпакое. Создание информационных систем с AllFusion Modeling Suite Поддержка специализированных СУБД. Хотя хранилище данных можно создать, используя любую СУБД, существуют специализированные СУБД, позволяющие значительно увеличить производительность обработки данных при использовании схемы "звезда". ERwin поддерживает на физиче- ском уровне две такие СУБД - Red Brick и Teradata. При прямом и обратном проектировании поддерживаются специфические свойства как Red Brick, так и Teradata. Для Red Brick поддерживаются специфические свойства индексов (рис. 2.3.41): • уникальность (unique); • распределение по сегментам; • FILLFACTOR; • определение типа индекса BTREE (только для версии Red Brick 5.0 и выше), STAR или TARGET (только для версии Red Brick 4.0 и выше) с указанием размера домена. Рис. 2.3.41. Закладка Red Brick диалога Red Brick Indexes Редактор Red Brick Physical Object Editor (меню Server/Red Brick Physical Object) позволяет создавать сегменты (Segment) Red Brick и изменять их свойства: • имя сегмента; • имя файла сегмента, его максимальный размер, начальный размер (больше 16 кбайт) и размер расширения. Для каждой таблицы Red Brick можно указать сегменты для хранения данных и индекса первичного ключа, максимальное количество сегментов 220
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 (для версии 5) и максимальное количество строк в сегменте (для Red Brick версии 5). Для Teradata ERwin также поддерживает специфические объекты физи- ческой памяти. В диалоге Teradata Physical Object Editor (меню Server/Tera- data Physical Object) можно создать базы данных Teradata и определить их свойства: • имя владельца базы данных; • резервированный размер базы данных; • возможность создания дубликатов таблиц для аварийного восста- новления; • размер spool-файлов; • место для создания журнала (базы данных и таблицы) и его свойства; • описание-базы данных. В закладке Physical Props диалога Teradata Table Editor можно опреде- лить параметры аудирования и восстановления после сбоя: • имя таблицы, которая используется для ведения журнала; • опцию FALLBACK PROTECTION - создание одновременно основной и резервной копии таблицы; • размер пространства, резервируемый для редактируемых данных; • размер блоков данных. Закладка Teradata MACRO диалога Teradata Table Editor позволяет соз- дать шаблоны для хранимых процедур Teradata. 2.3.9. Вычисление размера базы данных ERwin позволяет рассчитать приблизительный размер базы данных в це- лом, а также таблиц, индексов и других объектов через определенный пери- од времени после начала эксплуатации ИС. Для расчета размеров физиче- ских объектов служит диалог Volumetries (рис. 2.3.42), который вызывается из меню Tools/Volumetrics. Редактор Volumetries имеет 3 закладки - Settings, Report и Parameters. Settings. Служит для задания основных параметров, на основе которых вычисляется размер базы данных. 221
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В группе Table Row Counts для выделенной в левом списке Table таб- лицы задается начальное количество строк (Initial), максимальное количест- во строк (Мах) и прирост количества строк в месяц (Grow By). Если пара- метры Мах и Grow By используются одновременно, рост размера таблицы прекращается по достижении максимального размера. Те же самые параметры можно задать для каждой таблицы в закладке Volumetries редактора Table Editor. Сразу после задания параметров Initial, Мах и Grow By в группе Sizing Estimates, расположенной в левом нижнем углу диалога, показывается средний размер строки, начальный размер таб- лицы и индексов. Таблица Column Properties позволяет задать свойства колонок таблицы. Имена колонок, их тип и размер (allocated) не редактируются. Можно изме- нять ширину поля Avg Width (для тех типов данных, для которых это до- пускается) и параметр Pct NULL (средний ожидаемый процент строк, в ко- торых текущее поле принимает значение NULL). ERwin автоматически оп- ределяет в зависимости от выбранной СУБД, какие поля таблицы Column Properties могут изменяться. Группа Include Indexes позволяет учесть или игнорировать индексы, создаваемые на внешних (FK, Foreign Key), первичных (РК, Primary Key), альтернативных (АК, Alternate Key) ключах или инверсионных входах (IE, Inverse Entry) при расчете размера базы данных. 222
Глава ^Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Группа Storage позволяет задать объект физической памяти, в котором будет храниться выбранная таблица. Если объект физической памяти не описан, его можно определить в редакторе объекта физической памяти (вызывается кнопкой - J). Report В ней отображаются результаты расчета размера базы данных (рис. 2.3.43). Группа Options позволяет выбрать тип объектов, по которым проводится расчет, Time - временной диапазон (начальное состояние или определенное время после начала эксплуатации). Settings Report j Parameters | , , : "'Г ' ! Report* у — J ! j J 1 ( г Database Objects . | Tit®- * < Г India! Proiecbans Months. [24 3 > , Ftyscat Object Tabieflndei CUSTOMER™ XPKCUSTOMER XAK1 CUSTOMER Mylndex XE1 CUSTOMER XE2CUSTOMER XE3CUSTOMER Total 105 К «default» 949 К «defeiut» 105 К '«default* 527K|«defauft> 105 К Wdefauft» 199 К «default» 6M SECURITY _ __ ___ i _____________53 M XPRSECURTTY ” T~' 18 M _ .. ............................ Log Sire ~ 36 M Grand Total 114 M RB1 «default» 5 end to Repat Browser I Puc. 2.3.43. Закладка Report диалога Volumetries Результирующий отчет можно направить в диалог генерации отчетов - Report Browser. Parameters. Служит для задания дополнительных параметров, исполь- зуемых для расчета размера базы данных: • TableFactor. Этот фактор показывает накладные расходы на хранение таблицы в базе данных. Например, значение TableFactor =2 увеличит размер таблиц вдвое. • IndexFactor показывает накладные расходы на хранение индекса в базе данных. Например, значение IndexFactor = 1 увеличит размер индекса с 1 до 1,5 Мбайт. • RowOverhead используется для дополнительного пересчета количества байт каждой строки. Например, если значение RowOverhead = 10, размер каждой строки таблицы будет увеличен на 10 байт. 223
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • BlobFactor и BlobBlockSize используются для пересчета Blob-колонок, хранящихся физически вне таблицы. • BytesPerChar используется для задания количества байт, необходимых для хранения одного символа строкового типа. Для ASCII-это 1, для других кодировок значение может быть больше 1, например для UNICODE - 2. • LogPercent используется для вычисления размеров log-файлов базы дан- ных. LogPercent = 100 увеличивает базу данных вдвое. 2.3.10. Прямое и обратное проектирование Процесс генерации схемы базы данных из модели данных называется прямым проектированием (Forward Engineering). При генерации схемы ERwin включает триггеры ссылочной целостности, хранимые процедуры, индексы, ограничения и другие возможности, доступные при определении таблиц в выбранной СУБД. Процесс генерации модели из схемы базы дан- ных называется обратным проектированием (Reverse Engineering). ERwin позволяет создать модель данных путем обратного проектирования имею- щейся базы данных. После того как модель создана, можно переключиться на другой сервер (модель будет конвертирована) и произвести прямое про- ектирование структуры базы данных для другой СУБД. Кроме режима пря- мого и обратного проектирования ERwin поддерживает синхронизацию ме- жду моделью и системным каталогом СУБД на протяжении всего жизнен- ного цикла создания ИС. Для генерации системного каталога базы данных следует выбрать пункт меню Tools/Forward Engineer/Schema Generation или нажать кнопку Я на панели инструментов. Появляется диалог Schema Generation (рис. 2.3.44). Диалог Schema Generation имеет 3 закладки: Options. Служит для задания опций генерации объектов базы данных - триг- геров, таблиц, представлений, колонок, индексов и т. д. Для задания опций гене- рации какого-либо объекта следует выбрать объект в левом списке закладки, по- сле чего включить соответствующую опцию в правом списке. Во вкладке Summary отображаются все опции, заданные во вкладке Options. Список опций в Summary можно редактировать так же, как и в Options. Comment. Позволяет внести комментарий для каждого набора опций. Каждый набор опций может быть именован (окно Option Set, кнопки New, Rename и Delete) и использован многократно. 224
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Кнопка Preview вызывает диалог Schema Generation Preview (рис. 2.3.45), в котором отображается SQL-скрипт, создаваемый ERwin для генерации системного каталога СУБД. Нажатие на кнопку Generate приведет к запуску процесса генерации схемы. ORAC.I F Schenid Getieidlion <Mam Subject Aiea> Puc. 2.3.44. Диалог Schema Generation CREATE TABLE CUSTOMER ( CustomerlD 18 AND 180), CustomerName CustomerAddress Age NUMBER МВТ NULL CHECK (CustomerlD BETWEEN NULL NULL 188) UARCHAR2(28) UARCHAR2(2O) INTEGER DEFAULT 18 NOT NULL (Age BETWEEN 18 AND CHECK AND Category 188), Country Region City UARCHAR2(20) CHECK DEFAULT 10 NULL (Category BETWEEN 18 CHAR(18) NULL CHAR(18) NULL CHAR(18) NULL I CREATE UNIQUE INDEX XPKCUSTOMER 8H CUSTOMER I CustomerlD Т-ЫВИ.Г2МЗ ASC Puc. 2.3.45. Диалог Schema Generation Preview 225
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Кнопка Print диалога Schema Generation предназначена для вывода на печать создаваемого ERwin SQL-скрипта. Кнопка Report сохраняет тот же скрипт в ERS- или SQL-текстовом фай- ле. Эти команды можно в дальнейшем редактировать любым текстовым ре- дактором и выполнять при помощи соответствующей утилиты сервера. Рис. 2.3.46. Диалог связи с базой данных Кнопка Generate запускает процесс генерации схемы. Возникает диалог связи с базой данных (рис. 2.3.46), устанавливается сеанс связи с сервером- базы данных, и начинает выполняться SQL-скрипт. При этом возникает диа- лог Generate Database Schema (рис. 2.3.47). Age INTEGER DEFAULT 18 NOT NULL CHECK (Age BETWEEN 1 BAND 1801 Category VARCHAR2(20) DEFAULT 18 NULL CHECK (Category BETWEEN IB AND 180). Country CHAR(18) NULL. Region CHAR(18)NULL City CHAR(18)NULL ORA-OD955: name is already used by an existing object Execution Failed! Puc. 2.3.47. Диалог Generate Database Schema По умолчанию в диалоге Generate Database Schema включена опция Stop If Failure. Это означает, что при первой же ошибке выполнение скрипта прекращается. Щелкнув по кнопке Continue, можно продолжить выполне- ние. Кнопка Abort прерывает выполнение. При выключенной опции Stop If Failure скрипт будет выполняться несмотря на встречающиеся ошибки. 226
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Для выполнения обратного проектирования следует выбрать пункт меню Tools/Reverse Engineer. Возникает диалог Reverse Engineer - Select Template (рис. 2.3.48), в кото- ром нужно выбрать шаблон диаграммы, затем диалог выбора СУБД и, на- конец, диалог задания опций обратного проектирования Reverse Engineer - Set Options (рис. 2.3.49). Rcvrrc Enqint-i Grlrcl Template E3 New Mods! Type Physical Logsat/Phyncal Одоиспд.ТотДО — Puc. 2.3.48. Диалог Reverse Engineer - Select Template В диалоге Reverse Engineer - Set Options можно задать следующие опции. Группа Reverse Engineer From позволяет задать источник обратного проектирования - базу данных или SQL(DDL)-CKpnnT. При помощи кнопки Browse можно выбрать текстовый файл, содержащий SQL-скрипт. Группа Items to Reverse Engineer позволяет задать объекты базы дан- ных, на основе которых будет создана модель. При помощи списка выбора Option Set, а также кнопок New, Update и Delete можно создавать и редакти- ровать именованные конфигурации объектов базы данных, которые могут быть использованы многократно при других сеансах обратного проектиро- вания. 227
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Группа Items to Reverse Engineer (доступна только при обратном про- ектировании из базы данных) позволяет включить в модель системные объекты (окно выбора Option Set) и установить фильтр на извлекаемые таблицы по их владельцу. Установка опции Primary Keys в группе Infer означает, что ERwin будет генерировать первичные ключи на основе анализа индексов. Если включена опция Relations, ERwin будет устанавливать связи на основе имен колонок первичного ключа или индексов. Эти опции имеют смысл, только если свя- зи не прописаны явно. Группа Case Conversion позволяет задать опции конвертации регистра при создании логических и физических имен модели. Рис. 2.3.49. Диалог Reverse Engineer-Set Options После установки необходимых опций можно щелкнуть по кнопке Next, после чего появляется диалог связи с базой данных, устанавливается сеанс связи с сервером и начинается процесс обратного проектирования, во время которого показывается статус процесса в диалоге Reverse Engineer - Status. В результате процесса создается новая модель данных. 228
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 В процессе работы модель может изменяться и дополняться. С другой стороны, системный каталог базы данных может редактироваться другими проектировщиками. В результате спустя некоторое время после последнего сеанса обратного проектирования могут возникнуть расхождения между ре- альным состоянием системного каталога и моделью данных. Для синхронизации системного каталога базы данных и текущей модели следует выбрать пункт меню Tasks/Complete Compare или нажать кнопку 31 на панели инструментов. Возникает диалог Complete Compare - Set Options, который во многом похож на описанный выше диалог Reverse Engineer - Set Options. Разница заключается в том, что в отличие от обрат- ного проектирования сравнивать текущую модель можно не только с базой данных или SQL-скриптом, но и с другой моделью ERwin, хранящейся в файле или репозитории ModelMart. После нажатия на кнопку Next диалога Complete Compare - Set Options возникает диалог связи с базой данных (см. рис. 2.3.49), устанавливается се- анс связи с сервером и в диалоге Complete Compare - Resolve Differences по- казывается текущее состояние модели (слева) и системного каталога СУБД (справа) (рис. 2.3.50). Рис. 2.3.50. Диалог Complete Compare - Resolve Differences 229
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В правой части диалога находятся кнопки, позволяющие задать режим синхронизации для каждого объекта модели или базы данных: - экспорт объекта из модели в базу данных; - импорт объекта из базы данных в модель; -5J - игнорирование различия между моделью и базой данных (по умолча- нию принимается для всех объектов); - удаление объекта из базы данных. Кнопки Match и UnMatch позволяют связать объекты модели и базы дан- ных, имеющие разные имена. Например, в модели ERwin таблице CUSTOMER соответствует таблица CUST в базе данных. По умолчанию ERwin определяет, что это разные объекты, хотя по смыслу это одно и то же. Для того чтобы ERwin правильно провел синхронизацию, необходи- мо вручную связать эти две таблицы. Для связывания таблиц необходимо щелкнуть по кнопке Match, затем по таблице модели (левый список) и, на- конец, по таблице базы данных (правый список). Кнопка UnMatch служит для отмены связывания таблиц. Линейка индикаторов между списками показывает установленную оп- цию синхронизации объектов. Кнопка Report позволяет сгенерировать отчет о синхронизации, кнопка Preview вызывает диалог Preview SQL Commands, в котором показывается SQL-скрипт, выполняемый для проведения синхронизации. После щелчка по кнопке Next возникает диалог Complete Compare- Import Changes, в котором можно задать дополнительные опции синхрони- зации, касающиеся модификации модели (рис. 2.3.51). Группа Case Conversion of Logical Names позволяет задать регистр имен создаваемых в модели объектов. Группа If Table to Import Exists in Model позволяет задать опции гене- рации схемы в случае, если таблица уже существует в модели. Может быть использована существующая таблица (Use Existing Table) либо создана дуб- лирующая (Create Duplicate Table). Опции Primary Keys, Relations и Import Base Tables имеют то же на- значение, что и соответствующие опции диалога Reverse Engineer - Set Options (см. выше). 230
Гпаев 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Рис. 2.3.51. Диалог Complete Compare - Import Changes Кнопка Start Import служит для запуска процесса импорта объектов в модель из базы данных, SQL(DDL)-cKpnnra, диаграммы из репозитория ModelMart или файла ER1/ERX. В процессе импорта ERwin показывает сообщения об успеш- ном или неуспешном завершении выполнения импорта для каждого объекта. После завершения импорта возникает диалог Complete Compare - Export Changes (рис. 2.3.52). Complete Compete - Expoit Changes HEE3 Starting Access Basic DAO Session.. Dm ERwinWorkspace As Workspace Dim ERwinDatabase As Database Dm ERwinTabfeDef As TabfeDef Dm ERwinQueryDef As QueryDef Dim ERwinlndex As Index Dm ERwinField As Field Dim ERwinRetabon As Relatiorl Set ERwrWokspace DBEngine.WorkSpacesfO) Set ERwinDatabase - ERwrWorkspace.OpenDatabasef’C:\DOCUMENTS\CASE_new •CHANGE REPORT for Table SECURITY P DepfoyV^anxngt P Display Changes P Display Impact P Stop If Falure GiQpta* | So^gota. | (Bacfc | . | Abort. | Puc. 2.3.52. Диалог Complete Compare - Export Changes В окне диалога Complete Compare - Export Changes показывается SQL (DDL)-cKpHnr, который после выполнения внесет в базу данных указанные в диалоге Complete Compare - Resolve Differences изменения. Кнопка Start Export служит для запуска процесса экспорта объектов в базу данных из модели. 231
С. В. Маклакое. Создание информационных систем с AllFusion Modeling Suite 2.4. Преобразование моделей данных 2.4.1. Стандарты типов данных Как было описано в 2.1.1, ERwin позволяет создавать модели трех ти- пов - модель, имеющую только логический уровень, модель, имеющую только физический уровень, и модель, имеющую оба уровня (см. рис. 2.1.1). Если модель включает оба уровня, то создание физического уровня из логи- ческого происходит автоматически. ERwin позволяет также создавать новые модели на основе уже сущест- вующих. Например, из модели, содержащей только логический уровень, можно создать модель, содержащую только физический уровень, и т. д. Подробнее создание новых моделей на основе существующих будет рас- смотрено в 2.4.2. На логическом уровне все атрибуты и домены имеют логический тип данных. На физическом уровне колонки таблицы также имеют определен- ный тип данных, причем этот тип зависит от выбранной для физического уровня СУБД. При создании одной модели на основе другой эти типы дан- ных объектов должны соответствовать друг другу. Соответствие типов мо- жет быть описано в специально созданном стандарте типов данных, после чего стандарт может быть связан с моделью данных. Для создания стандарта типов данных следует перейти в пункт меню Tools/Datatypes/Edit Datatype Standard. Возникает диалог Edit Datatype Stan- dard (рис. 2.4.1). Рис. 2.4.1. Вкладка Logical Defenitions диалога Erwin Datatype Standart Editor 232
Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Изначально диалог Edit Datatype Standard содержит только одну вклад- ку - Logical Defenitions, которая позволяет определить, какие типы данных могут быть определены для доменов на логическом уровне. Таблица на вкладке содержит 5 столбцов: 1. Datatype - содержит наименование логического типа данных (не редак- тируется). 2. Erwin Domain - наименование домена. Как было описано в 2.2.8, ERwin со- держит 5 предопределенных доменов-Unknown, Blob, Datetime, Number и String. Раскрывающийся список в каждой ячейке столбца позволяет опре- делить домен для каждого логического типа данных. 3. Length - длина (если тип данных имеет этот параметр). 4. Precision - точность. 5. Default Length - длина по умолчанию. Если стандарт типов данных будет связан с моделью данных (см. под- разд. 2.4.2), то на логическом уровне на вкладке Datatype диалога Domain Dictionary будут доступны только те типы данных, которые определены для соответствующего домена (рис. 2.4.2). Рис. 2.4.2. Вкладка диалога Domain Dictionary на логическом уровне Помимо создания правил соответствия доменов логическим типам дан- ных диалог Erwin Datatype Standart Editor позволяет создавать правила соот- ветствия между логическим и физическим уровнем или между двумя физи- ческими уровнями, для которых выбраны разные СУБД. 233
С. В. Маклаков, Создание информационных систем с AllFusion Modeling Suite Для создания нового правила следует в диалоге Erwin Datatype Standart Editor перейти в меню Mapping/Insert New Mapping. Возникает новая вклад- ка, в верхней части которой содержатся два списка выбора-From и То. В списке выбора From следует выбрать тип модели-источника. Это может быть логический (рис. 2.4.3) или физический (рис. 2.4.4) уровень. В списке выбора То следует выбрать тип модели-цели. Вкладке присваивается имя, состоящее из наименования типа модели-источника и модели-цели, напри- мер Logical to Access 2000 или Access 2000 to Oracle 8.x. Рис. 2.4.3. Вкладка Logical to Access 2000 диалога Erwin Datatype Standart Editor Puc. 2.4,4. Вкладка Access 2000 to Oracle 8.x диалога Erwin Datatype Standart Editor 234
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Вкладка содержит таблицу с тремя столбцами, из которых можно редак- тировать только столбец 'То' Datatype. Каждая строка таблицы задает соот- ветствие между парой типов данных модели-источника и модели-цели. Кнопка Reset отменяет редактирование и устанавливает соответствие между типами данных по умолчанию. Созданный стандарт типов данных может быть сохранен в файле (меню File/Save, расширение файла-nsm) или в хранилище ModelMart (меню ModelMart/Save). 2.4.2. Создание новой модели на основе существующей Для создания новой модели на основе существующей следует выполнить 3 шага: 1. Создать новую модель-цель (меню File/New). В эту модель будут импор- тироваться объекты из модели-источника. Для новой модели можно вы- брать любой из трех возможных типов (Logical, Physical или Logi- cal/Physical) 2. Связать стандарт типов данных с моделью данных. 3. Установить для новой модели модель-источник. Модель-источник мо- жет содержать как логический, так и физический уровень. Для связывания стандарта типов данных с моделью данных следует в главном меню ERwin выбрать пункт Tools/Datatypes/Model Datatype Op- tions. Появляется диалог Model Datatype Option (рис. 2.4.5), где следует вы- брать стандарт из файла или хранилища ModelMart. ' г Qo Not Um Datatype St'andadr Не ’ S- ия-ре frown | Г UseModeHatffe ~ "* |' LeslUpdattri 11/13/02 14 32 38 flebad | Datatype SlandadeEdta Use the Datatw» Standaids Ecfca to define bgcddMwe, «id I map datatypes between systems I j. gjr—~i| Cancel | Puc. 2.4.5. Диалог Model Datatype Option 235
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Для выбора модели-источника данных следует в главном меню ERwin выбрать пункт Model/Model Sources. Появляется диалог Model Sources Prop- erties (рис. 2.4.6). В верхней части диалога имеется список выбора Source (служит для выбора модели-источника из списка предварительно созданных источников) и поле Name, в котором можно переименовать источник. Кноп- ка Delete позволяет удалить источник. |м ‘ ‘ । '"ioperlies .JU.« I SAMPLE 1012™“-----------------------3 И" I Рис. 2.4.6. Диалог Model Sources Properties Щелчок по кнопке New последовательно вызывает следующие диалоги. Source Model - позволяет задать файл модели-источника. Add Model Source - Select Source Model Objects (рис. 2.4.7) - позволяет выбрать типы объектов, которые будут импортированы из модели-источ- ника в модель-цель. 236
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 Рис. 2.4.7. Диалог Add Model Source - Select Source Model Objects Add Model Source - Logical to Physical Name Conversion (рис. 2.4.8) - позволяет задать правила преобразования имен при импорте объектов из модели-источника в модель-цель. Правила преобразования допускают ис- пользование макросов. Так, в примере на рис. 2.4.8 имена таблиц, доменов и колонок на физическом уровне будут совпадать с именами сущностей (макрос %EntityName), доменов (%AttDomain) и атрибутов (%AttName) на логическом (за исключением специальных символов). Имя индекса будет генерироваться из литеры X в первой позиции, имени типа ключа и имени таблицы (макрос X%KeyType%TableName). В этом диалоге можно также определить стандарт именования для будущей модели (поле Use Naming Standards). 237
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 2.4.8. Диалог Add Model Source - Logical to Physical Name Conversion Диалог Model Sources Properties (рис. 2.4.6) имеет 4 вкладки: General. Позволяет задать файл модели-источника. Кнопка Sync служит для немедленной синхронизации текущей модели с моделью-источником. Description. Служит для внесения описания к модели-источнику. UDP. Задание свойств, определяемых пользователем. Name Mapping Options (рис. 2.4.9) включает ту же таблицу, что и диалог Add Model Source - Logical to Physical Name Conversion (рис. 2.4.8), что позволя- ет переопределить правила именования объектов из модели-источника. Ьга«| autfu | ЬьР ЬамМчмчОчи* | Рис. 2.4.9. Вкладка Name Mapping Options диалога Model Sources Properties 238
Гпава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1 После щелчка по кнопке ОК в диалоге Model Sources Properties все объ- екты модели-источника импортируются в модель-цель. Существующие до импорта объекты в модели-цели не изменяются. В случае изменения мо- дели-источника можно синхронизировать модель-источник и модель-цель повторно. Эта особенность ERwin особенно удобна при разработке гетеро- генных ИС, когда на основе одной модели-источника с логическим уровнем можно создавать и в дальнейшем периодически синхронизировать несколь- ко моделей-целей с физическим уровнем (для различных СУБД). 239
________________ Гпава 3__________________ Создание отчетов по моделям процессов и моделям данных 3.1. Создание отчетов встроенными средствами BPwin и ERwin 3.1.1. Способы создания отчетов по моделям процессов и моделям данных Документирование результатов моделирования является важнейшей за- дачей при проектировании ИС, причем актуальность этой задачи тем боль- ше, чем масштабнее проект. Для создания документации на основе модели процессов или модели данных можно воспользоваться как встроенными средствами BPwin и ER- win, так и внешними генераторами отчетов. Каждый из этих способов имеет свои достоинства и недостатки. В гл. 3 рассматриваются все встроенные средства BPwin и ERwin, а также (в качестве примера) два внешних генера- тора отчетов - RPTwin и Crystal Reports. Общий перечень рассматриваемых средств создания отчетов приведен в табл. 3.1.1. Таблица 3.1.1. Средства создания отчетов по моделям отчетов и моделям данных Средство создания отчетов Достоинства Встроенные шаблоны от- четов (поддерживаются только в BPwin) Легкость использования, возможность экспорта отче- тов в текстовые файлы, файлы MS Office и RPTwin Report Template Builder Легкость использования, возможность публикации на Web-серверах не только текстовых отчетов, но и диаг- рамм моделей процессов и моделей данных. Возмож- ность экспорта отчетов в текстовые файлы, файлы RTF ЛГИЛОГ/ИИФИ 240
Гпава 3. Создание отчетов по моделям процессов и моделям данных Средство создания отчетов Достоинства Data Browser (поддержи- ваются только в ERwin) Легкость использования, возможность создания соб- ственных шаблонов, хранимых представлений отчетов и экспорта отчетов в текстовые файлы, HTML, файлы MS Office и RPTwin RPTwin Получение качественных отчетов, фильтрация, группировка и сортировка. Имеется встроенный язык формул для обработки данных Crystal Reports Получение отчетов презентационного качества, сложное форматирование данных, сложная обработ- ка данных, создание диаграмм, экспорт отчетов во все распространенные форматы 3.1.2. Встроенные шаблоны отчетов BPwin Отчеты на основе встроенных шаблонов можно создать, выбрав из меню Tools/Reports необходимый тип шаблона. Всего имеется 7 типов шаблонов отчетов: 1. Model Report. Этот отчет уже упоминался в 1.2.1. Он включает инфор- мацию о контексте модели - имя модели, точку зрения, область, цель, имя автора, дату создания и др. 2. Diagram Report. Отчет по конкретной диаграмме. Включает список объ- ектов: работ, стрелок, хранилищ данных, внешних ссылок и т. д. 3. Diagram Object Report. Наиболее полный отчет по модели. Может включать полный список объектов модели: работ, стрелок с указанием их типа и др. - и свойства, определяемые пользователем. 4. Activity Cost Report. Отчет о результатах стоимостного анализа. (Будет рассмотрен ниже.) 5. Arrow Report. Отчет по стрелкам. Может содержать информацию из словаря стрелок, информацию о работе-источнике-, работе-назначении стрелки и информацию о разветвлении и слиянии стрелок. 6. DataUsage Report. Отчет о результатах связывания модели процессов и модели данных. (Будет рассмотрен ниже.) 7. Model Consistency Report. Отчет, содержащий список синтаксических ошибок модели. Синтаксические ошибки 1DEF0 с точки зрения BPwin разделяются на 3 типа: 241
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • Во-первых, это ошибки, которые BPwin выявить не в состоянии. Напри- мер, синтаксис IDEF0 требует, чтобы имя работы было выражено имен- ным сочетанием с отглагольным существительным в главной роли ("Из- готовление изделия", "Обслуживание клиента", "Выписка счета" и т. д.), а имя стрелки также должно быть выражено таким сочетанием. BPwin не позволяет анализировать синтаксис естественного языка (анг- лийского и русского) и смысл имен объектов и поэтому игнорирует ошибки этого типа. Выявление таких ошибок - ручная работа, которая ложится на плечи аналитиков и должна контролироваться руководи- телем проекта. • Ошибки второго типа BPwin просто не допускает. Например, каждая грань работы предназначена для определенного типа стрелок. BPwin просто не позволит создать на диаграмме IDEF0 внутреннюю стрелку, выходящую из левой грани работы и входящую в правую грань. • Третий тип ошибок BPwin позволяет допустить, но детектирует их. Пол- ный их список можно получить в отчете Model Consistency Report. Спи- сок ошибок может содержать, например, наименованные работы и стрелки (unnamed arrow, unnamed activity), несвязанные стрелки (unconnected border arrow), неразрешенные стрелки (unresolved (square tunneled) arrow connections) и т. д. Пример отчета Model Consistency Report приведен на рис. 3.1.1. Report FofTMt* Солта DeMed r v , t ||todel Inconsistencies: j Diagran 0.1: Тестирование компьютероо has 2 unnaned junctions has 0 unnaned arrows Diagran АО: Деятельность компании Quill i has 2 unresolved (square tunneled) arrow connection' Source: Заказы клиентов Border Sink: Проданные продукты Diagran Й22: Оформление заказов has 2 unconnected border arrows Diagran A31: Планирование производства has 3 unnaned activities HHp I Рис. 3.1.1. Отчет Model Consistency Report 242
Гпава 3, Создание отчетов по моделям процессов и моделям данных При выборе пункта меню, который соответствует какому-либо отчету, появ- ляется диалог настройки отчета. Для каждого из семи типов отчетов он выгля- дит по-своему. Рассмотрим типичный диалог Arrow Report (рис. 3.1.2). Standard Rants Anew Report Dictionary iP Anowttama 2P Defrttan Г SI*» 1“ Author Name 3P Ntfe. Arrow Bunde Г" Branch Into Г” Branch From Г* JonedFram Г Jffnedlrto Г BenamedFrom Г Renamed To Application Change History Customer Sutisf action Electricity Consumption Quality ResponstiRy Screen Report Format r Labeled Feed Column Г JabDafcMted Г pximaDdmied Г DDE ТаЫе Г RPTwin MA Valued Format . Г Repeatrig Group , r Efcd f= p P Remove Special Cher UOPf*-. I | Close I Powow | Ptnl | Beporl | B*J Рис. 3.1.2. Диалог Arrow Report Раскрывающийся список Standart Reports позволяет выбрать один из стандартных отчетов. Стандартный отчет - это запоминаемая комби- нация переключателей, флажков и других элементов управления диалогом. Для создания собственного стандартного отчета необходимо задать опции отчета, ввести имя отчета в поле списка выбора и щелкнуть по кнопке New. BPwin сохраняет информацию о стандартном отчете в файле BPWIN- RPT.INI. Все определения этого файла доступны из любой модели. Единст- венное ограничение - свойства, определяемые пользователем (User-Defined Properties). Они сохраняются в виде указателя и поэтому доступны только из "родной" модели. Стандартный отчет можно изменить (кнопка Update) или удалить (кнопка Delete). В правом верхнем углу диалога находится группа управляющих элемен- тов для выбора формата отчета. Доступны следующие форматы: • Labeled - отчеты включают метку поля, затем, в следующей строке, пе- чатается содержимое поля; • Fixed Column - каждое поле печатается в собственной колонке; • Tab-Comma Delimited - каждое поле печатается в собственной колонке. Колонки разделяются знаком табуляции или запятыми; 243
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • DDE Table - данные передаются по протоколу DDE в приложение, на- пример в MS Word или Excel; • RPTwin - отчет создается в формате RPTwin - специализированного ге- нератора отчетов, который входит в поставку BPwin. Опция Ordering (на отчете по стрелкам отсутствует) сортирует данные по какому-либо значению. Опция Multi-Valued Format регулирует вывод полей в отчете при груп- пировке данных: • Repeating Group - детальные данные объединяются в одно поле, между значениями вставляется плюс (+); • Filled - дублирование данных для каждого заголовка группы; • Header (опция по умолчанию) - печатается заголовок группы, затем- детальная информация. 3.1.3. Создание отчетов с помощью Report Template Builder Report Template Builder является простым генератором отчетов, который входит в состав BPwin. Вызывается этот инструмент с помощью кнопки д в панели инструментов или из меню Tools/Reports Builder. Основным достоинством этого инструмента является возможность публикации резуль- татов моделирования на Web-сайте. Пункт меню Tools/Reports Builder вызывает диалог Report Templates (рис. 3.1.3), который служит для создания шаблона отчета. Кнопка New служит для создания нового шаблона, кнопка Edit-для редактирова- ния существующего. Список выбора Output Туре позволяет задать формат результата вы- полнения отчета. Отчет может быть экспортирован в тексто- вый формат, RTF и HTML. Кнопка Run позволяет выпол- нить отчет. Рис. 3.1.3. Диалог Report Templates 244
Гпава 3. Создание отчетов по моделям процессов и моделям данных Щелчок по кнопке New или Edit вызывает диалог Report Template Builder (рис. 3.1.4). iRepoit Template Buildei GAPiogram FilesXComputer AssociatesKBPwin 4.0\Repoits\Untitled О|*|Я|*| р|х| 4 Model № Activity 4 Cost Center g Arow 9 Entity 9 Data Store X External Reference W Referent к Junction S UDP Defntnn § Data Usage SRo|e Я Role Group ю Diagram Role Dorumnnt Properties Н as Т able 01 Contents Export As HTML At tivity* section Ai tivity* table Arrow* section ’Arrow* table Name' coUm *Branchcs f-rom* table Name* column Pirturr’ section Putue - Eft Diagram Graphical - Ц] Picture Type Current 'Activity* table Name* column 'Arrow* table Name' column Data Store* table Name* column zl Рис. 3.1.4. Диалог Report Template Builder Назначение кнопок панели инст- рументов диалога Report Template Builder приведено в табл. 3.1.2. Диалог Report Template Builder со- держит два списка и панель инстру- ментов. В левой части диалога содер- жится список возможных секций от- чета, соответствующих типам объек- тов модели, в правой - список секций, включенных в отчет. На рис. 3.1.4 по- казан вид диалога в среде BPwin. В ERwin список отображает типы мо- дели объектов (рис. 3.1.5). £ Picture ♦ P ! Attribute . "SI Diagram : Domain -S Entity Model Source ...qI Relationship ; Subcategory ф Subject Area s Transform О UDP-Meta Physical Logical M odd Validation Physical Model Validation Рис. 3.1.5. Список Available Sections диалога Report Template Builder в среде ERwin Особый интерес представляет раздел Graphical. С его помощью можно включать в отчет графические объекты (секция Picture) - диаграммы моде- лей данных или моделей процессов. 245
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Таблица 3.1.2. Кнопки панели инструментов диалога Report Template Builder (слева направо) Кнопка Назначение п | Создать новый шаблон Открыть существующий шаблон С| | Сохранить шаблон. Если шаблон сохраняется впервые, предлагается внести имя шаблона А Выполнить отчет Ж Вызов диалога Properties д Удаление пункта отчета Для создания новой секции отчета необходимо выбрать тип объекта мо- дели и щелкнуть по кнопке 1-8В! По умолчанию в отчет включается только имя объекта. Для включения других свойств необходимо с помощью меню Edit/Properties или соответствующей кнопки на панели инструментов вы- звать диалог Properties. На рис. 3.1.6 показана вкладка Property Tree, содер- жащая иерархический список свойств секции Activity, который позволяет включить в отчет свойства работы. Вкладка Table позволяет изменить стиль, размер и цвет шрифта секции. В зависимости от типа редактируемого объ- екта диалог Properties может иметь дополнительные вкладки. .ftopWTwlTAIel ж* Sort Order . E3 Narw* И Number P И Defnbon И Status i - □ Note = И Source • Author \...□ UOW Facts UOW Objects j □ UOW Constraints : □ UOW Description Input Arrow i И Name Q Definition Output Arrow 0 SQQ О П*4гм*»1п Рис. 3.1.6. Свойства секции Activity в диалоге Properties 246
Гпава 3. Создание отчетов по моделям процессов и моделям данных На рис. 3.1.7 показан вид вкладки Property Tree, содержащей список свойств секции Picture. И Nw И Njmbet , 1 0 Dotolion . | И Status . □ Note I О Source 1 □ Autta 4 1 □ UOW Facts ", | □ UOW Objects I □ UOW Con-trainls □ UOW Description । Input Arrow | Ло 4 ni*M«tr™ JU Рис. 3.1.7. Свойства секции Picture в диалоге Properties В разделе Туре 2 варианта настройки - Current и Specify at Run Time, (для отчетов ERwin - 3 опции - Current Stored Display, Current Stored Display of Main SA и Specify Stored Display(s) at Run Time). Опция Current означает включение в отчет текущей диаграммы или хранимого отображения. Опция Specify at Run Time позволяет выбрать необходимую диаграмму во время просмотра отчета. Далее будет рассмотрен пример отчета BPwin, в котором выбрана опция Specify at Run Time. Особый интерес представляет возможность выбрать отображение свойств объектов в секции Picture. В примере на рис. 3.1.7 выбраны наиме- нование, номер, определение и статус работы. Для генерации отчета следует щелкнуть по кнопке I I (Выполнить от- чет). Если в отчет включена секция Picture и установлена опция Specify at Run Time, возникает диалог Diagram Selection and Scaling (рис. 3.1.8), в ко- тором можно выбрать диаграммы для включения их в отчет. 247
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 3.1.8. Диалог Diagram Selection and Scaling В результате выполнения отчет экспортируется или в текстовый файл формата RTF, или в файл формата HTML. На рис. 3.1.9 показан результат создания отчета по модели BPwin в формате HTML. В левой части страницы находится фрейм с перечнем секций отчета. Ес- ли щелкнуть по наименованию диаграммы в списке, в правой части появля- ется выбранная диаграмма. Если щелкнуть по объекту диаграммы (в приме- ре на рис. 3.1.9-работа "Продажи и маркетинг"), появляется окно со спи- ском параметров объекта, выбранных в списке секции Picture диалога Properties (см. рис. 3.1.7). Рис. 3.1.9. Результат выполнения отчета по модели BPwin в формате HTML 248
Гпава 3. Создание отчетов по моделям процессов и моделям данных 3.1.4. Создание отчетов по модели данных с помощью Report Browser Для генерации отчетов в ERwin имеется эффективный и простой в ис- пользовании инструмент - Report Browser. Он позволяет выполнять предо- пределенные отчеты (объединенные по типам), сохранять результаты их выполнения, создавать собственные отчеты, печатать и экспортировать их в распространенные форматы. Каждый отчет может быть настроен индиви- дуально, данные в нем могут быть отсортированы и отфильтрованы. Диалог Report Browser вызывается кнопкой Л11 в панели инструментов ERwin. Его внешний вид показан на рис. 3.1.10. Data Browser ре £dit Search View ERwm Reports (ДО al glial Entity Reports: Entity Report J ±J SI. А|Й|'Ш1 v|ф|ф|Д| Flizjfcfr Cohimn Reports Attribute Reports Entity Reports r—g3 Entity/Primary Key HpJ EntityA>eTritiom Entities/Attrixites r-g| Entities/Attributes (reestr.ERl, 18:01:12,287rows) Entities/Attributes fr/w.er1, 1&01:57,623rows) ~ЕЯ Enti^/Attribute/Column —g8 Entity Name/Table Name SCHEMA Ь OBJNO h NAME | UDATA_TYPE H FLAGS || SORT COLS TABLE COMMENT 1 010 . .............. Ц NAME TABLE OBJNO "" 4 USAGE ENABiJE.FLAG MAX.RETRIES h PROPERTIES Й RET TIME QUEUE-COMMENT SUBSCRIBERS I OID h DESTINATION В Puc. 3.1.10. Диалог Report Browser Диалог Report Browser имеет собственное меню и панель инструментов. Назначение кнопок панели инструментов показано в табл. 3.1.3. Таблица 3.1.3. Кнопки панели инструментов Report Browser Кнопки Назначение t Создание нового отчета или папки Печать отчета Просмотр результата выполнения отчета [> Выполнение отчета 249
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Кнопки Назначение ^0 Фиксация изменений (для редактируемого отчета) s а№1 Поиск элементов отчета: задание условий поиска, поиск сле- дующей строки и поиск другого отчета, соответствующего строке Включение и выключение дерева отчетов <$□ Переход к предыдущему и последующему отчету в Показать список выполненных отчетов в хронологическом порядке Выбор колонок и сортировка выполненного отчета Ассоциирование строки отчета с иконкой Сохранение выполненного отчета в виде представления В верхней левой части диалога расположено окно, отображающее дерево отчетов. Отчеты могут быть сгруппированы в папки. Каждый отчет может включать несколько результирующих наборов данных, каждый из которых генерируется при очередном выполнении отчета. Каждый элемент дерева помечен иконкой: «и - папка; ЕЗ _ отчет; Е® - редактируемый отчет; - результирующий набор данных; -представление. По умолчанию Report Browser содержит предварительно определенные отчеты, позволяющие наглядно представить информацию об основных объ- ектах модели данных - как логической, так и физической. Для выполнения отчета достаточно дважды щелкнуть по нему в дереве отчетов или щелк- нуть по соответствующей кнопке на панели инструментов. Результат вы- полнения отчета будет отображен в правом окне диалога Report Browser. Иконка результирующего набора будет также добавлена в дерево отчетов. В левом нижнем окне Report Browser отображается комментарий к отче- ту (вносится в диалоге ERwin Report Editor, см. ниже). 250
Гпава 3. Создание отчетов по моделям процессов и моделям данных В нижней части диалога содержится дополнительная панель инструмен- тов для управления деревом отчетов (табл. 3.1.4). Таблица 3.1.4. Кнопки нижней панели инструментов Report Browser Кнопка Назначение $ Редактировать выделенный отчет X Удалить отчет А Показать только верхний уровень дерева Сделать выбранную папку корнем дерева (показать только выбран- ную ветвь дерева) *с5 Сделать корнем дерева родительскую папку (по отношению к вы- бранной) Для создания нового отчета следует выбрать пункт меню File/New ERwin Report или щелкнуть по кнопке 1=11 на панели инструментов. Появ- ляется диалог New Object, в котором следует выбрать тип создаваемого объ- екта (отчет ERwin). Появляется диалог Reports Editor (рис. 3.1.11). В поле Name следует внести имя отчета. Категория отчета (Category) указывает на тип объектов модели, по которым будет создаваться отчет (ат- рибуты, сущности, домены, связи и т. д.). Вкладки Definition и Note служат соответственно для внесения опреде- ления и комментария к отчету. Вкладка Options отображает информацию, которая будет включена в от- чет. В левой части вкладки находится иерархический список категорий (Category). Папки в этом списке могут раскрываться и сворачиваться. Окно выбора 0 позволяет включить соответствующий пункт списка в отчет. Иконка & показывает, что соответствующую колонку в полученном отчете можно будет редактировать. Папка с символом ? позволяет выбрать усло- вия фильтрации данных отчета, а с символом - условия сортировки. Кроме списка вкладка содержит следующие элементы управления: • группу Options - позволяет выбрать режим отображения элементов в списке - показывать все возможные или только выбранные; • Collapse АП - сворачивает все папки списка; • Clear АП - отменяет все предварительно выбранные опции; 251
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • Show Selected - раскрывает папки с выбранными опциями. После щелчка по кнопке ОК отчет будет добавлен в список отчетов диалога Report Browser. Для выполнения отчета нужно либо дважды щелкнуть по его имени в списке, либо щелкнуть по кнопке I в палитре инструментов. iReports ж ^Attribute j- (fi YF»er i-ai ^Entity -0 Name ---□ Basename —□ Rolename -H^Definition -□ -□ ~S -0 □ -i+JODomain —iS Dis In Key Group >• it) D Column Puc. 3.1.11. Диалог Reports Note Required Logical Only IsPK IsFK History Information History Information Description History Information Comment &tegtm|A№bute * -0 Wow Существующий отчет, в том числе предопределенный, тоже можно из- менить с помощью редактора, если в списке щелкнуть правой кнопкой мы- ши по имени отчета и выбрать во всплывающем меню пункт Edit ERwin Report. Полученный после выполнения отчета результирующий набор данных можно отформатировать, распечатать, экспортировать или сохранить в виде представления. Для редактирования результирующего набора данных следует в списке щелкнуть правой кнопкой мыши по имени набора и выбрать во всплываю- щем меню пункт Edit report format. В появившемся диалоге Report Format можно изменить сортировку данных, очередность колонок, сделать колонку невидимой, задать ее стиль. 252
Гпава 3. Создание отчетов по моделям процессов и моделям данных Для редактирования результирующего набора данных следует в списке щелкнуть правой кнопкой мыши по имени набора и выбрать во всплываю- щем меню пункт Export result set. Рис. 3.1.12. Диалог Export from Data Browser В диалоге Export from Data Browser (рис. 3.1.12) можно выбрать форма- ты экспорта: • CSV - текстовый файл; • HTLM; • DDE - экспорт в MS Word или MS Excel; • RPTwin - экспорт в специализированный генератор отчетов; • BRS file - файл формата Browser Result Set для возможности последую- щего импорта в Data Browser (меню File/Import). После форматирования и настройки результирующего набора данных его можно сохранить в качестве именованного представления. Использова- ние представлений облегчает использование отчетов, поскольку все на- стройки достаточно сделать один раз. Каждый отчет может иметь несколько представлений. Для создания представления следует установить фокус в списке на нужный набор и щелкнуть по кнопке I на панели инструмен- тов. В диалоге Save View следует указать имя и определение представления. После щелчка по кнопке ОК представление добавится в список отчетов. 253
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 3.2. Создание отчетов в RPTwin 3.2.1. Создание нового отчета RPTwin является специализированным генераторам отчетов, который позволяет создавать качественные отчеты по моделям процессов и данных. RPTwin входил в поставку ранних версий BPwin и ERwin (до версии 4.0). К сожалению, в RPTwin не входит в поставку AllFusion, однако создавать отчеты с его помощью можно, предварительно установив его на том же компьютере, что и BPwin 4.1 или ERwin 4.1. Функциональность RPTwin по- зволяет создавать не просто отчеты высокого качества, что само по себе очень важно. Включение в RPTwin более 40 функций позволяет произво- дить сложную обработку данных, получая при этом результат, который не- возможно получить средствами ERwin или BPwin. Например, при оценке функциональной модели BPwin можно использовать средства стоимостного анализа (АВС) и свойства, определяемые пользователем (UDP) (см. гл. 1). По умолчанию общая стоимость процесса вычисляется как сумма стои- мостей работ декомпозиции. В отличие от стоимостного анализа BPwin не может производить подсчет суммарного значения свойства UDP. Экс- порт отчета по UDP в RPTwin позволяет создать отчет, включающий в себя сложную обработку данных, в том числе подсчет суммирующего значения UDP, среднего значения, максимального значения и т. д. и т. п. Для создания отчетов об объектах модели данных (ERwin) в диалоге Export from Data Browser (рис. 3.1.12) следует выбрать формат экспорта RPTwin. После создания отчета с помощью встроенных шаблонов в BPwin и вы- бора RPTwin в качестве формата (Report Format) возникает диалог сохране- ния данных отчета, где необходимо указать имя файла. Все отчеты RPTwin создаются на основе файла данных отчета, который имеет расширение LWD. Запускается RPTwin, и возникает диалог New Report (рис. 3.2.1). Но- вый отчет можно создать и непосредственно из среды RPTwin (меню File/New), при создании следует указать имя файла данных отчета (LWD). Рис. 3.2.1. Диалог New Report 254
Гпава 3, Создание отчетов по моделям процессов и моделям данных В диалоге New Report можно выбрать тип создаваемого отчета. • Quick Reports - создание простейших отчетов. ♦ Columnar. Простой табличный отчет. RPTwin автоматически создает табличный отчет, включая в него все объекты файла данных. В даль- нейшем табличный отчет можно редактировать, добавляя в него но- вые поля, формулы, группы и т. д. ♦ Vertical. Простой вертикальный отчет, в котором данные располага- ются вертикально, в одну колонку, одно поле под другим. RPTwin ав- томатически создает вертикальный отчет, включая в него все объекты файла данных. ♦ Blank Report. Бланк. Создается пустой бланк отчета, в который не включаются данные. В дальнейшем в бланк отчета можно доба- вить новые поля, формулы, группы и т. д. • Guided Reports-при выборе отчета Guided Reports возникает диалог Guided Report (рис. 3.2.2), в котором, начиная с простого отчета, можно шаг за шагом создать отчет с сортировкой, группировкой и сложным форматированием данных. ♦ Group/Totals. Табличный отчет с автоматической группировкой и сортировкой данных. В отчет также включаются суммирующие зна- чения. ♦ Vertical. При создании отчета Vertical можно выбрать данные, кото- рые должны быть включены в отчет, указать их порядок и сорти- ровку. RPTwin Guided Report ИЗ □f&lhedalajnuiwthjnu S OrtaSfltCalUHw_________ I Arrow Name Arrow Dest I ononapagej Cancel | I I >1 [ Рис. 3.2.2. Диалог Guided Report 255
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 3.2.2. Инструментальная среда RPTwin После выбора типа отчета в диалоге New Report и задания необходимых опций отчет создается автоматически. В окне RPTwin показывается окно DataSet Columns и шаблон отчета (рис. 3.2.3). Рис. 3.2.3. Шаблон отчета Шаблон отчета включает несколько секций: • Report Header - печатается единожды в начале отчета. В примере на рис. 3.2.3 в этой секции расположены текстовое поле "Отчет по стрел- кам" и дата отчета. • Page Header - печатается в верхней части каждой страницы. В примере на рис. 3.2.3 в этой секции расположены текстовые поля - заголовки коло- нок. • Group Header - печатается в начале каждой группы. В примере отчет сгруппирован по имени стрелки. Секция Group Header содержит тексто- вое поле Arrow Name и поле данных - имя стрелки (Arrow Name). • Detail - печатается для каждой строчки набора данных (файл .LWD). В примере содержит поля набора данных отчета по стрелкам. • Group Footer - печатается в конце каждой группы. Обычно в этой сек- ции располагаются суммирующие по группе значения. • Page Footer - печатается в нижней части каждой страницы. Может, на- пример, содержать номер страницы. 256
Гпава 3. Создание отчетов по моделям процессов и моделям данных • Report Footer - печатается единожды в начале отчета. Обычно в этой секции располагаются суммирующие по отчету значения. В секциях отчета могут располагаться следующие элементы: • Data Fields - поля, отображающие данные из .LWD-файла; • Text Fields - поля, используемые для внесения в отчет поясняющего текста; • Formula Fields - вычисляемые поля; • Special Fields - специальные поля, например время, номер страницы, номер записи и т. д.; • OLE-объекты (Object Link and Embedding) - специальные объекты (обычно графические, связываемые с OLE-серверами (PC Paintbrush, MS Excel, MS Word и т. д.). В верхней части окна RPTwin располагается панель инструментов. Функциональность панели инструментов доступна из основного меню RPTwin и показана в табл. 3.2.1. Таблица 3.2.1. Описание элементов управления основной панели инструментов RPTwin Кнопки Назначение Соответствующие пункты меню п Создать новый отчет File/New ни Открыть отчет File/Open ВЦ Сохранить отчет File/Save д Напечатать отчет File/Print Просмотр отчета File/Print Preview Ш Привязка объектов отчета к сетке (Snap to Grid) Layout/Snap to Grid Гв~ал.;1£1 Выбор стиля шрифта |Тюв» New Roman Выбор типа и размера шрифта ₽*lslal Форматирование поля RPTwin имеет также палитру инструментов (ToolBox). Назначение кно- пок палитры инструментов приведено в табл. 3.2.2. 257
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Таблица 3.2.2. Описание элементов управления палитры инструментов Кнопка Назначение К Режим указателя т| Добавить текстовое поле Добавить формулу Добавить разрыв страницы и Добавить специальное поле - время выполнения отчета Добавить специальное поле - номер страницы Добавить специальное поле - дату выполнения отчета 1 Добавить специальное поле - номер записи ДН| Добавить специальное поле - количество записей. Если это поле добавляется в секцию Group Footer, подсчитывается количество строк в группе, если в Report Footer - в отчете si Добавить OLE-объект DataSet Columns (см. рис. 3.2.3) показывает список полей набора данных из LWD-файла. Эти поля могут быть включены в отчет при помощи техни- ки drag & drop. Список DataSet Columns можно перемещать по рабочему пространству отчета, можно скрыть его или вновь сделать видимым (пункт меню View/DataSet Columns List). 3.2.3. Вставка и форматирование объектов отчета Созданный в диалоге New Report отчет может быть изменен - в него мо- гут быть добавлены новые объекты, свойства существующих объектов мо- гут быть изменены. Поле данных содержит информацию из файла данных или вычисляемые значения. Поле данных может быть трех типов: • Простое поле данных (Simple Data Field) представляет собой колонку набора данных (файл .LWD). В режиме дизайна отображается именем колонки на- бора данных, например ENTITY NAME или ATTRIBUTE NAME. • Специальное поле (Special Function) показывает дату (Date) и время (Time) выполнения отчета, номер страницы (Page Number), номер строки (Record Number) и общее количество строк (Record Count). 258
Гпава 3. Создание отчетов по моделям процессов и моделям данных • Формула (Formula) позволяет производить сложные вычисления и обра- ботку данных. (Создание и использование формул будет рассмотрено в 3.4.) Поля могут быть включены в любую секцию отчета. Простые поля мож- но включить в отчет, просто "перетаскивая" их (drag & drop) из окна DataSet Columns List в соответствующую секцию. Для включения специального поля можно воспользоваться палитрой ин- струментов (см. табл. 3.2.2) или меню Insert/Special Field. Специальное поле должно быть включено в строго определенную секцию отчета. Так, напри- мер, номер страницы может быть включен в Page Header или в Page Footer, общее количество строк (Record Count) - в Group Footer, Page Footer или Report Footer. Для редактирования свойств полей данных следует щелкнуть правой кнопкой мыши по полю и выбрать во всплывающем меню пункт Data Field Properties. Возникает диалог Data Field Properties (рис. 3.2.4), в котором можно из- менить следующие свойства поля: Имя поля (поле ввода Name). Координаты поля в отчете и его размеры (Position, Height и Width). Из- менить координаты поля можно также просто, "перетащив" поле по ра- бочему пространству отчета, "зацепив" его мышью. Изменить размеры поля можно также непосредственно в рабочем пространстве отчета. Для этого следует щелкнуть по полю. Появятся габаритные указатели поля J^ttowDyt. Type I "Зацепив" мышью такой указатель, можно увеличить или уменьшить размер поля. Опция Can be squeezed up if no data особен- но важна для вертикальных отчетов. Если она включена, то строка, не содержащая данных, не будет печататься. Ширина поля может быть установлена фиксированной (значение Fixed Width в комбинированном списке справа от поля Width), может автоматически устанавливаться по ширине поля данных (Adjust Width to Data) или максимально возмож- ной-до следующего поля справа или правой границы отчета (Expand Right to Margin or Next Item). 259
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 3.2.4. Диалог Data Field Properties • Расположение длинного поля в несколько строчек (Word Wrap). • Рамки поля (Borders). • Фон поля (Patterns). • Кроме того, можно скрыть поле, если повторяются его значения (опция Suppress группы Repeating Values). Если при включенной опции Suppress включена также опция Redisplay after Group, значение поля печатается один раз в начале каждой группы, даже если оно является повторяю- щимся. Если включена опция Redisplay after Page, значение поля печата- ется один раз в начале каждой страницы. Текстовые поля (Text Field) могут использоваться в отчете для заголовков, подписей и другой поясняющей информации. Они могут содержать буквы, цифры и специальные символы. Для вставки текстового поля можно воспользо- ваться кнопкой Ш1 в палитре инструментов или меню Insert/Text Field. При внесении поля или при его редактировании (для редактирования свойств текстового поля следует щелкнуть правой кнопкой мыши по полю и выбрать во всплывающем меню пункт Text Field Properties) возникает диа- лог Text Field Properties (рис. 3.2.5), в котором можно внести текст поля (Text), имя (Name), изменить рамки (Borders), его размеры и расположение на отчете. Для удаления поля следует щелкнуть по нему левой кнопкой мыши и нажать на клавишу Delete на клавиатуре. 260
Гпава 3, Создание отчатов по моделям процессов и моделям данных Text Field Properties и .Text (Имя стрежи Name:1 (Имц_стрежи " г,'пГ’>2/ Height. |Л67 .Width I1 UW Г WrxdWrap ' From Jft [5031 From Top |0156 ‘ Г CanSfde’leP P Can Mon Down RepeatrngValuM Рис. 3.2.5. Диалог Text Field Properties Помимо текстовых или специальных полей в отчет могут быть включе- ны OLE-объекты. Для вставки текстового поля можно воспользоваться в палитре инструментов или меню Insert/OLE Object. При вне- сении OLE-объекта возникает диалог Вставка объекта (Insert Object), рис. 3.2.6, в котором следует указать либо тип вновь создаваемого объекта, либо имя файла, содержащего объект. Если вставляется существующий объ- ект, он будет добавлен в секцию отчета, если новый - вызовется соответст- вующее приложение для создания объекта. Рис. 3.2.6. Диалог "Вставка объекта" Для редактирования OLE-объекта следует дважды щелкнуть по нему кнопкой мыши. Вызывается приложение для редактирования объекта, при- чем в большинстве случаев меню приложения встраивается в меню RPTwin. Некоторые OLE-объекты могут быть преобразованы в другой тип. Для преобразования типа объекта следует щелкнуть по нему правой кнопкой 261
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite мыши и выбрать во всплывающем меню пункт "Объект/Преобразовать" (Object/Convert). В появившемся диалоге "Преобразование" (Convert) следу- ет указать новый тип объекта и щелкнуть по кнопке ОК. Для изменения свойств следует щелкнуть по нему правой кнопкой мыши и выбрать во всплывающем меню пункт OLE Object Properties. В появ- ляющемся диалоге OLE Object Properties можно задать такие свойства объ- екта, как расположение в отчете или размеры. 3.2.4. Группировка и сортировка данных отчета RPTwin позволяет выстроить данные отчета в определенном порядке (сор- тировка) либо объединить их в группы (группировка). Так, в примере на рис. 3.2.2 отчет сгруппирован по имени стрелки, другими словами, в каждую группу включаются данные, относящиеся к одной определенной стрелке. Для установления сортировки и группировки следует выбрать пункт ме- ню Layout/Sorting and Grouping. Появляется диалог Sorting/Grouping (рис. 3.2.7). ______________________________________ Рис. 3.2.7. Диалог Sorting/Grouping В левом списке диалога (DataSet Columns) содержатся имена всех полей набора данных, в правом (Sort/Group On) - список полей, по которым про- изводится сортировка или группировка. Для установки сортировки по полю необходимо выбрать его в левом списке и щелкнуть по кнопке Add>. Затем следует выбрать опцию Sort Only и установить порядок сортировки - по возрастанию (Ascending) или по убы- ванию (Descending). Опция Case Sensitive устанавливает режим сортиров- ки - учитывать ли при сортировке регистр данных. 262
Гпава 3. Создание отчетов по моделям процессов и моделям данных Для установки группировки по полю необходимо выбрать его в левом списке и щелкнуть по кнопке Add>. Затем следует выбрать опцию Group and Sort и установить порядок сортировки. Группы сортируются автома- тически - нельзя установить группировку по полю без сортировки. Опции with Header и with Footer (установлены по умолчанию) включают в отчет секции Group Header и Group Footer. RPTwin позволяет установить сортировку и группировку по вычис- ляемому значению. Для создания вычисляемого значения следует щелкнуть по кнопке Sort/Group on Calculated Value и в появившемся диалоге Formula Editor набрать текст формулы (например, "LTrim ({Arrow Name})")- Син- таксис формул будет рассмотрен в 3.2.7- 3.2.9. Созданная формула автома- тически добавляется в правый список диалога Sorting/Grouping. 3.2.5. Изменение файла данных отчета Любой отчет RPTwin использует в качестве источника единственный файл данных (.LWD), имя которого указывается при создании отчета. Ино- гда необходимо использовать созданный шаблон отчета (файл .LWR) для работы с различными наборами данных. RPTwin позволяет изменить файл набора данных. Для этого необходимо выбрать пункт меню Options/Current DataSet. По- является диалог Current DataSet (рис. 3.2.8), который содержит два поля ввода - DataSet Currently In Use By This Report и DataSet Linked To This Re- port. Поле DataSet Currently In Use By This Report показывает файл данных, который используется в отчете. В поле DataSet Linked То This Report пока- зывается файл, который сохраняется вместе с отчетом. Обычно в обоих по- лях показывается один и тот же файл. Current DataSet DataSetQirMtylnUseByThw Report - ' ___________________ s** I jtt\DOCPAPER\CASE\PAPER1\BffilJwd Рис. 3.2.8. Диалог Current DataSet 263
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Если необходимо временно использовать другой файл данных, следует указать его имя в верхнем поле. Новый файл данных должен иметь те же самые имена колонок, что и старый; типы колонок также должны совпадать. Если имена или типы колонок не совпадают, поля отчета получают имя Bad Formula. Если необходимо изменить файл данных для его постоянного использо- вания в дальнейшем, следует указать его имя в нижнем поле и щелкнуть по кнопке Link. Указанный файл данных (*.LWD) будет связан с текущим файлом шаблона отчета (*.LWR). По умолчанию указывается полное имя файла (путь + имя), которое запоминается в шаблоне отчета. Если не указы- вать путь (кнопка No Path), то шаблон отчета не привязывается к конкрет- ному месту на диске. В этом случае RPTwin сначала ищет файл данных в каталоге по умолчанию (DATASETS), затем в каталоге, в котором содер- жится файл шаблона отчета, затем в текущем каталоге. 3.2.6. Изменение свойств отчета RPTwin позволяет изменять свойства как уже созданного отчета, так и новых отчетов. Свойства существующего отчета редактируются в диало- гах Current Layout и Page Layout. Так, рассматриваемые ниже свойства Show Text Borders, Add Names to New Data Fields, Snap Objects To Grid, Show Grid, Measurement Units, Number Formats и Enable Case Sensitive Sort для уже соз- данного отчета можно изменить в диалоге Current Layout (меню Options /Current Layout). Те же самые свойства для вновь создаваемых отчетов редактируются в диалоге Preferences (рис. 3.2.9). Опция Default Data Format позволяет задать форматирование полей отче- та по умолчанию. Отдельно задается формат для полей разных типов: Datetime, Date, Time, Number, Money. Форматирование каждого поля в уже созданном отчете можно изменить в диалоге Data Field Properties (см. рис. 3.2.4). По умолчанию RPTwin создает многоколонный отчет, разбивая его по ширине, в случае необходимости - на несколько страниц. Если включить опцию Fit All Columns on One Page, то колонки будут сжаты так, чтобы уме- стить отчет по ширине на одной странице. 264
Гпава 3, Создание отчетов по моделям процессов и моделям данных Рис. 3.2.9. Диалог Current DataSet В группе Margins устанавливается ширина поля отчета в сантиметрах или дюймах (Units). Если опция Show Text Borders включена, все текстовые поля отчета за- ключаются в рамки. При включенной опции Add Names to New Data Fields новые поля вно- сятся в отчет вместе с текстовым полем - именем колонки в файле данных. Snap Objects То Grid позволяет жестко связать поля с координатной сеткой. Show Grid - показывает координатную сетку. В группе Number Formats задается формат числовых полей-разде- лители, символ валюты и др. Опция Enable Case Sensitive Sort позволяет учитывать при сортировке различия в регистре. 3.2.7. Создание формул RPTwin RPTwin позволяет преобразовать в формулу любое поле данных. Для этого в диалоге Data Field Properties (см. рис. 3.2.4) следует щелкнуть по кнопке Formula Editor. Возникает диалог Formula Editor (рис. 3.2.10). 265
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite DataSot Cotunra. IAhow D<st Arrow Dost Type Arrow Name Arrow Source Arrow Source Type Functions. ; Ab$(NUMBER?) * Age (DATE?) Avg(NUMBER?) 1 Cos I NUMBER?) f CountO Date и t DateTmeO Puc. 3.2.10. Диалог Formula Editor По умолчанию в верхнем поле диалога (Formula) отображается имя те- кущего поля данных отчета. В это поле следует внести текст создаваемой формулы. В левом списке диалога DataSet Columns содержится список ко- лонок файла данных отчета, в правом (Functions) - список функций RPTwin. В нижнем списке (Operators) содержится список операторов. Для внесения колонки, функции или оператора в текст формулы следует дважды щелк- нуть по соответствующей строчке списка. Группа кнопок Edit облегчает ре- дактирование текста формулы. Текст формулы должен удовлетворять тре- бованиям синтаксиса формул RPTwin. Если формула содержит ошибку, то при закрытии диалога Formula Editor (кнопка ОК) возникнет диалог RPT- win с сообщением об ошибке. Рассмотрим синтаксические правила формул RPTwin. Имена колонок. Имена колонок не должны начинаться с цифры и не должны содержать специальных символов (пробел, символ оператора ит. д.). Имя колонки в примере на рис. 3.2.10 содержит пробел, что является ошибкой. Д ля использования имен колонок, содержащих специальные символы, их следует заключить в фигурные скобки. Имена полей, не содержащие специ- альных символов, можно использовать без скобок. Имя "Arrow Dest. Туре"- неверное, имена "{Arrow Dest. Туре}" и "Name" - не содержат ошибки. Если имя колонки содержит пробелы в начале или конце строки, эти пробелы долж- 266
Гпава 3. Создание отчетов по моделям процессов и моделям данных ны быть заключены в фигурные скобки: "{Name}" (два пробела в начале имени) или" {Name }" (два пробела в конце имени). Операторы. RPTwin поддерживает 3 типа операторов: • арифметические: сложение (+), вычитание (-), умножение (*), деле- ние (/); • текстовый оператор конкатенации (&); • операторы сравнения, используемые в предикате конструкции If (<=, <, =, >=, >); • логические операторы (is in, contains, and, or, not, is null, is not null). Арифметические операторы используются в обычном смысле. В арифме- тических выражениях могут быть использованы круглые скобки, при этом сначала выполняются действия в скобках. Оператор конкатенации позволяет сложить значения текстовых полей. При создании формул, оперирующих с текстом, следует учитывать, что строковые константы заключаются в двойные кавычки. Так, если значение поля Arrow Dest. - "Брак", а поля Arrow Name - "Output", то результатом выполнения формулы "{Arrow Dest.}& " "&{ Arrow Name}" будет "Брак Output”. Типы данных. При выполнении действий над данными необходимо со- блюдать правила соответствия типов. Если создать формулу ""Ar- row" + 1.0", то RPTwin выдаст сообщение об ошибке несоответствия ти- пов - текст не может быть сложен с числом. RPTwin различает 5 типов данных: • Number; • Text; • Date; • Time; • Datetime. Если возвращаемое значение формулы строка, то в некоторых случаях при несоответствии типов RPTwin не выдает ошибки, а конвертирует опе- ранды в соответствующий тип. Например, выражение "3&5" будет выпол- нено без ошибки. Число 3 конвертируется в строку "3", 5 - в "5", результа- том выполнения формулы будет строка "35". 267
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Если возвращаемое значение имеет тип Time, в качестве операнда можно использовать Datetime. Если возвращаемое значение имеет тип Datetime, в качестве операнда можно использовать Time, при этом в качестве даты используется 1 января 0001 года. Арифметические операторы могут использоваться только с числами. Ес- ли возвращаемое значение число, автоматически конвертация типов не производится. Для конвертации типов в этом случае следует явно ис- пользовать функции конвертации (см. табл. 3.2.3). Учитывать типы данных необходимо также, если поля или константы используются в качестве аргументов функций. Список функций с указанием типов аргументов приведен в табл. 3.2.3. 3.2.8. Функции RPTwin Функции RPTwin позволяют производить сложные вычисления и обра- ботку данных отчета. Так же как и операторы, функции возвращают значе- ние определенного типа. Для внесения функции в формулу можно дважды щелкнуть по функции в списке Functions диалога Formula Editor. Агрегативные функции позволяют производить вычисления по несколь- ким строкам отчета. Некоторые функции (Sum, Avg, Min, Max, Count) вы- полняются контекстно, т. е. возвращают результат в зависимости от той сек- ции отчета, в которой находятся. Например, если функция Sum(number) на- ходится в секции Group Footer, она возвращает сумму, вычисленную по группе, если в Page Footer - то по странице. Другие агрегативные функ- ции (GroupAvg GroupSum, GroupMin, GroupMax, GroupCount, ReportAvg, ReportCount, ReportMax, ReportMin, ReportSum) возвращают значение неза- висимо от их расположения в отчете. Даже если функция ReportSum (number) находится в секции Group Footer, она возвращает сумму, вычис- ленную по всему отчету. Агрегативные функции группы, такие, как GroupAvg, вычисляют значения независимо от того, в какой секции текущей группы они расположены. Если такая функция располагается, например, в секции Report Footer, она вычисляет агрегативное значение по всему отчету. RPTwin является двухпроходным (Two-Pass, другой термин-Look- Ahead) генератором отчетов. Это означает, что отчет выполняется в два эта- па. На первом этапе просматриваются все данные и вычисляются значения функций. На втором этапе происходит непосредственно процесс печати или вывода на экран в режиме предварительного просмотра. Поэтому значения агрегативных функций Sum, Avg, Min, Max, Count будут вычисляться оди- наково, независимо от того, расположены ли они в секции Footer или Header. 268
Гпава 3, Создание отчетов по моделям процессов и моделям данных Полный список функций RPTwin приведен в табл. 3.2.3. Таблица 3.2.3. Функции RPTwin Функция Возвращаемое значение Abs(number) Абсолютное значение аргумента Age(date) Полное число лет от даты аргумента до сегодняшнего числа Avg(number) Среднее значение аргумента по строкам (кон- текстно) Cos(number) Косинус аргумента Count() Количество строк (контекстно) Date() Дата выполнения отчета DateTime() Дата и время выполнения отчета DayName(date) Наименование дня даты недели аргумента (по- английски), например "Saturday" DayNameAbr(date) Сокращенное наименование дня недели даты аргумента (по-английски), например "Sat" DayOfMonth(date) Число - день месяца даты аргумента DayOfWeek(date) Число - день недели даты аргумента, например воскресенье - 1, суббота - 7 DayOfYear(date) Число - день года DayBetween(datel, date2) Число - количество дней между двумя датами аргумента GroupAvg(number) Среднее значение аргумента по группе GroupCount(number) Количество строк в группе GroupMax(number) Максимальное значение аргумента по группе GroupMin(number) Минимальное значение аргумента по группе GroupSum(number) Сумма аргумента по группе Hour(time) Часы (0-23) даты аргумента If test Then value [Else value2] Условный оператор. Test - логический предикат, принимающий значение "Истина" или "Ложь". Если Test = "Истина", выполняется выражение valuel, если "Ложь" - value2 InitCap(text) Текст аргумента, все символы которого в нижнем регистре, за исключением первых символов слов, например InitCapf'aRRoW паМе") возвращает "Arrow Name" 269
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Функция Возвращаемое значение Lcase(text) Текст аргумента, все символы которого в нижнем регистре Left(text, number) Первые символы слева от текста первого аргу- мента. Количество символов указывается во втором аргументе LTrim(text) Текст аргумента без символов пробела слева (если таковые имелись) MakeDate(MM,DD,YY) Дата, сгенерированная по трем числам, напри- мер MakeDate(l,!,1999) возвращает ! января 1999 года MakeMoney(number) Тип money, конвертированный из аргумента number MakeTime(HH,MI,SS) Время, сгенерированное по трем числам - часы, минуты, секунды Max(number) Максимальное значение аргумента по строкам (контекстно) Mid(text, number 1, number!) Подстрока первого аргумента, начиная с позиции numberl и включая number! символов Min(number) Минимальное значение аргумента по строкам (контекстно) Minite(time) Количество минут аргумента (0-59) Mod(numberl, number!) Остаток от деления первого аргумента на второй, например Mod(7,3) возвращает 1 Month(date) Порядковый номер месяца даты аргумента (1-1!) MonthName(date) Наименование месяца даты аргумента (по- английски), например "April" MonthN ame Abr(date) Сокращенное наименование месяца даты аргу- мента (по-английски), например "Apr" PageNum() Номер страницы Quarter(date) Квартал даты аргумента (1-4) RecNum() Номер строки отчета Replace(mainText, oldText, newText) Замена символов в строке mainText - старого фрагмента oldText на новый newText ReportAvg(number) Среднее значение аргумента по отчету ReportCount(n umber) Количество строк в отчете 270
Глава 3. Создание отчетов по моделям процессов и моделям данных Функция Возвращаемое значение ReportCumAvg(number) Среднее значение аргумента, вычисляемое контек- стно. Если ReportCumAvg расположена в секции Detail, функция будет возвращать среднее значение аргумента всех вышестоящих строк отчета ReportCumMax(number) Максимальное значение аргумента, вычисляе- мое контекстно. Вычисляется аналогично ReportCumAvg ReportCumMin(number) Минимальное значение аргумента, вычисляемое контекстно. Вычисляется аналогично ReportCumAvg ReportCumSum(number) Сумма аргумента, вычисляемая контекстно. Вычисляется аналогично ReportCumAvg ReportMax(number) Максимальное значение аргумента по отчету ReportMin(number) Минимальное значение аргумента по отчету ReportSum(number) Сумма аргумента по отчету Right(mainText, number) Первые символы справа текста первого аргу- мента. Количество символов указывается во втором аргументе Round(numberToRound, precisionNumber) Округленное значение первого аргумента. Во втором аргументе указывается точность округления, например Round(12345,500) возвращает 12500 RTrim(text) Текст аргумента без символов пробела справа (если таковые имелись) Second(time) Количество секунд аргумента (0-59) Sign(number) 1, если аргумент положительный, 0, если равен нулю, и -1, если аргумент отрицательный Sin(number) Синус аргумента Sum(n umber) Сумма значений аргумента по строкам (контек- стно) Tan(number) Тангенс аргумента Time() Текущее время ToDate(text, format) Дата, конвертированная из текстовой строки. Второй аргумент указывает формат даты ToNumber(text) Число, конвертированное из текстовой строки 271
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Функция Возвращаемое значение ToText(date, format) Текст, конвертированный из даты. Второй аргумент указывает формат даты Trim(text) Текст аргумента без "лишних" символов пробе- ла. Удаляются пробелы перед строкой и после строки аргумента; если пробелов подряд более двух, оставляется только один Trunc(number, precision) Округленный первый аргумент с отбрасыванием остатка. Во втором аргументе указывается точ- ность округления Ucase(text) Текст аргумента, все символы которого в верхнем регистре Week(date) Порядковый номер недели (в году) даты аргу- мента (1-54) Year(date) Год даты аргумента YearsBetween(datel, date2) Количество лет между датами первого и второго аргумента 3.2.9. Использование формул RPTwin Рассмотрим построение отчета RPTwin по модели процессов, изобра- женной на рис. 3.2.11. Модель описывает процесс изготовления изделия и имеет 3 уровня декомпозиции. В ней описаны следующие свойства, опре- деляемые пользователем (UDP): • уровень декомпозиции (Integer List, допустимые значения в модели - О, 1,2); • потребление электроэнергии, кВт-ч (Real Number); • потребление воды, т (Real Number). Контекстной работе ("Изготовление изделия") присвоено значение UDP "Уровень декомпозиции", равное 0, работам на диаграмме декомпозиции контекста - 1 и работам на диаграммах декомпозиции нижнего уровня - 2. Значения свойств "Потребление электроэнергии, кВт-ч" и "Потребление во- ды, т" присвоены только работам на диаграммах декомпозиции нижнего уровня. Создание UDP в BPwin и присвоение значений работам подробно описа- но в 1.3. 272
Гпаеа 3. Создание отчетов по моделям процессов и моделям данных изготовления детали 'Проверка качества полуфабриката 'Переработка полуфабриката в брака •Изготовление полуфабриката Проверка блоков осмотр Окончательная сборка 'Пробное включение Испытание на стенде деталь Рис. 3.2.11. Дерево узлов модели процессов Непосредственно в среде BPwin невозможно оценить количество ресур- сов (электроэнергия и вода), необходимых для производства изделия, по- скольку невозможно производить арифметические операции с UDP. В от- чете Diagram Object Report, фрагмент которого приведен на рис. 3.2.12, можно получить только список работ с указанием их UDP, но невозможно отфильтровать работы и произвести расчеты суммарных значений, необхо- димых для производства изделия ресурсов. Activity Напе Уровень декомпозиции Потребление электроэнергии, кВт-ч Потребление воды, т Изготовление изделия 0 Переработка сырья 1 Сортировка брака 2 5 0 Изготовление полуфабриката 2 40 2 Изготовление деталей 1 Выбор способа изготовления детали 2 1 0 Проверка качества полуфабриката 2 4 0 Переработка полуфабриката в деталь 2 60 6 Сборка изделия 1 Сборка блоков 2 10 1 Рис. 3.2.12. Отчет по UDP (Diagram Object Report), полученный средствами BPwin 273
С. 5. Маклаков. Создание информационных систем с AllFusion Modeling Suite Создать отчет со сложной обработкой данных возможно только средст- вами RPTwin. Для создания такого отчета необходимо в диалоге настройки отчета Diagram Object Report в качестве формата отчета указать RPTwin, по- сле чего щелкнуть по кнопке Report. В появившемся диалоге сохранения файла следует указать имя файла данных отчета (.LWD). После этого авто- матически запускается RPTwin и появляется диалог New Report. В диалоге New Report в качестве типа создаваемого отчета следует указать Columnar. Создается шаблон отчета, включающий в себя все колонки файла набора данных отчета (рис. 3.2.13). 81.i.i.i... 1.1.IL i.i I.i.i.i,Ri.'.1.1...[...bi.I.i.i1.1 — Н»Г|ИИ I Ilf 4llllf _ a: Rd Ресурсы/ необходимые для изготовления изделия __ —Ч Page Heedei & j Activity Name Уровень . . Потребление ... Потребление. . декомпозиции алецгрознерг воды, т им,|£т-ч Report Fooler Рис. 3.2.13. Шаблон отчета "Ресурсы, необходимые для изготовления изделия" Фрагмент отчета (режим предварительного просмотра) представлен на рис. 3.2.14. Ресурсы, необходимые для изготовления изделия 11/202001 Activity Name Уровень Потребление Потребление декомпозиции злектрознерг воды, т ии, кВт-ч Изготовление изделия 0 Переработка сырья 1 Сортировка брака 2 5 0 Изготовление полуфабриката Изготовление деталей 2 40 2 1 Выбор способа изготовления детали 2 1 0 Рис. 3.2.14. Отчет "Ресурсы, необходимые для изготовления изделия" 274
Гпава 3. Создание отчетов по моделям процессов и моделям данных Этот отчет не включает суммирующие данные и несет ту же инфор- мацию, что и отчет на рис. 3.2.12. Для того чтобы он действительно помог анализировать необходимые ресурсы, его следует модифицировать. Поскольку UDP, определяющие потребление ресурсов, заданы только для работ нижнего уровня декомпозиции, можно оставить в отчете только эти работы. Для установки фильтра в среде RPTwin нужно выбрать пункт меню Options/Filter. В диалоге Filter (рис. 3.2.15) следует выбрать опцию Include и щелкнуть по кнопке Formula Editor. Рис. 3.2.15. Диалог Filter В диалоге Formula Editor нужно создать формулу {Уровень декомпозиции}=2 В результате в отчет войдут только работы с уровнем декомпозиции 2, т. е. только те работы, для которых заданы значения UDP "Потребление электроэнергии, кВт-ч" и "Потребление воды, т". Теперь можно удалить из отчета поле и заголовок "Уровень деком- позиции". Сгруппируем работы по уровню энергопотребления. Для этого следует выбрать пункт меню Layout/Sorting and Grouping. Будем считать, что рабо- ты, имеющие значение UDP "Потребление электроэнергии, кВт-ч" больше 10, относятся к высокому уровню энергопотребления, от 5 до 10- к среднему и менее 5 - к низкому. В файле данных отчета нет колонки, не- посредственно указывающей на уровень энергопотребления, поэтому сле- дует провести группировку по вычисляемому значению. Для создания вы- числяемого значения в диалоге Sorting/Grouping следует щелкнуть по кноп- ке Sort/Group on Calculated Value и в появившемся диалоге Formula Editor набрать текст формулы: If (Потребление электроэнергии, кВт-ч} >10 Then "Высокие энерго- затраты" Else If {Потребление электроэнергии, кВт-ч} < 5 Then "Низкие энергозатраты" Else "Средние энергозатраты" В шаблоне отчета создаются две новые секции - Group Header и Group Footer. 275
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В секцию Group Header поместим формулу If {Потребление электроэнергии, кВт-ч} >10 Then "Высокие энергозатраты" Else If {Потребление электроэнергии, кВт-ч} <5 Then "Низкие энергозатраты" Else "Средние энергозатраты" В секцию Group Footer поместим формулы с агрегативными функциями: "Итоговое потребление воды работ с " & (If {Потребление электроэнер- гии, кВт-ч} >10 Then "высоким" Else If {Потребление электроэнергии, кВт-ч} <5 Then "низким" Else "средним") &" энергопотреблением - " sGroupSum ({Потребление воды, т})4", т" И "Итоговое потребление электроэнергии работ с " & (If (Потребление электроэнергии, кВт-ч} >10 Then "высоким" Else If {Потребление элек- троэнергии, кВт-ч} <5 Then "низким" Else "средним") &" энергопотреб- лением - " sGroupSum ({Потребление электроэнергии, кВт-ч})s", кВт-ч" В секции Report Footer расположим формулы "Итоговое потребление электроэнергии " sReportSum ({Потребление электроэнергии, кВт-ч})S", кВт-ч" И "Итоговое потребление воды " SReportSum ({Потребление воды, t))s", т" На рис. 3.2.16 представлен результат - итоговый отчет о потреблении ресур- сов, который содержит суммирующую информацию о UDP и сложную группи- ровку по вычисляемому полю. Суммирующие показатели потребления ресурсов вычисляются как по всему отчету, так и по категориям работ. 11/202001 Ресурсы, необходимые для изготовления изделия______________________________ Имя работы Потребление воды, т Потребление электроэнергии, кВт-ч Высокие энергозатраты_______________ Испытание на стенде 2 40 Изготовление полуфабриката 2 40 Переработка полуфабригата в деталь 6 60 Итоговое потребление электроэнергии работ с высоким энергопотреблением -140, кВт-ч Итоговое потребление воды работ с высоким энергопотреблением* 10, т Низкие энергозатраты________________ Проверка блоков 0 3 Внешний осмотр 0 1 Выбор способа изготовления детали 0 1 Проверка качества полуфабриката 0 4 Итоговое потребление электроэнергии работ с низким энергопотреблением - 9, кВт-ч Итоговое потребление воды работ с низким энергопотреблением О.т Средние энергозатраты_______________ Сборка блоков 1 10 Пробное включение 1 10 Окончательная сборе 1 5 Сортировка брака 0 5 Итоговое потребление электроэнергии работ со средним энергопотреблением- 30. кВт-ч Итоговое потребление воды работ со средним энергопотреблением • 3. т Итоговое потребление электроэнергии 179, кВт-ч Итоговое потребление воды 13, т Рис. 3.2.16. Итоговый отчет о потреблении ресурсов 276
Гпава 3. Создание отчетов по моделям процессов и моделям данных 3.3. Использование Crystal Reports для создания отчетов 3.3.1. Подготовка данных для отчета Crystal Reports (фирма Crystal Decisions, www.crystaldecisions.com) является признанным лидером среди недорогих генераторов отчетов, работающих на платформе Windows. Простота использования и широ- кие функциональные возможности делают этот инструмент очень удоб- ным для создания наглядных высококачественных отчетов, иллюстри- рующих все детали функциональной модели, созданной в BPwin. Crystal Reports позволяет создавать отчеты, используя в качестве источников данных текстовые файлы, настольные базы данных (dBase, Paradox, Ac- cess и др.), реляционные СУБД (Oracle, MS SQLServer, Sybase, Informix и др.) и специальные источники данных, например файловую систему или OLE DB. Однако для создания отчетов на основе данных BPwin удобно использовать следующую схему: • создать в BPwin или в ERwin отчет и экспортировать его по протоколу DDE в MS Excel; • сохранить файл в формате MS Excel; • настроить ODBC-источник для доступа к файлу MS Excel; • использовать полученный ODBC-источник как источник данных в отче- те Crystal Reports. Для создания отчетов об объектах модели данных (ERwin) в диалоге Export from Data Browser (рис. 3.1.12) следует выбрать формат экспорта DDE. Для создания отчета об объектах модели процессов (BPwin) необхо- димо перейти в меню Tools/Reports и выбрать необходимый тип шабло- на, например Arrow Report. Появляется диалог Arrow Report (рис. 3.3.1). Отчет может содержать информацию о стрелках, в том числе информа- цию о ветвях стрелок. Для этого необходимо включить опцию Branch Into. Для экспорта необходимо предварительно запустить MS Excel, за- тем в диалоге настройки отчета включить опцию DDE Table и щелкнуть по кнопке Report. 277
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Arrow Report StandardRaporli --- - RtportFormal -----------3 Delete | Model Деятельность компакт Arrow Report Dictionary IP- Arrow Hame ' Г Dafnbon Г £talut Г" Author Name * -<Г Nflte r Arrow Bunde - ~ — ! ~2P Branchiate . Г firanchFrorp Г" Jared From Г" Jfltredlnto । ( Г Renamed From Г" Returned To ЗоисеЛГеЛ 3P Soures Г Souce Tjpe 4P Damnation Name 5P Dertrralron Type Laixrkrd Г F«ed Column Г Tab DeMed Comma DeMed <F ЦОЕ Table Г fiPTwn MutaVakied Formal r Repeahng Grace Г 0кЙ ' P Header P Merpe P Remove Speed Char UDPFter | Clow ||11 Report | Help | Рис. 3.3.1. Настройки отчета для экспорта в MS Excel Появляется диалог (рис. 3.3.2), в котором необходимо выбрать назначе- ние экспорта - документ Word или книгу Excel. Computer Associates BPwin MS Word-New Excel • [:J Excel * [crptxl$.xla]Sheet1 Excel • [Книга! ]Лист1 Excel - [Книга! ]Лист2 7)K I Cancel Рис. 3.3.2. Настройки экспорта по протоколу DDE После щелчка по кнопке ОК данные передаются в указанную книгу. В среде MS Excel необходимо выделить все ячейки с данными, перейти в меню "Вставка/Имя/Присвоить". В диалог "Присвоение имени" необходи- мо внести имя, которое будет в дальнейшем использоваться в Crystal Re- ports как имя таблицы. Полученный файл MS Excel необходимо сохранить. 278
Гпава 3. Создание отчетов по моделям процессов и моделям данных Затем следует щелкнуть по кнопке Start (Пуск) и выбрать меню Set- tings/Control Panel. В группе Control Panel следует щелкнуть по иконке ODBC Data Sources. В диалоге ODBC Data Sources Administrator (рис. 3.3.4) необходимо создать новый источник данных для доступа к предварительно сохраненному файлу MS Excel. 4ODBC Data Source Administraloi User Ma Sources about how to comedic Рис. 3.3.4. Диалог ODBC Data Sources Administrator dBASEFies Excel Fies testl FoxPro Fies MS Access 97 Database Testi T^xtFfes Visual FoxPro Database Visual FoxPro T abfes Microsoft Excel Driver (e.xls) Microsoft dBase Driver f.dbf) Microsoft Excel Driver Microsoft FoxPro Driver (“.dbf) Microsoft Access Driver (x.mdb) Microsoft Excel Driver f.xls) Microsoft Text Driver (".txt; *.csv) Microsoft Visual FoxPro Driver Microsoft Visual FoxPro Driver Для создания нового ODBC-источника следует щелкнуть по кнопке Add, выбрать в качестве драйвера Microsoft Excel Driver и в диалоге ODBC Microsoft Excel Setup указать имя источника и путь к файлу данных (рис. 3.3.5). 279
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 3.3.5. Диалог ODBC Microsoft Excel Setup 3.3.2. Инструментальная среда Crystal Reports Designer Crystal Reports состоит из нескольких модулей, главный из которых - модуль разработки отчетов Crystal Reports Designer. Он имеет мощную и интуитивно понятную среду разработки. Ниже описана версия Crystal Reports Designer 8.5. На рис. 3.3.6 показано главное окно Crystal Reports Designer. Рис. 3.3.6. Главное окно Crystal Reports Designer Системное меню (Control Menu Box) находится в левом верхнем углу, кнопки Maximize и Minimize - в правом верхнем. В верхней части окна, сра- зу под заголовком, находится главное меню Crystal Reports (Menu Bar). В нижней части окна находится строка состояния (Status Ваг). 280
Гпава 3. Создание отчетов по моделям процессов и моделям данных Кнопки, обозначающие наиболее часто встречающиеся действия, поме- щены на панели инструментов. Всего Crystal Reports имеет 4 панели инст- рументов: главную (рис. 3.3.7), форматирования, вспомогательную и панель инструментов для анализа. Каждую панель можно показать или скрыть с помощью редактора Toolbars (меню View/Toolbars). По умолчанию глав- ная панель инструментов, панель форматирования и панель инструментов для анализа расположены в верхней части окна, вспомогательная панель - в нижней. Каждая панель инструментов может быть перемещена в окне программы методом drag & drop. о»:я мм J ;..» П.. г и ® f a at " Рис. 3.3.7. Главная панель инструментов Crystal Reports Главная панель инструментов имеет следующие кнопки (слева направо): • Создание отчета. • Открытие отчета. • Сохранение отчета. • Печать отчета. • Переход в режим просмотра отчета. • Экспорт отчета. • Обновление отчета. • Вырезка фрагмента текста или объекта отчета. • Копирование фрагмента текста или объекта отчета. • Вставка фрагмента текста или объекта отчета. ' • Отмена действия. • Отказ от отмены действия. • Создание гиперссылки. • Создание поля базы данных. • Создание текстового объекта. • Создание суммирующего поля. • Вызов эксперта создания отчета. • Вызов эксперта форматирования секций отчета. • Выборка данных. • Сортировка данных. 281
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • Создание диаграммы. • Вставка в отчет географической карты. • Поиск в отчете. • Масштабирование отчета. • Вызов контекстной справки. Панель форматирования содержит кнопки форматирования полей отчета и становится доступной, только если фокус установлен на соответствующем объекте отчета. Help - мощное средство поддержки Crystal Reports. Для вызова помощи необходимо перейти в меню Hepl/Contents или нажать клавишу F1 на клавиатуре. Для получения более подробной информации можно вы- брать пункты, выделенные зеленым цветом. Можно также использовать по- иск для получения информации по заданной теме. Контекстную подсказку можно вызвать при нажатии клавиш Shift + Fl. 3.3.3. Создание простых отчетов в среде Crystal Reports Designer Первый шаг создания отчета - щелчок по кнопке (Новый отчет) на панели инструментов. Открывается диалог Report Gallery (рис. 3.3.8). Рис. 3.3.8. Диалог Report Gallery Он предлагает несколько опций для построения нового отчета. Сущест- вует несколько типов сложных отчетов: Form Letter, Form, Cross-Tab, Subreport, Mail Label, Drill Down и OLAP. 282
Гпава 3. Создание отчетов по моделям процессов и моделям данных Рассмотрим стандартный отчет - Standard Report. После щелчка по кноп- ке ОК в диалоге Report Gallery открывается диалог Standard Report Expert (рис. 3.3.9). Рис. 3.3.9. Диалог Standard Report Expert Вкладка Data служит для выбора источника данных для отчета. Щелчок на кнопке Database вызывает диалог Data Explorer (рис. 3.3.10), в котором можно выбрать соответствующую базу данных в качестве источника дан- ных для отчета. Доступ к базе данных может быть осуществлен с помощью ODBC или драйвера прямого доступа. Необходимо в разделе ODBC найти предварительно созданный источник для доступа к файлу данных Excel. Э Data Explorer | ________________________________________________ - j ai iiJHistay »! &И I I a CjODBC I ------------------ Create New Data Source I | | Connect Using Fie Data Source - & bpwin - ^S9S8! - hf iV-rw/1 I • Пйст1 tPrinlTities i .......—........... Стрелки I *f (j BPwri2 Рис. 3.3.10. Диалог выбора базы данных Data Explorer 283
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Кнопка Add позволяет добавить в отчет данные из выбранного источни- ка. После выбора таблиц базы данных можно перейти ко вкладке Fields диа- лога Standard Report Expert (рис. 3.3.11). Data Felds |бгоц>| Total | TopN| Chart | Sdad] Style | Chooia the rfoonabcn to daplv on ths report Select the avalaHe Wds that contan the data you want to report on. Then add them to the Fields to ttsvHi 1st AvaMIe Fields Й Report Fields - f FSCASEttooWesC. IODEC bp» - О Стрелки c®AffowName os Branches Into os» Arrow Soiree ns Arrow Desttt oa Arrow Desttt Type Lil___________________________Li BiswseData. | Fomya. | Fnd Field [ Puc. 3.3.11. Вкладка Fields диалога Standard Report Expert Вкладка Fields позволяет с помощью кнопок Add и Remove включить в отчет необходимые поля предварительно отобранных для отчета таблиц. Щелчок на кнопке Next переключает диалог к следующей вкладке, Group диалога Standard Report Expert (рис. 3.3.12). Data I Fields Сгац> ] Total | TopN] Chat | Select | Style | tj a Report Fields- оз СтрелкиАгкж Name оэ Стрелки. В randies Into oa Стрелки Arrow Source оз СгрелкмАггои Desttt □э СтрелкиАгтош Desttt Type -i • F \CASE4_book\testl (ODBC • (гЦ Стрелки ns Arrow Name оз Branches Into □=» Arrow Source Browse Data I Puc. 3.3.12. Вкладка Group диалога Standard Report Expert 284
Гпава 3. Создание отчетов по моделям процессов и моделям данных Вкладка Chart позволяет включить в отчет диаграммы. Диаграмма в Crystal Reports может быть создана на основе агрегативной или детальной информации, на основе информации из матричных отчетов или OLAP- источников. Вкладка Select диалога Standard Report Expert (рис. 3.3.13) позволяет отобрать данные для отчета. На вкладке можно установить для каждого по- ля логическое условие - предикат. Вкладка Group позволяет сгруппировать данные по какому-либо полю, причем сортировка групп может быть установлена по возрастанию значения поля (числового, строкового или даты), по убыванию или в специальном порядке. Вкладки Total и Top N позволяют более эффективно обрабатывать сгруппированные данные. На вкладке Total можно выбрать поля, по кото- рым в отчете будет проведено агрегатирование данных. Crystal Reports со- держит целый набор агрегативных функций, например суммирование, вы- числение среднего, максимального и минимального значения, подсчет ко- личества записей и т. д. Рис. 3.3.13. Вкладка Select диалога Standard Report Expert Если строка удовлетворяет заданным условиям, она включается в отчет. Предикаты, установленные для различных полей, объединяются логическим "и". Кнопка Browse Data служит для просмотра значений выбранного поля, при- 285
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite чем показываются первые 100 неповторяющихся значений. Поля и списки вы- бора из группы в нижней правой части вкладки контекстные - их тип и количе- ство зависят от типа выбранного поля и условий выборки. Верхний список вы- бора предназначен для задания логического оператора. Содержимое списка за- висит от типа поля (числовое, строковое или дата). Служебное слово not используется для отрицания условия, например условие is not equial включит в отчет строки, значения поля в которых не равны заданному. Допускается использование следующих операторов: • equal to - равенство; применимо для поля любого типа; • one of-равенство любому значению из списка заданных; применимо для поля любого типа; • greater (less) then or equal to - больше (меньше) или равно; применимо для поля любого типа; • between - задает верхнюю и нижнюю границу значений поля; примени- мо для поля любого типа; • starts with — выбирает текстовые поля, начинающиеся с заданного символа; • like - выбор текстового поля по маске; допускаются маски '*' - последо- вательность символов и'?' - один символ; • Formula - установка выборки по формуле; • in the period - применимо для поля типа даты и даты-времени. Вкладка Style диалога Standard Report Expert (рис. 3.3.14) служит для форматирования будущего отчета. Crystal Reports предлагает 10 стилей. Рис. 3.3.14. Вкладка Style диалога Standard Report Expert 286
Гпава 3. Создание отчетов по моделям процессов и моделям данных В дальнейшем форматирование отчета можно изменить. Кнопка в ниж- ней части вкладки позволяет включить в отчет рисунок в формате bmp, на- пример логотип компании. В том случае, если отчет строится более чем по одной таблице, в диалоге Standard Report Expert становится доступной вкладка Links, которая позво- ляет связать данные из разных таблиц. После щелчка на кнопке Finish открывается главное окно Report Designer (рис. 3.3.15), которое содержит две главные вкладки - Design и Preview. Вкладка Preview позволяет не только просмотреть отчет, но и редактировать его с "живыми" данными прямо в режиме просмотра. В окне просмотра можно выполнять многие операции — построение отчета, группировку, сум- мирование и форматирование. Вкладка Design предназначена для редакти- рования шаблона отчета. |R Crystal Reports - (Report!) [J ft ЕЛ f«» 2M»» Report Aiuta* ЧМ» H* Xj D«-89 X me- • • Anib .. МГйвТЗ |тге.н^нпм,чс1^ГЗ'рГ~Э, в jr g [в ж a t г? ? [Ъ »' - I " 'jTc .• ’’ Г, • » U Реирп Fwnw | ‘ 32 xjjJjj Idl JJjj D D D 0 d’ D D 0 0 D D D D D Плиофоэшх прркзвод Зжяка кьзяказ Нежсприюгекохпомн у. Прямых сборкх ж тест _________^tanrJMv ^;Доставжп. кожпомекты ^Control - - Шанировяжже прокис МесЪапвюН . ПреноспКЛкие жифйрж Control..^ . Офорилеииезаказов Coatml\ Пояучжп южпокежты Cdnirolz Отгрузжтжтоверквозв Ьций.-.- : Отгрузить тьварквозв Coattpl < Запрос «формация о а ' ••• <•:>.>'/ • Рнуйвтчтм сборки ж тес Собряюдае компьютеры Сжксокяеобхошсжкхг м^мщии В«сеи» заказа - taptit Вкесешсе заказа , Input Превоетавлакиежяфорж Ispok ИеспеповагаерыВи Отгрузить товяривоте Coatwl laptfi Coafaol т' Рис. 3.3.15. Главное окно Report Designer Рассмотрим, как выглядит отчет на вкладке Design. Большая белая об- ласть в середине вкладки - Edit box - разделена на секции горизонтальными линиями. При добавлении секции в отчет (например, при группировке дан- ных) Crystal Reports автоматически добавляет линию. Серая область слева от Edit box содержит дополнительную информацию, помогающую работать с данными и объектами. Горизонтальные линии продолжаются в серую об- ласть, определяя секции, и Crystal Reports идентифицирует каждую секцию по аббревиатуре или выбранному имени. 287
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Секция заголовка отчета Report Header (RH) изображается единожды в самом начале отчета. Секции Page Header (PH) и Page Footer (PF) показы- ваются на каждой странице и обычно используются для заголовков, нуме- рации страниц и т. д. Секция Detail(D) - это основное содержание отчета. Секция Report Footer (RF) показывается единожды в самом конце отчета. 3.3.4. Внесение в отчет Crystal Reports новых полей Для внесения нового поля в отчет нужно выбрать меню Insert/Database Field или щелкнуть по соответствующей кнопке на панели инструментов. Появляется диалог Field Explorer (рис. 3.3.16), который служит для внесения в отчет полей базы данных, специальных полей, формул и параметров. 83 Field Е xplorct ф-в Database Felds: i H Стрежм Anow Name ; Branches Into -ob> Arrow Source [ «фАлон DestB Anow Destft Type El ! S SQL Expression Fields: Puc. 3.3.16. Диалог Field Explorer Панель инструментов диалога Field Explorer имеет следующие кнопки (слева направо): • Режим внесения выбранного объекта в отчет. • Просмотр содержимого колонки базы данных (первые 100 неповто- ряющихся значений). • Создание объекта. • Редактирование объекта. • Переименование объекта. • Удаление объекта. • Перемещение объекта по списку вверх. • Перемещение объекта по списку вниз. При внесении поля базы данных доступны только первые две кнопки. Для внесения поля в отчет нужно выбрать поле в списке, перейти в режим внесения объекта (левая кнопка на панели инструментов диалога Field Explorer) и щелкнуть на свободной части какой-либо секции отчета. Можно также перенести поле из списка в секцию отчета методом drag & drop. 288
Гпава 3. Создание отчетов по моделям процессов и моделям данных Поля будут размещены в порядке их расположения в диалоге, но не в по- рядке выбора. Размер поля в отчете зависит от размера поля в базе данных. В секцию Page Header одновременно вносится текстовый объект - заголо- вок поля, который представляет собой название колонки в базе данных. Для просмотра полученного отчета на вкладке Preview следует щелкнуть по кнопке (Просмотр) на панели инструментов. Отметим, что Status bar в Preview дает информацию об использованных в отчете данных. Он показывает количество выбранных и общее число прочитанных записей. Crystal Reports позволяет изменить порядок расположения полей отчета. Для этого можно просто перенести поле внутри секции или между секциями методом drag & drop. Можно также сразу перенести группу полей. Для это- го нужно предварительно выбрать их, щелкнув в каждом, одновременно нажимая клавишу Shift или Ctrl. Если создать отчет и затем сохранить или закрыть его, Crystal Reports по умолчанию вместе с ним сохраняет данные. Если после этого открыть от- чет, он будет содержать сохраненные данные. Время и дата последнего об- новления данных будут показаны в правой верхней части вкладки Preview. Для принудительного обновления данных следует выбрать пункт меню Re- port/Refresh Report Data либо нажать клавишу F5. Для форматирования поля служит диалог Format Editor (рис. 3.3.17), ко- торый можно вызвать, щелкнув правой кнопкой мыши по полю и выбрав в контекстном меню пункт Format Field. Вкладки диалога Format Editor по- зволяют задавать свойства полей безусловно (поля выбора) или по условию (кнопки вызова редактора формул справа от каждого условия). Рис. 3.3.17. Диалог Format Editor 289
C, S. Маклаков. Создание информационных систем с AllFusion Modeling Suite Вкладка Common диалога Format Editor содержит следующие опции форматирования: • Keep Object Together - запрет на разрыв объекта при переходе на новую страницу; если эта опция включена, то объект, не умещающийся на текущей странице, будет перенесен на следующую целиком; • Close Border on Page Break - если объект не умещается на текущей стра- нице и переносится на следующую частично (разрывается на две части), каждая часть обрамляется полностью; • Can Grow — возможность печати объекта в несколько строчек; • Tool Tip Text - создание ярлыка объекта (ярлык появляется в режиме просмотра); • Text Rotation - вращение объекта (допускается горизонтальное или вер- тикальное размещение объекта; • Suppress if Duplicated - если значение поля повторяется несколько раз, показывается только первое значение, остальные скрываются. Вкладка Border позволяет создать рамку для объекта. На вкладке Font можно установить размер, стиль и цвет шрифта. Вкладка Paragraph For- mating служит для форматирования текста, если он расположен в несколько строк. С помощью вкладки Hyperlink можно установить гиперссылку на другой объект текущего отчета, Web-сайт, адрес электронной почты или другой отчет. Вставка в отчет текстовых объектов. Для вставки текстового объекта на панели инструментов или выбрать из меню нужно щелкнуть на кнопке Insert/Text Object После этого следует щелкнуть на свободном месте в секции отчета, например Page Header. Разместить текстовый объект можно как в режи- ме Preview Window, так и в режиме Design Window (рис. 3.3.18). % 2 Г3., .4 °.Г ;Отчет по стрелкам \ Рис. 3.3.18. Текстовый объект После размещения текстового объекта Crystal Reports переходит в режим редактирования. При помощи клавиатуры можно набрать текст, а в верхней части экрана появляется окно форматирования текстового объекта. Можно импортировать текст из текстового файла. Для этого в режиме редакти- рования следует щелкнуть правой кнопкой мыши на текстовом объекте 290
Гпава 3. Создание отчетов по моделям процессов и моделям денных и выбрать из контекстного меню Import From File. Поддерживается импорт из файлов формата ASCII, HTML и MS Word. Текстовый объект в Crystal Reports может содержать не только текст, нои поля базы данных, формулы, специальные поля и параметры. Чтобы внести в состав текстового объекта новое поле, нужно сначала создать его в какой-либо секции отчета, а затем, находясь в режиме редактирования, переместить его (drag & drop) внутрь текстового объекта. Вставка в отчет специальных полей. Помимо текстовых полей в отчет могут быть включены специальные поля, которые содержат дополни- тельную информацию, такую, как номер страницы (Page Number), номер записи (Record Number), дата отчета и т. д. Для вставки специального поля необходимо выбрать меню Insert/Special Field. 3.3.5. Группировка записей отчета Crystal Reports По умолчанию записи в отчете располагаются в том порядке, в котором они располагаются в источнике данных (файле Excel). Очень часто требует- ся расположить записи в определенном порядке, например покупателей из одного города расположить вместе. Такая операция называется группиров- кой записей - в одну группу включаются записи с одинаковым значением поля, по которому производится группировка. Сгруппировав записи, можно суммировать данные в каждой группе, например подсчитать общую сумму продаж или количество покупателей в каждом городе. Группу можно доба- вить с помощью вкладки Group диалога Standart Report Expert (см. выше). При создании каждой группы в отчет до- бавляются новые секции - Group header и Group Footer. Можно сгруппировать информацию по полям отчета или даже по полям, которые не входят в отчет. Для вставки группы в уже сущест- вующий отчет следует выбрать пункт меню Insert/Group или щелкнуть на со- ответствующей кнопке в дополнитель- ной панели инструментов. Открывается диалог Insert Group (рис. 3.3.19). Рис. 3.3.19. Диалог Insert Group 291
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Для вставки группы необходимо в верхнем списке выбрать поле для группирования и порядок, в котором группы должны показываться. Напри- мер, для рассматриваемого отчета можно выбрать группировку по полю Ar- row Sourse (рис. 3.3.20). Порядок сортировки групп можно установить во втором списке выбора. | 1 1 1 2 1 • 3 1 • 9 • •10* •11 • I «12- । ИЗ* । «14- t "15‘ •18- । '17* Замена неисправных компонент Починенный компьютер Untitled Object Input Звеюсх кянехтев Заявки на заказ Проверка и внесение кп Input Иссхедовакие рынка Маркетинговые жатерн Прогноз продаж { Border} Планирование прокзво Output Control Отгрузить товар к возврат Возврат постав шику Проданные продукты { Border} { Border} Output Output Оформление заказов Заказы клиентов Планирование прокзво Control Планирование нроизвожства Рис. 3.3.20. Фрагмент отчета, в котором данные сгруппированы по именам работ - источников стрелок Установка опции Keep group together предотвращает разрыв группы на разные страницы. Использование опции Repeat group header on each new page позволяет повторить заголовок группы на каждой странице, если группа располагается на разных страницах. Группы могут располагаться в порядке возрастания - in ascending order (от А до Z и от 1 до 9) и в порядке убывания - in descending order (от Z до А и от 9 до 1). При выборе in original order сортировка групп не производится. Сортировка in specified order позволяет установить группировку по приз- наку, который не хранится в источнике данных. Новая группа автоматически становится внутренней. Если в отчете уже существовала группа, необходимо следить за тем, чтобы логика группи- ровки была правильной. Изменить порядок групп несложно. Для этого, на- ходясь на вкладке Design, нужно переместить методом drag & drop заго- ловки секций групп. Crystal Reports позволяет производить группировку на основе данных, образующих иерархическую рекурсию. Иерархическая рекурсия - это 292
Гпава 3. Создание отчетов по моделям процессов и моделям данных структура данных, в которой таблица ссылается на саму себя. Иерархи- ческая рекурсия представляет собой способ хранения взаимосвязей между объектами, когда они образуют зависимость в виде дерева. Для отчетов, создаваемых на основе данных функциональной модели, такой отчет пред- ставляет наибольший интерес. Действительно, и стрелки и работы образуют деревья - каждая работа может быть декомпозирована на несколько других работ, каждая стрелка может быть разветвлена на несколько других стрелок. Рассмотрим модель IDEFO, показанную на рис. 3.3.21. Стрелка Звонки клиентов разветвляется на стрелки Запрос информации о ценах и Заявки на заказ. В свою очередь, стрелка Заявки на заказ разветвляется на стрелки Заявки на настольные компьютеры и Заявки на ноутбуки. Рис. 3.3.21. Пример диаграммы IDEFO с разветвляющимися стрелками Crystal Reports позволяет создавать древовидный отчет по стрелкам или работам. Рассмотрим создание древовидного отчета по стрелкам. Создадим отчет по стрелкам, как описано в 3.3.1, и включим в него поля Arrow Name и Branch From. Отчет экспортируем в MS Excel и на основе файла данных создадим стандартный отчет, как описано в 3.3.2. Затем необходимо создать группировку по первичному ключу (идентификатору) таблицы (Arrow Name), затем перейти в меню Report/Hierarchical Grouping Options. В отк- рывшемся диалоге Hierarchical Options (рис. 3.3.22) следует включить оп- цию Sort Data Hierarchically и указать родительское поле группировки- Parent ID Field (в примере — Branch From). 293
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Hierarchical Options Puc. 3.3.22. Диалог Hierarchical Options В поле Group Ident указывается смещение вправо группы нижнего уров- ня отчета в сантиметрах. Уровень вложений не ограничен. Результат - отчет по стрелкам с иерархической группировкой показан на рис. 3.3.23. Звонки клиентов Запрос информации о ценах Заявки на заказ Заявки на настольные компьютеры Заявки на ноутбуки Рис. 3.3.23. Пример отчета с иерархической группировкой 294
_________________ Гпава 4___________________ Поиск и исправление ошибок моделирования данных с помощью AllFusion Data Model Validator (ERwin Examiner) 4.1. Ошибки моделирования данных 4.1.1. Принцип работы ERwin Examiner Моделирование данных представляет собой сложную и ответственную задачу, поскольку от качества модели данных зависит в конечном счете эф- фективность и производительность ИС. Создание моделей для крупных ИС вручную уже немыслимо - для этого используют CASE-средства, такие, как ERwin и ему подобные. Однако хотя применение CASE-средств и облегчает техническую работу по созданию моделей, оно не гарантирует от ошибок и неточностей, которые допускаются при моделировании данных достаточно часто, особенно при создании больших моделей. Поиск и исправление таких ошибок без применения специализированных средств по трудуемкости мо- жет превосходить создание самой модели, поскольку придется анализиро- вать модель, содержащую тысячи таблиц и десятки тысяч колонок и связей. Для автоматизированного поиска и исправления ошибок предназначен инструмент, входящий в пакет AllFusion - AllFusion Data Model Validator (ERwin Examiner). ERwin Examiner позволяет автоматически анализировать структуру баз данных с целью выявления недочетов и ошибок проектирова- ния. Принципиальная схема работы ERwin Examiner показана на рис. 4.1.1. Рис. 4.1.1. Принципиальная схема работы ERwin Examiner ЛИД/ЮГТПИФИ 295
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite ERwin Examiner может использовать в качестве источника метаданных готовую модель данных ERwin, скрипт проекта Oracle Designer, DDL- скрипт или провести обратное проектирование базы данных. ERwin Examiner проводит диагностику импортированной структуры данных и предлагает рекомендации по ее исправлению. Кроме того, ERwin Examiner ге- нерирует скрипт, позволяющий исправить некоторые типы ошибок. Рассмотрим ошибки и недочеты моделирования данных, которые позво- ляет диагностировать ERwin Examiner. Частично такие ошибки - ошибки нормализации, и методы их исправле- ния были рассмотрены в гл. 2. Ниже будут рассмотрены ошибки моделиро- вания колонок, индексов и связей. 4.1.2. Ошибки и недостатки моделирования колонок Противоречивое определение типа. Название колонки встречается в различных таблицах, но при этом колонки (или их синонимы) имеют раз- ные определения. Это может привести к сохранению неверных данных. Рас- смотрим пример на рис. 4.1.2. СОТРУДНИК________________ Номер_Сотрудника: CHAR08) Фамилия: VARCHAR2(2O) Имя: VARCHAR2(20) Отчество: CHAR(18) Номердорода: VARCHAR2(20) город_________________ Номер_города: NUMBER Название: VARCHAR2(20) Рис. 4.1.2. Пример противоречивого определения типа колонок Здесь колонки СОТРУДНИК.Номер_города и ГОРОД.Номер_города имеют одинаковое наименование, но разное определение типов - var- char2(20) и number; следовательно, колонки СОТРУДНИК.Номер_города и ГОРОД.Номер_города могут иметь разные наборы данных. Если не пред- принимать специальных мер, это может привести к потере ссылочной цело- стности, например внесение сотрудника из несуществующего города. Противоречивое определение групп колонок. Группа колонок, нару- шающих первую нормальную форму, имеет противоречивое взаимное оп- ределение (рис. 4.1.3). заказ__________ Номер_заказа: NUMBER Оплата!: NUMBER Оплата2: VARCHAR2(20) ОплатаЗ: NUMBER Рис. 4.1.3. Пример противоречивого определения группы колонок 296
Гпава 4. Поиск и исправление ошибок моделирования данных Если уж в модели имеются группы колонок, нарушающие первую нор- мальную форму, то по крайней мере все колонки группы должны иметь одинаковое определение типа. Так, в примере на рис. 4.1.3 имеется груп- па колонок Otuiamal, ОплатаЗ, ОплатаЗ, причем тип колонки 0плата2 (varchar2(20) отличается от типа колонок Otuiamal, ОплатаЗ (number). Для исправления этой ошибки следует привести тип колонки ОплатаЗ в соот- ветствие с типом других колонок группы. Таблицы с неуникальнными именами. Имя таблицы должно быть уникально в модели. Для исправления ошибки необходимо удалить или пе- реименовать одну из таблиц. Таблица не имеет колонок. Таблица должна иметь хотя бы одну колонку. Для колонки типа VARCHAR не определена длина (для СУБД Ora- cle). При генерации схемы СУБД Oracle не позволит создать такую колонку. Длина имени поля больше, чем допускает СУБД. Противоречивое значение по умолчанию. Значение колонки по умол- чанию конфликтует с типом данных колонки или со значением, определен- ном в ограничении CHECK. Возможна также ситуация, когда значение ко- лонки по умолчанию конфликтует с ограничением CHECK или с определе- нием данных. Колонки, которые представляют одни и те же данные, должны иметь те же самые типы данных. КЛИЕНТ__________________ Номер клианта: VARCHAR(5) ЗАКАЗ_________________ Номер.заказа: CHAR(5) Номор.клиента: CHAR(5) Рис. 4.1.4. Пример нечеткого определения типов колонок В примере на рис. 4.1.4 колонки КЛИЕНТ.Номер_клиента и ЗА- КАЗ. Номерклиента имеют разные типы (CHAR и VARCHAR). Хотя такое несоответствие не приведет к потере ссылочной целостности, как в примере на рис. 4.1.2, колонки должны быть приведены к одинаковому типу. Имена колонок совпадают с резервированными словами ANSI SQL. Это может привести к конфликтам при генерации схемы СУБД. Такие ко- лонки должны быть переименованы. 297
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 4.1.3. Ошибки и недостатки моделирования индексов и ограничений Колонки потенциальных ключей допускают значение NULL. По- скольку каждый экземпляр сущности должен однозначно идентифициро- ваться, не допускается значение NULL для первичных и альтернативных ключей. Аномалии в определении индексов. Исправление этого типа ошибки приводит к увеличению производительности ИС. Этот тип ошибок может включать следующие 3 разновидности: 1. Индекс функционально эквивалентен первичному ключу. Неуни- кальный индекс эквивалентен первичному ключу (содержит те же самые колонки, но в другом порядке). В этом случае либо первичный ключ не га- рантирует уникальности строки, либо индекс объявлен как уникальный, что, возможно, не нужно. Поскольку первичный ключ уникален, любая перестановка колонок ключа должна быть уникальна, поэтому индекс, функционально эквива- лентный первичному ключу, должен быть уникален и, вероятно, не нужен, либо первичный ключ определен на колонках, которые не обеспечивают уникальности строки. Рассмотрим пример. create table РЕЙС ( Аэропорт_Вылета varchar2 (3) not null, Аэропорт_Прибытия varchar2 (3) not null, Номер_Рейса number not null, Время_Прибытия number (6,2) ) ; alter table РЕЙС add constraint PK_ РЕЙС primary key (Аэропорт_Вылета, Аэропорт_Прибытия, Номер_Рейса) ; create index NDX_ РЕЙС on РЕЙС (Аэропорт_Прибытия, Аэропорт_Вьшета, Номер_Рейса); Если сочетание колонок, входящих в первичный ключ (Аэро- порт_Вылета, Аэропорт_Прибытия, Номер Рейса) уникально, то и со- четание Аэропорт_Прибытия, Аэропорт_Вылета, Номер_Рейса должно быть уникально. Для того чтобы найти такую ошибку, нужно убедиться, что колонки, .входящие в первичный ключ, действительно обеспечивают уникальность строки. Если это так, то индекс должен быть уникальным. 298
Гпава 4. Поиск и исправление ошибок моделирования данных Если индекс создан для того, чтобы извлекать строки в определенном порядке, возможно, он содержит больше колонок, чем нужно. Если в при- мере нужно извлекать строки, отсортированные по колонке Аэро- портПрибытия, колонки АэропортВылета и Номер_Рейса в индексе NDX_ РЕЙС лишние. Если первичный ключ не обеспечивает уникальности сроки таблицы, не- обходимо пересмотреть колонки-кандидаты на первичный ключ и допол- нить первичный ключ так, чтобы он обеспечивал уникальность. 2. Индекс содержит супернабор первичного ключа (т. е. имеет все ко- лонки первичного ключа и по крайней мере еще одну колонку), но при этом не является уникальным. Так как первичный ключ уникален, любой супер- набор должен быть также уникален. Либо индекс должен быть сделан уни- кальным, либо в действительности первичный ключ не обеспечивает уни- кальности и должен быть пересмотрен. Рассмотрим пример. create table ЗАКАЗ ( Номер_3аказа number not null, Дата_3аказа date not null ) ; alter table ЗАКАЗ add constraint PK_3AKA3 primary key (Номер_3аказа); create index NDX_3AKA3 on ЗАКАЗ (Дата_3аказа, Номер_3аказа); Если Номер_3аказа уникален, то сочетание колонок ДатаЗаказа, Но- .мерЗаказа тоже должно быть уникально. Для того чтобы обнаружить та- кую ошибку, нужно убедиться, что колонки, входящие в первичный ключ, действительно обеспечивают уникальность строки. Если это так, то индекс должен быть сделан уникальным. Возможно, такой индекс создан для сор- тировки строк по колонке Дата_3аказа. В этом случае колонка Но- мер_3аказа должна быть удалена из индекса. Если же индекс создан для сортировки по дате заказа, а затем по номеру, то он построен правильно. Если индекс создан для обеспечения уникальности, то он должен' быть уда- лен, поскольку первичный ключ уже обеспечивает уникальность. Если первичный ключ не обеспечивает уникальности, необходимо пере- смотреть состав первичного ключа. 3. Индекс содержит супернабор другого уникального индекса (т. е. имеет все колонки уникального индекса и по крайней мере еще одну колон- 299
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite ку) или ограничения. Этот индекс должен быть уникальным и должен быть переопределен как уникальный. Рассмотрим пример. create table КЛИЕНТ ( Номер_Клиента number not null primary key, Имя_Клиента varchar2 (80), Город_Клиента varchar2 (80) ); create unique index NDX_KHHEHT_01 on КЛИЕНТ (Имя_Клиента); create index ЫОХ_КЛИЕНТ_02 on КЛИЕНТ (Город_Клиента, Имя_Клиента); Если Имя_Клиента уникально, то сочетание Город-Клиента, ИмяКлиента тоже должно быть уникально. Индекс NDX_KJIHEHT_02 должен быть переопределен как уникальный. Неверно определенный альтернативный ключ. Таблица имеет сурро- гатный ключ (т. е. ключ, который не имеет соответствия в предметной об- ласти, например порядковый номер последовательности). В этом случае це- лесообразно создать альтернативный ключ (см. гл. 2). СОТРУДНИК Номер Сотрудника Фамилия Имя Отчество Дата Рождения СОТРУДНИК___________ Номер Сотрудника Фамилия (АК1.1) Имя(АК1.2) Отчество (АК1.3) Дата Рождения (АК1.4) Рис. 4.1.5. Определение альтернативного ключа В примере на рис. 4.1.5 левая таблица СОТРУДНИК имеет суррогатный ключ Номер_Сотрудника, но не имеет альтернативного ключа. Это может привести к внесению имени одного и того же человека с разными номерами. Для исключения такой ситуации целесообразно создать альтернативный ключ на колонках Фамилия, Имя, Отчество, Дата_рождения (рис. 4.1.5, справа). ERwin сгенерирует на основе альтернативного ключа уникальных индекс, см. гл. 2. Различные определения ограничения CHECK. Одни и те же колонки, описанные в двух или более таблицах, имеют различные ограничения CHECK. Это может привести к неверному выполнению запросов, особенно при выполнении операции объединения (join). Если колонка имеет ограни- чения CHECK в одной таблице, аналогичные колонки в других таблицах должны иметь те же самые ограничения. 300
Гпава 4. Поиск и исправление ошибок моделирования данных Таблицы не имеют потенциальные ключей (первичный ключ, уни- кальное ограничение или уникальный индекс), гарантирующих уникаль- ность строки. Это может привести к неправильному выполнению запросов. Каждая таблица должна иметь либо первичный ключ, либо уникальный ин- декс, либо уникальное ограничение. Если потенциального ключа нет, СУБД не в состоянии проверить в момент вставки записи, бдола ли внесена такая же строка с теми же значениями колонок ранее. Если таблица не используется для специальных целей, например для тес- тирования или временного хранения отчетов, для нее должен быть создан первичный ключ. Таблицы, не имеющие кластеризованных индексов. Кластеризован- ные индексы существенно повышают производительность при выборке данных. Во многих случаях целесообразно создавать первичные ключи и уникальные индексы как кластеризованные. Однако нужно помнить, что при интенсивной вставке данных наличие кластеризованного индекса может привести к падению производительности. Первичный ключ, имеющий колонку типа действительного числа. Обычно колонки такого типа не применяются в составе первичного ключа, за исключением специальных случаев, например приложений, работающих с графикой. Ненужные ограничения CHECK. Ограничения CHECK считаются не- нужными, если они либо проверяют только одно условие в логическом "или" либо проверяют внешний ключ в дочерней таблице вместо того, что- бы проверять первичный ключ в родительской. Рассмотрим пример проверки только одного условия в логическом "или". CHECK (Статус IN ('РАЗРЕШИТЬ')) Если во всех строках таблицы колонка Статус принимает только одно значение - 'РАЗРЕШИТЬ', то либо такая колонка не нужна и ее следует уда- лить вместе с ограничением CHECK, либо в действительности колонка Статус может принимать и другие значения и ограничение CHECK нужно переопределить. Другой пример: create table КАТЕГОРИЯ (Категория varchar2 (12) not null primary key); create table КЛИЕНТ ( Номер_Клиента number not null primary key, 301
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Имя_Клиента varchar2 (80), Категория varchar2 (12) not null constraint УАЬЮ_Категория check (Категория in ('Обычный', 'Постоянный', 'VIP')) ) ; Предположим, из таблицы КАТЕГОРИЯ удаляется строка, например значение 'Обычный'. Цри этом в таблице КЛИЕНТ строки с таким значени- ем остаются. Для обеспечения целостности данных при каждом редактиро- вании таблицы КАТЕГОРИЯ придется редактировать множество строк таб- лицы КЛИЕНТ и менять ограничение VALID Категория. Поэтому ограни- чение VALID Категория в дочерней таблице на колонку КЛИЕНТ.Кате- гория должно быть удалено и аналогичное ограничение должно быть создано в родительской таблице КАТЕГОРИЯ.Категория. Ненужные индексы. Ненужные индексы приводят к падению произво- дительности ИС и должны быть удалены. Индекс, построенный на колонке (или группе колонок), принимающей только одно значение. Такой индекс не будет эффективен ни при выборке (будут извлекаться все строки таблицы), ни при сортировке и должен быть удален. Индекс, колонки которого целиком включены в другой индекс. Рас- смотрим пример, create table ЗАКАЗ ( Номер_3аказа number not null primary key, Номер_Клиента number not null, Дата_3аказа date not null ) ; create unique index NDX_3AKA3_01 on ЗАКАЗ (Номер_Клиента, Дата_3аказа) ; create index NDX_3AKA3_02 on ЗАКАЗ (Номер_Клиента); Если строка идентифицируется по индексу NDX_3AKA3_01, то она идентифицируется и по индексу NDX_3AKA3_02\ следовательно, индекс NDX_3AKA3_Q2 должен быть удален (если только он не используется для специальных целей). Индекс, колонки которого целиком включены в первичный ключ, дол- жен быть удален по тем же самым причинам, что и индекс, колонки которо- го целиком включены в другой индекс (если только он не используется для специальных целей). 302
Гпава 4. Поиск и исправление ошибок моделирования данных Ненужный внешний ключ. В примере на рис. 4.1.6 ссылочная целост- ность поддерживается связями R1 и R2, связь R3 должна быть удалена. Рис. 4.1.6. Ненужный внешний ключ Отсутствие индексов. Рассмотрим пример на рис. 4.1.7. Таблицы ЗА- КАЗ и КЛИЕНТ денормализованы (см. гл. 2). Таблица КЛИЕНТ связана с таблицей ЗАКАЗ по колонке Номер_Клиента. Если в таблице ЗАКАЗ на колонке Номер_Клиента не будет создан индекс, то при удалении стро- ки в таблице КЛИЕНТ для обеспечения ссылочной целостности СУБД бу- дет проверять наличие строк в таблице ЗАКАЗ с соответствующим значени- ем поля ЗАКАЗ.Номер_Клиента. Если по этому полю не построен индекс, производительность системы может резко упасть. ЗАКАЗ_________ Номер_3аказа Номер-Клиента Дата.ЭаКаза Имя_Клиента КЛИЕНТ__________ Номер-Клиента Номер.Города Имя_Клиента Название_Города ГОРОД___________ Номер_Города Название-Город а Рис. 4.1.7. Отсутствие индексов на внешних ключах С другой стороны, если данные в родительской таблице меняются редко (например, в таблице ГОРОД), отсутствие индекса на внешнем ключе (КЛИЕНТ.Номер_Города) допустимо. Таблицы со слишком большим количеством индексов. Большое ко- личество индексов замедляет операции вставки и обновления (insert и upda- te). Конкретное число индексов, которое допустимо для данной таблицы, зависит от многих параметров и должно определяться автором модели. Индексы со слишком большим количеством колонок. Такие индексы замедляют операции вставки (update). Допустимое число колонок в индексе также должно определяться автором модели. 303
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Длина индекса слишком большая. Максимальная общая длина коло- нок, входящих в индекс, превосходит значение, заранее заданное пользова- телем ERwin Examiner. Слишком большая длина индекса может привести к его недопустимому размеру. Длина первичного ключа слишком большая. Максимальная общая длина колонок, входящих в первичный ключ, превосходит значение, заранее заданное пользователем ERwin Examiner. Первичные ключи со слишком большим количеством колонок. Та- кие ключи замедляют операции вставки (update) и выборки (select) с объ- единением таблиц. В этом случае целесообразно заменить естественный первичный ключ на суррогатный как показано на рис. 4.1.8 и 4.1.9. СЧЕТ________ Номер_Счета Сумма.Счета КАССОВАЯ_МАЩИНА Номер Машины I ТРАНЗАКЦИЯ Номер_Машины Номер_Кливнта Номер_Счета Дата Траизакцик КЛИЕНТ________ Номер-Клиента Имя_Клиенга Рис. 4.1.8. Первичный ключ со слишком большим количеством колонок КАССОВАЯ-МАШИНА Рис. 4.1.9. Суррогатный первичный ключ Уникальный индекс, эквивалентный первичному ключу, т. е. вклю- чает те же колонки, что и первичный ключ, но в другом порядке. Если этот индекс создавался для обеспечения уникальности строки, то он должен быть удален, поскольку первичный ключ уже гарантирует уникальность. Если та- кой индекс создавался для доступа к определенной строке или группе строк или для сортировки строк, он должен быть модифицирован. Весьма вероят- но, что из такого индекса можно исключить колонки. Это не только повы- сит производительность при выборке данных, но и сэкономит дисковое пространство. 304
Гпава 4. Поиск и исправление ошибок моделирования данных Таблица не имеет связей. Иногда таблица без связей создается умыш- ленно, например служебные таблицы или специальные справочники. Но ес- ли такие таблицы отражают предметную область, они должны быть тща- тельно проанализированы. В примере на рис. 4.1.10 таблицы КЛИЕНТ и ЗАКАЗ не связаны, но такая связь предполагается по полям КЛИЕНТ.Но- мерклиента и ЗАКАЗ.Клиент. Это ошибка, и она должна быть исправле- на - должна быть установлена связь между КЛИЕНТ и ЗАКАЗ. КЛИЕНТ________________ Номер.клиента: NUMBER ЗАКАЗ________________ Номер_заказа: CHAR(5) Клиент: NUMBER Рис. 4.1.10. Таблицы без связей Альтернативные ключи с колонками, допускающими значения NULL. Согласно реляционной теории потенциальные ключи не должны со- держать колонок, допускающих значения NULL, поэтому альтернативные и первичные ключи не должны иметь таких колонок. Конфликт правила ссылочной целостности Delete Cascade/Restrict. Рассмотрим пример на рис. 4.1.11. КЛИЕНТ________ Номер клиента ЗАКАЗ_________ Номер.заказа Номер клиента ПОЭИЦИЯ_ЭАКАЗА Номер.Позиции Номер.заказа Номвр клиента Рис. 4.1.11. Конфликт правила ссылочной целостности Delete Cascade/Restrict В модели созданы два внешних ключа: FKl: Parent КЛИЕНТ Child ЗАКАЗ (Cascade) FK2: Parent ЗАКАЗ Child ПОЗИЦИЯ_ЗАКАЗА (Restrict) Тогда при удалении строки из таблицы КЛИЕНТ будет сделана попытка удаления всех соответствующих строк из таблицы ЗАКАЗ, в то же время из таблицы ЗАКАЗ нельзя будет удалить строку, если ей соответствует хотя бы одна строка в таблице ПОЗИЦИЯ_ЗАКАЗА. Неверный тип колонок, входящих в индекс. В индекс не могут вхо- дить колонки типов BLOB, IMAGE, МЕМО и т. д. 4.1.4. Ошибки и недостатки моделирования связей Некорректная иерархическая рекурсивная связь. Иерархическая ре- курсивная связь была рассмотрена в гл. 2. Возьмем пример. 305
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite create table СОТРУДНИК ( Номер_Сотрудника number not null primary key, Имя_Сотрудника varchar2 (80), Номер_Руководителя number not null ) ; Здесь информация о руководителе сотрудника хранится в той же табли- це СОТРУДНИК, что и информация о сотруднике. При помощи иерархиче- ской рекурсии строится пирамида подчиненности сотрудников, и у этой пи- рамиды должна быть вершина, т. е. должен найтись сотрудник, у которого нет руководителя. В примере такую пирамиду построить нельзя, поскольку колонка НомерРуководителя имеет признак not null. Для исправления ошибки необходимо допустить для колонки Номер_Руководителя значения NULL. Неопределенные связи. Колонки в различных таблицах имеют одина- ковое имя и определения, но таблицы не связаны друг с другом. Такие таб- лицы должны быть тщательно изучены, и, если бизнес-правила требуют ус- тановить связь между такими таблицами, она должна быть создана. Ошибка внешнего ключа. В модели ERwin на логическом уровне ат- рибут внешнего ключа помечен как Logical Only (см. 2.2.2). В этом случае внешний ключ генерироваться не будет. Для исправления ошибки опция Logical Only должна быть выключена. Бесконечные циклы. Рассмотрим пример на рис. 4.1.12. Предположим, для всех внешних ключей модели установлено правило Delete Cascade. Рис. 4.1.12. Бесконечный цикл Тогда, если удаляется строка из таблицы Таблица !, должны удаляться все соответствующие строки из таблицы Таблица_2, при удалении строки из Таблица_2 удаляются все соответствующие строки из ТаблицаЗ, при удалении строки из Таблица_3 удаляются все соответствующие строки из Таблица ! и так до бесконечности. Попытка удаления лишь одной стро- ки из любой таблицы может привести к уничтожению всей информации, хранящейся в базе данных. 306
Гпава 4. Поиск и исправление ошибок моделирования данных Взаимно пересекающиеся связи. Рассмотрим пример на рис. 4.1.13. Рис. 4.1.13. Взаимно пересекающиеся связи Предположим, в таблицах нет ни одной строки. Нужно выполнить ко- манду вставки Insert into ЗАКАЗ (Номер_3аказа, Номер_Счета) values (1,1) При вставке строки в таблице ЗАКАЗ СУБД проверит, имеется ли соот- ветствующая строка в таблице СЧЕТ (со значением Номер_Счета=1). Но соответствующую строку в таблицу СЧЕТ вставить нельзя, поскольку не существует соответствующей строки в таблице ЗАКАЗ. В результате ни в одну из двух таблиц невозможно вставить данные. Множественные пути. Рассмотрим пример на рис. 4.1.14. КЛИЕНТ_______ ЗАКАЗ________________ ПОЗИЦИЯ.ЗАКАЗА Номер_клиента1_____< Номер_заказа________« Нои^ама"^"" Г Номер-Клиента | ноМар1клианта ~ Рис. 4.1.14. Множественные пути Таблица КЛИЕНТ связана с таблицей ПОЗИЦИЯ_ЗАКАЗА как непосредст- венно, так и через таблицу ЗАКАЗ. Хотя структура данных на рис. 4.1.14 не мо- жет считаться нормализованной, такие связи не обязательно являются ошибкой. Если необходимо получить позиции заказа данного клиента, в запросе не нужно связывать таблицу ЗАКАЗ, что существенно сократит время выполнения запро- са. С другой стороны, поскольку таблицы ЗАКАЗ и ПОЗИЦИЯ ЗАКАЗА не связаны по колонке Номер_клиента, возможна ситуация, когда в строках, соответствующих одному и тому же заказу в таблицах ЗАКАЗ и ПОЗИ- ЦИЯ^ЗАКАЗА, будут внесены различные значения колонки Номер клиента, что является нарушением ссылочной целостности. 4.2. Поиск и исправление ошибок при помощи ERwin Examiner 4.2.1 Интерфейс ERwin Examiner Интерфейс ERwin Examiner достаточно прост и интуитивно понятен. Ра- бочее пространство содержит два окна (рис. 4.2.1). Правое окно служит для 307
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite визуального отображения модели данных, левое содержит три вкладки, две из них (Relationships и Tables) показывают иерархический список объектов модели, третья (Diagnostics) показывает список ошибок моделирования. Подробнее вкладки будут рассмотрены ниже. В верхней части рабочего пространства располагается панель управления. Назначение кнопок панели управления показано в табл. 4.2.1. С Computer Associates International ERwin Examiner - DEMO4O ИЕЕЗ "* Edt yrw Ц>«ГНг«п TujL Fjennrti ч.пШи fdt D|Gg|H|a| t-leKI^.1 T|*e?| И “и DEMO4°n2) i - И Д ITEM-HISTORY ф И Ц ORDERJTEM ’ У’-.J.1-:’. J ' “--Tlt'lff Kaww fbT.VjDEMOiO1 •’ Рис. 4.2.1. Рабочее пространство ERwin Examiner Таблица 4.2.1. Панель инструментов ERwin Examiner Кнопки Назначение Создание, открытие и сохранение проекта ERwin Examiner a Печать проекта или модели "Вырезать" данные в клипборд HJ Копировать данные в клипборд в Вставить данные из клипборда 308
Гпава 4. Поиск и исправление ошибок моделирования данных Кнопки Назначение $ Обновление модели Переключение правого окна рабочего пространства на просмотр модели Переключение правого окна рабочего пространства на просмотр таблиц Возвращение к предыдущему режиму просмотра Переключение между режимами просмотра "на полный экран" и обычным Увеличение масштаба просмотра <3^ Уменьшение масштаба просмотра 4.2.1. Создание проекта ERwin Examiner Для создания нового проекта следует щелкнуть по кнопке создания про- екта на панели инструментов или выбрать пункт меню File/New. Появляется диалог Select Project Туре (рис. 4.2.2). Рис. 4.2.2. Диалог Select Project Type В диалоге Select Project Туре можно выбрать источник метаданных бу- дущего проекта. Как было указано выше, в ERwin Examiner можно исполь- зовать 4 источника метаданных: 1. Системный каталог СУБД. 2. Модель ERwin 4.1. 3. Скрипт проекта Oracle Designer. 4. DDL-скрипт. ERwin Examiner поддерживает работу со следующими СУБД: 309
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • ORACLE 7, 8i и 9i; • DB2 Mainframe DB2 UDB версий 4, 5, 6 и 7; • DB2 Client/Server DB2 UDB версий 5, 6 и 7; • Microsoft SQL Server версий 6, 7 и 2000 ; • Sybase версий 11 и 12. Это означает, в частности, что в качестве источника можно использовать только модели ERwin 4.1, на физическом уровне которых в качестве сервера указана одна из перечисленных СУБД. Обратное проектирование из сис- темного каталога или DDL-скрипта возможно тоже только из этих СУБД. После выбора модели данных появляется диалог Select Tables for Model (рис. 4.2.3), в котором можно отобрать таблицы источника для включения в проект ERwin Examiner. Рис. 4.2.3. Диалог Select Tables for Model После импорта модели во вкладках Tables и Relationships отображаются объекты модели. Вкладка Tables содержит иерархический список (рис. 4.2.3), первый уровень которого содержит список открытых в ERwin Examiner моделей, второй- список таблиц, остальные - список колонок и первичных ключей. Кнопка i сле- ва от имени колонки вызывает диалог с подробной информацией об объекте. 310
Гпава 4. Поиск и исправление ошибок моделирования данных Hf!JBOEM040(12) (- jig COUNTRY ’ аДсоктовР) ’ afl COUNTRYJD ай COUNTRY-NAME afl LANGUAGE i S PKs. Unique Constants (1) Й И f XPKCOUNTRYfl) ' • Щ COUNTRYJD > — SrtT . <г.ч Ш11 Tri*.. j^Retoacrahc. j О Оцуюйс» Рис. 4.2.3. Вкладка Tables ERwin Examiner Вкладка Relationships содержит информацию о связях (рис. 4.2.4). Пер- вый уровень списка на вкладке Tables содержит список моделей, второй - список таблиц, третий - список связей "один ко многим" (Parent to Child), четвертый - список ключей и связей нижнего уровня. jg^BDEMO4O(15) (Parent to CNd) И И ^COUNTRY [21 CUSTOMER.NBR 1 Ф- • йН 3Uh CUST0MERA)RDER-ITEM Э PK.CUSTOMER (1) i i j --м___________ : Й ImpfedFKtl)] И fl CUSTOMER.NBR 1 Й Я 3j| CUSTOMER/ORDER_TBL ш Рис. 4.2.4. Вкладка Relationships Вкладка Diagnostics содержит информацию об ошибках и недостатках модели данных (рис. 4.2.5). Подробное описание ошибки можно получить, щелкнув левой кнопкой мыши по кнопке i слева от имени ошибки. 311
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite + iXJ Inconsistent Oe/nbon (2) i Я Sff COMPANY-NAME Й : := agjjqa>)(i) । 1Д CUSTOMER : i MffiHzsin) i i»i ;jg Д CUSTOMER.NBR Й $-j| Group with Inconsistent Definition (1) i-H -^^^VARCHAR Column with No Length (1) :il ill ф Data Name Corfjcfrio with ANSI SOL Keeworis 141 i Я Щ Inconsistent Default V^ue|1) i+ fl Indexes and Constraints (26) Й+- -tj Normabation(12) i Is- W Relationships fl 51 1+1 111 Incorrect Recursive Relationship (1) si iU NcnenlorceaUe Relationship (8) tuj Tables j Mm TMahomhps Q ‘ Oiagnostrcs Puc. 4.2.5. Вкладка Diagnostics Ошибки объединены в 4 категории. В первую категорию (Columns) вхо- дят ошибки проектирования колонок. Вторая категория объединяет ошибки проектирования индексов и огра- ничений (Indexes and Constraints). Третья категория объединяет ошибки нормализации (Normalization). На- ходятся некорректно определенные функциональные зависимости и ошибки первой, второй и третьей нормальной формы. В четвертую категорию входят ошибки связей (Relationships). ERwin Examiner находит все ошибки, рассмотренные в 4.1, причем су- ществует возможность настройки диагностики. Настройка диагностики по- зволяет включить в анализ или исключить из анализа те или иные ошибки. Так, например, при проверке структуры хранилищ данных проверку норма- лизации можно отключить. Для задания параметров настройки следует пе- рейти в меню Tools/Preferences. Появляется диалог User Preferences. Вкладка Diagnostic Setting (рис. 4.2.6) содержит помимо общих опций диагностики кнопку Select Individual Diagnostics. Щелчок по этой кнопке вызывает диа- лог Diagnostic Messages (рис. 4.2.7). 312
Гпава 4. Поиск и исправление ошибок моделирования данных Рис. 4.2.6. Диалог User Preferences Диалог Diagnostic Messages содержит 4 вкладки, соответствующие четы- рем категориям ошибок. На каждой вкладке содержится список диагности- руемых ERwin Examiner ошибок и окна выбора, позволяющие отключить распознавание той или иной ошибки при диагностике. Рис. 4.2.7. Диалог Diagnostic Messages 313
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В правом окне ERwin Examiner отображаются отчеты, в том числе отчет об ошибках модели или графическое представление модели (рис. 4.2.8). MANAGER ГО REGION Puc. 4.2.8. Графическое представление модели в ERwin Examiner EMPLOYEE EMPLOYEE.ID ¥2(8) EMPLOYEE. NAME ¥2(30) EMPLOYEE.ADDRESS ¥2(30) BANKJD BRANCHJO ACCOUNT# DATE_HlRED STATE JO REGIONJD COUNTRYJD REGION J4AME FROM ¥2(3) ¥2(3) ¥2(1CI DATE 0 ¥2(10) *2(6) ¥2(2) ¥2(4) ¥2(3) ¥2(44) V2f2) 0 V2I2J 0 По умолчанию связи таблиц показываются в нетрадиционном синтакси- се - в виде ссылок (рис. 4.2.8), однако существует возможность представле- ния связей в более привычном стиле - в виде линий. Ссылки на диаграмме ._==:вЯяййи1служат для навигации - щелчок по ссылке переключает окно на дочёрнюю или родительскую таблицу. Диаграмма таблиц весьма инфор- мативна - в графическом виде показываются не только таблицы и колонки, но и ограничения, индексы, найденные ошибки. Кнопка ™ вызывает диа- лог Diagnostics (рис. 4.2.9), в котором показываются ошибки модели, свя- занные с таблицей. Из контекстного меню (Legend) можно легко вызвать справку по системе обозначений диаграммы (рис. 4.2.10). 314
Гпава 4. Поиск и исправление ошибок моделирования данных EMPLOYEE-ID ¥2(9) EMPLOYEE-NAME У2(ЭО) EMPLOYEE-ADDRESS V2(30) BANKJD ¥2(3) BRANCH.» V2P) ACCOUNT# ¥2(10) DATE.HtRED DATE & Q LAST.UPDATE ¥2(10) % MANAGER.» ¥2(9) nites tot EMPLOYEE [“ ИНемлини) •«5 itInconed Fcndicnal Dependency (1) -|lj fflASr.UPOATE(2)| Ii ij И EMPLOYEE L l| IT™ e * II (Jj) IncofedRecuniveRMMnnsNpn) + II Mndng Index (1) Й & -U 1псвшйИп10в1«ЖУе1и»П) Puc. 4.2.9. Диалог Diagnostics Puc. 4.2.10. Справка no системе обозначений ERwin Examiner Результатом диагностики ошибок может стать отчет или SQL-скрипт, корректирующий ошибки моделирования. Для создания текстового файла скрипта необходимо перейти в меню File/SQL Generation/New File. Ниже приведен фрагмент корректирующего кода, сгенерированного для Oracle. — Corrective Oracle SQL Scripts for model: DEMO40 — Including implied foreign keys. —Wed Nov 27 20:15:50 2002 — Create secondary index in table EMPLOYEE — to achieve better performance in joins with EMPLOYEE CREATE INDEX IX1EMPLOYEE_EMPLOYEE ON EMPLOYEE ( MANAGER_ID ) ; - - Create secondary index in table ORDER_ITEM - - to achieve better performance in joins with ITEM CREATE INDEX IX1ORDER_ITEM_ITEM ON ORDER_ITEM ( ITEM_ID ) ; 315
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite - - Create secondary index in table SALESMAN - - to achieve better performance in joins with STATE CREATE INDEX IX1SALESMAN-STATE ON SALESMAN ( STATE_ID, COUNTRY-ID ); — Create secondary index in table ORDER-ITEM — to achieve better performance in joins with CUSTOMER CREATE INDEX IX1ORDER_ITEM_CUSTOMER ON ORDER-ITEM ( CUSTOMER_NBR ); — Create secondary index in table SALESMAN - - to achieve better performance in joins with EMPLOYEE CREATE INDEX 1X1 SALESMAN-EMPLOYEE ON SALESMAN ( EMPLOYEE-ID ) ; - - Create secondary index in table INVOICE - - to achieve better performance in joins with ORDER—TBL CREATE INDEX IX1INVOICE_ORDER_TBL ON INVOICE ( ORDER—NBR ) ; - - Create secondary index in table CUSTOMER - - to achieve better performance in joins with REGION CREATE INDEX IX1CUSTOMER_REGION ON CUSTOMER ( STATE_ID, REGION_ID, COUNTRY-ID ); — Create secondary index in table ORDER—TBL — to achieve better performance in joins with SALESMAN CREATE INDEX IX10RDER_TBL_SALESMAN ON ORDER—TBL ( SALESMAN-ID ) ; Ключевой возможностью ERwin Examiner является обучение моделиро- ванию данных. При вызове описания ошибки (кнопка i слева от имени ошибки во вкладке Diagnostics) появляется диалог с описанием ошибки, со- держащий кнопку Teach Me (рис. 4.2.11). 316
Гпава 4. Поиск и исправление ошибок моделирования данных Inconsistent Definition A column name occurs in different tables and one or more occurrences of it (or its synonyms) has a different data definition. This could lead to invalid data. Examiner assumes the database was created with die columns declared with the same name in every table in which they are defined. So whenever Examiner finds two columns with the same name it assumes they represent the same domain (unless they are qualified as homonyms). Any discrepancies among the columns will be reported. Example create table STATE ( STATE_ID number Puc. 4.2.11. Диалог с описанием ошибки и окно со справкой Щелчок по этой кнопке вызывает справку по данной проблеме, включая примеры и описание путей решения проблемы (рис. 4.2.11). Следовательно, пользователи ERwin Examiner обучаются в первую очередь тем темам, ко- торые они плохо знают. Помимо выявления ошибок, ERwin Examiner позволяет также сравни- вать модели данных и объединять DDL-скрипты. Для работы с большими моделями предусмотрена удобная навигация по модели и работа с подмоде- лями, причем диагностика может быть проведена в рамках отдельной под- модели. Для сравнения моделей следует перейти в меню File/Compare. Появляет- ся диалог Select Models То Compare (рис. 4.2.12). Кнопка Open позволяет выбрать модель для включения в список Open Models в верхней части диа- лога. Кнопка Select предназначена для выбора пары моделей для сравнения. Щелчок по кнопке ОК вызывает диалог Model Comparison (рис. 4.2.13). 317
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 4.2.12. Диалог Select Models То Compare Рис. 4.2.13. Диалог Model Comparison Диалог Model Comparison содержит два окна, каждое из которых ото- бражает иерархический список объектов сравниваемых моделей (таблицы и колонки отображаются в разных вкладках). Включение опции Show Dif- ferences Only позволяет отобразить только различия между моделями. 318
______________________Гпава 5_____________________________ Связывание модели процессов и модели данных 5.1. Модель данных и ее соответствие модели процессов После разработки модели данных ее следует связать с моделью процес- сов. Такая связь гарантирует завершенность анализа, гарантирует, что есть источник данных (сущность) для всех потребностей данных (работа). Связи объектов способствуют согласованности, корректности и завершенности анализа. Стрелки в модели процессов (BPwin) обозначают некоторую информа- цию, используемую в моделируемой системе. В ERwin на логическом уров- не модели данных информация отображается в виде сущностей (соответст- вуют таблицам на физическом уровне), состоящих из атрибутов сущностей (соответствуют колонкам таблицы). Сущности состоят из совокупности отдельных записей - экземпляров сущностей (соответствуют записям в таблице). К модели данных предъяв- ляются определенные требования (нормализация данных), которые призва- ны обеспечить компактность и непротиворечивость хранения данных. Ос- новная идея нормализации данных - каждый факт должен храниться водном месте. Это приводит к тому, что информация, которая модели- руется в виде одной стрелки в модели процессов, может содержаться в не- скольких сущностях и атрибутах в модели данных. Кроме того, на диаграм- ме модели процессов могут присутствовать различные стрелки, изображаю- щие одни и те же данные, но на разных этапах обработки (например, необ- работанные детали - обработанные детали - собранное изделие). Информа- ция о таких стрелках находится в одних и тех же сущностях. Следовательно, одной и той же стрелке в модели процессов могут соответствовать несколь- ко сущностей в модели данных и, наоборот, одной сущности может соот- ветствовать несколько стрелок. Стрелке в модели процессов может соответствовать отдельная сущность в модели данных. Так, стрелке Части на рис. 5.1.1 соответствует сущность Часть, стрелке Конечные продукты - сущность Продукт. zin^iormnon 319
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Информация о стрелке может содержаться только в нескольких атрибу- тах сущности. Разным атрибутам одной и той же сущности могут соответ- ствовать разные стрелки. На рис. 5.1.2 стрелка Новая часть соответствует атрибутам Номер части и Название части, стрелка Наличное количест- во - атрибуту Количество. Рис. 5.1.1. Преобразование стрелки в сущность Рис. 5.1.2. Преобразование стрелки в атрибут Работы в модели процессов могут создавать или изменять данные, кото- рые соответствуют входящим или выходящим стрелкам. Они могут воздей- ствовать как целиком на сущности (создавая или модифицируя экземпляры сущности, рис. 5.1.3), так и на отдельные атрибуты сущности (рис. 5.1.4). Часть Номер части название части Вес части Количество Рис. 5.1.3. Воздействие работы на сущность 320
Гпаев 5. Связывание модели процессов и модели данных BPwin позволяет связывать элементы модели данных, созданной с по- мощью ERwin, документировать влияние работ на данные и тем самым по- зволяет создать спецификации на права доступа к данным для каждого про- цесса (см. ниже). ВСТАВЛЯЕТ Новая часть Часть Номер части Название: масти Количество ОБНОВЛЯЕТ Наличное количество ,------------* Служащий Рис. 5.1.4. Воздействие работы на атрибуты 5.2. Экспорт данных из ERwin в BPwin и связывание объектов модели данных со стрелками и работами Первым шагом связывания модели данных и модели процессов является экспорт данных из ERwin в BPwin. Для успешного связывания моделей не- обходимо, чтобы версии ERwin в BPwin соответствовали друг другу. Ниже рассмотрен экспорт и импорт моделей в ERwin 4.1 и BPwin 4.1. Существует два способа связывания объектов модели данных и модели процессов: 1. Экспорт и импорт через файлы формата .ЕАХ - .ВРХ. « 2. Синхронизация моделей, хранящихся в репозитории ModelMart. Рассмотрим первый способ связывания моделей. Для экспорта модели данных из ERwin в BPwin необходимо в ERwin от- крыть модель (рис. 5.2.1) и выбрать пункт меню File/Export/BPwin. В появи- вшемся диалоге Select BPwin Export File необходимо выбрать каталог, ука- зать имя создаваемого файла экспорта *.еах и нажать ОК. 321
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite ^Computer Associates ERwtn (POOD FBI* : <Main Subject Area> / Display I) BRO £« W ftpm ' *r .Igixl ;овн j |LOgic»i j |j« wnr in jiooo.x ZS T'ijAriai Jio .-d"»-'/ ||f ива Праду»______________ Номер продукта Табельный номер (FK) Название продукта Вес продукта Количество Часть_______________ Номер части Табельный номер (FK) Название части Вес части Количество Служащий_______ Табельный номер Фамилия Рис. 5.2.1. Модель данных, открытая в ERwin 4.1 Затем в BPwin нужно открыть модель процессов, выбрать в меню пункт File/Import/ERwin (ЕАХ), в диалоге Open выбрать имя файла (*.еах) и на- жать ОК. Появится диалог Import Differences Preview, в котором показыва- ется протокол импорта (рис. 5.2.2). Для внесения данных в модель процес- сов следует щелкнуть по кнопке Accept. Кнопка Cancel отменяет импорт. Import Differences Pi "''•faBimrT№in ImportMfeencM * » Л • ...... ’*“• »— tRwi"n 1WDRI DUHHINCLS HFPURl"»-»' ‘ Added NEU t-NHIY EM Added *№W FHHIY Продуй: Added Ifv EHIIIV Mdcib Added EHTI1Y СлушЫ ADDED ATTRIBUTE: Нойер части To Entity: E/4 added AITRIBUTE: Номер продукта To Entity: EM ADDED ATTRIBUTE: TaaertbMWi иомер 10 Entity: EM ADDED Al TRIBUTE: Номер продукта * lo Entity: Продукт ADDED ATTRIBUTE: ТааельныА номер To Entity: Продук: | ~ Accept | Caned | flap - J Puc. 5.2.2. Диалог Import Differences Preview 322
Гпава 5. Связывание модели процессов и модели данных После внесения данных в модель процессов можно связать сущности и атрибуты со стрелками. Правой кнопкой мыши нужно щелкнуть по стрел- ке и выбрать в контекстном меню Arrow Data. Появляется вкладка Arrow Data диалога Arrow Properties (рис. 5.2.3). Рис. 5.2.3. Вкладка Arrow Data диалога Arrow Property Для связывания атрибута со стрелкой достаточно щелкнуть по иконке выбора О в иерархическом списке атрибутов. При этом сущность автома- тически связывается со стрелкой. Каждая стрелка в модели процессов мо- жет быть связана с несколькими атрибутами различных сущностей. Кнопка Copy In позволяет копировать связанные данные из другой стрелки. Кнопка Clear - все связи стрелки с данными. Кнопка Migrate вызывает диалог Changes to Arrow Data Associations, в котором отображаются данные, мигрирующие от дочерних к родитель- ским стрелкам (для разветвляющихся и сливающихся стрелок). При мигра- ции возможны изменения связывания данных: • Deletions - если данные связаны с родительской стрелкой, но не связаны с дочерней, связи с родительской стрелкой удаляются; • Additions - если данные связаны с дочерней стрелкой и не связаны с ро- дительской, добавляется связь с родительской стрелкой. 323
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Для подтверждения изменений в диалоге Changes to Arrow Data Associa- tions следует щелкнуть по кнопке ОК. Миграция возможна только в моделях IDEF0 и DFD. Как было указано выше, работы могут воздействовать на данные. Для документирования такого воздействия необходимо щелкнуть правой кноп- кой мыши по работе и выбрать пункт меню Data Usage Editor (рис. 5.2.4). Рис. 5.2.4. Диалог BPwin Data Usage Editor В появившемся диалоге Data Usage Editor в виде иерархического списка показываются все работы модели, стрелки, которые касаются работ, сущно- сти и атрибуты, которые были связаны со стрелками. В верхнем списке нужно щелкнуть по имени стрелки, с которой были связаны сущности и атрибуты. Для задания ассоциации достаточно щелкнуть по окну П в иерархическом списке. Для сущностей задается ассоциация CRUD (Create, Read, Update, Delete), для атрибутов - IRUN (Insert, Read, Update, Nullify). Ассоциации CRUD и IRUN - это правила использования сущностей и атрибутов работами, т. е. то, что могут делать работы с входящими или исходящими данными. Данные не могут использоваться работами произвольно. Стрелки входа представляют данные, которые работа преобразует в выход или потребляет. Такие данные могут быть обновлены (Update) или прочитаны (Read), но не могут быть созданы (Create, Insert) или удалены (Delete, Nullify). Дан- 324
Гпава 5. Связывание модели процессов и модели данных ные, связанные со стрелками управления, могут быть только прочитаны (Read), но не могут быть изменены - процедуры и стратегии не могут изме- няться в работе. Данные, связанные со стрелками выхода, могут быть об- новлены (если им соответствуют данные стрелок входа), удалены (Delete, Nullify) или созданы (Create, Insert). Для стрелок механизма ассоциации не устанавливаются. Результат связывания объектов модели процессов можно отобразить в отчете Data Usage Report (меню Tools/Reports/Data Usage Report). Ниже приведен пример такого отчета. Arrow Name Entity Name C _R _U _D Attribute Name I _R_ U_ N Детали Часть U D Вес части U N U D Количество U N U D Название части и U D Номер части U 5.3. Создание сущностей и атрибутов BPwin и их экспорт в ERwin Если в процессе связывания стрелок с объектами модели данных ока- жется, что каких-либо сущностей или атрибутов не хватает, их можно доба- вить прямо в BPwin, а затем экспортировать в ERwin. Для редактирования сущностей следует выбрать пункт меню Dictionary/Entity. Появляется диалог Entity Dictionary (рис. 5.3.1) - словарь сущностей. Интерфейс словаря сущностей полностью аналогичен интерфей- су словаря стрелок, описанному в 1.2. Для экспорта в ERwin в словаре Entity Dictionary следует создать новую сущность, которая может быть использо- вана для ассоциации со стрелками сразу же после создания (до экспорта в ERwin). Рис. 5.3.1. Диалог Entity Dictionary Для редактирования атрибутов предварительно созданных сущностей служит словарь атрибутов (пункт меню Dictionary/Entity/Attribute). 325
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Колонка Entity диалога Attribute Dictionary служит для связывания соз- данного атрибута с сущностью (рис. 5.3.2). В раскрывающемся списке, ко- торый появляется, когда фокус установлен на поле Entity таблицы, показы- ваются только те сущности, которые созданы в диалоге Entity Dictionary или импортированы из ERwin. Rm* "•nun- ' Рис. 5.3.2. Диалог Attribute Dictionary После описания сущностей или атрибутов следует сохранить данные и выйти из словаря. Для экспорта данных в BPwin следует выбрать меню File/Export/ERwin4.1 (ВРХ) и указать файл, в который будет "выгружена" информация о модели. В ERwin следует выбрать меню File/Import/BPwin и в диалоге ERwin Open File указать файл ВРХ, в который была "выгружена" информация о модели. Возникает диалог ERwin/BPwin Import (рис. 5.3.3), в котором отобра- жаются: • сущности и атрибуты, имеющиеся в ВРХ-файле, но отсутствующие в модели ERwin (верхнее окно - Entities/Attributes available to be impelled); • имена работ, ассоциированных с сущностями и атрибутами, на основе кото- рых будут созданы предметные области (Subject Area) модели данных. 326
Гпава 5. Связывание модели процессов и модели данных FRwin/RPwin Import Entoes/Attabutes Mfabte to be «ported = 0D HJjjP Eo Фамилия И а Имя И И Мрос AcMtw to be nported a* Subject Атом. ’ И® Двягельмость компами Рис. 5.3.3. Диалог ERwin/BPwin Import В примере на рис. 5.3.3 сущность Клиент, атрибуты Фамилия, Имя и Адрес будут импортированы из ВРХ-файла в модель ERwin. После щелчка по кнопке Import запускается процесс импорта ВРХ- файла. Импортированная сущность (на рис. 5.3.4-сущность Клиент) раз- мещается в левом верхнем углу диаграммы ERwin. Она не имеет первичного ключа и не связана с другими сущностями. Назначение атрибутов первич- ным ключом и связывание сущностей можно провести только средствами ERwin; другими словами, сущности и атрибуты, созданные в BPwin и затем импортированные в ERwin, можно рассматривать как заготовку для созда- ния полноценной модели данных, а не как готовую модель. Рис. 5.3.4. Модель данных после импорта сущности "Клиент" 327
_________________ Гпава 6___________________ Групповая разработка моделей данных и моделей процессов с помощью AllFusion Model Manager (ModelMart) 6.1. Принцип работы ModelMart ModelMart представляет собой среду групповой разработки крупных проектов, которая интегрирует инструментальные средства системных ана- литиков и разработчиков баз данных. ModelMart реализован на архитектуре клиент-сервер. Общая схема работы показана на рис. 6.1. - Объекты библиотеки Рис. 6.1.1. Общая схема работы ModelMart В качестве платформы реализации хранилища могут быть использованы реляционные СУБД Sybase (System 11.x, 12), Microsoft SQL Server (6.x, 7.x, 2000), Informix (v. 7.x, 9.x) и Oracle (8.x, 8i, 9i). Клиентскими приложениями являются ERwin и BPwin. Хранилище разделено логически на библиотеки (Library). Каждая библиотека может содержать целиком модели BPwin и ERwin, а также фрагменты модели ERwin (объекты уровня библиотеки, рис. 6.1.1). ModelMart предоставляет администратору хорошие возможности раз- граничения доступа, в том числе разграничение доступа на уровне библио- тек (см. 6.3). /ЗГИЛОГ/ИИФП 328
Гпава 6, Гоупповая разработка моделей данных и моделей процессов Кроме моделей ModelMart сохраняет в биб- лиотеках автоматически создаваемые версии (Version-полные копии моделей ERwin и BPwin, которые используются для отслежи- вания изменений в моделях при групповой ра- боте и возможности отказа от изменений) и отмеченные версии (Marked Version- вре- менные версии модели, создаваемые и име- нуемые пользователем вручную). Отмеченные версии могут быть созданы проектировщиком или администратором ModelMart на любом этапе разработки ИС. Создание версий будет рассмотрено в 6.4. Механизм создания версий показан на рис. 6.1.2, где: Рис. 6.1.2 Механизм создания версий 1. Пользователь создает модель и записывает ее в хранилище. Версий не создается. 2. Пользователь извлекает модель, редактирует ее и возвращает в храни- лище. При этом автоматически в хранилище создается версия модели. 3. Пользователь создает в хранилище отмеченную версию на основе вер- сии, созданной автоматически. Такой механизм позволяет эффективно контролировать изменения мо- дели, сравнивать версии и извлекать из хранилища любую версию так же, как и модель. Как было указано выше, ModelMart создан в архитектуре клиент-сервер. Это, в частности, означает, что при созданий и редактировании модели кли- ентское приложение генерирует SQL-скрипт, который выполняется на сер- вере. Поскольку ModelMart поддерживает несколько типов СУБД, скрипт создается с учетом специфики каждой СУБД. Однако перед генерацией спе- цифического SQL-скрипта ModelMart создает набор команд на языке, не зависящем от СУБД. Этот набор команд пользователь может просмот- реть и выполнить при помощи соответствующего редактора. 6.2. Инсталляция ModelMart Установка ModelMart может вызвать затруднения у неподготовленного пользователя, поэтому при инсталляции необходимо точно придерживаться инструкций, изложенных в документации ("Administrator's Guide"). В каче- стве примера рассмотрим установку ModelMart на СУБД Oracle. 329
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Перед инсталляцией ModelMart необходимо убедиться, что установлены и правильно функционируют серверная и коммуникационная части СУБД Oracle. Для установки ModelMart требуется: • 50 Мбайт дискового пространства и 64 Мбайт RAM на сервере (для СУБД Informix требуется 128 Мбайт); • минимум 60 Мбайт дискового пространства и 64 Мбайт на рабочей станции. Затем следует создать в Oracle объекты физической памяти для Model- Mart. Эту работу удобней сделать при помощи ERwin (см. гл. 2). Необходи- мы следующие подготовительные операции: • Проверить системное табличное пространство (SYSTEM TABLESPA- CE). Оно должно быть не менее 16 Мбайт, рекомендуется 32 Мбайт. • Создать табличное пространство для таблиц и индексов ModelMart. Ми- нимальный размер табличного пространства составляет 28 Мбайт для таблиц и 16 Мбайт для индексов. Для больших моделей рекомендуется выделить не менее 232 Мбайт для таблиц и 139 Мбайт для индексов. Для создания табличного пространства можно воспользоваться средствами ERwin (диалог ORACLE Tablespace Editor, рис. 6.2.1). • Создать роль. Создать роль и предоставить ей привилегии можно при помощи утилиты SQL*Plus, выполнив команды CREATE ROLE MMU- SER и GRANT CREATE SESSION TO MMUSER. Рис. 6.2.1. Создание табличного пространства для ModelMart в диалоге ORACLE Tablespace Editor 330
Гпава 6. Гоупповая рвзработка моделей данных и моделей процессов После этого можно запустить программу инсталляции. После заверше- ния инсталляции запускается программа инициализации ModelMart, которая и создает необходимые объекты в системном каталоге СУБД. В процессе инициализации появляется диалог ModelMart Connection Manager, в кото- ром следует указать имя пользователя и пароль. Затем появляется диалог ModelMart Manager. Диалог ModelMart Manager появляется также, если до инсталляции на сервере уже была установлена предыдущая версия ModelMart. В нем следует указать табличное пространство для таблиц и ин- дексов и затем щелкнуть по кнопке Create или Convert. После окончания процесса инициализации можно приступать к созданию пользователей ModelMart. iModelMail Manage! ModtHatRole [dH 2 letfeldblespece JMuDELMART [MoMMart V« 302] 2 Puc. 6.2.2. Диалог ModelMart Manager 6.3. Администрирование ModelMart Одной из проблем, возникающих при многопользовательской работе с моделями, является разграничение прав доступа. Для управления правами доступа в состав ModelMart включена утилита ModelMart Security Manager. Вызов этой утилиты может быть осуществлен непосредственно из среды ERwin или BPwin. Как ERwin, так и BPwin имеют специальную дополни- тельную панель инструментов для работы с ModelMart, которая подключа- ется, если щелкнуть по кнопке в основной панели инструментов. По умолчанию сеанс связи с ModelMart устанавливается при каждом за- пуске ERwin и BPwin. Однако если эта опция выключена, для начала работы 331
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite необходимо установить сеанс связи с ModelMart, нажав кнопку ^21 из дополнительной панели инструментов ModelMart среды ERwin или BPwin. Затем в появившемся диалоге ModelMart Connection Manager следу- ет набрать имя и пароль пользователя. После успешного входа становится доступной кнопка которая вызывает диалог Security Manager (рис. 6.3.1). ModelMart Security Manager Qbied ToaaqyiorfeMftgiauMf toasecuntyprofte dag from theujar kttotheprofitebt T о dear an assyimeri drag hom the prdie M back to the user fist Рис. 6.3.1. ModelMart Security Manager - диалог формирования групп пользователей В верхней части диалога Security Manager расположен иерархический список объектов хранилища, в нижней - список пользователей СУБД (User) и группы пользователей ModelMart (Security Profile). Для создания привиле- гий для пользователя следует щелкнуть по объекту (например, MODEL- MART) в верхнем списке диалога Security Manager и включить пользовате- лей в ту или иную группу на уровне выбранного объекта. На рис. 6.3.1 показано, что пользователь SYSTEM внесен в группу Administrator, пользователь SCOTT - в группу Guest на уровне хранилища (MODELMART). Права каждой группы задаются в диалоге ModelMart Security Profile Manager (рис. 6.3.2). Этот диалог вызывается кнопкой Profile диалога ModelMart Security Manager. В верхней части диалога показываются группы пользователей, в нижней - права выбранной группы на тот или иной объект модели. 332
Гпава 6. Гоупповая разработка моделей данных и моделей процессов Рис. 6.3.2. ModelMart Security Profile Manager - диалог задания прав группам пользователей Поскольку ModelMart является специализированным хранилищем моде- лей, помимо разграничения прав доступа на уровне модели возможно регу- лирование прав на уровне отдельных ее элементов. В случае работы с моде- лями данных ERwin можно также задать права на создание, редактирование и удаление для предметных областей (Subject Area) и отдельных сущностей. Щелчок по кнопке ОК диалога ModelMart Security Manager приведет к внесению изменений в хранилище. 6.4. Использование хранилища ModelMart Если пользователь имеет соответствующие привилегии, он может соз- 0 дать библиотеку моделей ModelMart, нажав кнопку . Возникает диалог ModelMart Library Manager (рис. 6.4.1), в котором можно создать, удалить либо обновить библиотеку. В состав библиотеки могут входить как модели процессов или модели данных, так и отдельные подмножества моделей дан- ных ERwin. 333
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite ModelMart I ibrary Manager fjame (MODELMART pBale атиДшйн a MODELMART -------- a I—REMOVES В**,, I H* I I V** ' | Puc. 6.4.1. Диалог ModelMart Library Manager Принцип логического разделения хранилища на библиотеки является весьма полезным при работе с большим количеством моделей, поскольку можно формировать библиотеки готовых решений (как для моделей про- цессов, так и для моделей данных) и добавлять в новый проект модели- блоки из заранее сформированных библиотек. Для сохранения модели и извлечения ее из хранилища в ModelMart слу- жат кнопки I . Сохранить модель можно только в составе какой-либо библиотеки. При открытии модели возникает диалог Open ModelMart Model (рис. 6.4.2), в котором можно указать опции блокировки модели. Open ModelMart Model ModeWart Model ФАссоипЬпд Customer Ф Employee Movie MoeteWatLbav. Unlocked Read'Or^i _ Cancel | EMQVIES* ’ lC'’' b */**"* м t Created by User SYSTEM on 19*30 30 ноября 2002 г Last Updated by User SYSTEM on 2025 30 ноября 2002 г ЕлЙег 22 Objects 754 H* Рис. 6.4.2. Диалог Open ModelMart Model Открытие модели в режиме Read Only означает, что измененную модель нельзя будет сохранить в репозитории. В режиме Locked модель блокирует- ся и другие пользователи не смогут изменить модель. В режиме Unlocked все пользователи могут открыть и изменить модель. При попытке сохранить 334
Гпава 6, Гэупповая разработка моделей данных и моделей процессов модель, измененную и сохраненную другим пользователем во время сеанса работы, возникает диалог Intelligent Conflict Resolution, показывающий раз- личия текущей и имеющейся в репозитории моделей. Открытую модель можно перевести в режим Locked, нажав кнопку Ml Подмножество модели данных (Subject Area) можно создать непосредст- венно из среды ModelMart. Диалог создания подмножества модели ModelMart Subject Area Manager вызывается кнопкой -Ж (рис. 6.4.3). В верхней части диалога расположен иерархический список библиотек моделей; в нижних окнах показываются сущности, входящие в выбранное подмножество модели (справа), и сущности модели, которые могут быть включены в подмножество (слева). Кнопки Create SA, Rename SA и Delete SA позволяют создать, переименовать и удалить подмножество модели. MtxfaMatthanwPBgam/Sdytd Aiea ^MODELMART MODELMART (MfaEMOVIES —ffiAccounbng —^ИИИЯЙ —-^Employee I— 6 CHECK Q CREDIT CARD Q CUSTOMER-INVOICE e EMPLOYEE e E-PAYMENT a MOVIE e MOVIE COPY e MOVIE-STORE e OVERDUE-NOTICE 0 CUSTOMER e CUSTOMER CREDIT e MOVIE RENTAL RECORD e PAYMENT a PAYMENT To мф an erifr Io а «Оде ana (Mg hcni fa dMum Ы to Ita fatted sea kit TocImcaft'en8yd»gftomewiubiedare*tobae|iettw4earam<*tj>'’ i Рис. 6.4.3. Диалог ModelMart Subject Area Manager Кнопка вызывает диалог Reverse Engineer ModelMart Merge Manager (рис. 6.4.4), который служит для слияния моделей ERwin (слияние моделей BPwin невозможно). В зависимости от настройки слияние может быть про- ведено в одну из существующих диаграмм либо во вновь создаваемую диа- грамму. На первом окне диалога Reverse Engineer ModelMart Merge Manager следует указать вторую диаграмму для слияния (она может быть взята из файла ERwin или из хранилища ModelMart) и опции слияния. Щелчок по кнопке Next вызывает диалог Update Model, на нескольких экранах кото- рого последовательно можно выбрать объекты модели для слияния. 335
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. 6.4.4. Диалог Reverse Engineer ModelMart Merge Manager На рис. 6.4.5 показан пример слияния моделей. КЛИЕНТ Номер клиента Фамилия Адрес Имя Отчество Рис. 6.4.5. Пример слияния моделей данных в ModelMart Обновление загруженной диаграммы можно осуществить, щелкнув по кнопке J®]. Список изменений, сделанных в процессе работы с моделью, показыва- ется в диалоге ModelMart Change Control Manager - Review Changes (вызы- вается кнопкой ^1). Окно диалога (рис. 6.4.6) содержит список команд, ко- 336
Гпава 6. Гэупповая разработка моделей данных и моделей процессов торые будут исполнены при сохранении модели в хранилище. Эти команды можно просматривать и выполнять в среде диалога ModelMart Change Con- trol Manager Review Changes. Ф Set Attribute Имя ‘Name’ property to Имя Set Attribute Имя 'Type' property to 100 Ф Set Attribute Имя *Nul Option* property to 0 4> Set Attribute Имя Drdn* property to 3 4 Set Attribute Имя *Physicd Order* property to 3 Ф Set Attribute Имя 'Comment* property to" Ф Set Attribute Имя Parent Domain* property to Domain String Ф Set Attribute Имя *00 Color Inherited property to 0 Ф Set Attribute Имя DO Font Inherited* property to 0 ф Create History Information [unnamed] Ф Set History Information [unnamed] Type* property to 530 •property to 1038680676 Ф Set History Infonnation lunnamedl Dreated Tsre Puc. 6.4.6. Диалог Review Changes Для работы с версиями служит диалог ModelMart Version Manager, рис. 6.4.7 (вызывается кнопкой И). Версии создаются в хранилище автома- тически. Имя версии присваивается автоматически по формату <Имя модели>: <Номер версии> by <Имя пользователя > оп <Дата> Для создания отмеченной версии следует выделить версию-источник и щелкнуть по кнопке Mark version. Созданные версии можно сравнивать. Для этого в списке версий следует выбрать две сравниваемые версии и щелкнуть по кнопке Diff. В появившемся диалоге ModelMart Version Manager-Version Differences отображается список отличий версий. iModelMart Veision Manager MODELMART Ml MOOELMART MbCUSTDMER2 I—® CUSTOMERS v.4 by SYSTEM on 3CR40V-02 -8CUST0MER2 v.3by SYSTEM on30-N0V-02 а -©Maklatovl CUSTOMERS v.1 by SYSTEM on 30-NOV-C CUSTOMERS v.1 by SYSTEM on 30-NOV-02 -CfeEMOVIES 1 MS2: EMOVIES: v.1 by SYSTEM on 30-N0V-02 EMOVIES: v.1 by SYSTEM on 30440V-02 Li_CfcSAMPLEI I—«SAMPLE!: v.1 by SYSTEM on 30-N0V-O2 Puc. 6.4.7. Диалог ModelMart Version Manager 337
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В хранилище ModelMart реализована функциональность синхронизации моделей процессов и моделей данных. (Связь моделей ERwin и BPwin путем экспорта и импорта через файлы ВРХ - ЕАХ была описана в гл. 5.) Для син- хронизации моделей необходимо щелкнуть по кнопке JS1. В диалоге ModelMart Synchronizer (рис. 6.4.8) следует выбрать модели процессов и данных, указать направление синхронизации и запустить про- цесс синхронизации. Затем можно работать с синхронизированными моде- лями процессов и данных так же, как было описано в гл. 5. Рис. 6.4.8. Диалог ModelMart Synchronizer 338
____________________Гпава 7__________________________ Создание объектной модели в AllFusion Component Modeler 4.1 7.1. Функциональные возможности AllFusion Component Modeler Классический структурный подход к созданию ИС предполагает после- довательную реализацию этапов анализа, проектирования, создания моду- лей, объединения модулей в единую систему, тестирования и внедрения. Применение технологий структурного проектирования и CASE-средств, по- добных ERwin и BPwin, позволяет в несколько раз сократить время разра- ботки ИС и значительно снизить вероятность появления ошибок за счет ав- томатизации начальных этапов разработки (а как следствие - более качест- венного планирования и проектирования) и автоматической генерации структуры сервера баз данных. Однако эти средства не решают проблемы генерации кода клиентского приложения. Хотя ранние версии ERwin (до 4.0) поддерживали возможность кодогенерации на MS Visual Basic и Power Builder, эту технологию нельзя было назвать удовлетворительной, поскольку код приложения генерировался на основе структуры базы дан- ных, а не на основе описания предметной области, поэтому было невозмож- но построить эффективное приложение со сложной бизнес-логикой. Кроме того, при структурном подходе к разработке ИС риск провала проекта остается большим на всех этапах создания системы вплоть до этапа тестирования, когда можно обнаружить допущенные ошибки и оценить со- стоятельность системы. В случае обнаружения ошибки необходимо вер- нуться на тот этап разработки, на котором допущена ошибка, и заново прой- ти последующие этапы. Альтернативой структурному подходу стали лишенные перечисленных недостатков объектно-ориентированные методы разработки ИС. В первой половине 90-х годов был предложен разработанный на основе наиболее по- пулярных объектных методов ОМТ (Rumbaudh), Booch и OOSE (Jacobsom) универсальный язык объектного проектирования - Unified Modeling Language, UML (The Unified Method, Draft Edition (0.8). Rational Software Corporation, October 1995). 4И4ИОГГГ1И0И 339
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Снижение риска в объектной технологии достигается за счет реализации технологии итерационной разработки (так называемая спиральная модель жизненного цикла разработки). Разработка состоит из ряда итераций, кото- рые в дальнейшем приводят к созданию ИС. Каждая итерация может приво- дить к созданию фрагмента или новой версии и включает этапы выработки требований, анализа, проектирования, реализации и тестирования. Посколь- ку тестирование проводится на каждой итерации, риск снижается уже на начальных этапах жизненного цикла разработки. AllFusion Component Modeler является мощным объектно-ориентиро- ванным инструментальным средством, позволяющим эффективно генери- ровать код приложений. Рис. 7.1.1. Общая схема взаимодействия продуктов Computer Associates с Paradigm Plus AllFusion Component Modeler поддерживает методологию CA Catalysis. Методология Catalysis основывается на стандарте объектного моделирова- ния UML и специально ориентирована на технологию компонентной разра- ботки. AllFusion Component Modeler и Catalysis обеспечивают эффективные решения и минимальный риск при реализации крупномасштабных проек- тов, ориентированных на компонентную сборку. AllFusion Component Modeler 4.1 призван обеспечить полный технологи- ческий цикл разработки крупных ИС. С этой целью он интегрирован с це- лым рядом инструментальных средств СА и других фирм (рис. 7.1.1): • AllFusion ERwin Data Modeler (проектирование и генерация схем баз данных - совместное использование ERwin и AllFusion Component Mo- deler будет рассмотрено ниже). • AllFusion Process Modeler (создание моделей бизнес-процессов). (К со- жалению, к моменту выхода книги утилита связывания модели бизнес- процессов AllFusion Process Modeler и объектной модели AllFusion Component Modeler еще не была выпущена.) 340
Глава 7. Создание объектной модели в AllFusion Component Modeler 4.1 • MS Visual C++ 6.0, MS Visual Basic 6.0, CORBA (разработка кода при- ложений.) • CCC/Harvest, PVCS и Microsoft Source Safe (управления конфигурациями). 7.2. Инструментальная среда в AllFusion Component Modeler По умолчанию AllFusion Component Modeler (рис. 7.2.1) содержит не- сколько окон и инструментальных панелей: • Workspace - навигатор модели. • Property - окно (расположено слева внизу) отображает свойства элемен- тов модели. • Output - отображает отчеты о результатах поиска, замены и других дей- ствиях пользователя. ♦ Панель задач. ♦ Панель инструментов. ♦ Палитра инструментов (вид которой зависит от типа редактируемой диаграммы). Каждое из окон можно переместить и скрыть (настройка видимости окон и панели инструментов производится в меню View). Рис. 7.2.1. Интерфейс AllFusion Component Modeler 341
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Панель задач (task bar) по умолчанию расположена в левой верхней час- ти основного окна AllFusion Component Modeler. Панель задач содержит 4 раздела и позволяет организовать работу над проектом в соответствии с ролями разработчиков: • Analyst (аналитик); • Designer (дизайнер); • Implementor (кодировщик); • Reporting (последний раздел служит для генерации отчетов). Для переключения на раздел панели задач следует щелкнуть по кнопке с названием раздела. Окно каждого раздела содержит список задач. Для соз- дания новой задачи следует щелкнуть правой кнопкой мыши по окну пане- ли задач и выбрать пункт меню Customize. Появляется диалог Task Ваг (рис. 7.2.2). Рис. 7.2.2. Диалог Task Ваг Каждая задача представляет собой выполняемый скрипт, например на Visual Basic или Java. Для создания новой задачи необходимо щелкнуть : **! I по кнопке Я1, внести в окно диалога Task Ваг имя задачи, затем щелкнуть по кнопке Browse и выбрать файл скрипта. Для включения задачи в раздел необходимо щелкнуть по Apply. Окно Workspace Workspace имеет 3 вкладки - Models, Packages и Dia- grams. Вкладка Models содержит древовидный список элементов модели, который является верхним уровнем представления модели. Вкладка Packages содержит список пакетов. Пакет является нижним уровнем модели и может включать задачи и другие модели, используемые в проекте. Вклад- ка Diagrams содержит список диаграмм модели. 342
Глава 7. Создание объектной модели в AllFusion Component Modeler 4.1 7.3. Диаграммы объектной модели 7.3.1. Создание новой диаграммы Модель AllFusion Component Modeler представляет собой совокупность диаграмм, описывающих различные аспекты структуры и поведения ИС. Для создания новой диаграммы следует перейти на вкладку Models окна Workspace Workspace и щелкнуть правой кнопкой мыши по модели, в кото- рой создается новая диаграмма. В контекстном меню следует выбрать пункт New Diagram и затем тип диаграммы. AllFusion Component Modeler позво- ляет создавать диаграммы восьми типов: 1. Activity (деятельности). 2. Class (классов). 3. Collaboration (кооперации). 4. Sequence (последовательности). 5. State (состояний). 6. UseCase (вариантов использования). 7. Component (компонентов). 8. Deployment (развертывания). После выбора нужного типа в правой верхней части основного окна AllFusion Component Modeler появляется окно редактора диаграмм (Diagram Editor, рис. 7.3.1). 343
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite В левой части редактора Diagram Editor размещается палитра инстру- ментов, содержание которой зависит от типа диаграммы. С помощью кно- пок палитры инструментов в диаграмму можно внести элементы модели, описывающие структуру и поведение системы (в UML элементы модели на- зываются классификаторами), а также связи между ними. Для просмотра диаграмм модели служит вкладка Diagrams окна Work- space Workspace (рис. 7.3.2). Е Йй I Cat Rental Sytlemj Activity Diagram S- Ср Class Diagram ? Й Domain Class Diagram • Car Rental Systemcdx i Й CORBA Design Class Diagramed# I] Visual C++Design Class Diagramed# S £3 Colaboration Diagram Ж -Д Make Car Reservation Colaboration Specification.adx $ -Я| Rent a Car Colaboration Spedfcation.ad>c Ж И Make Car Reservation Colaboration Instance.adx ® 0] Rent a Car Colaboration Instance, adx Sequence Diagram ф И Make Cat Reservation Sequence Diagramgdx Ж Ш Renta a Car Sequence Diagramgdx =1 Q Use Case Diagram ! Use Case Diagram’Admnstrator.idk : lla Use Case Diagram-Cferiddk Use Cases Realization Diagram.idx Рис. 7.3.2. Вкладка Diagrams окна Workspace Workspace Для просмотра диаграммы необходимо правой кнопкой щелкнуть по иконке диаграммы в списке и выбрать пункт меню Open Document. 7.3.2. Диаграмма использования системы (Use Cases) Диаграммы использования системы (Use Cases) показывают, какая функцио- нальность должна быть реализована в системе, основные функции, которые должны быть включены в систему (классификатор-вариант использования - use case), их окружение (классификатор-воздействующий объект - actors) и взаимо- действие варианта использования с окружением (рис. 7.3.3). Воздействующие объекты (actors) не являются частью системы - это конечные пользователи или 344
Глава 7. Создание объектной модели в AllFusion Component Modeler 4.1 другие программы, взаимодействующие с проектируемой ИС. Вариант исполь- зования (use case) - последовательность действий, выполняемых системой, ко- торые приводят к определенным результатам, необходимым для конкретного воздействующего объекта. Use Case Diagram: Administrator Рис. 7.3.3. Пример диаграммы Use Cases: Administrator - воздействующий объект; Modify aCar, Create a Car Type и др. - варианты использования Диаграммы Use Cases включают связи между воздействующими объек- тами и вариантами использования (изображаются в виде стрелок) и приме- чания (comment), которые могут быть привязаны к любому элементу диа- граммы Use Cases. Кроме того, в диаграммы Use Case могут быть включены ссылки на диаграммы Collaboration и классы (которые будут рассмотрены ниже). Для внесения классификаторов в диаграмму Use Case и установления связей между ними следует использовать кнопки палитры инструментов (табл. 7.3.1). Для создания связи между элементами диаграммы следует щелкнуть по кнопке связи необходимого типа в палитре инструментов, за- тем по краю первого элемента и, наконец, по краю второго элемента. Связь будет установлена от первого ко второму элементу. Внести новый элемент в диаграмму можно, переместив его из палитры методом drag & drop. 345
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Для описания взаимодействия элементов диаграмм Use Cases могут быть использованы несколько типов связей. Описание каждого типа приведено в табл. 7.3.1. Таблица 7.3. 1. Кнопки панели инструментов для создания элементов диаграммы Use Case Кнопка Элемент диаграммы тв Воздействующий объект (actor) юл Вариант использования (use case) m Примечание Класс (будет рассмотрен в 7.3.5) Интерфейс. Именованное множество операций, описывающее поведение элемента Подсистема. Подсистемой может быть другая диаграмма I 4» Ц Ссылка на диаграмму кооперации (Collaboration). Если имя ссылки совпадает с существующей диаграммой Collaboration, двойной щел- чок по элементу открывает эту диаграмму. Если диаграммы с таким именем не существует, будет создана новая диаграмма. Диаграммы Collaboration будут рассмотрены в 7.3.4 88Я1 Ассоциативная связь - связь между вариантом использования (use case) и воздействующим объектом (actor). Показывает, что воздействующий объект взаимодействует с вариантом использо- вания. Например, инициализирует выполнение варианта исполь- зования Использование. Показывает, что один вариант использования при своем выполнении обязательно использует другой 346
Глава 7. Создание объектной модели в AllFusion Component Modeler 4.1 Кнопка Элемент диаграммы Отношение между базовым и включаемым вариантом использо- вания. Базовый вариант использования может зависить от ре- зультатов включаемого варианта использования Расширение. Аналогично использованию, за исключением того,что один вариант использования при своем выполнении может использовать другой (а может и не использовать) Обобщения. Показывает, что у нескольких классификаторов имеются общие черты Отношение зависимости. Показывает, что один элемент зависит от другого Абстракция. Зависимость между двумя элементами, представляю- щими одну и ту же концепцию на разных уровнях абстракции Связь между элементом модели и примечанием 7.3.3. Диаграммы последовательности (Sequence) и диаграммы кооперации (Collaboration) Язык UML включает несколько диаграмм, описывающих поведение мо- дели в динамике. К диаграммам такого типа относятся диаграммы последо- вательности (Sequence) и корпоративные диаграммы (Collaboration). Оба вида диаграмм содержат одну и ту же информацию. Разница заключается в том, что на диаграмме последовательности события показываются так, как они происходят во времени, а на диаграмме кооперации отображаются по- токи данных. В верхней части диаграммы последовательности (рис. 7.3.4) располага- ются объекты (экземпляры класса). Диаграмма разделена на вертикальные полосы (линии жизни, lifeline), каждая из которых соответствует одному объекту. Ось времени направлена сверху вниз. Так, в примере на рис. 7.3.4 клерк (ThisClerk) инициализирует процесс, направляя сообщение getLocati- onList() объекту ThisRentalShop/RentalShopRole.RentalShop. Затем от клерка тому же объекту направляется сообщение 2:getAvailableCarTypesList(Pic- kupLocation,"datel","date2") и т. д. 347
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite ThkCk* ThhR«»fvlti6lVR*MWltionRcil«-R«HlVJtiOB Мак* Car Reservation Sequence Diagram ThgR«ntatShoa/R*nt.lStionRol*:R«ntalShaB Рис. 7.3.4. Пример диаграммы последовательности (Sequence) Список элементов, которые можно создать, пользуясь палитрой инструмен- тов в диаграмме последовательности (Sequence), приведен в табл. 7.3.2. Таблица 7.3.2. Кнопки панели инструментов для создания элементов диаграммы последовательности Кнопка Элемент диаграммы Воздействующий объект (actor) Объект (экземпляр класса) Примечание Вызов. Метод одного класса вызывает операцию другого класса Отправка. Передача сигнала от одного элемента к другому 348
Гпава 7. Создание объектной модели в AllFusion Component Modeler 4.1 Кнопка Элемент диаграммы Возвращение. Возвращение сигнала Создание. Классификатор-клиент создает экземпляр классифика- тора-поставщика Уничтожение. Классификатор-клиент уничтожает экземпляр клас- сификатора-поставщика Неинтерпретируемое значение, реализация которого не определя- ется языком UML Связь между элементом модели и примечанием Корпоративные диаграммы (Collaboration) показывают группу элементов модели и связей, работа которых приводит к какой-либо цели. Так, в приме- ре на рис. 7.3.5 результатом является резервирование автомобиля. Диаграм- ма на рис. 7.3.5 полностью соответствует диаграмме последовательности на рис. 7.3.4 - она содержит те же элементы и связи, за исключением ото- бражения последовательности действий. Мак» Си- Reservation Collaboration Instance 1: getLo с ati onLi st О-► Рис. 7.3.5. Пример корпоративной диаграммы (Collaboration) 349
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Список элементов, которые можно создать, пользуясь палитрой инстру- ментов в корпоративной диаграмме (Collaboration), приведен в табл. 7.3.3. Таблица 7.3.3. Кнопки панели инструментов для создания элементов корпоративной диаграммы Элемент диаграммы Воздействующий объект (actor) р Класс Объект (экземпляр класса) №: Роль классификатора. Описывает роль, которую играет в коопера- ции элемент диаграммы Вариант использования (use case) И Интерфейс Примечание Роль в ассоциации. Связь двух ролей классификаторов в корпора- тивной диаграмме 1 Связь. Экземпляр ассоциации или роли ассоциации А:-$г,»Ж|1юп Ассоциация. Связь между двумя классификаторами Getwalgati..:;^^ Обобщение. Показывает, что у нескольких классификаторов име- ются общие черты 350
Гпава 7. Создание объектной модели е AllFusion Component Modeler 4.1 Кнопка Элемент диаграммы Extends Расширение. Аналогично использованию, за исключением того, что один вариант применения при своем выполнении может ис- пользовать другой (а может и не использовать) hidud*? Отношение между базовым и включаемым вариантом использова- ния. Базовый вариант использования может зависить от результа- тов включаемого варианта использования Absr-scnon Абстракция. Зависимость между двумя элементами, представляю- щими одну и ту же концепцию на разных уровнях абстракции Coransepte Связь между элементом модели и примечанием 7.3.4. Диаграмма классов (Class) Под объектом в UML понимается некоторое абстрактное представление конкретного объекта предметной области. Каждый объект имеет состояние, поведение и индивидуальность. Например, объект "Проект" может иметь два состояния - "открыт" и "закрыт". Поведение объекта определяет, как объект взаимодействует с другими объектами. Индивидуальность означает, что каждый объект уникален и отличается от других объектов. Под классом понимается описание объектов, обладающих общими свойствами (атрибу- тами), поведением, общими взаимоотношениями с другими объектами и об- щей семантикой. Класс является шаблоном для создания новых объектов. Если система содержит большое количество классов, они могут быть объединены в пакеты (package). Каждый класс может иметь атрибуты (свойства). Так, на рис. 7.3.6 класс Customer (Клиент) имеет атрибуты LastName (Фамилия клиента), FirstName (Имя клиента), DriversLicenseState (Штат, в котором было выдано водитель- ское удостоверение) и DriversLicenseNumber (Номер водительского удосто- верения). Кроме того, каждый класс может иметь методы (operations) - не- которые действия, которые описывают поведение объектов класса. На рис. 7.3.6 класс Customer имеет методы setCustomerDriversLicense и set- CustomerName. Для внесения свойств класса следует правой кнопкой мыши щелкнуть по классу и выбрать во всплывающем меню пункт Create. 351
С. В. Маклакое. Создание информационных систем с AllFusion Modeling Suite ' Cwtoffiat -UutfMmrstring •FitrtNJmtstririf -DrivteUetretStot» string .PiM«UwiMNiiinhrifttt|«i +MtCuftcmtfOrtv*«Uc*M«(i(i PLN JM*g *f.in PLSahfig) . *MtCuft»rM'Nim«(in FietNjmrftriftg.ln LaSjWjJflMfteg) .Cwtomdr CiMtwrTypt Cuftomte j •DinountP*tMfiteg4:irit«g«r <• - •т1ф*д""> - ---------- *” -MtDimitn^aroafttaRKin'OimwntPeratntagcintagai *MtCuft»m«rTyp«(1n ТуразМлд) CuaemtfTyptt *ef«<t«R«nUtAgn«m«n1(<n ThjM«M«vition:R«««iwtien) R«Mf^ati»hNvfhb«r:l0ng)- \ ♦9«U*lHjbl«CjeLi<m'TtU*CafTyH:CjrTyp4) *4t*<t«R*MM«U4«(]n Thi*Cuftom«rCu*tem«r,ln PidcupLoeati»e:Lee*tion) 7KtfCuCtem«rTyp«:Cuft«m«tTyp*) *0*Kuft«m«<Typ«UflO z *д«Ь*маилЬ1«СлТуриЦй0А Р1Л»ф1лл«М«(»:1ле*и*п.|п PidrvpO«t«:sMng.ifi R«twnb«t«3Mrit *g«1LecJtionLM0 ....... *«гаМ«Сл(1п.ТЫсСл1Тур«.<1<Туи^Слг *«r*M«Cu»t*m«rTyp<):CuRtun<rTyp« " ««•ШСанурафСягТура • ' *er»M«Loejtie«GLoejtion ... C itTypti - RtnUIAarttmtM A«ign»dCir.C*r Chltg«C>tdGxpDM»^tring CMrgdCiMNumbtrjtrinj •ChMg«Q<rdTyp«:sfring •RetUBTJmiiihilng '</•-• ./- -R«tUrnD*t»^tritvg • • •Pid<up.Tim«-itring . •PidtupDatesiring •RanUtAgnamafttNumbarlong: •IWiiftbeetMn. . •РмгсРи*Ом:Ьа<и*п V-/. +MtMMatAgttmkMNumb«<ii»RAN«mb«t:iM«g* ♦g«fCu»tom«CCurt*mtr *MtPurohaMO<^ln AoMpt*d:b«ol«<n), ♦MtU6(in AoMpted:b06l««n) ♦«JLWRCn AeoaphdAoehaft) - - •. CatTypa ~ DiUyRjrtcdaubl* „ .. •Typtatrtrig - ' *MtD«ilyR«t<ift R«t*:d»vN«) *«мСмТур*(И CirTypaaWftt :i>Typ>Q-* Can -F««fTinkLwel5nUe<| О -Lie*ft*«Pt*t«atring\ ___ 'VMri'tMM f , -C«f»r*tring _^z . ' ' :uftofn«t A 1 t«ntjtAgr**m«nti Рис. 7.3.6. Пример корпоративной диаграммы классов Классы могут иметь взаимосвязи (relationship), называемые отношения- ми. В нотации UML имеется несколько типов отношений. Отношение ис- пользования (associations) показывает, что объект одного класса связан с одним или несколькими объектами другого класса. Отношение включения (aggregation) является частным случаем отношения использования. Оно по- казывает, что один объект является частью другого. При воздействии на один объект, связанный отношением включения, некоторые операции ав- томатически могут затронуть другой объект. Каждая связь может быть оха- рактеризована определенной фразой, называемой именем роли. Для созда- ния имени связи следует щелкнуть по ней правой кнопкой мыши и выбрать в меню пункт Properties. Появляется диалог Shape Properties (рис. 7.3.7) на вкладку Label которого можно внести имя связи. 352
Гпава 7. Создание объектной модели е AllFusion Component Modeler 4.1 Shope Pfupeities Рис. 7.3.7. Диалог Shape Properties Каждая связь может иметь индикатор множественности, который пока- зывает, сколько объектов одного класса соответствует объекту другого класса, например 1..* (один или много). Наследование (inheritance) описывает взаимосвязь между классами, ко- гда один класс (называется подклассом, subclass) наследует структуру и/или поведение одного или нескольких классов. Связь классов в иерархии насле- дования называется отношением наследования (generalization). Полный перечень элементов, которые можно создать, пользуясь палит- рой инструментов в диаграмме классов и связей между ними, приведен в табл. 7.3.4. Таблица 7.3.4. Кнопки панели инструментов для создания элементов в диаграмме классов Кнопка Объект диаграммы Класс яр Пакет Интерфейс класса. Именованное множество операций, описываю- щее поведение класса 353
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Кнопка Объект диаграммы Объект (экземпляр класса) |1жД Тип данных. Могут быть предопределенными (примитивными), НаНример cipuK иЛи ЧисЛи, И иНрсдСлмсМЫМи НиЛЬзившсЛсм М 1 Сигнал. Описание коммуникации между объектами II -а И[Г~ Исключение. Сигнал, возникающий с помощью механизмов ис- ключений как ответ на ошибку 1 Примечание Обобщения. Показывает, что у нескольких классификаторов име- ются общие черты 1л|У Связь. Экземпляр ассоциации Ассоциация Связывание. Приписывание значений параметру Разрешение. Зависимость, в которой клиенту разрешается исполь- зовать содержимое поставщика Zi Абстракция. Зависимость между двумя элементами, представляю- щими одну и ту же концепцию на разных уровнях абстракции Отношение зависимости. Показывает, что один элемент зависит от другого Использование. Показывает, что один классификатор при своем выполнении обязательно использует другой Исключающее "или". В случае, когда несколько ассоциаций связа- ны с одним и тем же классом, показывает, что объект может быть связан только с одной ассоциацией L=1 Связь между элементом модели и примечанием 354
Гпава 7. Создание объектной модели в AllFusion Component Modeler 4.1 7.3.5. Диаграмма деятельности (Activity) Диаграмма деятельности описывает динамическое поведение элементов модели и представляет собой описание потока работ (графа деятельности). По своему смыслу и назначению диаграмма деятельности схожа с диаграм- мой IDEF3 или диаграммой Swim Lane (см. 1.4). Так же как в диаграммах Swim Lane; для распределения ответственности диаграмма деятельности может быть разбита на "плавательные дорожки" (SwimLine). Каждая "пла- вательная дорожка" имеет собственное имя и служит для группировки эле- ментов (состояний), которые реализует один объект. При создании диа- граммы деятельности особое внимание уделяется последовательным и па- раллельным шагам выполнения работ. Для описания ветвления диаграммы деятельности содержат специальный элемент (ср. с перекрестком в 1.4). Пример диаграммы деятельности приведен на рис. 7.3.8. Рис. 7.3.8. Пример диаграммы деятельности Перечень элементов диаграммы деятельности и связей между ними при- веден в табл. 7.3.5. Таблица 7.3.5. Кнопки панели инструментов для создания элементов в диаграмме деятельности Кнопка Объект диаграммы —h "Плавательная дорожка" 355
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Кнопка Объект диаграммы Состояние действия. Элементарное (не имеющее внутренней структуры) действие, которое переводит объект в следующее со- стояние ... Подсостояние. Состояние, имеющее внутреннюю структуру, в том числе параллельные и/или последовательные простые состояния Состояние потока объектов. Состояние, описывающее наличие объекта в данной точке графа деятельности imbd Исходное состояние. Стартовая точка графа деятельности О Fnsi 5Ые Конечное состояние. Финишная точка графа деятельности Разветвление или слияние. Показывает, что работы могут выпол- няться параллельно (аналог перекрестка типа AND и OR на диа- граммах IDEF3, см. 1.4) Слияние управления. Показывает слияние альтернативных путей выполнения работ (аналог перекрестка типа XOR для слияния на диаграммах IDEF3, см. 1.4) Fofk .. Разветвление управления. Показывает альтернативные пути вы- полнения работ (аналог перекрестка типа XOR для разветвления на диаграммах IDEF3, см. 1.4) Выбор. Элемент, предназначенный для декомпозиции состояний Г~Ч| Примечание Переход. Отношение между двумя состояниями, когда одно со- стояние переходит в другое Связь между элементом модели и примечанием 7.3.6. Диаграмма состояний (State) Диаграмма состояний, так же как и диаграмма деятельности, описывает динамическое поведение объектов. Основным элементом диаграммы явля- ется состояние (State) - множество объектов класса, которые реагируют 356
Гпава 7. Создание объектной модели в AllFusion Component Modeler 4.1 на внешнее воздействие одинаковым образом. Состояние может иметь имя и описывает некоторый период времени жизненного цикла объекта. Со- стояния могут быть связаны переходами (transition), которые представляют собой реакцию объекта на событие. Граф состояний и переходов из одного состояния в другое называется конечным автоматом. Пример диаграммы состояний приведен на рис. 7.3.9. Рис. 7.3.9. Пример диаграммы состояний Полный перечень элементов, которые можно создать, пользуясь палит- рой инструментов в диаграмме состояний и связей между ними, приведен в табл. 7.3.6. Таблица 7.3.6. Кнопки панели инструментов для создания элементов в диаграмме состояний Кнопка Объект диаграммы Simple Stete Простое состояние. Элементарное (не имеющее внутренней струк- туры) состояние Композитное состояние. Состояние, в котором могут содержаться несколько последовательных или параллельных подсостояний Region Область. Служит для выделения группы элементов на диаграмме состояний. Для выделения группы элементов следует щелкнуть по кнопке Region, затем перенести маркер на окно диаграммы, на- жать на кнопку мыши и вести маркер с левого верхнего в правый нижний угол области. Затем следует отпустить кнопку мыши * Syftch Stete Состояние синхронизации. Позволяет синхронизировать управле- ние между двумя параллельными областями конечного автомата Shi) Stete Состояние-заглушка. Ссылается на определенное состояние во вложенном автомате ir-atei Swe Исходное состояние 357
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Кнопка Объект диаграммы о Конечное состояние Jor, . Слияние управления. Показывает слияние альтернативных путей выполнения работ Fort' Разветвление управления. Показывает альтернативные пути вы- полнения работ Выбор. Элемент, предназначенный для декомпозиции состояний Кратковременное историческое состояние. Позволяет запомнить подсостояние композитного состояния, которое было активно не- посредственно перед выходом из него ^1 Долговременное историческое состояние. Позволяет запомнить подсостояния композитного состояния на определенную глубину Примечание StfcMathri... Состояние, описываемое ссылкой на вложенный автомат, который неявно подставляется на то место, откуда производится ссылка Переход. Отношение между двумя состояниями, когда одно со- стояние переходит в другое Соглтегйг Связь между элементом модели и примечанием 7.3.7. Диаграммы компонентов (Component) и диаграммы развертывания (Deployment) Архитектура приложения описывается в диаграммах компонентов (Component) и диаграммах развертывания (Deployment). На диаграммах компонентов изображается вхождение классов и объектов в программные компоненты системы (модули, библиотеки и т. д.), в том числе компоненты, которые по каким-либо причинам не существуют как единицы времени вы- полнения. При помощи диаграмм развертывания документируется разме- щение программных модулей на узлах (физических и логических устройст- 358
Гпава 7. Создание объектной модели в AllFusion Component Modeler 4.1 вах) системы. На диаграмме развертывания (в отличие от диаграммы ком- понентов) показывается конфигурация только работающих узлов и экзем- пляров компонентов. Диаграмма компонентов показывает определения ти- пов компонентов, а диаграмма развертывания - их экземпляры. ] Database «realize* Update Рис. 7.3.10. Пример диаграммы компонентов Таблица 7.3.7. Кнопки панели инструментов для создания элементов в диаграмме компонентов Кнопка Объект диаграммы =9 Компонент. Независимая (от других компонентов) заменяемая часть системы. Взаимодействие с другими компонентами осуще- ствляет с помощью интерфейсов Interface Интерфейс. Список операций, обеспечиваемый программным и аппаратным обеспечением Пакет. Часть модели. Каждый элемент может принадлежать только к одному пакету Примечание ► Обобщения. Показывает, что у нескольких классификаторов име- ются общие черты Отношение между спецификацией и программной реализацией Ассоциация 359
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Кнопка Объект диаграммы Отношение зависимости. Показывает, что один элемент зависит от другого Использование. Показывает, что один классификатор при своем выполнении обязательно использует другой Связь между элементом модели и примечанием Рис. 7.3.11. Пример диаграммы развертывания Таблица 7.3.8. Кнопки панели инструментов для создания элементов е диаграмме развертывания Кнопка Объект диаграммы Компонент. Независимая (от других компонентов) заменяемая часть системы. Взаимодействие с другими компонентами осуще- ствляет с помощью интерфейсов__________________________ Экземпляр компонента. Реализация компонента в конкретный момент времени Узел. Вычислительный ресурс системы. На узлах могут нахо- диться объекты и компоненты 360
Гпаеа 7. Создание объектной модели в AllFusion Component Modeler 4.1 Кнопка Объект диаграммы —jn Экземпляр узла. Реализация узла в конкретный момент времени Интерфейс. Список операций, обеспечиваемый программным и аппаратным обеспечением Объект (экземпляр класса) Пакет. Часть модели. Каждый элемент может принадлежать только к одному пакету Примечание Отношение между экземплярами узлов М Node h\‘’ =t, Коммуникационная ассоциация. Ассоциация между узлами, осуществляющими коммуникации Коммуникативная связь. Связь между экземплярами узлов, осуществляющими коммуникации Поток. Показывает, что две версии одного и того же объекта существуют в разные моменты времени Отношение зависимости. Показывает, что один элемент зависит от другого Абстракция. Зависимость между двумя элементами, представляю- щими одну и ту же концепцию на разных уровнях абстракции Связь между элементом модели и примечанием 7.4. Генерация кода AllFusion Component Modeler поддерживает генерацию кода приложения на основе диаграмм классов и создание классов на основе кода приложения (прямое и обратное проектирования для четырех сред разработки: • Java; • Corba; 361
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • Visual Basic; • Visual C++. Рассмотрим пример генерации кода на Java. Для генерации кода необхо- димо выбрать пункт меню Tools/Java/Export. При этом возникает диалог Code Generation, в котором последовательно показывается два экрана (рис. 7.4.1 и 7.4.2). Рис. 7.4.1. Первый экран диалога Code Generation На первом экране диалога Code Generation (рис. 7.4.1) расположены два списка. В левом списке содержится перечень моделей и классов. Правый список содержит перечень классов, на основе которых будет сгенерирован код приложения. Кнопка > 1 служит для включения классов из левого спи- ска в правый. В верхней части окна содержится поле Default code directory, для задания каталога, в который будут помещены файлы сгенерированного кода. 362
Гпава 7. Создание объектной модели в AllFusion Component Modeler 4.1 ineiation (Step 2 of 2} н Status Code generation status. ____________________________J____________________!____________________________________......... Generating code for Car Fie. G SMakJakovSCar (ava Exportng AlFusron Component Modeler «formation. Car Rental Analyse Model Generating code foe CarType File: G:\Mdklakov\CafType.fava Generating code for Customer Fie: G:\MaAlakov\Customer.fava Generating code for. CustomerType Fie: G:^aHakov\Cuslom»Type.iava Generating code for Location Fie: G:\MaWakov\Location.iava Generating code lot Myinterface Fie G:\Maklakov\MjHntecface iava Generating code foe New_das$ Fie: G:\Maklakov\New.dass.java Generating code lee. RentaiAryeemeri Fie: G:\Maklakov\RentalAgieement.idva Generating code foe RentalShop Fie G:\Maklakov\RentalShop.iava Generating code foe Reservation_Fie: GAMaklaAovSReswvationiava_______________________________________________ Code generation complete. „‘''~~1 Cancel I • - I frrt I H* I Puc. 7.4.2. Второй экран диалога Code Generatio Щелчок по кнопке Next инициализирует процесс генерации кода. Вто- рой экран диалога Code Generation показывает протокол генерации. Ниже приведен код на языке Java, соответствующий классу Customer (см. рис. 7.3.6). public class Customer implements , { private integer DriversLicenseNumber; private string DriversLicenseState; private static string FirstName; private string LastName; public void setCustomerName(string FirstName, string LastName) { } public void setCustomerDriversLicense(integer DLN, string DLS) { } Сгенерированный код не является готовым приложением. Здесь генери- руются лишь заголовки методов, сами методы необходимо дописывать вручную. 363
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 7.5. Интеграция модели данных AllFusion ERwin Data Modeler и объектной модели AllFusion Component Modeler В AllFusion Component Modeler реализована взаимная интеграция c AllFusion ERwin Data Modeler. Комбинация объектного моделирования AllFusion Compo- nent Modeler и углубленных возможностей моделирования данных в ERwin по- вышает производительность и сокращает время разработки ИС. В AllFusion Component Modeler обеспечена двунаправленная связь между объектной моделью и моделью данных. Реляционная модель ERwin может быть конвертирована в объектную модель AllFusion Component Modeler и, наоборот, объектная модель AllFusion Component Modeler может быть конвертирована в реляционную модель данных. С помощью ERwin можно оптимизировать фи- зическую модель данных с учетом особенностей конкретного сервера баз дан- ных для обеспечения наивысшей производительности. Интеграция ERwin и AllFusion Component Modeler обеспечивает: • возможность импорта сущностей из модели ERwin и создание соответ- ствующих классов в модели AllFusion Component Modeler; • разработку приложений с использованием хранилищ моделей для обес- печения коллективной разработки; • объектно-ориентированный анализ и разработку с использованием объ- ектно-ориентированных методов в тесной интеграции с физической раз- работкой баз данных; • перенос информации, внесенной на этапе анализа и проектирования в модель данных, и использование ее для генерации схемы баз данных; • автоматическую генерацию отчетов по проекту на основе информации, находящейся в хранилище проектов; • моделирование систем с многоуровневой архитектурой в AllFusion Component Modeler, что может быть использовано для разработки кор- поративных систем; • поддержку компонентной разработки в сочетании с режимом много- пользовательской работы с моделями; • переход от объектной модели к реляционной модели. 364
Гпава 7. Создание объектной модели в AllFusion Component Modeler 4.1 Для импорта модели из ERwin в AllFusion Component Modeler следует перейти в меню Tools/ERwin/Import. Появляется диалог AllFusion Compo- nent Modeler - ERwin integration. На первом экране диалога следует указать путь и имя файла модели ERwin. Второй экран диалога (рис. 7.5.1) содержит два списка. Для импорта сущностей из моделей данных в объектную модель следует методом drag & drop перенести сущность из левого списка в правый и разместить ее в соответствующей модели. Alli usion Component Modelet - ( Kwtn Integration Select the data to import/export Drag and скор the source objects onto the target СЗ SAMPLE.RARADI5M.ER1 Model» • ® CREDIT CARD :.@ CUSTOMER ' H CUSTOMER CREDIT Н E-PAYMENT „О MaklakovSV S gAnafcistsModel '-ft <uiknown> , ft Car i -ft Customer ’-®r Niirbe sSBBH -ftCHECK !- & CREDIT CARD -ft CUSTOMER : ft CUSTOMER CREDIT ' ft EMPLOYEE i- ft E-PAYMENT -ft PAYMENT Q ImplementabonModel & UseCaseModel Рис. 7.5.1. Диалог AllFusion Component Modeler - ERwin integration Щелчок по кнопке Next инициализирует процесс импорта объектов модели данных. На третьем экране диалога AllFusion Component Modeler - ERwin Inte- gration показывается протокол импорта, затем появляется диалог XMI Differ- ences, который содержит результаты импорта - список элементов модели AllFu- sion Component Modeler и список импортированнных элементов. На рис. 7.5.2 показана исходная модель данных ERwin. На рис. 7.5.3 по- казан результат импорта - перечень классов в списке элементов модели вкладки Models окна Workspace Workspace. 365
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite CUSTOMER Рис. 7.5.2. Исходная модель данных ERwin а & MaklaKovSV § ЕЕ 9 UseCateModel ф 9 Ana^mModel ф-Д DesignModel Й-Щ <triknown> ? 3 5 addess ; S g addess2 \ ф-Q CHECK & 6 CREDIT CARD (3 9 CUSTOMER i ?® association SI Й °€ <unnamed_AssociationEnd> : i Й~*1в makes I । । e-B) <и» Й °в <urin«Ted_At»xiatonEnd> i se S CUSTOMER H -0? it made by £>И PAYMENT : ♦customeraddress : B ♦customer dty i Й a ♦customer first name & ♦customer last name ф & ♦customer number ф ♦customer state Й ♦customer zip code I ® О +emai ' fig CUSTOMER CREDIT В В Datetsne ' Model. (Package. Рт>«п.| | Рис. 7.5.3. Результат импорта модели данных ERwin в AllFusion Component Modeler В результате импорта в AllFusion Component Modeler не создается новой диаграммы классов. Для создания диаграммы классов соответствующей мо- 366
Гпава 7. Создание объектной модели в AllFusion Component Modeler 4.1 дели данных ERwin следует перенести классы методом drag & drop из спи- ска элементов модели вкладки Models окна Workspace Workspace в область диаграммы. Затем следует щелкнуть по классу на диаграмме правой кноп- кой мыши и выбрать пункт меню Populate/All Members. В результате в класс будут включены импортированные атрибуты. Затем следует установить взаимосвязи между классами. Для этого следует щелкнуть по классу правой кнопкой мыши и выбрать пункт меню Relationships with Existing Objects. На рис. 7.5.4 показана диаграмма классов, созданная на основе импорти- рованных сущностей модели объектов, показанной на рис. 7.5.2. Рис. 7.5.4. Диаграмма классов, содержащая импортированные классы Для экспорта модели из AllFusion Component Modeler в ERwin следует перейти в пункт меню Tools/ERwin/Export. Появляется диалог AllFusion Component Modeler-ERwin Integration, в первом окне которого следует указать имя и тип файла экспорта. Второй экран диалога (рис. 7.5.5) содер- 367
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite жит два списка. Для экспорта классов из объектной модели в модель данных следует методом drag & drop перенести класс из левого списка в правый. Allfusion Component Modelei FFlwin integration Select the data to Mport/eaport Drag and drop the source objects onto the target CD MdddtovSV Й-Q AnaHeModd Ё- В DesignModd ; •©- <unkno*m> «ERWIN.D0MA1N» : & address «ERWIN.D0MA1N» - & oddest 2 «ERWIN.DOMAIN» i CHECK «ERWIN.ENTITY» dty «ERWIN.DOMAJN» & CREDIT CARD «ERWIN.ENTITY» : & CUSTOMER «ERWIN.ENTITY» Ж & CUSTOMER CREDIT «ERWIN.ENTIF & Datebne «ERWIN.DDMA1N» & EMPLOYEE <<ERWIN_ENTlTY» - & E-PAYMENT «ERWIN.ENTiTY» • & first name «ERWIN.D0MA1N» i -> last name «ERWIN.D0MA1N» & Number «ERWIN_DOMA1N» ®- PAYMENT «ERW ENTITY» address address 2 S CHECK S CREDIT CARD ЁЗ CUSTOMER E3 CUSTOMER CREDIT Defoliate s EMPLOYEE Й E-PAYMENT first паем» Iasi паем» ^Nunbor E3 PAYMENT phone Standard Nraebet Gb Standard String Puc. 7.5.5. Экспорт классов в ERwin Щелчок no кнопке Next инициализирует процесс экспорта. На рис. 7.5.6 показан результат экспорта - диаграмма модели данных, соответствующая диаграмме классов на рис. 7.5.4. CUSTOMER customer number customer state customer last name customer address customer zip code customer city customer first name email PAYMENT__________________ payment transaction number CUSTOMER CREDIT amount type date status customer number (Fl^ customer number credit card exp credit card status code CHECK________________________ payment transaction number (FK) check bank number check number E-PAYMENT____________________ payment transaction number (FK) epay account number epay vendor number CREDIT CARD____________________ payment transaction number (FK) credit card type credit card exp credit card number Puc. 7.5.6. Результат экспорта классов в модель данных ERwin 368
__________________ Приложение А_____________________________ Практикум. Создание функциональной модели с помощью BPwin А.1. Упражнение 1. Создание контекстной диаграммы Приложение А содержит 16 упражнений, предназначенных для само- стоятельной работы. Цель упражнений - дать читателю навык создания и редактирования функциональных моделей в BPwin. Для выполнения по- следующего упражнения необходимо иметь результат выполнения преды- дущего, поэтому рекомендуется сохранять модель, полученную в конце ка- ждого упражнения. В качестве примера рассматривается деятельность вымышленной ком- пании. Компания занимается в основном сборкой и продажей настольных компьютеров и ноутбуков. Компания не производит компоненты самостоя- тельно, а только собирает и тестирует компьютеры. Основные процедуры в компании таковы: • продавцы принимают заказы клиентов; • операторы группируют заказы по типам компьютеров; • операторы собирают и тестируют компьютеры; • операторы упаковывают компьютеры согласно заказам; • кладовщик отгружает клиентам заказы. Компания использует купленную бухгалтерскую ИС, которая позволяет оформить заказ, счет и отследить платежи по счетам. Перед выполнением упражнения 1 внимательно прочитайте гл. 1.1, 1.2.1, 1.2.3 и 2.1. 1. Запустите BPwin. (Кнопка Start/BPwin). 2. Если появляется диалог ModelMart Connection Manager, нажмите на кнопку Cancel. 3. Щелкните по кнопке ? . Появляется диалог I would like to. Внесите имя мо- дели "Деятельность компании" и выберите Туре - IDEF0. Нажмите ОК. 4. Автоматически создается контекстная диаграмма. Ж1ОМ1П(ЗИ 369
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 5. Обратите внимание на кнопку 2» на панели инструментов. Эта кнопка включает и выключает инструмент просмотра и навигации - Model Explorer (появляется слева). Model Explorer имеет три вкладки - Activi- ties, Diagrams и Objects. Во вкладке Activities щелчок правой кнопкой по объекту позволяет редактировать его свойства. 6. Если вам непонятно, как выполнить то или иное действие, вы можете вызвать помощь - клавиша F1 или меню Help. 7. Перейдите в меню Model/Model Properties. Во вкладке General диалога Model Properties следует внести имя модели "Деятельность компании", имя проекта "Модель деятельности компании", имя автора и тип моде- ли - Time Frame: AS-IS. 8. Во вкладке Purpose внесите цель - "Purpose: Моделировать текущие (AS-IS) бизнес-процессы компании" и точку зрения - "Viewpoint: Ди- ректор". 9. Во вкладке Definition внесите определение "Это учебная модель, опи- сывающая деятельность компании" и цель "Scope: Общее управление бизнесом компании: исследование рынка, закупка компонентов, сборка, тестирование и продажа продуктов". 10. Перейдите на контекстную диаграмму и правой кнопкой мыши щелк- ните по работе. В контекстном меню выберите Name. Во вкладку Name внесите имя "Деятельность компании ". 11. Во вкладке Definition внесите определение "Текущие бизнес-процессы компании". 12. Создайте стрелки на контекстной диаграмме (табл. А.1.1). Таблица А. 1.1. Стрелки контекстной диаграммы Имя стрелки (Arrow Name) Определение стрелки (Arrow Definition) Тип стрелки (Arrow Туре) Бухгалтерская система Оформление счетов, оплата счетов, рабо- та с заказами Mechanism Звонки клиентов Запросы информации, заказы, техпод- держка и т. д. Input Правила и процедуры Правила продаж, инструкции по сборке, процедуры тестирования, критерии про- изводительности и т. д. Control Проданные продукты Настольные и портативные компьютеры Output 1. С помощью кнопки Lil внесите текст в поле диаграммы - точку зре- ния и цель (рис. А.1.1). 370
Приложение А. Практикум Правила и процедуры Маркетинговые материалы Бухгалтерская система Vtewpekat Двфмсгар Ригром: Мадвжфввт текшие (AS4S) бшнвмцюцмсы компании Рис. A. 1.1. Внесение текста в поле диаграммы с помощью редактора Text Block Editor Результат выполнения упражнения 1 показан на рис. А. 1.2. Рис. А. 1.2. Контекстная диаграмма 2. Создайте отчет по модели. Меню Tools/Reports/Model Report (рис. А. 1.3). Model Repoit Pieview IPMnMHne ' Ацпч 2Р E«Tftan ,> SP Ssun ЗР Scope ЭР 4mhxN«ne 4р Viegacrt ЮР deduntta 5Р Inefume ПР SjUmlMBeweonDete 6Р ухи* 12Р UinlutВега»Эаш Owe | Ркага I &Ш | Вери1 | М> | Definition: Эта учебная модель, описываемая деятельиосг Scope: Обмее управление бизнесом компании: исследование тестирование и продаже продуктов. Uiewpoint; UieWpoint: Директор Tine Frane: (AS-IS) Status: WORKING Purpose: Purpose: Моделировать текущие (AS-IS) бизнес-процессы компании Source: Материалы книги Author Напе: Ваше имя. Creation Date: 10.12.98 Systen Last Revision Date: 07.09.01 User Last Revision Date: 07.09.01 Рис. A. 1.3. Отчет Model Report 371
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite А.2. Упражнение 2. Создание диаграммы декомпозиции Перед выполнением упражнения 2 внимательно прочитайте гл. 1.2.2 и 1.2.3. 1. Выберите кнопку перехода на нижний уровень в палитре инструмен- тов и в диалоге Activity Box Count установите число работ на диаграмме нижнего уровня - 3 - и нажмите ОК. Рис. А.2.1. Диалог Activity Box Count Автоматически будет создана диаграмма декомпозиции. Правой кнопкой мыши щелкните по работе, выберите Name и внесите имя работы. Повтори- те операцию для всех трех работ. Затем внесите определение, статус и ис- точник для каждой работы согласно табл. А.2.1. Таблица А. 2.1. Работы диаграммы декомпозиции АО Имя работы (Activity Name) Определение (Definition) Продажи и маркетинг Телемаркетинг и презентации, выставки Сборка и тестирование компьютеров Сборка и тестирование настольных и портативных компьютеров Отгрузка и получение Отгрузка заказов клиентам и получение ком- понентов от поставщиков 2. Для изменения свойств работ после их внесения в диаграмму можно воспользоваться словарем работ. Вызов словаря - меню Dictionary/Activity (рис. А.2.2). 372
Приложение А. Практикум 3 jtl ит.в\ч [Computer Associates RPwin Activity Dictinnaiy Е [Activity Dielioridiy Деятельность Отгрдэка и полутени».... Продажи и маркетинг____ Сборка и тестирование компьютеров Отгрузка заказов клиентам и получение компонент от _________ Телемаркетинг и презентации, выставки________________________ Сборка и тестирование настольных и портативных компьютеров Ваше имя. Ваше имя. Ваше имя. Рис. А.2.2. Словарь Activity Dictionary Если описать имя и свойства работы в словаре, ее можно будет внести в диаграмму позже с помощью кнопки Sli в палитре инструментов. Невоз- можно удалить работу из словаря, если она используется на какой-либо диа- грамме. Если работа удаляется из диаграммы, из словаря она не удаляется. Имя и описание такой работы может быть использовано в дальнейшем. Для добавле- ния работы в словарь необходимо перейти в конец списка и щелкнуть правой кнопкой по последней строке. Возникает новая строка, в которой нужно внести имя и свойства работы. Для удаления всех имен работ, не использующихся в модели, щелкните по кнопке ИИ (Purge). 3. Перейдите в режим рисования стрелок. Свяжите граничные стрелки (кнопка на палитре инструментов, так, как показано на рис. А.2.3. Рис. А.2.3. Связанные граничные стрелки на диаграмме АО 373
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 4. Правой кнопкой мыши щелкните по ветви стрелки управления работы "Сборка и тестирование компьютеров" и переименуйте ее в "Правила сборки и тестирования " (рис. А.2.4). Рис. А.2.4. Стрелка "Правила сборки и тестирования" Внесите определение для новой ветви: "Инструкции по сборке, проце- дуры тестирования, критерии производительности и т. д.". Правой кнопкой мыши щелкните по ветви стрелки механизма работы "Про- дажи и маркетинг" и переименуйте ее в "Систему оформления заказов". 5. Альтернативный метод внесения имен и свойств стрелок - использо- вание словаря стрелок (вызов словаря - меню Dictionary/Arrow). Если вне- сти имя и свойства стрелки в словарь, ее можно будет внести в диаграмму позже. Стрелку нельзя удалить из словаря, если она используется на какой- либо диаграмме. Если удалить стрелку из диаграммы, из словаря она не удаляется. Имя и описание такой стрелки может быть использовано в дальнейшем. Для добавления стрелки необходимо перейти в конец списка и щелкнуть правой кнопкой по последней строке. Возникает новая строка, в которой нужно внести имя и свойства стрелки. 6. Создайте новые внутренние стрелки так, как показано на рис. А.2.5. Рис. А.2.5. Внутренние стрелки диаграммы АО 374 \
Приложение А Практикум 7. Создайте стрелку обратной связи (по управлению) "Результаты сборки и тестирования", идущую от работы "Сборка и тестирование компьютеров" к работе "Продажи и маркетинг". Измените стиль стрел- ки (толщина линий) и установите опцию Extra Arrowhead (из контекстного меню). Методом drag & drop перенесите имена стрелок так, чтобы их было удобнее читать. Если необходимо, установите Squiggle (из контекстного меню). Результат изменений показан на рис. А.2.6. Рис. А.2.6. Результат редактирования стрелок на диаграмме АО 8. Создайте новую граничную стрелку выхода "Маркетинговые мате- риалы", выходящую из работы "Продажи и маркетинг". Эта стрелка ав- томатически не попадает на диаграмму верхнего уровня и имеет квадратные скобки на конце: . Щелкните правой кнопкой мыши по квадратным скобкам и выберите пункт меню Arrow Tunnel. В диалоге Border Arrow Edi- tor выберите опцию Resolve it to Border Arrow. Для стрелки "Маркетинго- вые материалы" выберите опцию Trim из контекстного меню. Результат выполнения упражнения 2 показан на рис. А.2.7. Рис. А.2.7. Результат выполнения упражнения 2 - диаграмма АО 375
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite А.З. Упражнение 3. Создание диаграммы декомпозиции А.2 Декомпозируем работу "Сборка и тестирование компьютеров". В результате проведения экспертизы получена следующая информация. Производственный отдел получает заказы клиентов от отдела продаж по мере их поступления. Диспетчер координирует работу сборщиков, сортирует заказы, группи- рует их и дает указание на отгрузку компьютеров, когда они готовы. Каждые 2 часа диспетчер группирует заказы - отдельно для настольных компьютеров и ноутбуков - и направляет на участок сборки. Сотрудники участка сборки собирают компьютеры согласно специфика- циям заказа и инструкциям по сборке. Когда группа компьютеров, соответ- ствующая группе заказов, собрана, она направляется на тестирование. Тес- тировщики тестируют каждый компьютер и в случае необходимости заме- няют неисправные компоненты. Тестировщики направляют результаты тестирования диспетчеру, кото- рый на основании этой информации принимает решение о передаче компь- ютеров, соответствующих группе заказов, на отгрузку. 1. На основе этой информации внесите новые работы и стрелки (табл. А.3.1 и А.3.2). Таблица А.З. 1. Работы диаграммы декомпозиции А2 Имя работы ( Activity Name) Определение работы (Activity Definition) Отслеживание расписания и управление сборкой и тести- рованием Просмотр заказов, установка расписания выполнения заказов, просмотр результатов тестирования, формирование групп заказов на сборку и отгрузку Сборка настольных компьютеров Сборка настольных компьютеров в соответствии с инструкциями и указаниями диспетчера Сборка ноутбуков Сборка ноутбуков в соответствии с инструкциями и указаниями диспетчера Тестирование компьютеров Тестирование компьютеров и компонентов. Замена неработающих компонентов 376
Приложение А Практикум Таблица А. 3.2. Стрелки диаграммы декомпозиции А2 Имя стрелки (Arrow Name) Источник стрелки (Arrow Source) Тип источника стрелки (Arrow Source Type) Назначение стрелки (Arrow Dest.) Тип назначения стрелки (Arrow Dest. Type) Диспетчер Персонал произ- водственного от- дела Отслеживание расписания и управление сборкой и тести- рованием Mechanism Заказы клиентов Граница диа- граммы Control Отслеживание расписания и управление сборкой и тести- рованием Control Заказы на на- стольные компьютеры Отслеживание расписания и управление сборкой и тести- рованием Output Сборка настольных компьютеров Control Заказы на ноутбуки Отслеживание расписания и управление сборкой и тести- рованием Output Сборка ноутбуков Control Компоненты "Tunnel" Input Сборка настольных компьютеров Input Сборка ноутбуков Input Тестирование компьютеров Input Настольные компьютеры Сборка настольных компьютеров Output Тестирование компьютеров Input Ноутбуки Сборка ноутбуков Output Тестирование компьютеров Input 377
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Имя стрелки (Arrow Name) Источник стрелки (Arrow Source) Тип источника стрелки (Arrow Source Type) Назначение стрелки (Arrow Dest.) Тип назначения стрелки (Arrow Dest. Type) Персонал производст- венного отдела "Tunnel" Mechanism Сборка настольных компьютеров Mechanism Сборка ноутбуков Mechanism Правила сборки и тестирования Граница диа- граммы Сборка настольных компьютеров Control Сборка ноутбуков Control Тестирование компьютеров Control Результаты сборки и тес- тирования Сборка настольных компьютеров Output Граница диаграммы Output Сборка ноутбуков Output Тестирование компьютеров Output Результаты тестирования Тестирование компьютеров Output Отслеживание расписания и управление сборкой и тестированием Input Собранные компьютеры Тестирование компьютеров Output Граница диаграммы Output Тестировщик Персонал произ- водственного отдела Тестирование компьютеров Mechanism Указание передать компьютеры на отгрузку Отслеживание расписания и управление сборкой и тестированием Output Тестирование компьютеров Control 378
Приложение А. Практикум 2. Тоннелируйте и свяжите на верхнем уровне граничные стрелки, если это необходимо. Результат выполнения упражнения 3 показан на рис. А.3.1. Рис. А.3.1. Результат выполнения упражнения 3 А.4. Упражнение 4. Создание диаграммы узлов Перед выполнением упражнения 4 внимательно прочитайте гл. 1.2.5. 1. Выберите меню Diagram/Add Node Tree. В первом диалоге гида Node Tree Wizard внесите имя диаграммы, укажите диаграмму корня дерева и количество уровней (рис. А.4.1). Рис. А.4.1. Первый диалог гида Node Tree Wizard 2. Во втором диалоге установите опции, как на рис. А.4.2. 379
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. А.4.2. Второй диалог гида Node Tree Wizard Щелкните по Finish. Создается диаграмма дерева узлов. Результат можно посмотреть на рис. А.4.3. о Отслеживание расписания и управление сборкой и тестировавдем о Сборка настольных компьютеров о Сборка ноутбуков о Тестирование компьютеров Рис. А.4.3. Диаграмма дерева узлов Диаграмму дерева узлов можно модифицировать. Нижний уровень мо- жет быть отображен не в виде списка, а в виде прямоугольников, так же как и верхние уровни. Для модификации диаграммы правой кнопкой мыши щелкните по свободному месту, не занятому объектами, выберите меню Node tree Diagram Properties и во вкладке Style диалога Node Tree Properties отключите опцию Bul- let Last Level. Щелкните по OK. Результат показан на рис. А.4.4. 380
Приложение А. Практикум Рис. А.4.4. Результат выполнения упражнения 4 А.5. Упражнение 5. Создание FEO-диаграммы Предположим, что при обсуждении бизнес-процессов возникла необхо- димость детально рассмотреть взаимодействие работы "Сборка и тести- рование компьютеров" с другими работами. Чтобы не портить диаграмму декомпозиции, создайте FEO-диаграмму, на которой будут только стрелки работы "Сборка и тестирование компьютеров". 1. Выберите пункт меню Diagram/Add FEO Diagram. 2. В диалоге Add New FEO Diagram выберите тип и внесите имя диа- граммы FEO. Щелкните по ОК. 3. Для определения диаграммы перейдите в Diagram/Diagram Properties и во вкладку Diagram Text внесите определение. 4. Удалите лишние стрелки на диаграмме FEO. Результат показан на рис. А.5.1. Результаты сборки и тестирования клиентов Сборка и тестирование компьютеров 1 Отгрузка и Собранные получение компьютеры Рис. А.5.1. Диаграмма FEO Для перехода между стандартной диаграммой, деревом узлов и FEO ис- пользуйте кнопку ЙЙ на палитре инструментов. 381
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite А.6. Упражнение 6. Расщепление и слияние моделей А.6.1. Расщепление модели Перед выполнением упражнения 6 внимательно прочитайте гл. 1.2.7. 1. Перейдите на диаграмму АО. Правой кнопкой мыши щелкните по работе "Сборка и тестирование компьютеров" и выберите Split model. 2. В диалог Split Option внесите имя новой модели "Сборка и тести- рование компьютеров", установите опции как на рисунке и щелкните по ОК (рис. А.6.1). Рис. А.6.1. Диалог Split Option 3. Посмотрите на результат: в Model Explorer появилась новая модель, а на диаграмме АО модели "Деятельность компании" появилась стрелка вы- зова "Сборка и тестирование компьютеров". 4. Создайте в модели "Сборка и тестирование компьютеров" новую стрелку, "Неисправные компоненты". На диаграмме АО это будет гранич- ная стрелка выхода, на диаграмме АО - граничная стрелка выхода от работ "Сборка настольных компьютеров", "Тестирование компьютеров" и "Сборка ноутбуков". А.6.2. Слияние модели 1. Перейдите на диаграмму АО модели "Деятельность компании". 2. Правой кнопкой мыши щелкните по работе "Сборка и тестирование компьютеров" и выберите Merge model. 3. В диалоге Merge Model включите опцию Cut/Paste entire dictionaries и щелкните по ОК. Посмотрите на результат. В Model Explorer видно, что две модели сли- лись. Модель "Сборка и тестирование компьютеров" осталась и может быть сохранена в отдельном файле. На диаграмме АО модели "Деятельность ком- 382
Приложение А. Практикум пании" исчезла стрелка вызова "Сборка и тестирование компьютеров”. Появилась неразрешенная граничная стрелка "Неисправные компоненты ". Направьте эту стрелку ко входу работы "Отгрузка и получение". А..7. Упражнение 7. Создание диаграммы IDEF3 Перед выполнением упражнения 7 внимательно прочитайте гл. 1.4. 1. Перейдите на диаграмму А2 и декомпозируйте работу "Сборка на- стольных компьютеров". В диалоге Activity Box Count (рис. А.7.1) устано- вите число работ 4 и нотацию IDEF3. Number of Activities In П—п this DecomposlUen |(И|*. Г 3 I Olt I ' I I Puc. A. 7.1. Выбор нотации IDEF3 в диалоге Activity Box Count Возникает диаграмма IDEF3, содержащая работы (UOW). Правой кноп- кой мыши щелкните по работе, выберите в контекстном меню Name и внесите имя работы "Подготовка компонентов". Затем во вкладке Definition внесите определение "Подготавливаются все компоненты компь- ютера согласно спецификации заказа". 2. Во вкладку UOW внесите свойства работы (табл. А.7.1). Таблица А. 7.1. Свойства UOW Objects Компоненты: винчестеры, корпуса, материнские платы, видеокар- ты, звуковые карты, дисководы CD-ROM и флоппи, модемы, про- граммное обеспечение Facts Доступные операционные системы: Windows 98, Windows NT, Windows 2000 Constrains Установка модема требует установки дополнительного программ- ного обеспечения 3. Внесите в диаграмму еще три работы (кнопка ЯВ). Внесите имена следующих работ: • Установка материнской платы и винчестера. • Установка модема. • Установка дисковода CD-ROM. 383
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite • Установка флоппи- дисковода. • Инсталляция операционной системы. • Инсталляция дополнительного программного обеспечения. 4. С помощью кнопки палитры инструментов создайте объект ссыл- ки. Внесите имя объекта внешней ссылки "Компоненты ". Свяжите стрелкой объект ссылки и работу "Подготовка компонентов". 5. Свяжите стрелкой работы "Подготовка компонентов" (выход) и "Установка материнской платы и винчестера". Измените стиль стрел- ки на Object Flow. В IDEF3 имя стрелки может отсутствовать, хотя BPwin показывает от- сутствие имени как ошибку. Результат показан на рис. А.7.2. Установка флолпи- Установка дисковода CD-ROM I. I - Установка модема е±±: Инсталляция операционной системы в I Инсталляция дополнительного программного обеспечения , I Рис. А. 7.2. Результат создания UOWи объекта ссылки 6. С помощью кнопки -S3 на палитре инструментов внесите два пере- крестка типа асинхронного "или" и свяжите работы с перекрестками, как показано на рис. А.7.3. Рис. А. 7.3. Диаграмма IDEF3 после создания перекрестков 384
Приложение А. Практикум 7. Правой кнопкой щелкните по перекрестку для разветвления (fan-out), выберите Name и внесите имя "Компоненты, требуемые в спецификации заказа". Создайте два перекрестка типа исключающего "ИЛИ" и свяжите работы, как показано на рис. А.7.4. Рис. А.7.4. Результат выполнения упражнения 7 А.8. Упражнение 8. Создание сценария 1. Выберите пункт меню Diagram/Add IDEF3 Scenario. Создайте диаграмму сценария на основе диаграммы IDEF3 "Сборка на- стольных компьютеров" (А22.1). 2. Удалите элементы, не входящие в сценарий (рис. А.8.1). Рис. А.8.1. Результат выполнения упражнения 8 385
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite А.9. Упражнение 9. Стоимостный анализ (Activity Based Costing) Перед выполнением упражнения 9 внимательно прочитайте гл. 1.3 и 2.1. 1. В диалоге Model Properties (вызывается из меню Mode/Model Proper- ties) во вкладке ABC Units (рис. А.9.1) установите единицы измерения денег и времени - рубли и часы. 2. Перейдите в Dictionary/Cost Center и в диалоге Cost Center Dictionary внесите название и определение центров затрат (табл. А.9.1). Таблица А.9.1. Центры затрат АВС Центр затрат Определение Управление Затраты на управление, связанные с составлением графика работ, формированием партий компьютеров, контролем над сборкой и тестированием Рабочая сила Затраты на оплату рабочих, занятых сборкой и тестированием компьютеров Компоненты Затраты на закупку компонентов 386
Приложение А. Практикум Для отображения стоимости каждой работы в нижнем левом углу пря- моугольника перейдите в меню Model/Model Properties и во вкладку Display диалога Model Properties включите опцию ABC Data (рис. А.9.2). Рис. А.9.2. Вкладка Display диалога Model Properties Для отображения частоты или продолжительности работы переключите радиокнопки в группе ABC Units. Для назначения стоимости работе следует щелкнуть по ней правой кнопкой мыши и выбрать в контекстном меню Cost (рис. А.9.3). Рис. А.9.3. Вкладка Cost диалога Activity Properties 387
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 3. Для работ на диаграмме А2 внесите параметры АВС (табл. А.9.2). Таблица А.9.2. Стоимости работ на диаграмме А2 Имя работы (Activity Name) Центр затрат (Cost Center) Сумма центра затрат (Cost Center Cos)t, руб. Продолжи- тельность (Duration), день Частота (Frequency) Отслеживание рас- писания и управле- ние сборкой и тестированием Управление 500,00 1,00 1,00 Сборка настольных компьютеров Рабочая сила 100,00 1,00 12,00 Компоненты 16000,00 Сборка ноутбуков Рабочая сила 140,00 1,00 20,00 Компоненты 28000,00 Тестирование компьютеров Рабочая сила 60,00 1,00 32,00 Посмотрите резу _i 1_ Сборка и тестирование комгъютероЕ 585 620 р. 4. Сгенерируйте activity Каме Сборка и тестирование компьптеров Отслеживание расписали и управление сборкой и тестированием Сборка настольных компывтеров льтат - стоимость работы верхнего уровня (рис. А.9.4). Рис. А.9.4. Отображение стоимости Д в нижнем левом углу прямоугольника работы отчет Activity Cost Report (рис. А.9.5). Activity Cost Cost Center Cost Center Cost (Рубль) ' (Рубль) 585 62В,08 Компоненты 579 200,00 Рабочая сила 5 920,00 Управление 580,оо 580,00 Управлепие 588,00 1 700,00 Компоненты 1 600,00 Рабочая сила 100,00 Рис. А.9.5. Отчет Activity Cost Report А.10. Упражнение 10. Использование категорий UDP Перед выполнением упражнения 10 внимательно прочитайте гл. 1.3, 2.1 и 2.2. 388
Приложение А. Практикум 1. Перейдите в меню Dictionary/UDP Keywords и в диалог UDP Keyword List внесите следующие ключевые слова UDP (рис. А.10.1): • Расход ресурсов. • Документация. • Информационная система. Рис. А.10.1. Словарь ключевых слов UDP 2. Создайте UDP. Для этого перейдите в Dictionary/UDP и в словарь вне- сите имя UDP, например "Приложение". 3. Для UDP типа List необходимо в поле Value задать список значений. Для UDP - "Приложение". Внесите значение "Модуль оформления заказов" (рис. А. 10.2). |J«JUDP Dictionary £t Name иОРОЛ*!» Keyword Дополнительная документация POWERPNT.EXE мпрЬЗ дЛ WnwodEXE tawteldoc WnwocdEXE sampleZdoc Command List Документация Загрязнение окружающей среды История изменения Высокое Низкое Очень высокое Среднее Text List (Single selection) Paragraph Text Документация Приложение Расход электроэнергии Модуль оформления заказов Модуль процедур сборки и пои Модуль создания и контроля р Модуль учета комплектующих t Text List (Multiple selections) R^Nwiber Text . .. Информационная система Расход ресурсов 1 Рис. А. 10.2. Словарь UDP Затем внесите другие значения в соответствии с табл. А.10.1. Для под- ключения к UDP ключевого слова перейдите к полю Keyword и щелкните по полю выбора. 389
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Таблица А. 10.1. Наименование и свойства UDP Наименова- ние UDP Тип Значение Ключевое слово Приложения Text List (Multiple Selection) Модуль оформления заказов. Модуль создания и контроля рас- писания выполнения работ. Модуль учета комплектующих и оборудования. Модуль процедур сборки и поиска неисправностей Информа- ционная система Дополни- тельная до- кументация Command List Winword.EXE samplel.doc Winword.EXE sample2.doc POWERPNT.EXE sample3.ppt Докумен- тация История изменения Paragraph Text Докумен- тация Загрязнение окружающей среды Text List (Single Selection) Очень высокое Высокое Среднее Низкое Расход элек- троэнергии Real Number Расход ресурсов 4. Для назначения UDP работе следует щелкнуть по ней правой кнопкой мыши и выбрать в контекстном меню UDP. Появляется вкладка UDP Values диалога Activity Properties (рис. А. 10.3). Рис. А. 10.3. Вкладка UDP Values диалога Activity Properties 390
Приложение А. Практикум Внесите значения UDP для работ (табл. А. 10.2). Таблица А. 10.2. Значения UDP Имя работы (Activity Name) Дополни- тельная до- кументация Приложения История изменения Расход электро- энергии Загрязнение окружаю- щей среды Сборка на- стольных компью- теров Модуль учета комплектующих и оборудования. Модуль процедур сборки и поиска неисправностей 20,00 Среднее Сборка ноутбуков Модуль учета комплектующих и оборудования. Модуль процедур сборки и поиска неисправностей 25,00 Среднее Тестиро- вание ком- пьютеров Модуль учета комплектующих и оборудования. Модуль процедур сборки и поиска неисправностей 40,00 Среднее Отслежива- ние расписа- ния и управ- ление сбор- кой и тести- рованием Win word.EXE sample2.doc Модуль создания и контроля расписания выполнения работ История изменения специфи- каций 10,00 Низкое 5. После внесения UDP типа Command или Command List щелчок по кнопке УК приведет к запуску приложения. 6. В диалоге Activity Properties щелкните по кнопке Filter. В появив- шемся диалоге Diagram object UDP filter (рис. A. 10.4) отключите ключевые слова "Информационная система". Щелкните по ОК. В результате в диалоге Activity Properties не будут отображаться UDP с ключевыми словами "Ин- формационная система". Отметим, что свойства UDP можно присвоить не только работам, но и стрелкам. 391
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite 1. Посмотрите отчет по UDP. Меню Tools/Rcport/Diagram Object Report. Выберите опции отчета: Start from Activity: А2. Сборка и тестирование компьютеров Number of Levels: 2 User Defined Properties: Расход электроэнергии Report Format: RPTwin. 8. Щелкните по кнопке Report. В появившемся диалоге "Сохране- Рис. А. 10.4. Диалог Diagram object UDP filter ние файла" щелкните по кнопке "Сохранить". Запускается генератор отчетов RPTwin и появляется диалог New Report. Выберите тип отчета Columnar (рис. А. 10.5). Рис. А. 10.5. Диалог New Report Автоматически создается шаблон отчета (рис. А. 10.6). QB> Ей ЦЦ> 1д. „ 'jjJN- Р1*1И «lai г □ г—з Дрй । Г1-1 и BPACT000 о; расход Эяевхроэмергмм Лз tebvityHan*. Рао* Footer Расход 9- И \ Activity Name ^Расход электроэнергии Pd&Nir Рис. А. 10.6. Шаблон отчета в RPTwin 392
Приложение А. Практикум Нажатие на кнопку И=зЫ позволяет просмотреть отчет. Отразим в отчете суммарный расход электроэнергии. 9. Выберите в меню Insert/Formula Field, затем переместите маркер в сек- цию отчета Page Footer, затем щелкните один раз. Появляется диалог Formula Editor (рис. А. 10.7). 10. В поле Formula внесите текст формулы: Sum (("Расход электроэнергии")) Рис. А. 10.7. Диалог Formula Editor 11. Затем щелкните по ОК. Отчет показывается в окне просмотра (рис. А. 10.8). В нижней части страницы расположено суммирующее поле- результат вычисления формулы (на рис. А. 10.8 не видно). Рис. А. 10.8. Окно просмотра отчета в RPTwin 393
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite А.11. Упражнение 11. Расщепление модели Перед выполнением упражнения 11 внимательно прочитайте гл. 1.2.7. 1. Перейдите на диаграмму АО и щелкните правой кнопкой мыши по работе "Отгрузка и получение". В контекстном меню выберите Split Model. В появившемся диалоге Split Option установите опцию Enable Merge /Overwrite Option, внесите имя новой модели - "Отгрузка и получение" и щелкните по ОК. Обратите внимание, что у работы "Отгрузка и получение" появилась стрелка вызова. BPwin создал также новую модель "Отгрузка и получение". 2. Внесите следующие свойства новой модели: • Time Frame: AS-IS. • Purpose: Документировать работу "Отгрузка и получение". • Viewpoint: Начальник отдела. • Definition: Модель создается для иллюстрации возможностей BPwin по расщеплению и слиянию моделей. • Scope: Работы по получению комплектующих и отправке готовой про- дукции. 3. Декомпозируйте контекстную работу на три работы (табл. А. 11.1). Таблица А. 11.1. Декомпозиция работы "Отгрузка и получение" Имя работы (Activity Name) Определение работы (Activity Definition) Получить комплектующие Физически получить комплектующие и сделать соответствующие записи в информационной системе Доставить комплектующие Доставить комплектующие сборщикам и тестировщикам Отгрузить товар и возврат Отгрузить товар клиентам и неисправные компо- ненты (возврат) поставщикам 4. Свяжите граничные стрелки, как показано на рис. А. 11.1. 394
Приложение А. Практикум I Правила и процедуры Собранны^ компьютеры Неисправные компонент^ Бухгалтерская система Рис. А. 11.1. Внутренние стрелки на декомпозиции работы "Отгрузка и получение" 5. Внесите следующие внутренние и граничные стрелки (табл. А. 11.2). Таблица А. 11.2. Внутренние и граничные стрелки на декомпозиции работы "Отгрузка и получение" Имя стрелки (Arrow Name) Определение работы (Arrow Definition) Возврат поставщику Неисправные компоненты Компоненты Выберите название из списка (словаря) Компоненты от поставщика Проверенные компоненты Проверенные и подготовленные для передачи сборщикам и тестировщикам компоненты 6. Тоннелируйте граничные стрелки (Resolve Border Arrow). Результат выполнения упражнения показан на рис. А.11.2. Рис. А.11.2. Результат выполнения упражнения И 395
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite А.12. Упражнение 12. Слияние расщепленной модели с исходной моделью 1. Перейдите в модель "Деятельность компании". На диаграмме АО щелкните правой кнопкой мыши по работе "Отгрузка и получение". В контекстном меню выберите Merge Model. В появившемся диалоге Merge Model установите опцию Cut/Paste entire dictionaries и щелкните по ОК. Обратите внимание, что у работы "Отгрузка и получение" исчезла стрелка вызова и появилась новая декомпозиция. Появились новые стрелки с квадратными скобками. Тоннелируйте эти стрелки (Resolve Border Arrow). 2. На диаграмме АО тоннелируйте и свяжите стрелки согласно рис. А.12.1. Рис. А. 12.1. Результат выполнения упражнения 12 А.13. Упражнение 13. Копирование работ А. 13.1. Копирование работ в другую модель 1. Создайте новую модель "ТЕСТ". Декомпозируйте контекстную работу в новой модели, но не вносите имена работ. 2. Переключите Model Explorer во вкладку Activity. В технике drag & drop перенесите какую-нибудь работу из модели "Деятельность компании" на диаграмму декомпозиции модели "ТЕСТ". В появившемся диалоге 396
Приложение А. Практикум Continue with Merge? установите опцию Paste/Merge entire dictionaries и щелкните по ОК. В результате работа из модели "Деятельность компании" копируется на новую диаграмму модели "ТЕСТ". А. 13.2. Перемещение работ в той же самой модели Щелкните по работе в модели "ТЕСТ" и переместите работу на место неназванной работы на другой диаграмме. В появившемся диалоге Continue with Merge? щелкните по ОК. В результате работа переносится из одной диаграммы на другую. А.14. Упражнение 14. Создание модели ТО-ВЕ (реинжиниринг бизнес-процессов) Модель ТО-ВЕ создается на основе анализа модели AS-1S. Анализ может проводиться как по формальным признакам (отсутствие выходов или управ- лений у работ, отсутствие обратных связей и т. д.), так и по неформаль- ным - на основе знаний предметной области. Допустим, в результате анализа принимается решение реорганизовать функ- ции производства и тестирования компьютеров и оставить функциональности "Продажи и маркетинг" и "Отгрузка и получение" пока без изменений. Принято решение сформировать отдел дизайна, который должен форми- ровать конфигурацию компьютеров, разрабатывать корпоративные стандар- ты, подбирать приемлемых поставщиков, разрабатывать инструкции по сборке, процедуры тестирования и устранения неполадок для всего про- изводственного отдела. Работа "Сборка и тестирование компьютеров" должна быть реорганизо- вана и названа "Производство продукта". Будут созданы работы "Разрабо- тать конфигурацию", "Планироватьпроизводство"и "Собратьпродукт". Рассмотрим новые роли персонала. Дизайнер должен разрабатывать сис- тему, стандарты на продукцию, документировать и передавать специфика- ции в отдел маркетинга и продаж. Он должен определять, какие компонен- ты (аппаратные и программные) должны закупаться для сборки компьюте- ров, обеспечивать документацией и управлять процедурами сборки, тестирования и устранения неполадок. Функции диспетчера в работе "Сборка и тестирование компьютеров" должны быть заменены на функции планировщика. Планировщик должен обрабатывать заказы клиентов и генерировать за- казы на сборку, получить коммерческий прогноз из отдела маркетинга и формировать требования на закупку компонентов и собирать информацию от поставщиков. 397
С. В. Маклаков, Создание информационных систем с AllFusion Modeling Suite Диспетчер должен составлять расписание производства на основании за- казов на сборку, полученных в результате работы "Планировать произ- водство", получать копии заказов клиентов и отвечать за упаковку и комплектацию заказанных компьютеров, передаваемых в работу "От- грузка и получение". А. 14.1. Расщепление и модификация модели 1. Измените свойства модели "Деятельность компании": • Model Name: Предлагаемая модель компании. • Time Frame: TO-BE. • Purpose: Документировать предлагаемые изменения бизнес-процессов компании. 2. Переименуйте работу "Сборка и тестирование компьютеров" в "Про- изводство продукта”. Расщепите эту работу в модель с тем же названием. 3. Модифицируйте отщепленную модель. Переместите работу "Тести- рование компьютеров" с диаграммы АО "Производство продукта" на диа- грамму А2.1 "Сборка настольных компьютеров". 4. Переименуйте работу "Сборка настольных компьютеров" на диаг- рамме АО в "Сборку продукта". 5. Удалите работу "Сборка ноутбуков". 6. Переименуйте стрелку "Заказы на настольные компьютеры" в "Заказы на изготовление". 1. Переименуйте работу "Отслеживание расписания и управление сборкой и тестированием" в "Планирование производства". 8. Создайте работу "Разработать конфигурацию". 9. Создайте ветвь стрелки "Персонал производственного отдела", на- зовите ее "Дизайнер" и направьте как механизм к работе "Разработать конфигурацию ". 10. Создайте стрелку "Стандарты на продукцию" и направьте ее от выхода "Разработать конфигурацию" к границе диаграммы. Тоннели- руйте эту стрелку (Resolve Border Arrow). Создайте ветвь этой стрелки, идущую к управлению работы "Планирование производства", и назовите ее "Списком необходимых компонентов ". 11. Удалите стрелку "Правила сборки и тестирования". Создайте ветвь стрелки "Стандарты на продукцию", идущую к управлению работы "Сборка продукта ", и назовите ее "Правилами сборки и тестирования ". 398
Приложение А. Практикум 12. Переименуйте стрелку "Диспетчер" в "Планировщика произ- водства". 13. Добавьте стрелку "Прогноз продаж" как граничную управляющую к работе "Планирование производства". 14. Добавьте стрелку "Информация от поставщика" как граничную управляющую к работе "Планирование производства". 15. Добавьте стрелку "Заказ поставщику" как граничную стрелку вы- хода от работы "Планирование производства". 16. Тоннелируйте эти стрелки (Resolve Border Arrow). 17. На диаграмме АО тоннелируйте стрелку (Resolve Border Arrow) "Со- бранные компьютеры" и свяжите ее на диаграмме АО с выходом работы "Сборка продукта". Результат выполнения первой части упражнения 14 приведен на рис. А.14.1 и А.14.2. Информация от посгавирисэ , Прогноз продаж Заказы клиентов Список необходимых компонент Заказ поставиуоф Планирование производства < Заказы на изготовление Правила Результаты сборки и сборки тестированмтестирбмния Компоненты 'Ч1Л8НМрОВЩИК производства Сборка продукта Неисправные компоненты Собранные компьютеры Дизайнер Разработать конфигурацию * Стандарты на продутщию t —Персонал производственного отдела Рис. А. 14.1. Результат выполнения первой части упражнения 14 - диаграмма АО Информация от поставимка Заказы клиентов Прогноз продаж Результаты сборки и тестирования Цзаказ поставщику Компоненты Производство продукта ^Неисправные компоненты ^Собранные компьютеры Стандарты на продукцию Рис. А. 14.2. Результат выполнения первой части упражнения 14 - диаграмма А-0 399
С, В. Маклаков. Создание информационных систем с AllFusion Modeling Suite А.14.2. Слияние модели 1. Перейдите к работе "Производство продукта" в модели "Деятель- ность компании". Щелкните правой кнопкой мыши по работе. В контекст- ном меню выберите Merge Model. В появившемся диалоге Merge Model ус- тановите опцию Cut/Paste entire dictionaries, опцию Overwrite existing fields и щелкните по OK. Модели должны слиться. 2. На диаграмме АО тоннелируйте стрелки (Resolve Border Arrow) "Ин- формация от поставщика" и "Заказ поставщику". 3. Направьте стрелку "Прогноз продаж" с выхода "Продажи и мар- кетинг" на управление "Производство продукта". 4. Направьте стрелку "Стандарты на продукцию" с выхода "Произ- водство продукта" на управление "Продажи и маркетинг". 5. Удалите ветвь стрелки управления "Правила и процедуры" работы "Производство продукта". 6. Закройте модель "Производство продукта". Результат выполнения второй части упражнения 14 приведен на рис. А.14.3 и А.14.4. Правила и процедуры Информация от поставщика Маркетинговые материалы Звонки клиентов Компоненты от поставщика Заказ поставщику Деятельность компании " Возврат поставщику >9 685 о!м———— —- Проданные Бухгалтерская продукты система Vlewpoinc Директор Purpose: Моделировать текущие (AS48) <изиесч!роцессы компании Quill Рис. А.14.3. Результат выполнения второй части упражнения 14 - диаграмма А-0 400
Приложение А. Практикум Рис. А. 14.4. Результат выполнения второй части упражнения 14 - диаграмма АО А.14.3. Использование Model Explorer для реорганизации дерева декомпозиции Существуют причины, по которым работа "Разработать конфигу- рацию" должна быть на верхнем уровне, на диаграмме АО. Действительно, дизайнер разрабатывает стандарты на продукцию, включая правила сборки и тестирования, и список необходимых для закупки компонентов. Тем са- мым дизайнер управляет производством продукта в целом, кроме того, управляет работой "Продажи и маркетинг". Было бы логично перенести эту работу на уровень выше. Используя возможности Model Explorer, перенесите работу "Разрабо- тать конфигурацию" с диаграммы А2 "Производство продукта" на ди- аграмму АО. Разрешите и перенаправьте стрелки согласно рис. А. 14.5 и А. 14.6. 401
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Правила и процедуры Х*Ыформация о» поставднка Стандарты на прадедов Разработать сонфигурацию Z Я —... у Маркетинговые териаль^ Трог ноз продаж Результаты сводом тестирования Звоню клиентов Компоненты от поставержа Бухгалтерская система |Собра№ые I компьютеры Отгрузка и получение Продажи и маркетинг 22. Производство Г продукта wseg____ эГ Неистцтаеные компоненты Заказ поставдо» Возврат поставдоу Глоданные продукты ^компоненты Рис. А. 14.5. Результат выполнения третьей части упражнения 14 - диаграмма АО Информация от поставщика Прогноз продаж Заказы клиентов г—Стандарты на продукцию Список "^необходимых Правила ^сборки и Заказ поставщику и Планирование производства 12__________________________1 тестирования Заказы на изготовление Компоненты планировщик производства Б. Сборка продукта wiwl *_______г. Рекультаты сборки и тестирования Неисправные компоненты Собранные компьютеры "''г'"ЧПерсонал производственного отдела Рис. А. 14.6. Результат выполнения третьей части упражнения 14 - диаграмма АЗ А. 14.4. Модификация диаграммы IDEF3 "Сборка продукта" с целью отображения новой информации Так же как в модели AS-IS, сборка продукта состоит из сборки ком- понентов и установки программного обеспечения. Однако теперь в работу "Сборка продукта" включена работа "Тестирование компьютера". 402
Приложение А Практикум Тестирование начинается после окончания процесса сборки компьютера и окончания процесса установки программного обеспечения. Если ком- пьютер неисправен, в процессе тестирования у него заменяют компоненты, информация о неисправных компонентах может быть направлена на работу "Подготовка компонентов". Такая информация может помочь более тща- тельно подготавливать компоненты к сборке. Результатом процесса тести- рования являются заказанные компьютеры и неисправные компоненты. Модифицируйте диаграмму IDEF3 "Сборка продукта" в соответствии с приведенной информацией. Результат представлен на рис. А. 14.7. Рис. А. 14.7. Результат выполнения четвертой части упражнения 14- диаграмма А32.1 А. 14.5. Декомпозиция работы "Продажи и маркетинг" Работа по продажам и маркетингу заключается в ответах на телефонные звонки клиентов, предоставлении клиентам информации о ценах, оформ- лении заказов, внесении заказов в ИС и исследовании рынка. На основе этой информации декомпозируйте работу "Продажи и мар- кетинг" (IDEFO). Создайте следующие работы: • Предоставление информации о ценах. • Оформление заказов. • Исследование рынка. 403
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Результат декомпозиции представлен на рис. А. 14.8. Рис. А. 14.8. Результат выполнения пятой части упражнения 14 - диаграмма А2 А.15. Упражнение 15. Создание диаграммы DFD При оформлении заказа важно проверить, существует ли такой клиент в базе данных и, если не существует, внести его в базу данных и затем оформить заказ. Оформление заказа начинается со звонка клиента. В про- цессе оформления заказа база данных клиентов может просматриваться и редактироваться. Заказ должен включать как информацию о клиенте, так и информацию о заказанных продуктах. Оформление заказа подразумевает чтение и запись информации о прочих заказах. В процессе декомпозиции согласно правилам DFD необходимо преоб- разовать граничные стрелки во внутренние, начинающиеся и заканчиваю- щиеся на внешних ссылках. 1. Декомпозируйте работу "Оформление заказов" на диаграмме А2. 2. В диалоге Activity Box Count выберите количество работ 2 и нотацию DFD (рис. А. 15.1). 3. Щелкните по ОК и внесите в новую диаграмму, DFD А22, имена работ: • Проверка и внесение клиента. • Внесение заказа. 4. Используя кнопку [{El на палитре инструментов, внесите хранилища данных: 404
Приложение А Практикум • Список клиентов; • Список продуктов. • Список заказов. Рис. А. 15.1. Выбор нотации DFD в диалоге Activity Box Count 5. Удалите граничные стрелки с диаграммы DFD А22. 6. Используя кнопку на палитре инструментов, внесите внешнюю ссылку: • Звонки клиентов. 7. Создайте внутренние ссылки согласно рис. А. 15.2. При именовании стрелок используйте словарь. Рис. А. 15.2. Диаграмма А22 8. Обратите внимание, что стрелки "Информация о клиентах" и "Заказы клиентов" двунаправленные. Для того чтобы сделать стрелку двунаправленной, щелкните правой кнопкой по стрелке, выберите в кон- текстном меню пункт Style и во вкладке Style выберите опцию Bidirectional. 9. На родительской диаграмме А2 тоннелируйте (Change to Tunnel) стрелки, подходящие и исходящие из работы "Оформление заказов" (рис. А.15.3). 405
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Стандарты на продуши» Правилам процвдоы Заяви на заказ Оформление заказов Заказы клиентов 4 -а 1 г бухгалтерская система Рис. А. 15.3. Работа "Оформление заказов" на диаграмме А2 А. 16. Упражнение 16. Использование Off-Page Reference на диаграмме DFD Некоторые стрелки с диаграмм IDEF0 и DFD (не только с родительских) могут показываться на диаграмме DFD. Для отображения таких стрелок ис- пользуется инструмент Off-Page Reference. 1. Декомпозируйте работу "Исследование рынка" на диаграмме А2 на диаграмму DFD. Удалите граничные стрелки. Создайте следующие работы: • Разработка прогнозов продаж. • Разработка маркетинговых материалов. • Привлечение новых клиентов. о тл 1^=1 2. Используя кнопку 1-1 на палитре инструментов, внесите хранилища данных: • Список клиентов. • Список продуктов. • Список заказов. 3. Добавьте две внешние ссылки: • Маркетинговые материалы. • Прогноз продаж. 4. Свяжите объекты диаграммы DFD стрелками, как показано на рис. А. 16.1. 406
Приложение А Практикум Рис. А. 16.1. Диаграмма А23 5. На родительской диаграмме А2 тоннелируйте (Change to Tunnel) стрелки, подходящие и исходящие из работы "Исследованиерынка". 6. В случае внесения новых клиентов в работу "Проверка и внесение клиента” на диаграмме А22 "Оформление заказов" информация должна направляться к работе "Привлечение новых клиентов" диаграммы А23 "Исследование рынка". Для этого необходимо использовать инструмент Off-Page Reference. На диаграмме А22 "Оформление заказов" создайте но- вую граничную стрелку, исходящую из работы "Проверка и внесение кли- ента”, и назовите ее "Информацией о новом клиенте" (рис. А.16.2). Проверка и внесение клиента Информация о новом клиенте Рис. А.16.2. Граничная стрелка "Информация о новом клиенте" на диаграмме А22 7. Правой кнопкой щелкните по наконечнику стрелки и выберите в меню Off-Page Reference. В появившемся диалоге Off-Page Arrow Reference (рис. А. 16.3) выберите в качестве диаграммы A23D "Исследование рынка". 407
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Рис. А. 16.3. Диалог Off-Page Arrow Reference 8. Перейдите в меню Model/Model Properties, далее - во вкладку Display. Установите опцию Off-Page Reference label - Node number. 9. Перейдите на диаграмму A23D "Исследование рынка" и направьте стрелку "Информация о новом клиенте" на вход работы "Привлечение новых клиентов". Результат представлен на рис. А. 16.4. Информация о новом клиенте Ой-------* «Г • Привлечение новых клиентов Рис. А. 16.4. Межстраничная ссылка на диаграмме А23 408
____________ Приложение Б_______________ Список макрокоманд ERwin Макропеременные, используемые в табл. Б. 1.1: • <defaul value>, <value>, cinitial value> - определяемый пользователем текст или числовое значение, применяемое при генерации; • <action> - SQL-команда, например INSERT, UPDATE или DELETE; • <macro code> - фрагмент макрокода; • <predicate> - булево выражение, которое может возвращать значение FALSE или TRUE; • <prefix>, cold prefix>, cnew prefix> - фрагмент текста или числовое вы- ражение, которое добавляется перед именем таблицы или колонки при генерации; • <separator> - разделитель, который вставляется в текст триггера или про- цедуры при генерации (заключается в двойные кавычки); • ctable name>, cdefault name>, cdomain name>, <validation> - имя табли- цы, значения по умолчанию, домена и правила валидации; • <variable> - переменная, использующаяся в триггере. Таблица Б. 1.1. Макрокоманды ERwin Макрокоманда Описание СУБД %!=(<macro codel>, cmacro code 2>) Оператор сравнения, !=, возвращает TRUE, ес- ли аргументы macro codel и macro code 2 равны Все %% Два символа % необходимо использовать, если расширенный текст триггера должен содержать один символ % п %* (cmacro codel>, cmacro code 2>) Перемножает аргументы macro codel и macro code 2 н %+(cmacro codel>, cmacro code 2>) Складывает аргументы macro codel и macro code 2 н %-(<macro codel>, cmacro code 2>) Вычитает один аргумент из другого (macro codel и macro code 2) п ЛИМОГГПИФИ 409
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Макрокоманда Описание СУБД %/(<macro codel>, <macro code 2>) Делит один аргумент на другой (macro codel и macro code 2) Все %:<variable> Возвращает значение <variable> tt %<(<macro codel>, <macro code 2>) Оператор сравнения, <, возвращает TRUE, если аргумент macro codel меньше, чем macro code 2 и %<=(<macro codel>, <macro code 2>) Оператор сравнения, <=, возвращает TRUE, если аргумент macro codel меньше или равен macro code 2 п %=(<variable>, <macro code>) Присваивает аргумент <macro code> перемен- ной <variable> и %=(<macro code 1 >, <macro code 2>) Оператор сравнения, возвращает TRUE, если аргумент macro codel равен macro code 2 tt %>(<macro codel>, <macro code 2>) Оператор сравнения, >, возвращает TRUE, если аргумент macro codel больше, чем macro code 2 tt %>=(<macro codel>, <macro code 2>) Оператор сравнения, >=, возвращает TRUE, если аргумент macro codel больше или равен macro code 2 tt %Action Возвращает имя команды, до или после кото- рой срабатывает триггер, например INSERT, UPDATE, DELETE It %Actions (<separator>) Возвращает список команд, до или после кото- рых срабатывает триггер, например INSERT или UPDATE It %And (<macro codel>, <macro code2>) Выполняет операцию "логическое" и над буле- выми предикатами, заданными в <macro codel> и <macro code2> II %AttDatatype Возвращает тип данных текущего атрибута ti %AttDef Возвращает определение атрибута it %AttDefault Возвращает имя значения по умолчанию, связанное с атрибутом н %AttDomain Возвращает имя домена, связанное с атрибутом н %AttFieldname Возвращает имя колонки, соответствующей ат- рибуту 11 %AttFieldWidth Возвращает целое число, представляющее дли- ну типа данных текущего атрибута, например varchar(50) —>50) tt 410
Приложение Б. Список макрокоманд ERwin Макрокоманда Описание СУБД %AttID Возвращает ID атрибута Все %AttIsFK Булев предикат, который может быть исполь- зован как условие в выражении %If. Он опре- деляет, входит ли текущий атрибут в состав внешнего ключа tt %AttIsRolenamed Булев предикат, который может быть исполь- зован как условие в выражении %If. Он опре- деляет, является ли текущий атрибут именем роли н %AttIsPK Булев предикат, который может быть исполь- зован как условие в выражении %If. Он опре- деляет, входит ли текущий атрибут в состав первичного ключа It %AttName Возвращает логическое имя текущего атрибута ft %AttNullOption Возвращает строку, представляющую режим нулевых значений для текущего атрибута (NULL/NOT NULL) ft %AttPhysDatatype Возвращает физический тип данных текущего атрибута независимо от того, является ли этот тип данных типом данных, определенным пользователем It %AttributeDatatype Возвращает тип данных текущего атрибута tl %AttributeNullOption Возвращает опцию NULL атрибута (NULL или NOT NULL) II % Attribute V alidation Возвращает имя правила валидации, ассоции- рованное с атрибутом tt %Atts(<separator>, <function>,<prefix>) Выдает список всех атрибутов сущности триггера, выполняя заданную функцию для каждого элемента If % AttValidation Возвращает имя правила валидации, ассоции- рованное с данным атрибутом; может быть ис- пользован в ForEachAtt или ForEachFKAtt It %Cardinality Возвращает мощность (кардинальность) связи It %Child Возвращает физическое имя таблицы дочерней сущности в связи tt 411
С. 6. Маклаков. Создание информационных систем с AllFusion Modeling Suite Макрокоманда Описание СУБД %ChildAtts (< separator:», <function>,<prefix>) Возвращает список всех атрибутов дочерней сущности в связи, выполняя заданную функ- цию для каждого элемента Все %ChildFK (<separator>, <function>) Возвращает список внешних ключей дочерней сущности в связи, выполняя заданную функ- цию для каждого элемента 11 %ChildFKDecl (<old prefix>, <new prefix>, <separator>) Возвращает список внешних ключей дочерней сущности в связи с их типами данных (см. %Ра- ramDecl) н %ChildNK (<separator>, <function>,<prefix>) Генерирует разделенный список функций для всех неключевых атрибутов дочерней сущно- сти в связи, выполняя заданную функцию для каждого элемента 11 %ChildNKDecl (<old prefix>, <new prefix:», <separator>) Возвращает список неключевых атрибутов дочерней сущности связи с их типами Данных и %ChildParamDecl (<old prefix>, <new prefix>, <separator>) Возвращает список атрибутов дочерней сущно- сти связи с их типами данных (см. %ParamDecl) и %ChildPK <separator>, <function>,<prefix>) Генерирует разделенный список функций для каждого элемента первичного ключа дочерней сущности, выполняя заданную функцию для каждого элемента (например, update(customer_number) or update(customer_name) or...) и %ChildPKDecl (<old prefix>, <new prefix>, <separator>) Возвращает список атрибутов первичного ключа дочерней сущности связи с их типами данных (см. %ParamDecl) н %CollsFK Булев предикат, принимающий значение TRUE, если колонка является внешним ключом 11 %CollsPK Булев предикат, принимающий значение TRUE, если колонка является первичным ключом •1 %ColumnComment Возвращает комментарий к колонке 11 %ColumnDatatype Возвращает тип данных колонки Ц 412
Приложение Б. Список макрокоманд ERwin Макрокоманда Описание СУБД %ColumnDefault Возвращает имя значения по умолчанию, ассоциированное с колонкой Все %ColumnNullOption Возвращает опцию NULL колонки (NULL или NOT NULL) tt %ColumnPhys- Datatype Возвращает значение UDP колонки II %ColumnProp Возвращает тип данных колонки, включая тип данных, определенный пользователем It %Column V alidation Возвращает имя правила валидации, ассоции- рованное с колонкой tt %ColWidth Возвращает длину типа данных колонки It %Concat (<value 1 >,< value2>) Производит конкатенацию <valuel> и <value2>. Возвращает результат it %CurrentDatabase Возвращает имя базы данных, которое исполь- зуется в диалоге LOGIN при генерации скрипта It %CurrentFile Возвращает имя файла модели (.ER1), на осно- ве которой генерируется скрипт tt %CurrentServer Возвращает имя сервера, для которого генери- руется скрипт It %CurrentUser Возвращает имя пользователя, которое приме- няется в диалоге LOGIN при генерации скрипта tt %CustomTrigger- DefaultBody Часть триггера, определенного пользователем - default body, которая содержится в diagram- wide-сегменте шаблона CUSTOM TRIGGER FOOTER tt %CustomTrigger- DefaultFooter Часть триггера, определенного пользователем - default footer, которая содержится в diagram- wide-сегменте шаблона CUSTOM TRIGGER FOOTER tt %CustomTrigger- DefaultHeader Часть триггера, определенного пользователем - default header, которая содержится в diagram- wide-сегменте шаблона CUSTOM TRIGGER HEADER If %DatatypeName() Возвращает тип данных It %DatatypeScale() Для десятичных типов данных возвращает раз- ряд числа 11 %DatatypeW id th() Возвращает ширину поля It 413
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Макрокоманда Описание СУБД %Datetime Возвращает строку, представляющую текущую дату и время Все %DBMS Возвращает имя СУБД tt %DBMSDelim Возвращает разделитель операторов СУБД II %Decl(<arg>, <initial value>) Объявляет <arg> как переменную и, если это задано, присваивает ей значение <initial value> tt %DefaultName Возвращает имя по умолчанию tt %DefaultValue Возвращает значение по умолчанию tt %DomamComment (<domain name>) Возвращает комментарий к домену 11 %DomainDatatype (<domain name>) Возвращает физический тип данных домена It %DomainDef (<domain name>) Возвращает определение домена It %DomainIsRequired (<domain name>) Возвращает опцию домена (NULL, NOT NULL, IDENTITY WITH NULL или NOT NULL WITH DEFAULT) It %Domain- LogDatatype (<domain name>) Возвращает логический тип данных домена It %DomainLogDefault (<domain name>) Возвращает имя значения по умолчанию, ассо- циированное с доменом на логическом уровне модели II %DomainName Возвращает имя домена tl %DomainNullOption (<domain name>) Возвращает опцию NULL домена (NULL или NOT NULL) It %DomainPhys- Datatype (<domain name>) Возвращает физический тип данных домена tt %DomainPhys- Default (<domain name>) Возвращает имя значения по умолчанию, ассо- циированное с доменом на физическом уровне модели It %DomainV alidation (<domain name>) Возвращает имя правила валидации, ассоции- рованное с доменом tl %EntityId(<entity or tablename>) Возвращает ID сущности или таблицы tt 414
Приложение Б. Список макрокоманд ERwin Макрокоманда Описание СУБД %EntityName (<entity or tablename>) Возвращает имя сущности или таблицы Все %File(<filename>, <macro code>) Макрокод записывается в файл И %Fire Задает, когда срабатывает триггер, например BEFORE или AFTER INFORMIX Ingres ORACLE 7 Rdb %ForEachAtt (<table>, <separator>) (<macro code>) Расширяет макрокод для каждого из атрибутов заданной сущности Все %ForEachAttribute (<table>, <separator>, <sort order>) { <macro code> } Расширяет макрокод для каждого из атрибутов заданной сущности tt %ForEachChildRel (<separator>) {•^relationship code>} Расширяет <relationship code> для каждой связи, в которой сущность триггера является дочерней и %ForEachColumn (<table>,<separator>, <sort order>) {<macro code>} Расширяет макрокод для каждой из колонок заданной таблицы fl %ForEachDefault (<separator>) { <macro code> ) Расширяет макрокод для каждого значения по умолчанию Все %ForEachDomain (<separator>) { <macro code> } Расширяет макрокод для каждого домена tt %ForEachEntity (<separator>) { <macro code> ) Расширяет макрокод для каждой сущности ft %ForEachFKAtt (<separator>) { <macro code> } Расширяет макрокод для каждого из атрибутов внешнего ключа, мигрировавших через теку- щую связь It 415
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Макрокоманда Описание СУБД %ForEachFKAttribute (<separator>) {<macrocode>} Расширяет макрокод для каждого из атрибутов внешнего ключа, мигрировавших через теку- щую связь Все %ForEachFKColumn (<separator>) {<macro code>} Расширяет макрокод для каждой из колонок внешнего ключа, мигрировавших через теку- щую связь' и %ForEachIndex ([<table>],[<type>], [<name>], [<separator>]) <macro code>} Расширяет макрокод для каждого индекса в подмножестве модели II %ForEachIndexMem (<sequence>), [<separator>]) <macro code>} Расширяет макрокод для каждого члена индек- са в подмножестве модели fl %ForEachKey ([<table>],[<type>], [<separator>]) cmacro code>} Расширяет макрокод для всех инвертирован- ных входов и альтернативных ключей в под- множестве модели tt %ForEachKeyMem (<sequence>), [<separator>]) <macro code>} Расширяет макрокод для всех членов ключей tl %ForEachLogEntity ([<table name>]) {} Расширяет макрокод для всех сущностей подмножества модели (Subject Area) It %ForEachParentRel (<separator>) ^relationship code>} Расширяет Relationship code> для каждой связи, в которой сущность триггера является родительской If %ForEachTable ([<table name>]) {} Расширяет макрокод для всех таблиц подмно- жества модели (Subject Area) II %ForEach Valid- Value <separator>) <macro code>) Расширяет макрокод для всех значений правила валидации tt %ForEach V alidation (<separator>) cmacro code>} Расширяет макрокод для всех правил валидации It 416
Приложение Б. Список макрокоманд ERwin Макрокоманда Описание СУБД %ForEachView ([<view name>]) {<macro code>} Выполняет макрокод для всех представлений текущего подмножества модели Все %ForEachView- Column (<table>,<separator>, <sort order>) { <macro code>} Scope Расширяет макрокод для всех колонок представлений tt %If (<predicate>) {<macro code>} %Else {<macro code>) В зависимости от условия расширяет макроко- ды if или else. Часть else не является обязатель- ной It %include ("path name") Позволяет включать макрокоды триггера в файлы tt %IndexName Возвращает имя индекса It %IndexType Возвращает тип индекса If JoinFKPK (<child table>, <parent table>, <comparison op>, <separator>) Часть условия поиска оператора Where, присоединяющая внешний ключ дочерней сущности к первичному ключу родительской сущности связи It JoinPKPK(<table>, <correlation>, comparison op>, <separator>) Часть условия поиска оператора Where, соединяющая первичные ключи двух корреляций или таблицы и корреляции If % Key Name Возвращает имя ключа ft %Len(<macro code>) Возвращает длину строки <macro code> It % Lower (<macro code>) Преобразует аргумент <macro code> в нижний регистр tt %Max(<valuel>, <value2>) Возвращает максимальное значение - <value I > или <value2> II %Min(<valuel>, <value2>) Возвращает минимальное значение - <valuel> или <value2> tt %NK(<separator>, <function>,<prefix>) Выдает список всех неключевых атрибутов сущности триггера, выполняя заданную функ- цию для каждого элемента If 417
С, 6. Маклаков. Создание информационных систем с AllFusion Modeling Suite Макрокоманда Описание СУБД %NKDecl (cold prefix>, cnew prefix>, <separator>) Выдает список неключевых атрибутов сущно- сти триггера с их типами данных (см. %Param- Decl) Все %Not(<macro code>) Выполняет операцию "логическое" не над булевым предикатом, определенным в «macro code> н %NotnullFK (cchild table>, cnot null expression>, <prefix>, <separator>) Часть условия поиска оператора Where, срав- нивающая внешний ключ дочерней сущности связи с null. Эта макрокоманда расширяется тогда и только тогда, когда связь является неидентифицирующей, nulls allowed tt %Or(<macro codel>, cmacro code2>) Выполняет операцию "логическое" или над булевыми предикатами, определенными в «macro codel> и «macro code2> tl %ParentAttribute (cattribute macro>) Расширяет макрокоманду атрибута внешнего ключа на атрибут родительского первичного ключа tt %ParentCols («sepa- rators cfunction>,cprefix>) Производит заданное действие для каждой из колонок первичного ключа в текущей связи tt %ParentColumn (ccolumn macro>) Расширяет макрокоманду колонки внешнего ключа на колонку родительского первичного ключа tl %ParamDecl (cold prefix>, cnew prefix>, cseparator>) Выдает список всех атрибутов сущности триг- гера с их типами данных. Имя каждого атрибу- та имеет формат <old/new prefix>_«att_name>. Если заданы и старый и новый префикс, то длина списка удваивается. В первой половине списка содержится <old prefix>_«att_name>, во второй - « new prefix>_«att_name> It % ParamPass (cold prefix>, cnew prefix>, cparam/value separators cparam separator:») Присваивает значения параметрам процедур, заданным в «old prefix> и/или в «new prefix> для всех атрибутов сущности триггера Ingres 418
Приложение Б. Список макрокоманд ERwin Макрокоманда Описание СУБД %Parent Возвращает физическое имя таблицы родитель- ской сущности связи Все %ParentAtt (<attribute macro>) Расширяет любую макрокоманду атрибута (на- пример, %AttFieldName, %AttDatatype) для атри- бута родительского первичного ключа, который, мигрировав, сформировал текущий атрибут и %ParentAtts (<separator>, <function>,<prefix>) Выдает список всех атрибутов родительской сущности связи, выполняя заданную функцию для каждого элемента tt %ParentNK (<separator>, <function>,<prefix>) Выдает список всех неключевых атрибутов родительской сущности связи, выполняя заданную функцию для каждого элемента It %ParentNKDecl (cold prefix>, cnew prefix>, <separator>) Выдает список неключевых атрибутов роди- тельской сущности связи с их типами данных (см. %ParamDecl) tt %ParentParamDecl (cold prefix>, cnew prefix>, cseparator>) Выдает список неключевых атрибутов роди- тельской сущности связи с их типами данных (см. %ParamDecl) It %ParentPK (cseparator>, cfunction>) Выдает список всех атрибутов первичного ключа родительской сущности связи, выполняя заданную функцию для каждого элемента tl %ParentPKDecl (cold prefix>, cnew prefix>, cseparator>) Выдает список атрибутов первичного ключа родительской сущности связи с их типами данных (см. %ParamDecl) tl %PhysRelName Возвращает физическое имя связи It %PK(cseparator>, cfunction>) Выдает список первичных ключей сущности триггера, выполняя заданную функцию для каждого элемента It %PKDecl (cold prefix>, cnew prefix>, cseparator>) Выдает список атрибутов первичного ключа сущности триггера с их типами данных (см. %ParamDecl) tt 419
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Макрокоманда Описание СУБД %RefClause Оператор ссылок; генерирует: REFERENCES OLD as cold name> new as cnew name> INFORMIX Ingres ORACLE? Rdb %RelId Возвращает ID связи Все %RelIsNonull Проверяет NULL-выражение для связи и возвращает TRUE, если NULL не разрешены к %RelRI(<action>, <RI Type>) Возвращает правило ссылочной целостности II %RelTemplate Расширяет код шаблона, присоединенного к текущей связи. Если нет присоединенного кода, то расширяется соответствующий шаблон ссылочной целостности tt %RelType Возвращает тип связи tt %Scope Задает, каким образом будет выполняться триггер (например, один раз для всей таблицы, для каждой строки и т. д.) ORACLE? %SetFK (cchild table>, <value>) Выдает список атрибутов внешнего ключа дочерней сущности связи, в котором каждому элементу присвоено заданное значение Все %SetPK(<table>, <value>) Выдает список атрибутов первичного ключа заданной таблицы, в котором каждому элемен- ту присвоено заданное значение tl %Substitute (<value>,<pattem>, <substitute>) Заменяет строку <pattem> в строке <value> на строку <substitute> It %Substr (cmacro code>, cinitial pos>, <length>) Создает подстроку для расширения заданного <macro code> It %Switch (<argument>) {%Choose(<choise 1) {macro code 1} {%Choose(<choise2) {macro code 2} <etc...> %Default {macro code n}} Позволяет расширить макрокод по условию It 420
Приложение Б. Список макрокоманд ERwin Макрокоманда Описание СУБД %Table Name Возвращает физическое имя таблицы сущности триггера Все %Template Name Возвращает имя шаблона триггера, хранимой процедуры или скрипта; может быть использовано в редакторе Entity Trigger II %Trigger Name Возвращает физическое имя триггера It %TriggerRelRI (<action>, <type>,<integrity>) Булев предикат, принимающий значение TRUE, если заданный триггер и связь относятся к заданному действию (Update/Delete/Insert), типу (Child/Parent) и целостности (Cas- cade/Restrict /Set Null/Set Default) и %UpdateChildFK() Выдает список внешнего ключа дочерней сущности связи, выполняя функцию update для каждого элемента ORACLE7, SQL Server SYBASE %UpdateParentPK() Выдает список первичного ключа родительской сущности связи, выполняя функцию update для каждого элемента То же %UpdatePK() Выдает список первичного ключа сущности триггера, выполняя функцию update для каждо- го элемента То же %Upper (<macro code>) Преобразует аргумент <macro code> в нижний регистр Все %ValidationHas- V alidV alues(<arg>) Возвращает TRUE, если заданное правило валидации <arg> имеет допустимые значения, иначе - FALSE II %ValidationName Возвращает имя правила валидации и %ValidationRule (validation name>) или % Validation- Rule Возвращает правило валидации для сервера; может быть использовано в любом месте с аргументом Validation name> или в рамках действия правила, без аргументов II %ValidValue Возвращает значение допустимого значения; используется в рамках действия допустимого значения 11 %ValidValueDef Возвращает определение допустимого значе- ния; используется в рамках действия допусти- мого значения н % VerbPhrase Возвращает глагольную фразу связи и 421
С. В. Маклаков. Создание информационных систем с AllFusion Modeling Suite Макрокоманда Описание СУБД % ViewColumnName Возвращает имя колонки представления И %ViewName Возвращает имя представления tl % ViewOwner ([<separator>]) Возвращает имя владельца представления и % ViewProp Возвращает значение UDP представления и 422
Оглавление Предисловие.................................................... 3 Введение..,...................................................... 5 Глава 1. Создание моделей бизнес-процессов с AllFusion Process Modeler 4,1 (BPwin 4.1)................................. 11 1.1. Инструментальная среда BPwin 4.1..........................11 1.1.1. Общее описание интерфейса BPwin 4.1................11 1.1.2. Создание новой модели...............................12 1.1.3. Установка цвета и шрифта объектов..................14 1.1.4. Model Explorer - навигатор модели процессов........16 1.2. Создание модели в стандарте IDEFO........................18 1.2.1. Принципы построения модели IDEFO...................18 1.2.2. Работа (Activity)..................................24 1.2.3. Стрелка (Arrow)....................................27 1.2.4. Нумерация работ и диаграмм.........................36 1.2.5. Диаграммы дерева узлов и FEO.......................37 1.2.6. Каркас диаграммы...................................40 1.2.7. Слияние и расщепление моделей......................42 1.2.8. Рекомендации по рисованию диаграмм.................45 1.2.9. Проведение экспертизы..............................47 1.3. Стоимостный анализ (АВС) и свойства, определяемые пользователем (UDP)............................................49 1.3.1. Стоимостный анализ (Activity Based Costing)........49 1.3.2. Свойства, определяемые пользователем (User Defined Properties)...............................................55 1.3.3. Использование UDP для экспорта данных функциональной модели в MS Project.......................................61 1.4. Дополнение созданной модели процессов организационными диаграммами, диаграммами DFD и Workflow (IDEF3)...............66 1.4.1. Диаграммы потоков данных (Data Flow Diagramming)....66 1.4.2. Метод описания процессов IDEF3.....................70 1.4.3. Организационные диаграммы и диаграммы Swim Lane....81 1.4.4. Использование нетрадиционного синтаксиса на диаграммах функциональной модели.....................................87 1.4.5. Создание смешанной модели..........................88 1.4.6. Имитационное моделирование.........................94 1.5. Использование обучающего модуля BPwin...................100 /1И4ИОГ41И0И 423
С. В. Маклакое. Создание информационных систем с AllFusion Modeling Suite Глава 2. Создание модели данных с помощью AllFusion ERwin Data Modeler 4.1............................................102 2.1. Отображение модели данных в ERwin.........................102 2.1.1. Физическая и логическая модели данных..............102 2.1.2. Интерфейс ERwin. Уровни отображения модели.........105 2.1.3. Подмножества модели и сохраняемые отображения......113 2.1.4. Model Explorer - навигатор модели данных...........116 2.2. Создание логического уровня модели данных.................117 2.2.1. Подуровни логического уровня модели данных.........117 2.2.2. Сущности и атрибуты................................118 2.2.3. Связи..............................................127 2.2.4. Типы сущностей и иерархия наследования.............139 2.2.5. Ключи..............................................143 2.2.6. Нормализация данных................................149 2.2.7. Денормализация.....................................155 2.2.8. Домены.............................................161 2.2.9. Стандарты именования объектов модели...............165 2.3. Создание физического уровня модели данных.................170 2.3.1. Подуровни физического уровня модели данных.........170 2.3.2. Выбор сервера......................................171 2.3.3. Таблицы, колонки и представления (view)............172 2.3.4. Правила валидации и значения по умолчанию..........180 2.3.5. Индексы............................................183 2.3.6. Задание объектов физической памяти.................188 2.3.7. Триггеры и хранимые процедуры......,...............195 2.3.8. Проектирование хранилищ данных.....................206 2.3.9. Вычисление размера базы данных.....................221 2.3.10. Прямое и обратное проектирование..................224 2.4. Преобразование моделей данных.............................232 2.4.1. Стандарты типов данных.............................232 2.4.2. Создание новой модели на основе существующей.......235 Глава 3. Создание отчетов по моделям процессов и моделям данных..................................................240 3.1. Создание отчетов встроенными средствами BPwin и ERwin.....240 3.1.1. Способы создания отчетов по моделям процессов и моделям данных..........................................240 3.1.2. Встроенные шаблоны отчетов BPwin...................241 3.1.3. Создание отчетов с помощью Report Template Builder.244 3.1.4. Создание отчетов по модели данных с помощью Report Browser 249 424
Оглавление 3.2. Создание отчетов в RPTwin...............................254 3.2.1. Создание нового отчета...........................254 3.2.2. Инструментальная среда RPTwin....................256 3,2.3. Вставка и форматирование объектов отчета.........258 3.2.4. Группировка и сортировка данных отчета...........262 3.2.5. Изменение файла данных отчета....................263 3.2.6. Изменение свойств отчета.........................264 3.2.7. Создание формул RPTwin...........................265 3.2.8. Функции RPTwin...................................268 3.2.9. Использование формул RPTwin......................272 3.3. Использование Crystal Reports для создания отчетов.....277 3.3.1. Подготовка данных для отчета.....................277 3.3.2. Инструментальная среда Crystal Reports Designer...........280 3.3.3. Создание простых отчетов в среде Crystal Reports Designer.282 3.3.4. Внесение в отчет Crystal Reports новых полей..............288 3.3.5. Группировка записей отчета Crystal Reports.......291 Глава 4. Поиск и исправление ошибок моделирования данных с помощью AllFusion Data Model Validator (ERwin Examiner)................................................295 4.1. Ошибки моделирования данных............................295 4.1.1. Принцип работы ERwin Examiner....................295 4.1.2. Ошибки и недостатки моделирования колонок........296 4.1.3. Ошибки и недостатки моделирования индексов и ограничений... 298 4.1.4. Ошибки и недостатки моделирования связей.........305 4.2. Поиск и исправление ошибок при помощи ERwin Examiner............307 4.2.1 Интерфейс ERwin Examiner..........................307 4.2.1. Создание проекта ERwin Examiner..................309 Глава 5. Связывание модели процессов и модели данных.....................319 5.1. Модель данных и ее соответствие модели процессов........319 5.2. Экспорт данных из ERwin в BPwin и связывание объектов модели данных со стрелками и работами........................321 5.3. Создание сущностей и атрибутов BPwin и их экспорт в ERwin... 325 Глава 6. Групповая разработка моделей данных и моделей процессов с помощью AllFusion Model Manager (ModelMart)............................................. ......328 6.1. Принцип работы ModelMart................................328 6.2. Инсталляция ModelMart.....................................329 425
С, В, Маклаков. Создание информационных систем с AllFusion Modeling Suite 6.3. Администрирование ModelMart............................331 6.4. Использование хранилища ModelMart......................333 Глава 7. Создание объектной модели в AllFusion Component Modeler 4.1..................................................339 7.1. Функциональные возможности AllFusion Component Modeler.339 7.2. Инструментальная среда в AllFusion Component Modeler.341 7.3. Диаграммы объектной модели...........................343 7.3.1. Создание новой диаграммы.......................343 7.3.2. Диаграмма использования системы (Use Cases)....344 7.3.3. Диаграммы последовательности (Sequence) и диаграммы кооперации (Collaboration)................347 7.3.4. Диаграмма классов (Class).....................351 7.3.5. Диаграмма деятельности (Activity).............355 7.3.6. Диаграмма состояний (State)...................356 7.3.7. Диаграммы компонентов (Component) и диаграммы развертывания (Deployment)............................358 ТА. Генерация кода........................................361 7.5. Интеграция модели данных AllFusion ERwin Data Modeler и объектной модели AllFusion Component Modeler....364 Приложение А. Практикум. Создание функциональной модели с помощью BPwin.......................................369 А.1. Упражнение 1. Создание контекстной диаграммы.........369 А.2. Упражнение 2. Создание диаграммы декомпозиции........372 А.З. Упражнение 3. Создание диаграммы декомпозиции А.2....376 А.4. Упражнение 4. Создание диаграммы узлов...............379 А.5. Упражнение 5. Создание FEO-диаграммы.................381 А.6. Упражнение 6. Расщепление и слияние моделей..........382 А. 6.1. Расщепление модели............................382 А.6.2. Слияние модели.................................382 А.7. Упражнение 7. Создание диаграммы IDEF3...............383 А. 8. Упражнение 8. Создание сценария................. 385 А.9. Упражнение 9. Стоимостный анализ (Activity Based Costing).......................................... 386 А. 10. Упражнение 10. Использование категорий UDP.........388 426
Оглавление А.11. Упражнение 11. Расщепление модели.....................394 А.12. Упражнение 12. Слияние расщепленной модели с исходной моделью..........................................396 А. 13. Упражнение 13. Копирование работ.....................396 А. 13.1. Копирование работ в другую модель.............396 А. 13.2. Перемещение работ в той же самой модели.......397 А. 14. Упражнение 14. Создание модели ТО-ВЕ (реинжиниринг бизнес-процессов)...........................................397 А. 14.1. Расщепление и модификация модели..............398 А. 14.2. Слияние модели................................400 А. 14.3. Использование Model Explorer для реорганизации дерева декомпозиции....................................401 А. 14.4. Модификация диаграммы IDEF3 "Сборка продукта” с целью отображения новой информации...................402 А. 14.5. Декомпозиция работы "Продажи и маркетинг".....403 А.15. Упражнение 15. Создание диаграммы DFD.................404 А.16. Упражнение 16. Использование Off-Page Reference на диаграмме DFD............................................406 Приложение Б. Список макрокоманд ERwin.........................409 427
4ШО17ГШ1 e-mail: dialog@bitex.ru http://www.bitex.ru/~dialog 320-43-77, 320-43-55 факс: 320-31-33 Предлагает книги Авраамова О. Д. Язык VRML. Практическое руководство Архипенков С. Я. Аналитические системы на базе Oracle Express OLAP Архипенков С. Я., Голубев Д. В., Максименко О. Б. ХРАНИЛИЩА ДАННЫХ РАЗРАБОТКА БИЗНЕС-ПРИЛОЖЕНИЙ В ЭКОНОМИКЕ НА БАЗЕ MS EXCEL. Под ред. к. т. н. А. И. Афоничкина Баженова И. Ю. VISUAL C++ 6.0 Бартеньев О. В. ФОРТРАН ДЛЯ ПРОФЕССИОНАЛОВ. Математическая библиотека IMSL. В 3-х частях Бартеньев О. В. 1С:ПРЕДПРИЯТИЕ: программирование для всех Березин Б. И., Березин С. Б. НАЧАЛЬНЫЙ КУРС С и C++ Ватолин Д., Ратушняк А., Смирнов М., Юкин В. МЕТОДЫ СЖАТИЯ ДАННЫХ. Устройство архиваторов, сжатие изображений и видео. Вовк Е. Т. PAGEMAKER 6.5. Самоучитель.- 2-е изд. Гусева А. И. Учимся программировать: PASCAL 7.0. Задачи и методы их решения. - 2-е изд., перераб. и доп. Гусева А. И. УЧИМСЯ ИНФОРМАТИКЕ. - 2-е изд., дополн. и испр. Гусева А. И. СЕТИ И МЕЖСЕТЕВЫЕ КОММУНИКАЦИИ. Windows 2000 Епанешников А., Епанешников В. Программирование в среде TURBO PASCAL 7.0. - 4-е изд., испр. и дополн. Епанешников А., Епанешников В. DELPHI 4. Среда разработки: Учебное пособие Епанешников А., Епанешников В. DELPHI. Проектирование СУБД Лукин С. Н. ТУРБО-ПАСКАЛЬ 7.0. Самоучитель для начинающих. Лукин С. Н. VISUAL BASIC. Самоучитель для начинающих Лукин С. Н. WORD и WINDOWS. Самоучитель для начинающих. Практичекие советы □ □□□□□□□□□□а 428 а а а а а а а а а а а а
\j0 E-mail: dialog@bitex.ru. Http://www.bitex.ru/~dialog. Тел.: 320-43-77, 320-43-55 Низаметдинова H. H. СОВРЕМЕННАЯ РУССКАЯ ПУНКТУАЦИЯ Пильщиков В. Н. Программирование на языке АССЕМБЛЕРА Полищук В., Полищук A. AUTOCAD 2002 Рудаков П. И., Финогенов К. Г. ЯЗЫК АССЕМБЛЕРА: уроки программирования Федоров А., Елманова Н. Введение в OLAP-технологии Microsoft Хейфец А. Л. ИНЖЕНЕРНАЯ КОМПЬЮТЕРНАЯ ГРАФИКА. AutoCAD Финогенов К. Г. WIN32. Основы программирования. Учебный курс Фролов А. В., Фролов Г. В. Язык С #. Самоучитель Цисарь И. Ф., Нейман В. Г. КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ ЭКОНОМИКИ Шикин А. В., Боресков А. В. КОМПЬЮТЕРНАЯ ГРАФИКА. Полигональные модели шсасасасасасасасасасасзсасасасашшсасащсащсашса Книги по MATLAB Потемкин В. Г. «ИпАкеты ППИКЛ/ 1ДНЫХ: прогр/дмм ЭЕпДкеты прикл/Ддных прогр/%мм пДкеты паикл/Хлных прогр/%мм Инструментальные средства MATLAB 5.x Потемкин В. Г., Медведев В. С. Control System Toolbox. MATLAB 5 для студентов Лавров К. Н., Цыплякова Т. П. Финансовая аналитика. MATLAB 6. (Под общ. ред. к. т. и. В. Г. Потемкина) Потемкин В. Г., Медведев В. С. Нейронные сети. MATLAB 6 J □ j J J j j J □ j j j 429 J J L4J и □ J J J □ □ J
E-mail: dialog@bitex.ru. Http.7/www.bitex.ru/~dialog. Тел.: 320-43-77, 320-43-55 Новые книги □ Рашевская М. A. CORELDRAW. Практическое руководство □ Маклаков С. В. Моделирование бизнес-процессов с AllFusion Process Modeler (BPwin 4.1) □ Маклаков С. В. Создание информационных систем с AllFusion Modeling Suite □ Потемкин В. Г. MATLAB 6. Среда проектирования инженерных приложений сэсасйсашсащщсасащсасзшсасзсзшсасаашсзсашщ Адрес: Москва, ул. Москворечье, дом 31, корп. 2 Проезд: м. Каширская (первый вагон из центра), авт. 95,117, 275, 298, 738, 740 и тролл. 71 до ост. "Институт МИФИ" (кинотеатр "Мечта") Каширское г мифи 22 23 EJ 22 23 Ш 22 22 22 ьЗ Ш £2 430 £3£Э 22 2222222222Щ[£322£2
КНИГИ ИЗДАТЕЛЬСТВА "ДИАЛОГ-МИФИ" МОЖНО ЗАКАЗАТЬ В ИНТЕРНЕТ-МАГАЗИНЕ OZON ф Интернет-магазин OZON (www.ozon.ru) - лидер российской электронной коммерции Предлагает выбрать и пробрести: специальную и художественную литературу, изданную российскими и зарубежными издательствами, музыкальную и видео продукцию на различных носителях, мультимедийные издания и компьютерные программы. В постоянно пополняемом каталоге - 110 000 книг, ЗЗООО видеокассет, 27 000 аудио CD и кассет, 6500 компьютерных программ и мультимедиа изданий, 2500 DVD и видео CD. К Вашим услугам разделы «РАРИТЕТЫ», «БИБЛИОФИЛ», «АНТИКВАРИАТ», «ИКОНЫ», «ДЕТСКИЙ МИР». Экономьте время - делайте Ваш выбор. Вы покупаете - мы доставляем! УДОБНЫЕ СПОСОБЫ ОПЛАТЫ И ДОСТАВКИ. Собственная курьерская служба OZONa доставляет заказы жителям Москвы и Подмосковья, Санкт-Петербурга и Ленинградской области, Великого Новгорода, Владивостока, Екатеринбурга, Казани, Калининграда, Нижнего Новгорода, Новосибирска, Омска, Хабаровска. Кроме того, курьерская доставка осуществляется в Израиле, Украине и во Франции. Интернет-магазин OZON www.ozon.ru Россия, Москва, 117420, Наметкина, 10 Тел. (095) 363 99 25. Факс (095) 718 34 88
z' © ''Инновация Innovation Надежный проводник в мире информационных технологий AIIFusmjq Modeling Suite Файл Правка Вид Избранное Сервис Справка О Назад Адрес |ЙЗ AllFusion Modeling Suite (tj ’ ©Поиск Гер, папки ^Журнал г;‘ X ~Я ^Переход Папки Рабочий стол i 1Э Инновация + iS < 1 Программное обеспечение Computer АваовМм- - I Computer Associates + Cl Advantage - " 1 AllFusion_________ + ?1 BnghtStor + I CleverPath + eTrust + □ Unicenter : Ш Cj Informix +1 Cl Legato Software +1 ___| Microsoft i*1 :«?М Технические средства AIIFusion Process Modeler (BPwin) AllFusion ERwin Data Modeler (ERwin) AllFusion Model Manager (ModeiMart) AllFusion Data Model Validator (ERwin Examiner) AllFusion Model Navigator AllFusion Component Modeler (Paradigm Plus) К Я1*ЯИИ X ❖ Консалтинг и управление ИТ-проектами; ❖ Разработка и продвижение законченных экономически эффективных решений, спроектированных на основе новейших информационных технологий; ❖ Проектирование, создание и обслуживание информационных систем; * 1* Поставка программного обеспечения; ❖ Поставка качественной вычислительной техники; ❖ Сервисные услуги. ЗАО "Инновация +" 121170, Кутузовский проспект, дом 36, корпус 51, тел/факс. (095) 785-5528 E-mail: mail@innoplus.ru Наш сайт в Интернет: www.innoplus.ru