Появление книги Мартина Фаулера, названной в переводе «Архитектура корпоративных программных приложений», следует выделить, как заметное событие в мире литературы по программированию.

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

Как пишет автор: «В книге делается попытка представить подобные проектные подходы в виде типовых решений (patterns)», — которые, в первую очередь, касаются разработки корпоративных приложений, причем большинство описаний типовых решений сопровождается примерами кода. Вот как автор обозначает основные темы книги: «расслоение» приложений по уровням; структурирование логики предметной области; разработка пользовательского Web-интерфейса; связывание модулей, размещаемых в памяти (в частности, объектов), с реляционной СУБД; принципы распределения программных компонентов и данных».

Книга предназначена для тех, кто проектирует и создает архитектуру корпоративных приложений, а также стремится «улучшить качество принимаемых стратегических решений». Фаулер представил материал своей работы в виде двух частей: обзора, где излагает свои установки, и описания типовых решений, в которой приводится опыт проектировщика. Для оформления книги использован язык XML и связанные с ним технологии и инструменты: редактор TextPad, шаблоны определения типа документа DTD (Document Type Definition), для генерации HTML-страниц язык XSLT, а для построения диаграмм — Visio, пополненный UML-шаблонами.

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

Придерживаясь при разработке корпоративных приложений их соотнесения к различным слоям (по предназначению), автор сделал акцент на архитектуре из трех слоев: представление (presentation), например, услуги, отображение данных, обслуживание запросов HTTP и т.п.; домен (domain) или предметная область, бизнес-логика и источник данных (data source). При рассмотрении структуры логики предметной области приложения в книге рассматриваются три типовых решения: сценарий транзакции, модель предметной области и модуль таблицы. Роль слоя источника данных состоит в обеспечении взаимодействия приложения с компонентами инфраструктуры, главным при этом является база данных. Отдельная глава книги посвящена представлению данных в Сети.

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

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

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

Завершая представление этой интересной и полезной книги, хочу обратить внимание на недостатки. Автор представил корпоративные приложения в рамках весьма распространенной концепции промежуточного программного обеспечения. Но весьма трудно найти верный взгляд на систему в целом и, тем более, пытаться ею управлять если не ясны связи с рабочими местами, если нет модели системы. Кроме этого, использование термина «вычисления» при игнорировании алгоритмических и вычислительных аспектов трудно признать состоятельным. И дело не в том, что это предмет другой книги — читателю полезно понимать, как будут взаимодействовать его корпоративные приложения с программным обеспечением рабочих мест и как выстраивать управление вычислениями, которое не будет эффективным, если ограничиться лишь настройками корпоративных приложений. Ну и, разумеется, знание системной модели — а не только бизнес-логики — может в значительной мере влиять на корпоративные приложения.

Мартин Фаулер (при участии Дейвида Райса, Мэттью Фоммела, Эдварда Хайета, Роберта Ми и Рэнди Стаффорда). Архитектура корпоративных программных приложений . М.: «Вильямс», 2004. - 544 с.: ил.