Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем

Эрик Эванс

Классическая книга Э.Эванса освещает наиболее общий, стратегический круг вопросов, связанных с объектно-ориентированной разработкой программного обеспечения. Это переработка и структуризация знаний о предметных областях, применение типовых архитектурных шаблонов, построение и анализ моделей предметных областей, проектирование программных объектов с точки зрения качества их взаимодействия и передачи логической структуры знаний, организация программ на основе крупномасштабных структур, выработка общего языка и стратегии коммуникации в группе. Подход автора строится на динамичном рефакторинге модели и постоянной дистилляции знаний. Это позволяет достигнуть высокой степени гармонии между логикой предметной области и кодом программы, а также достаточной гибкости программной архитектуры для целей удобной доработки и интеграции программного обеспечения. Книга насыщена практическими примерами из реальных проектов.

Мировое сообщество программистов признает, что моделирование предметных областей - ключевой раздел проектирования программного обеспечения. В моделях предметных областей разработчики выражают сложные функции своих программ, реализуя их затем в таком виде, который отвечает реальным потребностям пользователей. Но несмотря на очевидную важность предмета, существует очень мало пособий по эффективному внедрению моделирования предметных областей в практику разработки программ.

Книга Эрика Эванса заполняет этот пробел. Она посвящена не отдельным технологиям, а систематическому предметно-ориентированному подходу. В ней представлен широкий набор приемов и методик, основанных на практическом опыте, и фундаментальных принципов, помогающих в реализации программных проектов из сложных предметных областей. Органично переплетая практику проектирования и реализации программ, эта книга содержит множество фактических примеров, иллюстрирующих применение общих стратегических принципов в реальных программных проектах.

Из книги читатель узнает, как с помощью модели предметной области придать разработке сложной системы нужную направленность и динамику. Выделены основные приемы и образцы-шаблоны, образующие общий язык группы разработчиков. Особо подчеркивается необходимость рефакторинга не только кода, но и модели в его основе, что в сочетании с итерационной agile-методикой приводит к углублению знаний о предметной области и повышению качества взаимодействия между специалистами и программистами. Подход книги строится именно на этом фундаменте, предлагая модели и архитектуры для систем и организаций любой сложности.

Издательство: Вильямс, 2011 г.

ISBN 978-5-8459-1597-9

Количество страниц: 448.

