Книга Предметно-орієнтоване проектування (DDD). Ерік Еванс
Структуризація складних програмних систем
Класична книга Еге. Еванса висвітлює найбільш загальне, стратегічне коло питань, пов’язаних з об’єктно-орієнтованою розробкою програмного забезпечення. Це переробка і структуризація знань про предметні областях, застосування типових архітектурних шаблонів, побудова та аналіз моделей предметних областей, проектування програмних об’єктів з точки зору якості їх взаємодії і передачі логічної структури знань, організація програм на основі великомасштабних структур, вироблення спільної мови і стратегії комунікації в групі.
Підхід автора будується на динамічному рефакторінгу моделі і постійної дистиляції знань. Це дозволяє досягти високого ступеня гармонії між логікою предметної області та кодом програми, а також достатньої гнучкості програмної архітектури для цілей зручною доопрацювання та інтеграції програмного забезпечення. Книга насичена практичними прикладами з реальних проектів.
Світова спільнота програмістів визнає, що моделювання предметних областей – ключовий розділ проектування програмного забезпечення. У моделях предметних областей розробники висловлюють складні функції своїх програм, реалізуючи їх потім в такому вигляді, який відповідає реальним потребам користувачів. Але незважаючи на очевидну важливість предмета, існує дуже мало посібників щодо ефективного впровадження моделювання предметних областей в практику розробки програм.
Книга Еріка Еванса заповнює цю прогалину. Вона присвячена не окремим технологіям, а систематичного предметно-орієнтованого підходу. У ній представлений широкий набір прийомів і методик, заснованих на практичному досвіді, і фундаментальних принципів, які допомагають в реалізації програмних проектів зі складних предметних областей. Органічно переплітаючи практику проектування і реалізації програм, ця книга містить безліч фактичних прикладів, що ілюструють застосування загальних стратегічних принципів в реальних програмних проектах.
З книги читач дізнається, як за допомогою моделі предметної області надати розробці складної системи потрібну спрямованість і динаміку. Виділено основні прийоми і зразки-шаблони, що утворюють спільну мову групи розробників. Особливо наголошується на необхідності рефакторінга не тільки коду, але і моделі в його основі, що в поєднанні з итерационной agile-методикою призводить до поглиблення знань про предметну область і підвищенню якості взаємодії між фахівцями і програмістами.
Підхід книги будується саме на цьому фундаменті, пропонуючи моделі і архітектури для систем і організацій будь-якої складності.