Информация о книге

978-5-8459-1597-9

Главная  » Научно-техническая литература » Информационные технологии. Компьютеры » Управление и проектирование информационных систем » Проектирование ИС » Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем

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

Domain-Driven Design: Tackling Complexity in the Heart of Software
Вильямс, 2010 г., 448 стр., 978-5-8459-1597-9


Описание книги

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

Об авторе
Эрик Эванс, является основателем Domain Language — консультативной группы, которая помогает различным фирмам строить и развивать программные системы, тесно связанные с их профессиональной деятельностью. Автор работал в качестве архитектора и программиста над большими объектно-ориентированными системами в ряде сложных коммерческих и технических предметных областей, начиная с 1980-х годов. Он также занимается повышением квалификации групп разработчиков в области экстремального программирования.
"Эта книга должна стоять на полке у всякого мыслящего программиста."
— Кент Бек (Kent Beck)
"Эрику удалось ухватить суть того, что опытные проектировщики программных объектов всегда знали, но проваливали все попытки донести это знание до своих коллег в смежных областях. Мы охотно делимся отдельными секретами... но никогда не заботились об организации и систематизации принципов построения логической структуры предметной области. Вот почему эта книга так важна."
— Кайл Браун (Kyle Brown), автор книги "Enterprise Java Programming with IBM WebSphere"

Ключевые слова

Поделиться ссылкой на книгу



Дополнительно о книге

Ведущие программисты считали моделирование предметных областей (domain modeling) и проектирование архитектуры программных объектов на этой основе (domain design) ключевой методологией разработки сложных программных систем на протяжении вот уже более двадцати лет. Тем не менее за это время было написано удивительно мало об основных задачах (что делать) и методах (как делать) этой области знания. Но несмотря на отсутствие четкой формализации, в профессиональной среде постепенно “вызрела” система взглядов и подходов, которую я называю предметно ориентированное проекти рование (domain driven design, DDD). За прошедшее десятилетие мне довелось участвовать в разработке нескольких сложных систем, относящихся к различным областям техники и бизнеса. В своей работе я старался применять самые лучшие приемы проектирования и разработки, созданные лидерами объектно ориентированного программирования. Некоторые из моих проектов имели успех, другие же оказались неудачными. Все успешные проекты объединяло одно свойство: для них была построена подробная модель предметной области, которая итеративно улучшалась в ходе разработки, пока не становилась органичной частью проекта. В этой книге предпринимается попытка построить систему понятий, в рамках которой было бы удобно принимать проектные решения, а также создать технический язык для коммуникации при разработке архитектурной модели предметной области (т.е. в том процессе, который называют domain design). Общепризнанные практические приемы соседствуют здесь с моими собственными выводами и результатами. С помощью такой системы коллективы разработчиков программного обеспечения, работающие со сложными предметными областями, смогут выработать строгий, формализованный подход к построению своих проектов.

Содержание книги

Часть I. МОДЕЛЬ ПРЕДМЕТНОЙ ОБЛАСТИ В РАБОТЕ
Глава 1. Переработка знаний
Глава 2. Коммуникация и язык
Глава 3. Связь между моделью и реализацией
Часть II. СТРУКТУРНЫЕ ЭЛЕМЕНТЫ ПРЕДМЕТНО-ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ
Глава 4. Изоляция предметной области
Глава 5. Модель, выраженная в программе
Глава 6. Цикл существования объектов модели
Глава 7. Работа с языком: расширенный пример
Часть III. УГЛУБЛЯЮЩИЙ РЕФАКТОРИНГ
Глава 8. Качественный скачок
Глава 9. Перевод неявных понятий в явные
Глава 10. Гибкая архитектура
Глава 11. Применение аналитических шаблонов
Глава 12. Шаблоны и модель
Глава 13. Углубляющий рефакторинг
Часть IV. СТРАТЕГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ
Глава 14. Поддержание целостности модели
Глава 15. Дистилляция
Глава 16. Крупномасштабная структура
Глава 17. Объединение стратегических подходов
Заключение
Приложение. Использование шаблонов в этой книге
Глоссарий
Список литературы
Фотографии


Об авторе


Отзывы

Очень странная книга (продолжение)  [20 June 2013]
Это дополнение к предыдущему одноименному отзыву. Книгу я дочитал, так что решил вынести свой окончательный вердикт.

В предыдущем отзыве плохо сформулировал основную мысль: книга явно претендует на то, чтобы попасть в ряды классики Computer Science или хотя бы классики книг по проектированию, но по-моему до уровня классики не дотягивает. В этом плане после прочтения мое впечатление не изменилось.

Теперь о всей книге.
Книга действительно заслуживает того, чтобы быть прочитанной. В ней есть некторое количество довольно интересных глав. В основном это Часть 2 (честно говоря, я бы выкинул из книги почти всё, кроме второй части и введения), где автор приводит несколько конкреных и довольно жизненных примеров DD-проектирования; в этой же части есть инетерсное обсуждение различий между Value Object и Entity.

Книга остро нуждается в УГЛУБЛЯЮЩЕМ РЕФАКТОРИНГЕ. Есть несколько довольно объемных глав, практически полностью состоящих из "воды". Это существенно касается первой Части книги. Но в особенности это касается последней, четвертой части книги. Чтение главы 14 - настоящая пытка. Это бесконечное рассусоливание совершенно очевидных любому здоровому на голову человеку вещей.

На обложке написано, что каждый думающий программист должен держать эту книгу у себя на полке. Думающему человеку достаточно подсказать свежую идею и привести пару примеров, дальше он сам разовьет мысль (на то он и думающий). При чтении же книги иногда возникает ощущение, что тебя держат за недоумка, - я не знаю, кому еще нужно столько объяснений прописных истин.

Считаете себя думающим программистом/проектировщиком? Купите эту книгу, если вам не жалко денег, прочтите ее, "переварите" и положите на полку. Но ничего гениального не ожидайте, тогда не разочаруетесь.
Очень странная книга  [13 May 2013]
На данный момент прочел примерно треть книги и допускаю, что мое мнение о ней еще изменится, а пока опишу то впечатление, которое пока что складывается.
Есть определенная категория книг, которые можно никогда не прочитать, и вы при этом можете оставаться неплохим программистом-практиком. Например, книга Александреску по шаблонам С++. Или SICP. Или, в какой-то степени, книги Кнута..
Условно говоря, это редкие "жемчужины" Computer Science. Список можно продолжить, но идея, думаю, ясна: особенность этих книг в том, что они, хотя и читаются тяжело и содержат не так уж много практически необходимых приемов, гарантируют читателю массу инсайтов, тобишь внезапных озарений. Прочитав подобные книги, вы уже никогда не будете смотреть на разработку ПО так, как смотрели на нее прежде.

Книга по DDD написана хорошим техническим языком и превосходно переведена. Она достаточно сложно читается, хотя едва ли вы найдете в ней сворачивающий мозг код или что-то в этом духе. Тяжело читается она потому, что автор скрупулезно выводит каждое определение и разжевывает каждую идею. Проблема в том, что ничего нового он не пишет. Сказать по правде, меня уже сразу насторожило, что предисловие написано Фаулером, потому как Фаулер тот еще балабол: он может на 500 страниц налить воды, когда можно сказать на 50 (если вы так не считаете, то с моим отзывом, конечно же, не согласитесь).
Интересные мысли в книге вне всякого сомнения есть. Но они настолько обмусоливаются автором, настолько много раз повторяются, что периодически забываешь, о чем уже вообще идет речь. Эти мысли можно было бы изложить значительно короче и в более доступной форме.
Еще раз отмечу, что перевод выполнен очень качественно, за что добавлю одну звездочку к оценке книги. Что касается самой сути опуса, то пока по моим впечатлениям все выглядит достаточно посредственно..
Хорошая книжка для энтерпрайзных перфекционистов  [ 5 May 2012]
Хорошая книжка для энтерпрайзных перфекционистов
Отличный перевод!  [12 March 2011]
Написать о том, что книга Эванса лучший источник информации о DDD, значит ничего не написать :). Перевод блестящий! Формат переведённой книги гораздо лучше оригинала (оригинал весит раза в 3 больше). Наконец-то на русском! Переводчику поклон.
к предыдущему отзыву  [14 January 2011]
Не сомневаюсь, что оригинал книги невероятно силен. Но как насчет перевода на русский? Как всегда у Вильямса?
Шедевр  [ 4 January 2011]
Книга просто шедевр!

Народ спрашивает - что такое архитектура? что такое домен? Ответ простой и очень глубокий - это язык!
DDD - это набор принципов, правил и паттернов, который позволит программе разработчиков начать говорить на одном языке с командой клиентов. Очень сложно понять и принять эту мысль. Можно привести кучу аргументов, что это утопия, или что у нас и так все и всё понимают.

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

Тема сложна лишь тем, что предлагает совершенно альтернативный взгляд на разработку ПО. Получается как бы naming convention, но не на уровне скобочек или названия переменных. А convention на уровне как мы мыслим, и как облекаем мысли о проблемах в домен, а домен реализуем в продукте.

Мы обсуждаем книгу в Pattern Study Group. Рекомендую преобрести книгу и подключаться к нашим обсуждениям - http://sg.rpod.ru

Последние поступления в рубрике "Проектирование ИС"



Применение UML 2.0 и шаблонов проектирования. Практическое руководство Применение UML 2.0 и шаблонов проектирования. Практическое руководство Ларман К.

В книге рассматриваются основные принципы и приемы объектно-ориентированного анализа и проектирования (ООА/П). В ней вы найдете сведения об итеративном и гибком моделировании, шаблонах проектирования, архитектурном анализе и многих других вопросах.......

Программная инженерия. Визуальное моделирование программных систем. Учебник для СПО Программная инженерия. Визуальное моделирование программных систем. Учебник для СПО Черткова Е.

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

Проектирование информационных систем. Учебное пособие для вузов Проектирование информационных систем. Учебное пособие для вузов Григорьева И.С., Григорьев М.А.

В пособии хорошо представлены основные современные методы и программные решения создания информационных систем, особенно рассмотрены аспекты, имеющие непосредственное отношение к работе аналитика (проектировщика) и даны соответствующие описательные примеры, представлены методы расчета и статистические данные....

Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Эванс Э., Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.