Содержание книги «Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем»:

  • 17Введение
  • 27 Часть I. Модель предметной области в работе
    • 29 Роль и выбор модели
    • 30 Алгоритмическая часть программы
  • 33 Глава 1. Переработка знаний
    • 37 Составляющие эффективного моделирования
    • 38 Переработка знаний
    • 39 Непрерывное обучение
    • 40 Информоемкая архитектура
      • 41 Извлечение скрытого понятия
    • 43 Углубленные модели
  • 45 Глава 2. Коммуникация и язык
    • 45 Единый язык
    • 50 Моделирование вслух
    • 51 Одна команда - один язык
    • 53 Документация, диаграммы, схемы
      • 55 Письменная проектная документация
      • 57 Выполняемый код решает все
    • 58 Пояснительные модели
  • 61 Глава 3. Связь между моделью и реализацией
    • 62 Проектирование по модели
    • 65 Парадигмы моделирования и средства программирования
    • 71 Анатомия модели: зачем модель нужна пользователю
    • 72 Моделировщики-практики
  • 75 Часть II. Структурные элементы предметно-ориентированного проектирования
  • 79 Глава 4. Изоляция предметной области
    • 79 Многоуровневая архитектура
      • 83 Связь между уровнями
      • 84 Архитектурные среды
    • 85 Уровень предметной области - вместилище модели
    • 85 «Антишаблон» интеллектуального интерфейса пользователя
    • 88 Другие виды изоляции
  • 89 Глава 5. Модель, выраженная в программе
    • 90 Ассоциации
    • 95 Сущности (указуемые объекты)
      • 98 Моделирование СУЩНОСТЕЙ
      • 99 Проектирование операций идентификации
    • 101 Объекты-значения
      • 103 Проектирование ОБЪЕКТОВ-ЗНАЧЕНИЙ
      • 106 Проектирование ассоциаций с помощью ОБЪЕКТОВ-ЗНАЧЕНИЙ
    • 107 Службы
      • 108 Службы и изоляция уровня предметной области
      • 110 Степень модульности
      • 110 Доступ к службам
    • 111 Модули (пакеты)
      • 112 Гибкая модульность
      • 114 Ловушки инфраструктуры
    • 116 Парадигмы моделирования
      • 117 Причины доминирования объектной парадигмы
      • 119 He-объекты в объектном мире
      • 119 ПРОЕКТИРОВАНИЕ ПО МОДЕЛИ в условиях смешения парадигм
  • 123 Глава 6. Цикл существования объектов модели
    • 124 Агрегаты
    • 133 Фабрики
      • 135 Выбор фабрик и их местонахождения
      • 137 Когда достаточно конструктора
      • 138 Проектирование интерфейса
      • 139 Где реализовать логику инвариантов?
      • 139 Отличия между фабриками сущностей и фабриками объектов-значений
      • 139 Восстановление хранимых объектов
    • 141 Хранилища
      • 145 Запросы к хранилищам
      • 147 Клиентам безразлична реализация хранилищ, а разработчикам - нет
      • 147 Реализация хранилища
      • 149 Работа в рамках архитектурной среды
      • 149 Связь с фабриками
    • 151 Проектирование объектов для реляционной базы данных
  • 153 Глава 7. Работа с языком: расширенный пример
    • 153 Введение в систему управления доставкой
    • 155 Изоляция предметной области: добавление прикладных операций
    • 156 Отделение сущностей от значений
      • 157 Роль и другие атрибуты
    • 157 Проектирование ассоциаций в модели
    • 158 Границы агрегатов
    • 159 Выбор хранилищ
    • 160 Проход по сценариям
      • 160 Пример рабочей функции: изменение места назначения груза
      • 161 Пример рабочей функции: повторение заказов
    • 162 Создание объектов
      • 162 Фабрики и конструкторы для объекта Груз
      • 163 Добавление объекта Манипуляция
    • 164 Перерыв на рефакторинг: альтернативный агрегат Груз
    • 166 Модули в модели грузопоставок
    • 167 Новая функция: распределение заказов
      • 169 Связь между двумя системами
      • 170 Усовершенствование модели: введение подразделений
      • 172 Оптимизация быстродействия
    • 172 Итоги
  • 175 Часть III. Углубляющий рефакторинг
    • 176 Уровни рефакторинга
    • 177 Углубленные модели
    • 178 Углубленная модель и гибкая архитектура
    • 179 Процесс познания
  • 181 Глава 8. Качественный скачок
    • 182 История успеха
      • 182 Модель неплоха, но
      • 184 Скачок
      • 185 Углубленная модель
      • 187 Трезвое решение
      • 188 Воздаяние
    • 188 Потенциал
    • 188 Концентрация на основах
    • 189 Каскад озарений
  • 191 Глава 9. Перевод неявных понятий в явные
    • 191 Извлечение понятий
      • 191 Внимание к языку
      • 195 Выявление узких мест
      • 199 Размышление над противоречиями
      • 200 Чтение книг
      • 202 Метод проб и ошибок
    • 202 Моделирование неочевидных понятий
      • 202 Явные условия-ограничения
      • 204 Процессы как объекты предметной области
    • 205 Спецификация
      • 208 Применение и реализация спецификаций
  • 221 Глава 10. Гибкая архитектура
    • 223 Информативные интерфейсы
    • 226 Функции без побочных эффектов
    • 231 Утверждения
    • 234 Концептуальные контуры
    • 238 Изолированные классы
    • 240 Замкнутость операций
      • 242 Декларативная архитектура
      • 245 Декларативный стиль архитектуры
    • 252 Углы атаки
      • 252 Выделение подобластей
      • 253 Использование сложившихся формальных систем
  • 263 Глава 11. Применение аналитических шаблонов
    • 274 Аналитические шаблоны как источник знания
  • 275 Глава 12. Шаблоны и модель
    • 276 Стратегия
    • 279 Композит
    • 284 Почему не "мелкий объект" (flyweight)?
  • 287 Глава 13. Углубляющий рефакторинг
    • 287 Инициирование
    • 288 Исследовательские группы
    • 288 Предыдущие наработки
    • 289 Архитектура для разработчиков
    • 289 Расчет времени
    • 290 Кризис как потенциальная возможность
  • 291 Часть IV. Стратегическое проектирование
  • 295 Глава 14. Поддержание целостности модели
    • 298 Ограниченный контекст
      • 301 Распознавание дефектов внутри ограниченного контекста
    • 302 Непрерывная интеграция
    • 304 Карта контекстов
      • 311 Тестирование в границах контекста
      • 311 Организация и документирование карт контекстов
    • 311 Взаимосвязи между ограниченными контекстами
    • 312 Общее ядро
    • 313 Группы «заказчик-поставщик»
    • 317 Конформист
    • 320 Предохранительный уровень
      • 321 Проектирование интерфейса предохранительного уровня
      • 322 Реализация предохранительного уровня
      • 324 Поучительная история
    • 325 Отдельное существование
    • 327 Службы с открытым протоколом
    • 327 Общедоступный язык
    • 330 Унификация слона
    • 333 Выбор стратегии построения контекстов
      • 333 Уровень принятия решений: разработчики или выше
      • 333 Помещение самих себя в контекст
      • 334 Преобразование границ
      • 334 Принятие того, что нельзя изменить: контуры внешних систем
      • 335 Взаимоотношения с внешними системами
      • 335 Проектируемая система
      • 336 Учет особых случаев отдельными моделями
      • 337 Установка системы
      • 337 Компромиссы
      • 338 Если проект уже в работе
    • 339 Преобразования
      • 339 Слияние контекстов: от отдельного существования к общему ядру
      • 340 Слияние контекстов: от общего ядра к непрерывной интеграции
      • 341 Вытеснение устаревшей системы
      • 342 От открытого протокола к общедоступному языку
  • 345 Глава 15. Дистилляция
    • 347 Смысловое ядро
      • 349 Выбор ядра
      • 349 Как распределить работу
    • 350 Эскалация дистилляции
    • 351 Неспециализированные подобласти
      • 356 «Неспециализированный» не значит «хорошо переносимый»
      • 357 Управление рисками в проекте
    • 357 Введение в предметную область
    • 359 Схематическое ядро
      • 360 Дистилляционный документ
      • 361 Разметка ядра
      • 362 Дистилляционный документ как методическое средство
    • 362 Связные механизмы
      • 364 Сравнение связных механизмов и неспециализированных подобластей
      • 365 Когда механизм входит в смысловое ядро
    • 366 Дистилляция к декларативному стилю
    • 366 Выделенное ядро
      • 367 Цена создания выделенного ядра
      • 368 Эволюция коллективных решений
    • 373 Абстрактное ядро
    • 374 Дистилляция в углубленных моделях
    • 374 Выбор целей рефакторинга
  • 375 Глава 16. Крупномасштабная структура
    • 378 Эволюционная организация
    • 380 Метафорический образ системы
      • 382 «Наивный образ»: почему он нам не нужен
    • 382 Уровни разделения обязанностей
      • 391 Выбор подходящих уровней
    • 395 Уровень знаний
    • 402 Среда подключаемых компонентов
      • 406 Насколько жесткой должна быть структура
    • 407 Структурирующий рефакторинг
      • 408 Минимализм
      • 408 Коммуникативность и самодисциплина
      • 408 Реструктуризация дает гибкую архитектуру
      • 409 Дистилляция
  • 411 Глава 17. Объединение стратегических подходов
    • 411 Сочетание крупномасштабных структур и ограниченных контекстов
    • 414 Сочетание крупномасштабной структуры и дистилляции
    • 415 Первоначальная оценка
    • 416 Кому планировать стратегию
      • 416 Самозарождение структуры в ходе разработки
      • 417 Смежная группа по разработке архитектуры
    • 417 Шесть принципов принятия решений при стратегическом проектировании
      • 420 То же верно и для технических сред проектирования
      • 421 Долой генеральный план
  • 423 Заключение
    • 427 Взгляд в будущее
  • 429 Приложение. Использование шаблонов в этой книге
  • 433 Глоссарий
  • 437 Список литературы
  • 438 Фотографии
  • 439 Предметный указатель

Инструкция как скачать книгу Эрик Эванс: Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем
Рейтинг книги:
0 голосов
426

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: