1vendrov_a_m_proektirovanie_programmnogo_obespecheniya_ekonom
.pdfМетодические аспекты проектирования ПО |
151 |
ведет к неадекватности модели реальной предметной области. В качестве примера достаточно рассмотреть модель операции по снятию денег с вклада физического лица в банке. В настоящий момент существуют более тридцати типов таких вкладов. Для мо делирования соответствующих операций целесообразно исполь зовать единственную DFD, поскольку все без исключения опера ции имеют одни и те же входы (сберегательная книжка и расход ный ордер) и выходы (сберегательная книжка и наличные день ги) и различаются лишь механизмами начисления процентов. Ес ли же попытаться структурировать эти операции путем группи рования по какому-либо признаку (срочные, пенсионные, разме ры процентов и т.п.) в соответствии с ограничениями SADT, то получится как минимум 6 диаграмм (верхний уровень и округ ленная в большую сторону дробь 30/7), сложность каждой из ко торых не меньше сложности единственной диаграммы, модели рующей все операции.
Согласованность с другими средствами структурного анализа.
Главным достоинством любых моделей является возможность их интеграции с моделями других типов. В данном случае речь идет о согласованности функциональных моделей со средствами мо делирования данных. Согласование SADT-модели с ERM прак тически невозможно или носит искусственный характер. В свою очередь, DFD и ERM взаимно дополняют друг друга и являются согласованными, поскольку в DFD присутствует описание структур данных, непосредственно используемое для построения ERM.
Интеграция с другими процессами ЖЦ ПО. Важная характе ристика модели — ее совместимость с моделями, используемыми в последующих процессах (прежде всего в процессе проектирова ния).
DFD могут быть легко преобразованы в модели проектируе мой системы. Известен ряд алгоритмов автоматического преоб разования иерархии DFD в структурные карты различных видов, что обеспечивает логичный и безболезненный переход от форми рования требований к проектированию системы. С другой сторо ны, формальные методы преобразования SADT-диаграмм в про ектные решения отсутствуют.
Необходимо отметить, что рассмотренные разновидности средств структурного анализа примерно одинаковы с учетом воз можностей изобразительных средств моделирования. При этом
152 |
Глава 2 |
одним из основных критериев выбора того или иного метода яв ляется степень владения им со стороны консультанта или анали тика, грамотность выражения своих мыслей на языке моделиро вания. В противном случае в моделях, построенных с использо ванием любого метода, будет невозможно разобраться.
2.3.6. МОДЕЛИРОВАНИЕ ДАННЫХ
Основные понятия модели «сущность — связь»
Цель моделирования данных состоит в обеспечении разра ботчика системы концептуальной схемой базы данных в форме одной модели или нескольких локальных моделей, которые от носительно легко могут быть отображены в любую систему баз данных.
Наиболее распространенным средством моделирования дан ных (предметной области) является модель «сущность-связь» (ERM). Она была впервые введена Питером Ченом в 1976 г Базо выми понятиями ERM являются сущность, связь и атрибут.
Сущность (Entity) — реальный либо воображаемый объекту ющий существенное значение длярассматриваемой предметно ласти.
Каждая сущность должна иметь наименование, выраженное существительным в единственном числе. Примерами сущностей могут быть такие классы объектов, как «Поставщик», «Сотруд ник», «Заказ». Каждая сущность в модели изображается в виде прямоугольника с наименованием (рис. 2.23).
Рис. 2.23. Графическое представление сущности
Основной (неформальный) способ идентификации сущнос тей ~ это поиск абстракций, описывающих физические или ма териальные объекты, процессы и события, роли людей, органи зации и другие понятия. Единственным формальным способом
Методические аспекты проектирования ПО |
153 |
идентификации сущностей является анализ текстовых описаний предметной области, выделение из описаний имен существи тельных и выбор их в качестве «кандидатов» на роль абстракций.
Экземпляр сущности — это конкретный представитель данной сущности. Например, экземпляром сущности «Сотрудник» мо жет быть «Сотрудник Иванов».
Экземпляры сущностей должны быть различимы, т.е. сущнос ти должны иметь некоторые свойства, уникальные для каждого экземпляра этой сущности. Каждый экземпляр сущности должен однозначно идентифицироваться и отличаться от всех других эк земпляров данного типа сущности. Каждая сущность должна об ладать некоторыми свойствами:
•иметь уникальное имя; к одному и тому же имени должна всегда применяться одна и та же интерпретация; одна и та же интерпретация не может применяться к различным име нам, если только они не являются псевдонимами;
•обладать одним или несколькими атрибутами, которые ли бо принадлежат сущности, либо наследуются через связь;
•обладать одним или несколькими атрибутами, которые од нозначно идентифицируют каждый экземпляр сущности.
Атрибут (Attribute) — любая характеристика сущности, зн мая для рассматриваемой предметной области и предназначе для квалификации, идентификации, классификации, количес ной характеристики или выражения состояния сущности.
Атрибут представляет тип характеристик или свойств, ассоци ированных с множеством реальных или абстрактных объектов (людей, мест, событий, состояний, идей, предметов и т.д.). Экзем пляр атрибута - это определенная характеристика отдельного элемента множества. Экземпляр атрибута определяется типом характеристики и ее значением, называемым значением атрибу та. В ERM атрибуты ассоциируются с конкретными сущностями. Таким образом, экземпляр сущности должен обладать един ственным определенным значением для ассоциированного атри бута.
Наименование атрибута должно быть выражено существи тельным в единственном числе (возможно, с характеризующими прилагательными).
Примерами атрибутов сущности «Сотрудник» могут быть та кие атрибуты, как «Табельный номер», «Фамилия», «Имя», «От чество», «Должность», «Зарплата» и т.п.
154 |
Глава 2 |
Атрибуты изображаются в пределах прямоугольника, опреде ляющего сущность (рис. 2.24).
Сотрудник
Табельный номер Фамилия Имя Отчество Должность Зарплата
Рис. 2.24. Сущность с атрибутами
Виды атрибутов:
•простой — состоит из одного элемента данных;
•составной — состоит из нескольких элементов данных;
•однозначный — содержит одно значение для одной сущнос ти;
•многозначный — содержит несколько значений для одной сущности;
•необязательный — может иметь пустое (неопределенное) значение;
•производный — представляет значение, производное от зна чения связанного с ним атрибута.
Уникальным идентификатором называется неизбыточный
бор атрибутов, значения которых в совокупности являются уни кальными для каждого экземпляра сущности. Неизбыточность заключается в том, что удаление любого атрибута из уникального идентификатора нарушает его уникальность.
Сущность может иметь несколько различных уникальных идентификаторов, они изображаются на диаграмме подчеркива нием (рис. 2.25).
Каждая сущность может обладать любым количеством связей
с другими сущностями модели. Связь (Relationship) — поименован
ная ассоциация между двумя сущностями, значимая для рассм риваемой предметной области. Связь — это ассоциация межд сущностями, при которой каждый экземпляр одной сущности ассоциирован с произвольным (в том числе нулевым) количест вом экземпляров второй сущности, и наоборот.
Методические аспекты проектирования ПО |
1 55 |
Сотрудник
Табельный номер Фамилия Имя Отчество Должность Зарплата
Рис. 2.25. Сущность с уникальным идентификатором
Степенью связи называется количество сущностей, участвую щих в связи. Связь степени 2 называется бинарной, степени N— N- арной. Связь, в которой одна и та же сущность участвует в разных ролях, называется рекурсивной, или унарной. Один из возможных вариантов графического изображения связи показан на рис. 2.26.
Сотрудник |
Отдел |
|
|
||
Табельный_номер |
Номер_отдела |
|
ФИО |
||
|
Рис. 2.26. Обозначение сущностей и связи
Пары чисел на диаграмме отражают две важные характерис тики связи - мощность связи (второе число) и класс принадлеж ности (первое число).
Мощностью связи называется максимальное число экземпля ров сущности, которое может быть связано с одним экземпляром данной сущности. Мощность связи может быть равна 1, N (любое число) и может быть конкретным числом. Мощности связи на рис. 2.26 означают: каждый сотрудник может работать не более чем в одном отделе, а в каждом отделе может работать любое чис ло сотрудников.
Класс принадлежности характеризует обязательность участия экземпляра сущности в связи. Класс принадлежности может принимать значение О {необязательное участие — экземпляр од ной сущности может быть связан с одним или несколькими эк-
156 |
Глава 2 |
земплярами другой сущности, а может быть и не связан ни с од ним экземпляром) или 1 {обязательное участие - экземпляр од ной сущности должен быть связан не менее чем с одним экземп ром другой сущности). Классы принадлежности на рис. 2.26 оз начают: каждый сотрудник обязательно работает в каком-либо отделе, а в некоторых отделах может и не быть сотрудников.
Связь может иметь один из следующих трех типов (в зависи мости от значения мощности):
1. ОдиН'К'Одному (обозначается 1:1), показана на рис. 2.27.
Сотрудник |
0,1 |
Руководит |
1,1 |
Отдел |
|
|
|
||
|
|
|
|
Табельный номер |
Номер_отдела |
|
ФИО |
||
|
Рис. 2.27. Связь типа 1:1
2.Один-кО'Многим (обозначается 1:п), показана на рис. 2.26.
3.Многие-кО'Многим (обозначается m:n), показана на рис.
2.28.
Сотрудник |
1,N y ^ e o T a e T j T X ^^^ |
Отдел |
||
|
|
|
||
Табельный номер |
N. Ставка |
У |
Номер_отдела |
|
ФИО |
||||
|
Рис. 2.28. Связь типа m:n
Виды идентификаторов
Существуют следующие виды идентификаторов:
•первичный/альтернативный: сущность может иметь нес колько идентификаторов (рис. 2.29). Один должен являться основным (первичным), а другие - альтернативными. Пер вичный идентификатор на диаграмме подчеркивается. Аль тернативные идентификаторы предваряются символами <1> для первого альтернативного идентификатора, <2> для второго и т.д. В концептуальном моделировании данных
Методические аспекты проектирования ПО |
157 |
различие первичных и альтернативных идентификаторов обычно не используется. В реляционной модели, получен ной из концептуальной модели данных, первичные ключи используются в качестве внешних ключей. Альтернативные идентификаторы не копируются в качестве внешних клю чей в другие таблицы;
•простой/составной: идентификатор, состоящий из одного атрибута, является простым, из нескольких атрибутов — сос тавным (см. рис. 2.29);
•абсолютный/относительный: если все атрибуты, составляю щие идентификатор, принадлежат сущности, то идентифи катор является абсолютным. Если один или более атрибутов идентификатора принадлежат другой сущности, то иденти фикатор является относительным. Когда первичный иден тификатор является относительным, сущность определяет ся как зависимая сущность, поскольку ее идентификатор за висит от другой сущности, в примере на рис. 2.30 иденти фикатор сущности «Строка-заказа» является относитель ным. Он включает идентификатор сущности «Заказ», что показано на рисунке подчеркиванием 1.1.
Сотрудник |
Составной |
|
|
Табельный номер |
альтернативный |
<1>Фамилия |
идентификатор |
<1>Дата рождения-' |
|
Имя |
|
Адрес |
|
Рис. 2.29. Составной альтернативный идентификатор
Заказ |
Строка_заказа |
1,N |
и. Номер строки |
Номер заказа |
|
Дата заказа |
Номер продукта |
Общая сумма KD |
Описание продукта |
Количество продукта |
Рис. 2.30. Относительный идентификатор
158 |
Глава 2 |
Связи с атрибутами
Как и сущности, связи могут иметь атрибуты. В примере на рис. 2.31 для того, чтобы найти оценку студента, нужно знать не только идентификатор студента, но и номер курса. Оценка не является атрибутом студента или атрибутом курса; она явля ется атрибутом обеих этих сущностей. Это атрибут связи меж^ ду студентом и курсом, которая в примере называется «Регист рация».
1 Студент |
|
|
Курс |
Идентификатор |
0,N ' Регистрация |
O.N |
Номер курса |
студента |
|
Описание |
|
Имя студента |
|
|
курса |
Адрес |
\^^ Оценка ^/ |
|
Телефон |
||
|
Рис. 2.31. Связь с атрибутами
Связь между сущностями в концептуальной модели данных является типом, который представляет множество экземпляров связи между экземплярами сущностей. Для того чтобы иденти фицировать определенный экземпляр сущности, используется идентификатор сущности. Точно так же для определения экземп ляров связи между сущностями требуется идентификатор связи. Так, в примере на рис. 2.31 идентификатором связи «Регистра ция» является идентификатор студента и номер курса, поскольку вместе они определяют конкретный экземпляр связи студентов и курсов.
Связи «супертип-подтип»
В связи «супертип-подтип» (рис. 2.32) общие атрибуты типа определяются в сущности-супертипе, сущность-подтип наследу ет все атрибуты супертипа. Экземпляр подтипа существует толь ко при условии существования определенного экземпляра супер типа. Подтип не может иметь идентификатора (он импортирует его из супертипа).
Методические аспекты проектирования ПО |
159 |
Учредитель
Реестровый номер
Юридическое лицо |
Физическое лицо |
Код организационно- |
Номер паспорта |
правовой формы |
Серия паспорта |
Код вида деятельности |
|
Наименование |
|
Адрес |
|
Рис. 2.32. Связь «супертип-подтип»
Пример нотации модели «сущность-связь» — метод IDEF1X
Метод IDEF1X, входящий в семейство стандартов IDEF, использует разновидность модели «сущность-связь» и реализо ван в ряде распространенных CASE-средств (в частности, ERwin).
Сущность в методе IDEF1X является независимой от иденти фикаторов, или просто независимой, если каждый экземпляр сущности может быть однозначно идентифицирован без опреде ления его отношений с другими сущностями. Сущность называ ется зависимой от идентификаторов, или просто зависимой, ес однозначная идентификация экземпляра сущности зависит от его отношения к другой сущности (рис. 2.33).
Каждой сущности присваивается уникальное имя и номер, разделяемые косой чертой «/» и помещаемые над блоком.
Связь может дополнительно определяться с помощью указа ния мощности (количества экземпляров сущности-потомка, ко торое может существовать для каждого экземпляра сущности-ро дителя). В IDEF1X могут быть выражены следующие мощности связей:
160 |
Глава 2 |
Имя сущности/Номер |
Служащий/44 |
сущности |
Имя сущности/Номер |
Проектное задание/56 |
сущности |
Рис. 2.33. Независимые (а) и зависимые (б) от идентификатора сущности
•каждый экземпляр сущности-родителя может иметь нуль, один или более одного связанного с ним экземпляра сущ ности-потомка;
•каждый экземпляр сущности-родителя должен иметь не ме нее одного связанного с ним экземпляра сущности-потомка;
•каждый экземпляр сущности-родителя должен иметь не бо лее одного связанного с ним экземпляра сущности-потомка;
•каждый экземпляр сущности-родителя связан с некоторым
фиксированным числом экземпляров сущности-потомка. Если экземпляр сущности-потомка однозначно определяет
ся своей связью с сущностью-родителем, то связь называется идентифицирующей, в противном случае — неидентифицирующей.
Связь изображается линией, проводимой между сущностьюродителем и сущностью-потомком с точкой на конце линии у сущности-потомка (рис. 2.34). Мощность связи может прини мать следующие значения: N — нуль, один или более, Z — нуль или один, Р — один или более. По умолчанию мощность связи принимается равной Л^.
Идентифицирующая связь между сущностью-родителем и сущностью-потомком изображается сплошной линией (рис. 2.35). Сущность-потомок в идентифицирующей связи является зависимой от идентификатора сущностью. Сущность-родитель в идентифицирующей связи может быть как независимой, так и за-