Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 50
Текст из файла (страница 50)
Анализ — это не механический процесс, а, скорее, искусство. Выбор конкретного варианта представления зависит от суждений человека. ЧаШе всего в постановке задачи отсутствует важнейшая информация, которую приходится получать от заказчика или извлекать из знаний о предметной области, имеющихся у аналитика. Определенный произвол присутствует и прп выборе уровня абстрагирования модели. Аналитику приходится взаимодействовать с заказчиком, устранять двусмысленности и неправильные представления. Аналитические модели делают возможным обшение на языке однозначных символов. 220 Глава 12 Ф Анализ предметной области Мы разделили этап анализа на две последовательные стадии. Первая стадия— анализ предметной области — описана в этой главе. Вторая стадия — анализ приложения — обсуждается в следующей главе.
Модель приложения строится на основе модели предметной области путем добавления основных артефактов приложения, видимых пользователям. Пользователи должны одобрить решения, связанные с этими артефактами, поэтому они и включаются в модель приложения. 12.2. Модель классов предметной области На первой стадии анализа требований выполняется конструирование модели предметной области. Модель предметной области отражает статическую структуру системы в реальном мире и делит ее на отдельные элементы, удобные для оперирования.
Модель предметной области описывает реальные классы и их отношения друг с другом. Первой разрабатывается модель классов, потому что статическая структура обычно оказывается лучше определенной, меньше зависит от особенностей приложения и меньше изменяется в процессе эволюционирования решения задачи. Модель предметной области строится на основании информации, получаемой из постановки задачи, при изучении артефактов в аналогичных и связанных системах, из знаний экспертов в области приложения, а также из общих знаний о реальном мире. Вы должны учитывать всю доступную информацию и не полагаться на сведения, полученные из одного источника. В первую очередь следует выделить классы и ассоциации, потому что они создают базовую структуру и подсказывают подход к решению задачи.
Затем можно добавить атрибуты, с помощью которых описываются характеристики классов и ассоциаций. Затем классы следует объединить и организовать при помощи наследования. Попытки напрямую задать наследование без того, чтобы понять сначала структуру классов и их атрибутов, могут привести к необоснованному искажению структуры классов. Операции в модели предметной области обычно не отражаются. Основное ее назначение — это отражение информационного содержания предметной области.
Лучше всего записывать идеи на бумаге, даже если записи будут многословными и несогласованными. Главное — не пропустить вюкные детали. Начальный вариант аналитической модели почти наверняка будет содержать недочеты, которые нужно будет устранить на последующих итерациях. Модель не обязательно должна быть однородной по конструкции. Некоторые аспекты задачи придется анализировать на протяжении нескольких итераций, тогда как другие так и останутся набросками.
Конструирование модели классов предметной области выполняется в приведенной ниже последовательности. 1. Выделить классы (разделы 12.1.1 — 12.2.2). 2. Подготовить словарь данных (12.2.3). 3. Выделить ассоциации (разделы 12.2.4 — 12.2.5). 4. Выделить атрибуты объектов и связей (разделы 12.2.6 — 12.2.7). 12.2. Модель классов предметной области 221 5. Организовать и упростить классы при помощи наследования (раздел 12.2.8). 6. Проверить наличие маршрутов для наиболее вероятных запросов (раздел 12.2.9). 7, Перейти к следующей итерации и уточнить модель (раздел 12.2.10). 8.
Пересмотреть уровень абстрагирования (раздел 12.2.11). 9. Сгруппировать классы в пакеты (раздел 12.2.12). 12.2.1. Выделение классов Первый этап конструирования модели классов заключается в выделении классов, объединяющих объекты предметной области. К объектам относятся физические сущности, такие как дома, люди, машины, а также понятия, такие как траектории, расположение сидений и графики выплат. Все классы должны иметь смысл с точки зрения предметной области. Нужно избегать конструкций, относящихся к компьютерной реализации, таких как связные списки и подпрограммы. Не все классы явным образом присутствуют в описании задачи.
Некоторые могут неявно определяться предметной областью или общими знаниями. Начинать работу нужно с перечисления всех потенциальных классов из письменного описания задачи (рис. 12.2). Записывайте все названия, какие только придут вам в голову. Классы часто соответствуют существительным. Например, из предложения «система бронирования для продажи билетов на представления в различных театрах» можно выделить потенциальные классы Бронирование, Система, Билет, Представление и Театр.
Однако не следует переписывать все подряд. Идея состоит в том, чтобы отразить в модели понятия. Не все существительные описывают понятия, и наоборот: понятия могут выражаться другими частями речи. Выделение Потенциальные удаление Классы существительных неинфорыатиеных классы классов Источники требований Рис. 12.2. Выделение классов Не беспокойтесь о наследовании и классах высшего уровня. Постарайтесь выбрать конкретные классы таким образом, чтобы избежать подсознательного подавления деталей в попытке подогнать реальность под предполагаемую структуру. Например, если вы разрабатываете систему каталогизации и выдачи книг для библиотеки, выделите разные виды материалов: книги, журналы, газеты, записи, фильмы и т.
д. Позднее вы сможете упорядочить их в более широкие категории с учетом сходств и отличий. Пример с банкоматом. В результате выделения понятий из описания задачи о банкомате, которая приведена в главе 11, мы получили потенциальные классы, перечисленные на рис. 12.3. Дополнительные классы, отсутствующие в описании задачи, но выделенные из наших знаний о предметной области, приведены на рис. 12А.
[ по ~ ~ [ и ~ ]гт»з'г ~ее1~ сеть транзакция Кассовый Данные манные Г::::::Л терминал о счете о транзакции Банковский компьютер Счет - ~ """"- ~ЮЮ компьютер карта деньги Обеспечение П8~ г "н.е=з ЛЕТЕЛ учета безопасности Рис. 12.3. Классы для модели банкомата, присутствующие в постановке задачи Журнал транзакций Линия связи Рис. 12.4. Классы для модели банкомата, полученные из знаний о предметной области 12.2.2. Удаление лишних классов Теперь нужно отбросить ненужные и некорректные классы, используя перечис- ленные ниже критерии. Рисунок 12.5 показывает, какие классы были удалены из модели банкомата.
'гйеуйачные классы Хорошие классы Счет Банкомат Банк Банковский КРелитнаа Кассир компьютер карточка : %:"Я" терминал компьютер Рис. 12.5. Удаление лишних классов из модели банкомата ° Избыточные классы. Если два класса выражают одно и то же понятие, нужно оставить тот, название которого лучше всего описывает сущность понятия. Например, человека, покупающего билет на самолет, можно назвать 222 Глава 12 ° днализ предметной области кге1ечаы ~Издержкам 12.2. Модель классов предметной области 223 Клиент, однако более описательное название для класса будет Пассажир. С другой стороны, если задача имеет отношение к контрактам, заключаемым с чартерными авиалиниями, класс Клиент также будет иметь смысл, поскольку контракт может быть заключен с несколькими пассажирами.
Пример с банкоматом. Сизготег (Клиент) и Пзег (Пользователь) — избыточные классы; мы сохраняем класс Сизготег, как более соответствующий сути понятия. Несущественные классы. Если класс имеет весьма слабое отношение к задаче, выбросьте его. В данном случае приходится принимать довольно субъективные решения, потому что важность класса зависит от контекста. Например, в системе бронирования театральных билетов профессии покупателей несущественны, но зато существеннымн могут быть профессии персонала театра. Пример с банкоматом.