ВУЗ: Пермская государственная сельскохозяйственная академия имени академика Д. Н. Прянишникова
Категория: Методичка
Дисциплина: Проектирование информационных систем
Добавлен: 18.10.2018
Просмотров: 2853
Скачиваний: 29
СОДЕРЖАНИЕ
ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ
Вопрос 1. Принципы создания модели предметной области
Имена и модели: стратегия построения карт
Типичная ошибка при выделении концептуальных классов
Необходимость спецификаций или описание концептуальных классов
Когда требуются понятия-спецификации
Пример: модель предметной области POS-системы ТТ
Модели предметной области и декомпозиция
Концептуальные классы предметной области торговли
Идентификация концептуальных классов
Стратегии идентификации концептуальных классов
Использование списка категорий концептуальных классов
Определение концептуальных классов с помощью выявления существительных
Кандидатуры на роль концептуальных классов для предметной области торговли
Пример рассуждения: включать ли понятие "товарный чек" в модель
Система обозначений для ассоциаций языка UML
Поиск ассоциаций: список стандартных ассоциаций
Ассоциации с высоким приоритетом
Рекомендации по назначению ассоциаций
Несколько ассоциаций между двумя типами
Ассоциации для предметной области POS-системы ТТ
Отношения в магазине, которые должны быть учтены
Использование списка категорий ассоциаций
Модель предметной области POS-системы ТТ
Сохранение только важных ассоциаций
Модель предметной области: добавление атрибутов
Система обозначений атрибутов в языке UML
Совет разработчикам: не используйте атрибуты в качестве внешних ключей
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Пермская государственная сельскохозяйственная академия
имени академика Д.Н. Прянишникова»
ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ
направление 230700 «Прикладная информатика»
Лабораторное занятие № 6
Тема: Модель предметной области
Учебные вопросы:
-
Принципы создания модели предметной области.
-
Модель предметной области: добавление ассоциаций и атрибутов.
Вопрос 1. Принципы создания модели предметной области
Модель предметной области широко используется в качестве основы для разработки программных объектов и обеспечивает важную входную информацию для создания нескольких последующих артефактов.
Модель предметной области отображает основные (с точки зрения моделирующего) классы понятий (концептуальные классы) предметной области. Она является наиболее важным артефактом, создаваемым на этапе объектно-ориентированного анализа1. Основной задачей объектно-ориентированного анализа является идентификация большого количества разнообразных объектов или понятий, а также точная оценка усилий в терминах отдачи на стадиях проектирования и реализации.
Идентификация классов понятий или концептуальных классов – составная часть исследования предметной области. Модели предметной области на языке UML строятся в форме диаграмм классов.
Для создания модели предметной области выполните следующие действия:
-
Составьте список кандидатов на роль концептуальных классов на основе списка категорий и метода анализа текстового описания для текущей итерации разработки.
-
Отобразите их в модели предметной области.
-
Добавьте необходимые ассоциации, отражающие связи, для которых требуется выделение памяти.
-
Добавьте атрибуты, необходимые для выполнения информационных требований.
Имена и модели: стратегия построения карт
При построении моделей предметной области применяется та же стратегия, что и при создании карт.
Модель предметной области следует создавать согласно принципам картографии:
-
использовать применяемые на данной территории названия;
-
исключать несущественные детали;
-
не добавлять объекты, которые отсутствуют на данной территории.
Модель предметной области – это своеобразная разновидность карты понятий некоторой предметной области. Отсюда следуют аналитическая роль модели предметной области, а также справедливость следующих замечаний:
-
Картографы используют названия, применяемые на данной территории. Они не изменяют названия городов на карте. С точки зрения модели предметной области это означает необходимость использования словаря предметной области при именовании концептуальных классов и атрибутов. Например, при разработке модели библиотеки в качестве понятия, означающего потребителя, следует выбрать Borrower (Читатель), т.е. использовать терминологию библиотекарей.
-
Картограф не наносит на карту объекты, не имеющие отношения к основному ее назначению, например не отображает топографию или состав населения. Аналогично, в модели предметной области не должны содержаться понятия из предметной области, не имеющие отношения к требованиям. Например, из нашей модели предметной области можно исключить понятия Pen (Ручка) и PaperBag (Папка), поскольку они не имеют отношения к требованиям.
-
Картограф не отображает на карте отсутствующие объекты, например, горы на карте равнинной местности. Точно так же, в модели предметной области не должны содержаться понятия, не имеющие отношения к рассматриваемой проблеме.
Этот принцип называют также стратегией использования словаря предметной области.
Типичная ошибка при выделении концептуальных классов
Возможно, наиболее типичной ошибкой при создании модели предметной области является отнесение некоторого объекта к атрибутам, в то время как он должен относиться к концептуальным классам. Чтобы избежать этой ошибки, следует придерживаться простого правила.
Если некоторый объект Х в реальном мире не является числом или текстом, значит, это скорее концептуальный класс, чем атрибут.
Например, является ли store (магазин) атрибутом объекта Sale (Продажа) или отдельным концептуальным классом Store?
В реальном мире магазин не является числом или текстом, он представляет реальную сущность, организацию, занимающую некоторое место. Следовательно, Store нужно рассматривать в качестве концептуального класса.
Необходимость спецификаций или описание концептуальных классов
Описанная проблема иллюстрирует необходимость использования понятий, представляющих собой спецификации или описание других объектов. Для решения этой проблемы необходимо ввести концептуальный класс ProductSpecification (Спецификация товара) (или itemSpecification, ProductDescription и т.д.), содержащий информацию о товаре. Понятие ProductSpecification не совпадает с Понятием Item, а представляет собой лишь описание этого товара. Заметим, что даже после продажи всех единиц товара и удаления из памяти всех программных элементов Item понятие ProductSpecification остается в памяти компьютера.
Объекты описаний или спецификации тесно связаны с описываемыми понятиями. В модели предметной области связь между ними принято обозначать следующим образом: XSpecification описывает Х (рис.1.1).
Понятия-спецификации обычно используются при описании предметной области, связанной с продажами или товарами. Они также часто используются при описании производства, для обозначения отличий одних производимых товаров от других. Эти понятия идентифицируются одними из первых, поскольку являются очень типичными.
Рисунок 1.1 – Спецификации или описания других понятий
Символ * означает "множественную" связь и указывает на то, что одно понятие ProductSpecification может описывать много (*) понятий Item.
Когда требуются понятия-спецификации
Рассматривая вопрос о необходимости введения понятий-спецификаций, нужно принимать во внимание следующие соображения.
Концептуальный класс спецификации или описания (например, ProductSpecification) вводится в таких случаях:
-
Существует необходимость описания элементов или служб независимо от существования конкретных экземпляров этих объектов.
-
Если удаление экземпляров описываемых им понятий (например, Item) приводит к потере важной информации в связи с некорректной ассоциацией этой информации с удаляемым экземпляром.
-
Если при наличии понятия устраняется дублирование информации.
Пример: модель предметной области POS-системы ТТ
Список концептуальных классов предметной области POS-системы ТТ можно представить графически (рис. 1.2) в рамках модели предметной области.
Рисунок 1.2 – Исходная модель предметной области
Концептуальные классы
Модель предметной области иллюстрирует концептуальные классы или словарь предметной области.
Неформально, концептуальный класс – это представление идеи или объекта. Если говорить более строго, то концептуальный класс можно рассматривать в терминах символов, содержания и расширения (рис. 1.3):
-
Символы (symbol) – слова или образы, представляющие концептуальный класс.
-
Содержание (intension) – определение концептуального класса.
-
Расширение (extension) – набор примеров, к которым применим концептуальный класс.
Рисунок 1.3 – Символ, содержание и расширение концептуального класса
Например, рассмотрим концептуальный класс для события осуществления покупки. Его можно обозначить символом Sale. Содержанием этого понятия является "представление события осуществления покупки в определенный день и определенное время". В качестве расширения можно рассматривать все примеры покупок (другими словами, все множество покупок).
При создании модели предметной области обычно рассматриваются символьное описание и содержание концептуального класса, поскольку именно они представляют наибольший практический интерес.
Модели предметной области и декомпозиция
Программные системы могут быть очень сложными. Поэтому декомпозиция (по принципу "разделяй и властвуй") – это общая стратегия борьбы со сложностью проблемы за счет ее разделения на мелкие составные части. При структурном подходе к проектированию ИС задача разбивается на процессы или функции, а при объектно-ориентированном – на основные понятия или сущности предметной области.
Основное отличие объектно-ориентированного анализа от структурного состоит в декомпозиции проблемы на понятия (объекты), а не на функции.
Следовательно, основной задачей на стадии анализа является идентификация различных понятий из предметной области и представление результатов в виде модели предметной области.
Концептуальные классы предметной области торговли
Например, в предметной области розничной торговли можно выделить концептуальные классы Store (Магазин), Register (Реестр) и Sale (Продажа). Следовательно, модель предметной области системы автоматизации розничной торговли должна включать элементы, представленные на рис. 1.4.
Рисунок 1.4 – Фрагмент модели предметной области для системы розничной торговли
Идентификация концептуальных классов
Нашей задачей является создание модели предметной области, отражающей важные понятия рассматриваемой предметной области розничной торговли. В данном случае речь идет о понятиях, связанных с прецедентом Оформление продажи.
При итеративной разработке модель предметной области строится в течение нескольких итераций фазы развития. На каждой итерации к модели добавляются концептуальные классы рассматриваемых сценариев, а не делается попытка "объять необъятное" и сразу же построить исчерпывающую модель всех возможных концептуальных классов и их взаимоотношений.
Например, если на данной итерации рассматривается упрощенный сценарий прецедента Оформление продажи, описывающий продажу товаров за наличный расчет, то в разрабатываемом фрагменте модели предметной области нужно отобразить понятия, относящиеся только к этому сценарию.
Основная задача – идентифицировать концептуальные классы, связанные с разрабатываемым сценарием.
При идентификации концептуальных классов целесообразно руководствоваться следующим принципом:
Лучше излишне детализировать модель предметной области, чем недоопределить ее.
Зачастую на начальной стадии идентификации некоторые концептуальные классы упускаются из виду, а появляются позднее, при рассмотрении атрибутов и ассоциаций, или даже на стадии проектирования. Обнаруженные новые понятия добавляются в модель предметной области.
Не следует исключать из рассмотрения концептуальные классы только на том основании, что из анализа требований не следует очевидная необходимость их запоминания (этот критерий зачастую применяется при разработке реляционных баз данных, однако не годится для создания моделей предметной области) или концептуальный класс не имеет атрибутов.
Концептуальные классы без атрибутов вполне допустимы, как допустимы и концептуальные классы, играющие "поведенческую", а не информационную роль в предметной области.
Стратегии идентификации концептуальных классов
Ниже представлены два способа выявления концептуальных классов.
-
С использованием списка категорий концептуальных классов.
-
На основе выделения существительных.
Для моделирования предметной области применяется и другой прием – шаблоны анализа. Шаблоны – это готовые модели предметной области, созданные специалистами. Они широко описаны в литературе.
Использование списка категорий концептуальных классов
Приступая к созданию модели предметной области, целесообразно составить список кандидатов на роль концептуальных классов. В табл. 1.1 содержится множество стандартных категорий, которые обычно имеют важное значение. В этом перечне они приводятся в произвольном порядке и не упорядочены по степени важности. Примеры взяты из предметной области системы торговли и резервирования авиабилетов.
Таблица 1.1 – Список категорий концептуальных классов
Категория концептуальных классов |
Примеры |
Физические или материальные объекты |
Register (Реестр), Airplane (Самолет) |
Спецификации, элементы проектных решений или описания объектов |
productspecification (Спецификация товара), FlightDescription (Описание полета) |
Места |
Store (Магазин), Airport (Аэропорт) |
Транзакции |
Sale (Продажа), Payment (Платеж), Reservation (Резервирование) |
Элементы транзакций |
SalesLineItem (Элемент продажи) |
Роли людей |
Cashier (Кассир), Pilot (Пилот) |
Контейнеры других объектов |
Store (Магазин), Bin (Бункер), Airplane (Самолет) |
Содержимое контейнеров |
Item (Элемент), Passenger (Пассажир) |
Другие компьютеры или электромеханические системы, внешние по отношению к данной системе |
CreditPaymentAuthorizationSystein (Система авторизации кредитных платежей), AirTrafficControl (Система управления движением) |
Абстрактные понятия |
Hunger (Голод), Acrophobia (Акрофобия) |
Организации |
SalesDepartment (Отдел Продаж), ObjectAirline (Авиалинии) |
События |
Sale (Продажа), payment (Платеж), Meeting (Встреча), Flight (Полет), Crash (Крушение), Landing (Приземление) |
Процессы (зачастую не представляются в виде понятий) |
SellingAproduct (Продажа продукта), BookingASeat (Бронирование места) |
Правила и политика |
RefundPolicy (Правила возврата товара) CancellationPolicy (Политика аннулирования заказа) |
Каталоги |
productCatalog (Каталог товаров), PartsCatalog (Каталог частей) |
Записи финансовой, трудовой, юридической и другой деятельности |
Receipt (Чек), Ledger (Гроссбух), EmploymentContract (Трудовой контракт), MaintenanceLog (Журнал обслуживания) |
Финансовые инструменты и службы |
Lineofcredit (Кредитная линия), Stock (Акция) |
Руководства, документы, статьи, книги |
DailyPricechangeList (Бюллетень ежедневного изменения цен), RepairManual (Руководство по восстановлению) |
Определение концептуальных классов с помощью выявления существительных
Еще один полезный (и очень простой) прием идентификации концептуальных классов на основе лингвистического анализа. Он состоит в выделении существительных из текстовых описаний предметной области и их выборе в качестве кандидатов в концептуальные классы или атрибуты.
Этот метод следует применять с осторожностью. Между существительными и концептуальными классами нет взаимно однозначного соответствия, а слова естественного языка могут иметь несколько значений.
Тем не менее, это информация к размышлению. Для реализации подобного подхода удобно использовать развернутые описания прецедентов, например, основной сценарий прецедента Оформление продажи.
Модель предметной области – это визуализация важных понятий из словаря предметной области. Откуда брать необходимые термины? Из описания прецедентов. Эти описания – богатый источник для идентификации существительных.
Одни из этих существительных могут быть представлены в виде концептуальных классов, другие могут представлять концептуальные классы, не имеющие отношения к данной итерации (например, "бухгалтерская система" или "комиссионные"), а третьи — в виде атрибутов этих концептуальных классов. Более подробная информация об отличиях между концептуальными классами и атрибутами содержится в следующем разделе и следующей главе.
Недостатком данного подхода является выразительность естественного языка. Для описания одного и того же концептуального класса или атрибута могут использоваться различные существительные, и в то же время некоторые существительные могут иметь по несколько значений. Тем не менее этот подход рекомендуется использовать в сочетании с методом выбора понятий по списку категорий.
Кандидатуры на роль концептуальных классов для предметной области торговли
Пользуясь списком категорий и методом анализа словесного описания, мы составили список кандидатур на роль концептуальных классов для предметной области розничной торговли. Он соответствует требованиям и принятым упрощениям для основного сценария прецедента Оформление продажи.
Register |
ProductSpecification |
Payment |
Item |
SalesLineItem |
ProductCatalog |
Store |
Cashier |
Manager |
Sale |
Customer |
|
He существует понятия "правильный" список. Это просто произвольный набор абстракций и понятий из словаря предметной области, которые, по мнению разработчика модели, являются важными. Тем не менее, если для выделения концептуальных классов использовать описанные выше стратегии, то различные специалисты по моделированию составят примерно одинаковые списки.
Пример рассуждения: включать ли понятие "товарный чек" в модель
Товарный чек – это документ, принимающий участие в продаже товара и его оплате. Он может рассматриваться как концептуальный класс из предметной области. Возникает вопрос: нужно ли его включать в модель предметной области?