Вы находитесь на странице: 1из 21

Современные

средства
разработки ПО
Предметно-ориентированное проектирование.
Проектирование по модели (MDD)*MDD)*
МГТУ им. Н.Э. Баумана, ИУ-6, Фетисов Михаил Вячеславович
fetisov.michael@bmstu.ru
Содержание лекции

Цикл существования объектов модели

Агрегаты

Фабрики

Хранилища

Проектирование по модели

Этапы одной итерации

Примеры
Трудности работы со связными
объектами модели

Поддержание целостности объекта на этапе
его существования

Предотвращение излишней сложности в
управлении циклом существования объекта
Цикл существования объекта из
модели предметной области
Агрегаты

Агрегат — совокупность взаимосвязанных
объектов, которые мы воспринимаем как единое
целое с точки зрения изменения данных.

Понятие агрегата очень важно в проектировании
по модели, так как выделяет из набора понятий
корневую (главную) сущность, которая
позволяет управлять транзакционностью,
контролем инварианта агрегата, выполнять
создание целостной совокупности объектов и
хранением её состояния.
Локальная и глобальная
идентичность, ссылки на объекты
Инварианты агрегата
Правила работы с агрегатом

Корневой объект-сущность имеет глобальную идентичность и несёт
полную ответственность за проверку инвариантов

Некоренные объекты-сущности имеют локальную идентичность – они
уникальны только в границах агрегата

Нигде за пределами агрегата не может храниться ссылка на что-либо
внутри него (MDD)*только временные ссылки и значения)

Значит, только корневые объекты агрегатов можно непосредственно
получать по запросам из БД. Все остальные объекты разрешается
извлекать по цепочке связей

Объекты внутри агрегата могут хранить ссылки на корневые объекты
других агрегатов

Операция удаления должна ликвидировать всё, что находится в
границах агрегата

Как только вносится изменение в любой объект агрегата, следует сразу
удовлетворять все инварианты этого агрегата
Пример агрегата
Коллекторное агентсво
Ещё пример агрегата
Воздушное судно
Фабрики

Фабрика – инкапсуляция, которая
необходима, если создание объекта или
целого агрегата представляет большую
сложность или открывает постороннему глазу
слишком много внутренней структуры

Структуры фабрик:
– порождающие шаблоны проектирования
Работа с фабрикой
Хранилища

Хранилища — инфраструктурные элементы,
поддерживающие непрерывность существования объектов
модели

Хранилища обеспечивают следующие возможности:
– предоставляют простую модель получения устойчиво существующих
объектов и управления их жизненным циклом;
– убирают из операционного слоя приложения и модели предметной
области необходимость в поддержке целостности объектов,
различных вариантов технологий СУБД, и даже разных источников
данных;
– обеспечивают транзакционность операций с объектами, агрегатами;
– позволяют легко заменить себя «заглушками» для целей
тестирования (MDD)*обычно заглушкой служит находящаяся в
оперативной памяти коллекция).
Работа с хранилищем
Императивы гибкой разработки
(Agile)Agile))

Сократить время каждой итерации

Обеспечить максимальное соответствие релиза
принятой модели
Проектирование по модели (Agile)MDD)

Проектирование по модели (MDD)*model-driven
design, MDD) — проектирование архитектуры,
при котором соблюдается максимально точное
соответствие между некоторым подмножеством
элементов программы и элементами модели

или, иными словами, процесс совместной
разработки модели и её программной реализации
с сохранением такого соответствия между ними

т. е. формирование / модификация модели =
формирование / модификация кода
Этапы одной итерации

Рефакторинг (MDD)*углубляющий рефакторинг)
– старые автотесты проходят

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

Кодирование основной функциональности
– создание новых автотестов

Показ
Рефакторинг
Углубляющий (Agile)уточняющий) рефакторинг

Рефакторинг — это такая реструктуризация
программы, в результате которой не изменяются её
функциональные возможности

При углубляющем рефакторинге может изменяться
функциональность, если это изменение незначительное

Рефакторинг выполняется, если необходимо сделать
модель объектов проще, понятнее или как
предварительный этап перед добавлением новой
функциональности

Важным является то, что после рефакторинга
регрессионные тесты должны выполняться без
изменений (MDD)*или с незначительными изменениями)
Последовательность проектирования
на основе модели (Agile)итоги)

Выделение понятий предметной области, участвующих в реализуемом
функционале (MDD)*обычная техника ООП)

Построение ассоциаций между понятиями предметной области и их максимальное
упрощение

Выделение сущностных понятий предметной области — объектов (MDD)*понятий)
предметной области, характеризующихся непрерывностью и индивидуальностью
(MDD)*уникальностью) существования

Выделение объектов-значений — понятий, которые представляют описательный
аспект предметной области и не имеют индивидуального существования,
собственной идентичности

Выделение служб — операций или групп операций, предлагаемых в модели в виде
обособленного интерфейса, который в отличие от сущности или объекта-значения
не имеет никакого состояния

Разделение модели на модули — устоявшихся элементов архитектуры программы

Объединение объектов модели в агрегаты — совокупность взаимосвязанных
объектов, которые мы воспринимаем как единое целое с точки зрения изменения
данных
Пример
Модель заказа
Вопросы?

Фетисов Михаил Вячеславович


fetisov.michael@bmstu.ru

Вам также может понравиться