Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 57
Текст из файла (страница 57)
Подумайте о реструктурировании модели с целью лучшего описания ограничений структурой модели. Не увлекайтесь кодированием произвольных бизнес-методик в своей модели. Программы должны помогать бизнесу, но не тормозить возможные изменения. Достаточно часто можно подобрать абстракции, которые будут повышать гибкость бизнеса без сугцественного усложнения модели.
Исключите классы и ассоциации, которые сначала казались полезными, но на данном этапе стали избыточными. Часто оказывается, что можно объединить пару классов аналитической модели, потому что различия между ними не влияют на остальную модель. Модели обычно растут по мере проведения анализа. Это важно, потому что объем разработки возрастает с увеличением модели. Ищите незначительные элементы, которые можно выбросить из модели, и абстракции, которые помогут ее упростить. Хорошая модель кажется правильной и не имеет лишних деталей. Не беспокойтесь, если она не покажется вам идеальной. Даже хорошая модель обычно имеет несколько частей, структура которых может быть адекватной, но никогда не покажется абсолютно правильной.
12.5.2. Корректировка требований После завершения анализа модель служит в качестве основы для формулирования требований и определяет область дальнейшей деятельности. Реальные требования, по большей части, войдут в состав модели. Кроме них могут быть выдвинуты также ограничения на производительность. Они должны быть установлены ясно 12.6. Резюме 247 и четко, вместе с критериями оптимизации. Прочие решения обычно указывают метод решения, а потому должны быть отделены и поставлены под сомнение. Окончательный вариант модели необходимо проверить вместе с заказчиком. В процессе анализа некоторые требования могли оказаться некорректными или непрактичными. Заказчик должен подтвердить корректировку этих требований.
Аналитическую модель должны проверить и бизнес-эксперты, которые определят ее соответствие реальному миру. Мы заметили, что аналитические модели— это эффективное средство взаимодействия с бизнес-экспертами, не являющимися экспертами в компьютерных областях, Окончательно проверенная аналитическая модель служит основой для создания системной архитектуры, проектирования и реализации. Вы должны исправить исходную формулировку задачи в соответствии с теми сведениями, которые были получены на этапе анализа.
12.5.3. Анализ и проектирование Цель анализа состоит в том, чтобы полностью определить проблему, не давая преимушеств какому-либо конкретному варианту реализации. На практике оказывается невозможно полностью устранить связь с реализацией. Этапы проектирования не имеют четких границ. Не существует и идеальной аналитической модели.
Не стоит слепо руководствоваться приведенными выше правилами. Назначение правил — сохранить гибкость и сделать возможными последующие изменения, но вы должны помнить и о том, что цель моделирования заключается в выполнении задачи, а гибкость — лишь одно из средств. Пример с банкоматом. На этом этапе мы не вносим больше никаких изменений в модель банкомата. В реальном приложении изменений наверняка будет больше, чем в примере из учебника, потому что у вас будут рецензенты, для которых это приложение будет жизненно важно.
12.6. Резюме Модель предметной области содержит общие сведения о приложении: понятия и отношения, известные экспертам предметной области. Эта модель обычно включает в себя модели классов и состояний. Реже в ее состав входит модель взаимодействия. Назначение этапа анализа состоит в том, чтобы понять задачу для последующей разработки корректного проекта. Хорошая аналитическая модель описывает важнейшие черты задачи, но не вносит артефактов реализации, раньше времени ограничивающих проектные решения. Модель классов предметной области отражает статическую структуру реального мира.
Сначала нужно выделить классы, затем определить ассоциации между ними, отметить атрибуты (за исключением незначительных). Упорядочение и упрощение структуры классов может быть выполнено при помощи обобщения. Сгруппируйте родственные классы и ассоциации в пакеты. Дополните модель классов словарем данных — кратким текстовым описанием назначения и области применения каждого элемента. 248 Глава 12 ° Анализ предметной области Если класс предметной области может находиться в существенно различных состояниях, нарисуйте его диаграмму состояний. Для большинства классов этого не потребуется. Методология никогда не бывает такой же линейной, как ее описание в учебнике.
Любая сложная аналитическая модель строится итерациями на нескольких уровнях. Вы не должны разрабатывать все части модели в одинаковом темпе. Результат анализа заменяет исходную формулировку задачи и служит основанием для проектирования. Библиографические замечания Эбботт рассказывает о том, как использовать существительные и глаголы в описании задачи для ее решения !АЪЪогг-83!. Еще одна хорошая книга !Соаг)-95! содержит примеры аналитических шаблонов. Ссылки !АЬЪоы-83! Кпззе!! !. АЬЬогц Ргойгав Вез!8п Ъу 1пГогва1 Епй!!зЬ 1)езсг!рг!опз.
Соввип!саг!опз о1 гЬе АСМ 26, 11 (ХочевЬег 1983), 882 — 894. [Соаг)-95! Регег Соаг), Пачи$ ХоггЬ, апг! Маг!г Мауйе!д. ОЪ)ест Мог!е!з: 5ггагей!ек Рассегпз, апг! Арр!!саг!опз. 1)ррег 5агЫ!е В!чег, Щ: 'г'опп)оп Ргезз, 1995. Упражнения 12.1. (3) Для каждой из перечисленных ниже систем укажите относительную важность трех аспектов моделирования: 1) моделирование классов, 2) моделирование состояний, 3) моделирование взаимодействия. Поясните свои ответы.
Например, для компилятора ответ может выглядеть как «3, 1, 2». Для компилятора наиболее важно моделирование взаимодействия, потому что это приложение занимается главным образом преобразованием данных. 1) Игрок в бридж. 2) Разменный автомат. 3) Система автоматического регулирования скорости автомобиля. 4) Электронная пишущая машинка. 5) Программа проверки орфографии. 6) Телефонный автоответчик. 12.2. (7) Создайте диаграмму классов для каждой системы из упражнения 11.6.
Заметьте, что требования сформулированы не полностью, а потому модель классов тоже будет неполной. Упражнения 12.3 — 12.8 связаны между собой. Выполняйте их последовательно. Ниже мы приводим возможную спецификацию простого редактора диаграмм, который может использоваться в качестве ядра для множества различных приложений. Упражнения 249 Редактор будет использоваться в интерактивном режиме для создания и редактирования рисунков. Рисунок состоит из нескольких страниц. Рисунки сохраняются в виде именованных АБСП-файлов и могут считываться из них. На страницах изображаются прямоугольники и связи между ними. Каждый прямоугольник может содержать необязательную строку текста. Текст может располагаться только внутри прямоугольников. Редактор должен автоматически изменять размер прямоугольника в соответствии с размером текста внутри него.
Размер шрифта изменять нельзя. Любую пару прямоугольников на одной и той же странице можно соединить между собой ломаной, состоящей из вертикальных и горизонтальных отрезков. На рис. У12.1 показан пример простого рисунка, занимающего одну страницу. Рис. У12.1. Пример рисунка Редактор будет управляться через систему меню (включая контекстные меню).
Для выбора пунктов меню, объектов и связей будет использоваться трехкнопочная мышь. Ниже перечислены операции, которые должен поддерживать редактор: создание страницы, удаление страницы, переход к следующей странице, переход к предыдущей странице, создание прямоугольника, создание связей между прямоугольниками, ввод текста, группировка выделенных объектов, вырезание вьщеленных объектов в буфер, перемещение выделенных объектов, копирование выделенных объектов, вставка содержимого буфера, редактирование текста, сохранение рисунка, загрузка рисунка.
Операции копирования, вырезания и вставки работают с буфером обмена. Копирование создает копию выделенных объектов в буфере. Вырезание перемещает выделенные объекты в буфер. Вставка копирует содержимое буфера на страницу. Каждая операция копирования и вставки затирает текущее содержимое буфера. Перемещение области просмотра и изменение масштаба не поддерживаются; страницы имеют фиксированный размер. При перемещении прямоугольников вместе с ними должен двигаться и содержащийся в них текст, а связи между прямоугольниками должны растягиваться и сокращаться.
12.3. (3) Ниже приведен список потенциальных классов. Подготовьте список классов, которые должны быть исключены из модели по причинам, указанным в этой главе. Объясните свой выбор. Если причин несколько, приводите основную. Потенциальные классы: символ, линия, координата х, координата у, связь, положение, длина, ширина, совокупность, выделение, меню, мышь, кнопка, компьютер, рисунок, файл рисунка, страница, всплывающее меню, точка, пункт меню, выделенный объект, выделенная линия, выделенный прямоугольник, выделенный текст, имя файла, прямоугольник, буфер, координата сегмента линии, соединение, текст, название, начало координат, масштабный множитель, угловая точка, конечная точка, графический объект.
12.4. (3) Подготовьте словарь данных для объектов, оставшихся от предыдущего списка. 250 Глава 12 ° Анализ предметной области 12.5. (3) Ниже приведен список потенциальных ассоциаций и обобщений для редактора диаграмм. Подготовьте список ассоциаций и обобщений, которые нужно исключить или переименовать по любой из причин, указанных в этой главе. Объясните свой выбор. Если причин несколько, приводите основную. Потенциальные ассоциации и обобщения: прямоугольник содержит текст, прямоугольник обладает положением, связь логически соединяет два прямоугольника, прямоугольник перемещается, связь содержит точки, связь определяется последовательностью точек, выделение, или буфер, или страница представляют собой совокупности, строка символов характеризуется положением, прямоугольник содержит строку символов, строка символов содержит символы, линия обладает длиной, совокупность состоит из связей и прямоугольников, связь удаляется, линия перемешается, линия представляет собой графический объект, точка представляет собой графический объект.
12.6. На рис. У12.2 приведена неполная диаграмма классов редактора диаграмм Покажите, каким образом ее можно использовать для каждого из следующих запросов. Для выражения своих запросов используйте комбинацию ОС1.(см. главу 3) и псевдокода. 1) (2) Найти все выделенные прямоугольники и связи. 2) (4) По одному прямоугольнику найти все непосредственно с ним свя- занные. 3) (8) По прямоугольнику найти все связанные с ним непосредственно или косвенно. 4) (2) Имея прямоугольник и связь, определить, участвует ли прямоуголь- ник в этой связи. 5) (3) Имея прямоугольник и связь, найти другой прямоугольник, связан- ный с данным другим концом этой связи.