и сложность отладки, трудночитаемость исходных текстов, особенно заметная при коллективной разработке. Некоторые компании выпустили новые средства программирования на C++, решающие эти проблемы (см. "С++ проникает в корпоративные информационные системы", CW-Россия #17, 1995, стр. 18). Корпорация IBM тоже не осталась в стороне и, опираясь на уже апробированные на языке Smalltalk средства визуального программирования, предложила свое решение.
В основе разработки приложений при помощи VisualAge C++ V3.0 лежит принцип построения из частей. Проект собирается из произвольного числа модулей, каждый из которых либо может быть заново создан, либо получен от независимого поставщика, либо заимствован из поставляемой с VisualAge C++ библиотеки. К последним относится, например, класс для доступа к СУБД DB2. Чтобы создать глобальную библиотеку классов для VisualAge C++, IBM объявила специальную программу Object Connection, призванную объединить независимых поставщиков всего мира.
VisualAge С++ - это часть семейства С++ продуктов фирмы IBM, предоставляющая совместимый набор средств и библиотек классов на нескольких платформах. Сейчас это различные версии OS/2, AIX, Solaris, MVS; в будущем список поддерживаемых платформ пополнится за счет OS/400, NT, Windows 95, Power Macintosh, OS/2 для PowerPC.
При этом переносимой объектной библиотекой должна стать Open Class Library, включающая классы пользовательского интерфейса, коллекции и классы поддержки приложений.
Классы пользовательского интерфейса обеспечивают всестороннюю поддержку при программировании графического интерфейса пользователя для ОС OS/2, AIX и Solaris, что облегчает кодирование графических приложений и дает возможность для написания переносимого кода пользовательского интерфейса без обращения к низкоуровневым системным API.
Коллекции - полный набор абстрактных типов данных, таких как множества, последовательности, очереди и т.п. с совместимым интерфейсом и возможностью выбора варианта реализации, обеспечивающего в определенных условиях оптимальную производительность. Наконец, классы поддержки приложений предоставляют различные абстракции, необходимые при создании приложений общего назначения на С++ (манипуляция со строками, датой, временем, обработчики ошибок, трассировщики).
IBM VisualAge C++ продолжает традиции IBM C Set++ и VisualAge Smalltalk. С помощью VisualAge C++ разработка приложения может происходить путем сборки и соединения повторно используемых компонентов, называемых частями. Части могут быть визуальными и невизуальными. Визуальные части являются строительными блоками для пользовательского интерфейса. Невизуальные части представляют логику приложения; их наличие выгодно отличает Visual Builder из числа обычных генераторов кода, которые не позволяют повысить продуктивность разработки неинтерфейсного кода.
VisualAge C++ поставляется с большим набором готовых и отлаженных частей от IBM. Разработчики могут создавать новые части, добавляя функциональность к уже существующим частям; модифицируя существующие классы С++ и превращая их в части; наконец, создавая части заново средствами Visual Builder.
Кроме того, Data Access Builder визуально отображает данные из таблиц реляционных СУБД, например DB2/2, в объекты. Части, сгенерированные Data Access Builder, могут быть добавлены в палитру частей VisualAge С++ для многократного использования в приложениях, нуждающихся в доступе к базе данных. Для создания таких объектов разработчику нет необходимости знать ни С++, ни SQL.
Visual Builder и Data Access Builder генерируют код С++, который затем компилируется. В отличие от VisualAge Smalltalk, здесь нет интерпретируемого промежуточного кода, что дает существенный выигрыш не только в производительности, но и в использовании оперативной памяти, так как исключает необходимость в тяжеловесной run-time поддержке. (За это, правда, приходится расплачиваться преимуществами интерпретации, например быстротой отладки.) Мощность средств визуального программирования дополняется значительно возросшей функциональностью традиционных средств разработки на С++.
Компиляторы C и С++ в VisualAge С++ генерируют высокооптимизированный 32-разрядный код, в частности, благодаря появлению "интеллектуальной сборки" объектных модулей ("smart linking"), при которой удаляется неиспользованный код из исполнимого модуля. Использование предкомпилируемых заголовков существенно сокращает время перекомпиляции. Новый менеджер динамической памяти позволяет обнаруживать "утечки" и нарушения структуры памяти.
По сравнению с предыдущими версиями IBM CSet++ значительно упростилось использование System Object Model (SOM объектов). Напомним, что SOM - это объектная технология IBM, реализующая спецификацию CORBA, которая позволяет достичь двоичной совместимости библиотек классов и создавать распределенные приложения, в том числе и на различных платформах.
Интерфейс SOM-объектов описывается на специальном языке Interface Definition Language (IDL), а реализация выполняется на одном из языков высокого уровня. При этом одну двоичную библиотеку классов можно использовать при разработке на совершенно различных языках программирования, включая и традиционные процедурные.
Визуальное создание SOM объектов так же возможно, когда сгенерированный код компилируется со специальной опцией непосредственной поддержки SOM - Direct-to-SOM (DTS). При этом компилятор способен создавать соответствующее описание интерфейса объекта на IDL и не требует от программиста знания этого языка. После создания класса с использованием Data Access Builder его описание можно сгенерировать на С++, либо на IDL.
В VisualAge С++ значительно переработаны средства анализа и отладки исходного кода. Performance Analiser позволяет выявить узкие места производительности, взаимных блокировок и "зависаний", тонкости взаимодействия различных потоков управления.
Browser - это средство для быстрого и удобного анализа больших и сложных наборов взаимосвязанных классов, организованных в библиотеки. Иерархии наследования или файловые включения изображаются графически, имеют удобные средства навигации в стиле OS/2 Workplace Shell и не требуют сложных интерфейсов типа фильтров и SQL-подобных механизмов запроса. Встроенная возможность Quick Browser устраняет необходимость в предварительной компиляции.
Среди дополнительных возможностей отладчика следует отметить трассировку кода шаблонов, перегруженных функций, включаемых файлов, анализ очереди сообщений, характеристик и связи окон графической подсистемы OS/2. Автоматический контроль состояния динамической памяти дополняет соответствующие возможности компилятора.
Среда разработки пополнилась новым языково-чувствительным настраиваемым редактором OS/2 Live Parsing Editor (LPEX). Очень удобны режимы просмотра логики управления, описаний функций.
Центральное звено VisualAge С++, формирующее интегрированную среду разработки из отдельных компонентов - WorkFrame/2. В отличие от большинства интегрированных средств разработки, WorkFrame позволяет разработчикам использовать те средства, которые им больше всего нравятся - без снижения скорости и удобства полностью интегрированных средств. Когда средства, предоставляемые VisualAge С++ используются совместно в рамках проекта, они полностью интегрированы друг в друга. Из редактора можно произвести компиляцию, получить сообщения об ошибках и исправлять их. Из отладчика и Browser можно вызвать редактор и оказаться в нужной строке.
VisualAge С++ может быть применен для разработки крупных проектов. Благодаря новым для С++ средствам визуального программирования, интегрированным средствам доступа к базам данных его популярность при реализации корпоративных проектов может существенно возрасти.
Кирилл Лисовский - зав. лабораторией информатики АО "Курс", Виктор Садовский - инженер-программист. С ними можно связаться по электронной почте: soft@kurs.msk.su.