Мировое сообщество программистов признает, что моделирование предметных областей — ключевой раздел проектирования программного обеспечения. В моделях предметных областей разработчики выражают сложные функции своих программ, реализуя их затем в таком виде, который отвечает реальным потребностям пользователей. Но, несмотря на очевидную важность предмета, существует очень мало пособий по эффективному внедрению моделирования предметных областей в практику разработки программ. Книга Эрика Эванса восполняет этот пробел. Она посвящена не отдельным технологиям, а систематическому предметно-ориентированному подходу. В ней представлен широкий набор приемов и методик, основанных на практическом опыте, и фундаментальных принципов, помогающих в реализации программных проектов из сложных предметных областей. Органично переплетая практику проектирования и реализации программ, эта книга содержит множество фактических примеров, иллюстрирующих применение общих стратегических принципов в реальных программных проектах. Из книги читатель узнает, как с помощью модели предметной области придать разработке сложной системы нужную направленность и динамику. Выделены основные приемы и образцы-шаблоны, образующие общий язык группы разработчиков, Особо подчеркивается необходимость рефакторинга не только кода, но и модели в его основе, что в сочетании с итерационной agile-методикой приводит к углублению знаний о предметной области и повышению качества взаимодействия между специалистами и программистами. Подход книги строится именно на этом фундаменте, предлагая модели и архитектуры для систем и организаций любой сложности. В частности, в книге рассматриваются следующие темы: • Единый язык общения для всей группы разработчиков. • Глубокая связь между моделью и программной реализацией. • Выделение ключевых черт модели. • Управление циклом существования объектов. • Написание легко интегрируемого кода предметной области. • Как сделать сложный код очевидным и предсказуемым. • Формулировка введения в предметную область. • Дистилляция ядра предметной области. • Поиск неявных понятий, скрытых в модели. • Применение аналитических шаблонов. • Архитектурные шаблоны в моделях. • Поддержание целостности больших систем. • Сосуществование нескольких моделей в одном проекте. • Организация систем в соответствии с крупномасштабными структурами. • Качественные скачки в моделях. Имея под рукой эту книгу, разработчики объектно-ориентированных программ, системные аналитики и архитекторы будут всегда располагать набором рекомендаций по организации своего труда, созданию сложных и полезных моделей предметных областей, превращению их в высококачественные программные продукты.