Бертран Мейер
Объектно-ориентированное конструирование программных систем
М.: Издательско-торговый дом «Русская Редакция», «Интернет-университет информационных технологий», 2005. 1232 с.: ил.

Следует сразу же покаяться: заглавие рецензии заимствовано у профессора В.А. Биллига, научного редактора и переводчика рассматриваемой книги.

Объектно-ориентированному программированию, или ООП, более трех десятков лет, и литературы по этому предмету много, но книга Бертрана Мейера, названная в оригинале Object-oriented Software Construction (в переводе «Объектно-ориентированное конструирование программных систем»), посвящена собственно конструированию программных систем на основе ООП и предназначена программистам-практикам. Ее автор весьма популярен в мире программирования. В известном Цюрихском политехникуме (теперь Eidgenossische Technishe Hochschule) он заведует кафедрой, унаследованной им после Никлауса Вирта. Стремление Б. Мейера предложить вниманию читателей книгу именно по конструированию программных систем, надо полагать (и это он неоднократно подтверждал в своих выступлениях во время пребывания в России), связано с тем, что распространившийся в последнее десятилетие бизнес-подход к программированию требует от исполнителей при создании больших и сложных систем ПО высокого качества работы. Поэтому рассматриваемый Б. Мейером в книге контрактный подход к программированию предлагается практикам как лучше других гарантирующий разработку качественного продукта. Как автор указывает во введении, он описывает читателям путь к анализу, проектированию и реализации ПО. При этом представление объектно-ориентированного метода (далее ОО-метода) в ней ведется с позиций инженерии программ — рассмотрения методов, средств и технических приемов создания высококачественного программного продукта в условиях его производства, к чему и сведен жизненный цикл программ. Сущность объектной технологии автор видит в сочетании четырех идей: метода структурирования, дисциплины надежности, принципов эпистемологии (порождения понятий) и техники классификации.

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

Дисциплина надежности — подход к построению системы ПО на основе взаимодействия компонентов исключительно по предписанным контрактам (формальным свойствам операций над объектами, включенными в класс).

Принципы эпистемологии связаны с описанием самих классов, которые базируются на теории абстрактных типов данных (АТД).

Техника классификации опирается на то, что ОО-метод использует дисциплину классификации, называемую наследованием.

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

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

Книга является переводом второго издания, вышедшего в 1997 г. девять лет спустя после первого (в 1988 г.), поэтому в ней уже уделено внимание таким технологическим проблемам ПО, как параллельность, распределенность, клиент-сервер и Интернет.

В первой части издания содержится введение и обзор метода, а также исследуется проблема качества программного продукта и даются основные технические характеристики ОО-подхода. Надо согласиться с Б. Мейером, что данную часть вполне можно рассматривать как самостоятельную книгу для начинающих изучать ОО-подход.

Пути в объектное ориентирование посвящена вторая часть, в которой излагаются методологические вопросы, ведущие к таким понятиям, как модульность ПО, а заканчивается она изложением АТД — математической основы объектной технологии.

Техническим ядром работы, по определению ее автора, является третья часть, в которой последовательно вводятся понятия, составляющие суть метода: классы, объекты и связанная модель времени исполнения, — вытекающие из управления памятью, определяющие универсальность и типизацию, проектирование по контракту и др.

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

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

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

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

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