PCWEEK (Russian Edition), #10, 1999, pp. 17-18

Разработка приложений
IBM® VisualAgeTM for Smalltalk для разработки корпоративного ПО

Александр Иванов, <ivanov@smalltalk.msk.ru>

В начале 90-х годов IBM® сделала ставку на язык Смолток как на главное средство разработки корпоративных приложений, выпустив пакет VisualAge for Smalltalk (VA/St). Коммерческий успех этого продукта подтвердил правильность сделанного корпорацией выбора: на VA/St было выполнено несколько известных проектов -- таких как информационная система зимней Олимпиады в Нагано и глобальный пентагоновский проект JWARS. Недавно IBM® выпустила версию 4.5 пакета, по составу и набору пользовательских услуг представляющую собой одно из наиболее мощных средств разработки клиент-серверных приложений.

VisualAge for Smalltalk -- чисто объектно-ориентированная среда, в которой основное внимание уделяется проектированию и сборке готовых программ, а ручное кодирование применяется лишь для "доводки" приложения. Она позволяет создавать эффективные, переносимые, масштабируемые, легко сопровождаемые программные продукты, интегрированные с современными инфраструктурами (Web, Intranet, Java, ActiveX, OLE, SOM/DSOM, OCX) и унаследованными системами (программами на Си и Коболе, брокерами транзакций CICS, IMS, реляционными СУБД). Встроенные в VA/St средства коллективной работы ENVY/Developer существенно облегчают корпоративную разработку. Широкому распространению среды способствует также абсолютная переносимость как ее самой, так и создаваемых приложений между различными платформами -- MS Windows 95, 98 и NT, IBM OS/2 Warp, OS/390, OS/400 и AIX, Sun SPARC Solaris, HP/UX.

Принцип визуального программирования

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

В начале работы вы сразу попадаете в визуальный редактор композиции, где из палитры готовых деталей выбираете те, которые нужны для вашего приложения, и располагаете их на экране так, как должен выглядеть конечный продукт. Затем, в соответствии с логикой приложения, связываете детали между собой линиями, нажимаете кнопку Test, и приложение немедленно начинает выполняться. Таким образом можно быстро создать прототип, показать его заказчику и обсудить с ним дальнейшие действия. Если что-то нужно поменять, достаточно возвратиться в визуальный редактор композиции, внести изменения и снова нажать кнопку Test. Цикл жизни программы сокращен до минимума.

Простота применения VA/St обусловлена объектным подходом, при котором программа состоит из классов и объектов (экземпляров этих классов), а ее выполнение задается посылками сообщений между ними. Ничего другого в объектной программе нет. В VA/St палитра деталей -- это библиотека классов; помещенные в окно приложения детали -- экземпляры этих классов; связующие линии -- сообщения, посылаемые от одних объектов к другим. Быстрый запуск приложения объясняется принципом реализации Смолтока: все объекты хранятся в виде заранее скомпилированных байт-кодов, которые при запуске интерпретируются виртуальной машиной.

Виды связей между деталями

Детали могут посылать и принимать различные сообщения, поэтому при установке конкретной связи нужно уточнять, какие именно сообщения к ней относятся. В VA/St деталь как объект имеет внешний интерфейс, определяющий ее свойства и поведение и состоящий из следующих элементов:

Связи определяют способ взаимодействия деталей. Можно устанавливать различные виды связей. Например, в связи атрибут--атрибут изменение атрибута одной детали приводит к такому же изменению атрибута другой детали, а в связи событие--действие событие в одной детали вызывает действие в другой. Две детали можно связать двумя и более линиями, соответствующими разным связям. Классификация элементов интерфейса и связей, выделяемая на экране разным цветом линий, делает разработку более наглядной, помогая ориентироваться в направлении информационных потоков между деталями.

Построение приложения

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

Для хранения списка выберем деталь Ordered Collection (упорядоченный набор), которая позволяет добавлять и удалять объекты любого типа, и дадим ей на экране имя Список дел. Логику взаимодействия деталей можно описать следующим образом: "При нажатии кнопки Добавить текст из поля ввода добавляется в набор и его содержимое отображается в списке; при нажатии кнопки Удалить выделенный элемент списка удаляется из набора". В соответствии с этим установим связи между деталями.

Свяжем событие clicked (нажата) кнопки Добавить с действием add: (добавить) детали Ordered Collection. Для этого вызовем щелчком мыши меню кнопки, затем пункт меню connect (связать). Появится интерфейс детали-кнопки в виде списка возможных сообщений. Выберем событиеclicked и переведем мышь на деталь Ordered Collection. Выберем выберем на ней пункт менюconnect и затем действие add:. На экране от кнопки к детали протянется зеленая соединительная линия-стрелка, обозначающая связь событие--действие. Линия будет штриховая, говорящая о том, что связь не завершена: не указан параметр для вызываемого действия. Свяжем атрибут object поля ввода с атрибутом anObject незавершенной связи кнопка-набор (линия связи -- тоже объект со своим интерфейсом!). Линия приобретет сплошной вид, а от поля ввода в нее будет входить фиолетовая линия, обозначающая параметр.

