Больше рецензий

18 августа 2016 г. 19:04

2K

4.5

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

Разрабатывать ПО трудно. Разрабатывать сложное ПО невыразимо трудно. Количество “движущихся частей” (уж не говоря о числе их сочетаний) в современных программных системах во много раз превышает количество элементарных конструктивных элементов любых устройств или других материальных объектов, создаваемых человеком. В этом смысле критическим становится понятие архитектуры ПО. Как без чёткого плана и досконального понимания всех процессов нельзя построить многоэтажный дом, так и без грамотного проектирования нельзя создать сложную программную систему. По аналогии со строительством зданий и планированием городов в проектировании ПО с годами стали выделять шаблоны -- удачные решения типовых проблем. Самая известная книга в этой области описывает два с половиной десятка такого рода шаблонов проектирования, однако они абстрактны и подходят для решения широкого круга задач. Фаулер же рассматривает проблемы, характерные для создания крупных бизнес-приложений: работа с данными, управление параллельными вычислениями, работа с пользователями, организация веб-приложений, общая организация приложений в виде набора взаимодействующих друг с другом слоёв и т.п.

Книга Фаулера имела интересную судьбу. Проблемы, описанные в ней 15 лет назад, оказались настолько широко распространёнными, а шаблоны насколько удачными, что с годами большая часть из них была воплощена в в библиотеках и технологиях программирования, ставших стандартами де-факто в мире бизнес-приложений. В настоящее время ни один нормальный человек без очень серьёзной на то необходимости не будет реализовывать, например, ORM-слой для работы с базами данных или создавать свою MVC-инфраструктуру для организации работы веб-приложений. Существуют хорошо зарекомендовавшие себя промышленные технологии, которые берут решение подобных задач на себя, оставляя разработчикам беспокойство о более высокоуровневой логике приложений. Но это не значит, что данная книга морально устарела, даже сейчас она сохраняет актуальность как минимум по двум причинам. Во-первых, она наглядно показывает, как устроены внутри распространённые библиотеки и фреймворки, и объясняет, почему они устроены именно так. Ну и во-вторых, что даже более важно, она учит проектировщика думать: анализировать проблему и выбирать варианты её решения в зависимости от параметров создаваемой системы и ограничений, накладываемых на её работу. С образовательной точки зрения важность этого момента сложно переоценить.

Стоит, однако, отметить, что наибольший эффект эта книга окажет на людей, которые уже некоторое время посвятили разработке крупного ПО. Без такого опыта читателю будет довольно непросто понять, зачем нужно городить все эти промежуточные уровни и придумывать архитектурные изыски, когда можно сделать быстрее и проще “напрямую”. Лишь набив собственные шишки, понимаешь, что прямое решение будет актуально только для небольших программ, а с ростом масштаба системы приходится серьёзно вкладываться в подходящую инфраструктуру. А вот как это делать, как раз и рассказывает нам Фаулер.

9/10

оригинал рецензии