- •С.М. Шаврин, л.Н. Лядова, с.И. Чуприна Моделирование и проектирование информационных систем
- •Содержание
- •I. Организационно-методический раздел 5
- •II. Содержание курса 6
- •Место курса в системе основной образовательной программы
- •II. Содержание курса Связь между разделами
- •Конспект лекций
- •Введение
- •Понятие информационной системы
- •III. Примерное распределение часов курса по формам и видам работ 153
- •IV. Форма итогового контроля 156
- •V. Учебно-методическое обеспечение курса 156
- •I. Организационно-методический раздел Цели и задачи курса
- •Требования к уровню освоения содержания курса
- •Проблемы сложных задач
- •Введение в теорию моделирования
- •Понятие моделирования и модели. Принципы моделирования и классификация моделей
- •Метамоделирование
- •Классификация информационных систем по уровню и составу моделей
- •Жизненный цикл программного обеспечения
- •Понятие жизненного цикла. Процессы жизненного цикла
- •Модели жизненного цикла
- •Структурный подход
- •Сущность и основные принципы структурного подхода
- •Метод функционального моделирования sadt
- •Моделирование потоков данных
- •Моделирование структур данных
- •Объектный подход
- •Сущность и основные принципы объектного подхода
- •Пример объектно-ориентированного анализа и проектирования
- •Унифицированный язык моделирования uml
- •Обзор языка uml
- •Моделирование функциональных требований и диаграммы прецедентов
- •Типичные ошибки
- •Моделирование бизнес-процессов и диаграммы активностей
- •Элементы диаграммы активностей
- •Концептуальное моделирование и диаграммы понятий
- •Понятие
- •Ассоциации
- •Атрибуты
- •Ограничения
- •Обобщение
- •Прямые и косвенные экземпляры
- •Абстрактные понятия
- •Многомерная множественная классификация
- •Агрегация
- •Правила идентификации отношения агрегации
- •Порядок построения концептуальной модели
- •Рекомендации по построению диаграмм понятий
- •Моделирование поведения системы и диаграмма последовательностей
- •Модель поведения системы
- •Объекты
- •Сообщения
- •Описание системных операций
- •Типичные ошибки
- •Рекомендации по построению диаграмм последовательностей
- •Проектирование поведения системы и диаграммы сотрудничества
- •Диаграммы взаимодействия
- •Диаграмма сотрудничества
- •Работа с коллекциями объектов
- •Сообщения классу
- •Видимость объектов
- •Типичные ошибки
- •Рекомендации по построению диаграмм сотрудничества
- •Проектирование статической структуры системы и диаграмма классов
- •Диаграмма классов
- •Операции
- •Информация о типах
- •Информация об области видимости
- •Вычислимые атрибуты
- •Направление навигации
- •Зависимости
- •Рекомендации по построению диаграмм классов
- •Модель реализации и диаграмма компонентов
- •Модель реализации
- •Диаграмма компонентов
- •Компоненты
- •Стереотипы
- •Пиктограммы
- •Интерфейсы
- •Зависимости
- •Рекомендации по построению диаграммы компонентов
- •Модель и диаграмма развертывания
- •Модель развертывания
- •Диаграмма развертывания
- •Стереотипы
- •Шаблоны проектирования
- •Введение в шаблоны проектирования
- •Обязанности
- •Дополнительная информация
- •Шаблоны проектирования grasp
- •Шаблоны graps
- •Шаблон Expert (Эксперт)
- •Шаблон Creator (Создатель)
- •Шаблон Low Coupling (Низкое Связывание)
- •Шаблон High Cohesion (Высокое Зацепление)
- •Шаблон Controller (Контроллер)
- •Вопрос для итоговой аттестации
- •III. Примерное распределение часов курса по формам и видам работ
- •Учебное задание
- •Примерный перечень вопросов к зачету по всему курсу
- •IV. Форма итогового контроля
- •V. Учебно-методическое обеспечение курса Рекомендуемая литература (обязательная)
- •Рекомендуемая литература (дополнительная)
- •Список адресов в Интернет
- •Моделирование и проектирование информационных систем Учебно-методическое пособие
Дополнительная информация
В следующей теме рассматриваются общие шаблоны распределения обязанностей (GRASP). Для дальнейшего изучения шаблонов проектирования можно порекомендовать обратиться к книге Эриха Гаммы и др. «Примеры объектно-ориентированного проектирования. Паттерны проектирования».
Шаблоны проектирования grasp
Тематический контекст
Краткое содержание
Обзор общих шаблонов распределения обязанностей (GRASP).
Шаблоны: «Эксперт», «Создатель», «Низкое связывание», «Высокое зацепление» и «Контроллер».
Шаблоны graps
В данном разделе рассматриваются шаблоны GRASP (General Responsibility Assignment Patterns – Общие шаблоны распределения обязанностей). Это наиболее общие и часто (порой, неосознанно) используемые шаблоны проектирования. Некоторые из них напрямую следуют из принципов объектно-ориентированного подхода и могут показаться очень простыми и интуитивно понятными. Однако не стоит их недооценивать. Осознанное применение этих шаблонов поможет избежать многих проблем.
Шаблон Expert (Эксперт)
Проблема. Каков наиболее общий принцип распределения обязанностей между объектами при объектно-ориентированном проектировании?
Рис. 96. Концептуальная модель продажи
Решение. Назначить обязанность информационному эксперту – объекту, который имеет информацию, необходимую для выполнения обязанности.
Например, в системе розничной торговли некоторому объекту необходимо знать общую сумму продажи. На рис. 96 представлена часть соответствующей концептуальной модели.
Рис. 97. Распределение обязанностей в соответствии с шаблоном Expert
Распределение обязанностей в соответствии с шаблонном Expert показано на рис. 97. Для выполнения обязанности «знать и предоставлять общую сумму продажи» объектам системы были назначены следующие обязанности: объектам класса «Продажа» было вменено в обязанность вычисление общей суммы продажи и владение коллекцией товарных позиций; объектам класса «ТоварнаяПозиция» было вменено в обязанность вычисление суммы товарной позиции, знание количества продаваемого товара и его описания; объектам класса «ОписаниеТовара» было вменено в обязанность знание цены товара.
Заметим, что на рис. 97 классы «Продажа», «ТоварнаяПозиция» и «ОписаниеТовара» появились не столько потому, что соответствующие понятия есть на концептуальной модели, сколько потому, что эти классы понадобились для реализации обязанности. Модель спецификации и тем более модель реализации могут существенно отличаться от концептуальной модели.
Шаблон Expert является наиболее часто используемым шаблоном. Этот шаблон поддерживает инкапсуляцию, т.к. используются собственные данные. Кроме того, его применение приводит к определению классов, которые гораздо легче понимать и поддерживать.
Шаблон Creator (Создатель)
Проблема. Кто должен отвечать за создание нового экземпляра некоторого класса?
Решение. Назначить классу А обязанность создавать экземпляры класса Б, если:
А агрегирует объекты Б;
А содержит объекты Б;
А записывает объекты Б;
А активно использует объекты Б;
А обладает данными инициализации, которые передаются объектам Б при создании (т.е. А является экспертом).
Если выполняется несколько условий (т.е. есть несколько кандидатов на роль создателя), то предпочтение следует отдать первым двум, т.е. агрегирует и содержит.
Например, кто в системе розничной торговли должен отвечать за создание товарных позиций? Продажа агрегирует товарные позиции и, следовательно, является кандидатом на создателя (рис. 98).
Рис. 98. Создание товарных позиций
При использовании шаблона Creator степень связности не повышается (см. шаблон Low Coupling), т.к. создаваемый объект, как правило, оказывается видимым для создателя посредством уже имеющихся ассоциаций.
