Файл: Лаб. занятие № 6+.doc

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ

Вопрос 1. Принципы создания модели предметной области

Имена и модели: стратегия построения карт

Типичная ошибка при выделении концептуальных классов

Необходимость спецификаций или описание концептуальных классов

Когда требуются понятия-спецификации

Пример: модель предметной области POS-системы ТТ

Концептуальные классы

Модели предметной области и декомпозиция

Концептуальные классы предметной области торговли

Идентификация концептуальных классов

Стратегии идентификации концептуальных классов

Использование списка категорий концептуальных классов

Определение концептуальных классов с помощью выявления существительных

Кандидатуры на роль концептуальных классов для предметной области торговли

Пример рассуждения: включать ли понятие "товарный чек" в модель

Поиск ассоциаций

Система обозначений для ассоциаций языка UML

Поиск ассоциаций: список стандартных ассоциаций

Ассоциации с высоким приоритетом

Рекомендации по назначению ассоциаций

Роли

Кратность

Имена ассоциаций

Несколько ассоциаций между двумя типами

Ассоциации для предметной области POS-системы ТТ

Отношения в магазине, которые должны быть учтены

Использование списка категорий ассоциаций

Модель предметной области POS-системы ТТ

Сохранение только важных ассоциаций

Модель предметной области: добавление атрибутов

Атрибуты

Система обозначений атрибутов в языке UML

Типы данных

Непримитивные типы классов

Совет разработчикам: не используйте атрибуты в качестве внешних ключей

Моделирование атрибутов Quantity и Unit

Атрибуты модели предметной области системы ТТ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Пермская государственная сельскохозяйственная академия

имени академика Д.Н. Прянишникова»














ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ

направление 230700 «Прикладная информатика»



Лабораторное занятие № 6


Тема: Модель предметной области


Учебные вопросы:

  1. Принципы создания модели предметной области.

  2. Модель предметной области: добавление ассоциаций и атрибутов.

















Вопрос 1. Принципы создания модели предметной области

Модель предметной области широко используется в качестве основы для разра­ботки программных объектов и обеспечивает важную входную информацию для создания нескольких последующих артефактов.

Модель предметной области отображает основные (с точки зрения моделирую­щего) классы понятий (концептуальные классы) предметной области. Она является наиболее важным артефактом, создаваемым на этапе объектно-ориентированного анализа1. Основной задачей объектно-ориентированного анализа является идентифи­кация большого количества разнообразных объектов или понятий, а также точ­ная оценка усилий в терминах отдачи на стадиях проектирования и реализации.

Идентификация классов понятий или концептуальных классов – составная часть исследования предметной области. Модели предметной области на языке UML строятся в форме диаграмм классов.

Для создания модели предметной области выполните следующие действия:

  1. Составьте список кандидатов на роль концептуальных классов на основе списка категорий и метода анализа текстового описания для текущей ите­рации разработки.

  2. Отобразите их в модели предметной области.

  3. Добавьте необходимые ассоциации, отражающие связи, для которых тре­буется выделение памяти.

  4. Добавьте атрибуты, необходимые для выполнения информационных требо­ваний.

Имена и модели: стратегия построения карт

При построении моделей предметной области применяется та же стратегия, что и при создании карт.

Модель предметной области следует создавать согласно принципам картографии:

  • использовать применяемые на данной территории названия;

  • исключать несущественные детали;

  • не добавлять объекты, которые отсутствуют на данной территории.

Модель предметной области – это своеобразная разновидность карты по­нятий некоторой предметной области. Отсюда следуют аналитическая роль мо­дели предметной области, а также справедливость следующих замечаний:

  • Картографы используют названия, применяемые на данной территории. Они не изменяют названия городов на карте. С точки зрения модели пред­метной области это означает необходимость использования словаря пред­метной области при именовании концептуальных классов и атрибутов. Например, при разработке модели библиотеки в качестве понятия, озна­чающего потребителя, следует выбрать 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. С использованием списка категорий концептуальных классов.

  2. На основе выделения существительных.

Для моделирования предметной области применяется и другой прием – шаблоны анализа. Шаблоны – это готовые модели предметной области, созданные специалистами. Они широко описаны в литературе.

Использование списка категорий концептуальных классов

Приступая к созданию модели предметной области, целесообразно составить список кандидатов на роль концептуальных классов. В табл. 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 существует понятия "правильный" список. Это просто произвольный на­бор абстракций и понятий из словаря предметной области, которые, по мнению разработчика модели, являются важными. Тем не менее, если для выделения концептуальных классов использовать описанные выше стратегии, то различные специалисты по моделированию составят примерно одинаковые списки.

Пример рассуждения: включать ли понятие "товарный чек" в модель

Товарный чек – это документ, принимающий участие в продаже товара и его оплате. Он может рассматриваться как концептуальный класс из предметной облас­ти. Возникает вопрос: нужно ли его включать в модель предметной области?