Для того, чтобы содержимое набора отображалось в списке, соединим атрибуты self (сам) набора и items (элементы) списка. С кнопкой Удалить поступим так же, как с кнопкой Добавить, только вызываемым действием набора будет remove: (удалить), а его параметром -- атрибут selectedItem (выбранный элемент) cписка. Приложение примет вид, как на рис. 1, а результат его запуска -- на рис. 2.


Рис. 1. Разработка приложения Записная книжка



Рис. 2. Пример работы приложения Записная книжка


Итак, мы создали законченное приложение, не написав ни единой строки программы, а всего лишь визуально задав логику взаимодействия его компонентов! Теперь можно запустить процедуру генерации готового приложения, которая создаст оптимизированный по памяти, независимый от платформы выполняемый файл.

Если список дел необходимо хранить в какой-либо базе данных, задача несколько усложняется, но подход к созданию приложения остается прежним. Вместо Ordered Collection нужно взять деталь Multi-row Query (запрос таблицы). Последняя обладает более широким набором свойств, среди которых наиболее интересны действие executeQuery (выполнить запрос) и атрибут resultTable (результирующая таблица). Действие выполняет заданное выражение на языке SQL, а деталь-таблица позволяет работать с полученным результатом. Внешне программа изменится несущественно.

Как правило, имеющихся деталей для создания конечного приложения бывает достаточно. Если же готовых деталей не хватает или вас не устраивает их производительность, вы переходите на уровень языка Смолток. Не знаете Смолтока? Не проблема. Изучить его и программировать на нем гораздо проще, чем на Си++ или на Java, а по возможностям он им не уступает.

Язык Смолток

Смолток существует уже более 25 лет, причем с 1980 года он практически не менялся, а с 1998-го имеет статус стандарта ANSI. Идеи, заложенные в его основу, оказали фундаментальное влияние на развитие большинства объектно-ориентированных языков и систем.

Взгляните на следующий список средств:

Очень похоже на характеристики современной среды разработки Java, не так ли? Но все это было сделано в системе Objectworks\Smalltalk еще в 1985 году.

Смолток -- классический объектно-ориентированный язык, программирование на котором ведется исключительно в терминах объектов. Такие понятия, как длина целого типа, точность плавающего типа, указатель, запрос и освобождение памяти, оператор перехода, в языке отсуствуют. Программисты, привыкшие выделять и освобождать память под переменные и объекты, убившие массу времени на поиск причин ошибок типа "нарушение защиты памяти", вероятно, оценят тот факт, что при выполнении программы на Смолтоке может возникать ошибка только одного типа -- "объект класса X не понял сообщения Y", а отладка ведется на исходном языке. Про память можно вообще забыть -- система распределяет ее автоматически.

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

Смолток очень прост в изучении. В нем всего пять ключевых слов и три оператора: посылка сообщения, возврат результата и присваивание. Программа на Смолтоке похожа на текст на английском языке и потому легко читается. Мощь языка проявляется в известных преимуществах объекного подхода (инкапсуляции, наследовании, полиморфизме) и в развитой иерархии из 2500 классов, ставшей стандартом де-факто для построения библиотек классов других языков.

Создание новой детали

Создавая новую деталь на Смолтоке, вы сначала с помощью редактора интерфейса определяете ее атрибуты, события и действия, а затем в редакторе сценариев реализуете их в виде программ. С учетом этой возможности VA/St предлагает два дополнительных вида связей между деталями: атрибут--программа, когда атрибут вычисляется в программе, и событие--программа, когда программа выполняется в ответ на какое-то событие.

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

Средства анализа и проектирования

В состав версии 4.5 VA/St включен ряд CASE-средств, направленных на поддержку полного цикла жизни программного продукта:

Заключение

VisualAge for Smalltalk обладает достоинствами, выделяющими его среди других средств разработки клиент-серверных приложений. Он позволяет наглядно отображать связи между компонентами в соответствии с логикой работы и направлением информационных потоков приложения. В нем имеется исчерпывающий набор функциональных средств для разработки и интеграции готового продукта в современные и унаследованные инфраструктуры. Все это позволяет решать задачи путем полного визуального построения приложения без ручного программирования. Если же необходимо создать новые компоненты, то их программирование ведется на чисто объектно-ориентированном языке, органично встроенном в общий процесс разработки.

Ознакомительную копию версии 4.5 VisualAge for Smalltalk можно бесплатно получить в фирме СИКОР <catia@dol.ru>. Дополнительную информацию об этом продукте и языке Смолток см. на узлах российского отделения IBM (http://www.ibm.ru/) и "Смолток в России" (http://www.math.rsu.ru/smalltalk/).

К автору можно обратиться по адресу: .