JAM7 - инструмент разработки переносимых приложений архитектуры "клиент-сервер"

Ю.Петров, Компания Аргуссофт


Инструментарий разработки приложений JAM разработан и распространяется фирмой JYACC (США) и название продукта расшифровывается как JYACC's Application Manager. Фирма JYACC является частной и была создана в 1978 году. С 1978 по 1985 год фирма занималась консалтингом в области информационных технологий. В 1985 году была выпущена первая версия JAM. На сегодняшний день поставляется 7-я версия пакета. Вместе с тем JYACC не прекращает и деятельности в консалтинговой сфере.

Структура JAM

Пакет JAM имеет модульную структуру и состоит из следующих компонент:

Ядро системы

Ядро системы включает в себя следующие основные компоненты:


Общая схема взаимодействия компонент ядра JAM представлена на рис 1.

Рис. 1. Взаимодействие компонент ядра JAM

Редактор Экранов
Визуальное проектирование интерфейса в JAM осуществляется с помощью Редактора Экранов. Приложения, разработанные в JAM, имеют многооконный интерфейс. Окна (экраны), из которых состоит интерфейс приложения, разрабатываются в Редакторе Экранов. Разработка отдельного экрана заключается в размещении на нем интерфейсных элементов, возможной (но не обязательной) их группировке и конкретизации различных их свойств. Объекты имеют достаточно широкий набор свойств, включающий визуальные характеристики (позиция, размер, цвет, шрифт и т.п.), поведенческие характеристики (разнообразные фильтры, форматы, защита от ввода и т.п.) и ряд свойств, ориентированных на работу с БД.
В распоряжении разработчика имеются следующие интерфейсные элементы:

Данный набор элементов вполне соответствует стандарту CUA и является функционально полным для разработки приложений информационных систем.
Некоторые однотипные объекты можно объединять в группы следующих видов:
В графическом Редакторе JAM реализован режим перемещения элементов с помощью мыши (drag and drop) и возможность работы в одном сеансе с несколькими проектируемыми экранами. С помощью нескольких служебных окон Редактора возможно уточнение характеристик элементов (размеры, цвет, позиция и др.).
JAM является событийно-ориентированной системой, т.е. для каждого типа интерфейсных элементов приложения определен набор событий (открытие и закрытие для экранов, работа с фокусом для управляющих элементов и элементов ввода/вывода, событие "проверка" (validation), нажатие клавиш клавиатуры и т.д.). Определение обработчиков этих событий осуществляется в Редакторе и задает логику работы приложения. Обработчиками событий могут быть:
Редактор экранов JAM может работать в одном из трех режимов:
На рис. 2 представлена диаграмма переходов между режимами Редактора Экранов.
Режим приложения Режим редактирования Режим тестирования

Рис. 2. Переходы между режимами Редактора Экранов

Каждый экран, входящий в приложение, сохраняется в виде отдельного файла. Кроме этого, экраны могут сохраняться в виде библиотек экранов. Библиотека экранов представляет собой файл, содержащий хранящиеся экраны и индексную таблицу, ускоряющую поиск необходимых экранов. Одновременно в системе может быть открыто несколько экранных библиотек.

JPL - внутренний процедурный язык программирования JAM

В состав Редактора Экранов входит JPL - процедурный интерпретируемый язык программирования с синтаксисом, похожим на синтаксис C. В JPL доступны следующие возможности:

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

Визуальный Репозиторий Объектов
Реализация принципов объектно-оpиентиpованного программирования осуществлена в JAM следующим образом. Каждый элемент приложения с определенными свойствами и методами (в качестве которых выступают обработчики событий) является объектом. Одной из составных частей ядра JAM является Визуальный Репозиторий Объектов, в котором можно сохранять созданные объекты. Визуальный Репозиторий Объектов является специальным типом библиотеки экранов и соответствующим образом организован. Т.е. Репозиторий состоит из так называемых входов (entries). которые выглядят как экраны с базовыми объектами на них. Текущая установка свойств и методов является базовой. Для использования какого-либо базового объекта достаточно перенести его мышью с входа Репозитория на проектируемый экран. При изменении свойств и/или методов базового объекта эти изменения распространяются на всех потомков данного объекта. Реализован механизм управляемого наследования свойств и методов, при котором можно запретить наследование части или всех свойств/методов. Вся работа с Репозиторием осуществляется в Редакторе.

Поддержка групповой разработки
Ядро JAM имеет встроенный интерфейс к системам управления многоверсионными проектами и групповой разработки (PVCS на платформе Windows и SCCS на платформе UNIX). При этом под управление этих систем передаются библиотеки экранов и/или Репозитории. При отсутствии таких систем JAM самостоятельно реализует часть функций поддержки групповой разработки.

Редактор Меню
Позволяет разрабатывать и отлаживать системы меню. Реализована возможность построения пиктографических меню (так называемые toolbar). Меню могут сохраняться как в отдельных файлах, так и в экранных библиотеках. В одном файле может быть несколько поименованных меню. Назначение каждого конкретного меню тому или иному объекту приложения осуществляется в Редакторе Экранов.

Собственная СУБД JAM - JDB
В ядро JAM встроена однопользовательская реляционная СУБД JDB. Основным назначением JDB является прототипирование приложений в тех случаях, когда работа со штатным сервером БД недоступна или нецелесообразна. В JDB реализован необходимый минимум возможностей реляционных SQL-серверов БД за исключением индексов, внешних слияний таблиц (outer joins), хранимых процедур, триггеров и так называемых view. В результате с помощью JDB можно построить БД, идентичную целевой БД (с точностью до отсутствующих в JDB возможностей) и разработать значительную часть приложения не загружая сеть и сервер. В состав JAM входит утилита интерактивного SQL для JDB.

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

Набор вспомогательных отдельных утилит
Утилиты JAM представляют три группы:


Средства изготовления промышленного релиза приложения
Приложения, разработанные с использованием JAM, не требуют так называемых run-time систем и могут быть изготовлены в виде исполняемых модулей. Для этого разработчик должен иметь компилятор C и редактор связей. Для изготовления промышленного релиза в состав JAM входит файл сборки (makefile), исходные тексты (на языке C) ряда модулей приложения и необходимые библиотеки.

Интерфейс к СУБД - JAM/DBi

JAM ориентирован на работу с реляционными SQL-серверами БД. Средством взаимодействия JAM-приложений с СУБД является SQL. При разработки приложений БД SQL-запросы являются составными частями методов объектов приложения. Модуль JAM/DBi осуществляет корректную передачу SQL запроса соответствующей СУБД и прием и обработку результатов исполнения запроса (включая и коды аварийного завершения при невыполнении запроса). Аргументами запросов (т.е. источниками и приемниками информации) могут выступать объекты JAM (интерфейсные элементы) и переменные JPL. В случае аварийного завершения запроса существует возможность самостоятельной обработки кода аварийного завершения.
На рис. 3 представлена архитектура взаимодействия JAM и СУБД с помощью модулей JAM/DBi.

Рис. 3. Архитектура взаимодействия с СУБД

Кроме написания SQL-запросов непосредственно разработчиком, в JAM существует возможность автоматической генерации SQL-запросов. Эта возможность реализуется Менеджером Транзакций JAM. Работа Менеджера Транзакций основана на том, что объекты приложения имеют ряд свойств, характеризующих взаимосвязь объекта приложения с объектом БД и то, как эти объекты участвуют в операциях с БД (SQL-операторы select, insert, update, delete). Экранные интерфейсные элементы (поля ввода/вывода) отображаются в поля таблиц БД. Экранные поля, отображаемые на одну таблицу БД, группируются в группу типа Образ Таблицы (table view). Кроме этого, существуют специальные объекты типа связь (link), описывающие связи между таблицами БД. Эта информация в подавляющем большинстве случаев является достаточной для автоматической генерации SQL запроса для выполнения той или иной операции с БД. Задание этой информации может быть осуществлено или непосредственно разработчиком, или же автоматически при импорте структуры БД (метаданных) в Репозиторий JAM. При этом для каждой таблицы БД в Репозитории JAM создается отдельный вход (entry), в котором создается соответствующий Образ Таблицы (table view) и свойства объектов (т.е. членов группы table view) настраиваются соответствующим образом. Если СУБД, структура БД которой импортируется, поддерживает конструкции "primary / foreign keys", то будут автоматически созданы объекты типа связь (link). Для разработки приложений с использованием Менеджера Транзакций в Редакторе Экранов предусмотрены следующие возможности:

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

Таблица 1>

Основные команды Менеджера Транзакций

Команда Действие
NEW Подготовка к вводу новых записей, в том числе и для нескольких связанных таблиц
VIEW Выбор информации из БД с целью просмотра
SELECT Выбор информации из БД с целью изменения, отличается от команды VIEW установкой блокировок
CONTINUE Повторить предыдущую команду VIEW или SELECT для следующей записи
SAVE Запись сделанных измененной в БД
CLOSE Перевод Менеджера Транзакции в начальное состояние

В табл. 1 приведены основные команды Менеджера Транзакций и их краткое описание.
В результате вместо написания SQL запроса, который может состоять из десятка строк, достаточно вызвать Менеджер Транзакций с соответствующей командой. Например, err = sm_tm_command("SELECT").
Непосредственно работа Менеджера Транзакций определяется Моделью Транзакции. Модель Транзакции - это алгоритм реализации каждой команды Менеджера Транзакции, который определяет все аспекты его работы, например установку блокировок при выполнении команды SELECT (выборка для модификации), генерацию уникального первичного ключа при добавлении новой записи (если сама СУБД не реализует этой возможности) и т.д. Для каждой поддерживаемой СУБД в составе соответствующего JAM/DBi поставляется своя Модель Транзакции. Модель Транзакции поставляется в исходных кодах и опытные разработчики могут таким образом модифицировать поведение Менеджера Транзакции. Каждая Модель Транзакции имеет имя и даже для одной СУБД в одном приложении может быть определено и использовано несколько Моделей Транзакции.
В зависимости от контекста команды, выполняемой Менеджером Транзакций, существует возможность управления поведением экранных объектов. Например, при выполнении команды VIEW (транзакция "только чтение") можно запретить ввод или изменение информации в экранных полях и сделать кнопку "Запись" неактивной. Эта возможность реализуется через механизм стилей JAM. Стиль - это определение свойств для различных контекстов команд. Компонента JAM Редактор Стилей, которая упоминалась выше, позволяет разработчику определять свои стили.
JAM может работать практически со всеми распространенными РСУБД, включая Oracle, Informix, Sybase, Ingres, Rdb, DB2, InterBase, Gupta, Netware SQL Server, ODBC-совместимые БД и др.

Генератор отчетов - JAM/RW

Одним из дополнительных модулей JAM является Генератор Отчетов. Компоновка отчета осуществляется в Редакторе Экранов JAM. Описание работы отчета осуществляется с помощью специального языка.
Генератор отчетов позволяет определить:

Интерфейс к CASE структурного анализа и дизайна - JAM/CASEi

Интерфейс к CASE структурного анализа и дизайна в некотором отношении подобен интерфейсу к СУБД. Одной из основных задач CASE является разработка структуры БД. Информация о структуре БД хранится в репозитории CASE. Модуль JAM/CASEi позволяет осуществить обмен информацией между Визуальным Репозиторием Объектов JAM и репозиторием CASE аналогично тому, как структура БД импортируется в Репозиторий
JAM непосредственно из БД. Отличие заключается в том, что в случае интерфейса к CASE этот обмен является двунаправленным, т.е. информацию из Репозитория JAM можно экспортировать в репозиторий CASE.

Рис. 4. Взаимодействие JAM, CASE и СУБД

На рис. 4 приведена схема взаимодействия JAM и CASE с использованием модуля JAM/CASEi.
Следует отметить, что модуль JAM/CASEi позволяет осуществлять импорт/экспорт не только в раздел ERD репозитория CASE, но и в раздел DFD.
Кроме модуля JAM/CASEi фирма-производитель распространяет модуль JAM/CASEi Developer's Kit. С помощью этого модуля можно самостоятельно разработать интерфейс (т.е. специализированный модуль JAM/CASEi) для конкретного инструмента CASE, если готового модуля JAM/CASEi для данной CASE-системы еще не существует.

Интерфейс к Мониторам Транзакций - JAM/TPi

Модули JAM/TPi используются при разработке приложения трехзвенной модели "клиент-сервер" с применением мониторов транзакций.
Рис. 5 представляет схему реализации трехзвенной архитектуры "клиент-сервер" с использованием JAM, JAM/TPi-Client и JAM/TPi-Server.
При разработке клиентской части трехзвенной модели модуль JAM/TPi-Client позволяет в методах объектов использовать вызовы сервисов монитора транзакций. Наличие модуля JAM/TPi-Client расширяет синтаксис JPL командами, ориентированными на работу с мониторами транзакций.
При разработке сервера приложений модуль JAM/TPi-Server позволяет разрабатывать сервисы монитора транзакций, используя современную 4GL технологию, а не только традиционный для мониторов транзакций 3GL интерфейс.

Рис. 5. Архитектура JAM/TPi

Документация

В состав JAM входит полный комплект документации в электронном виде. При этом используется гипертекстовая система Dyna Text фирмы Electronic Book Technologies. Dyna Text доступна на многих платформах, поддерживаемых пакетом JAM. Печатный вариант документации поставляется за дополнительную плату. Если на какой-либо платформе Dyna Text система недоступна, то печатная документация поставляется бесплатно. Вся документация представлена на английском языке.

Требования к аппаратным ресурсам

JAM как среда разработки и приложения, построенные с его использованием, не являются ресурсоемкими системами. Достаточно сказать, что на платформе MS-Windows достаточно иметь 8MB ОЗУ и 50 MB дискового пространства для среды разработки. На UNIX-платформах требования к аппаратуре нивелируются природой UNIX.

Поддержка локализации

JAM поддерживает 8-битные кодировки символов алфавита. Форматы ввода/вывода даты/времени, валюты, чисел являются настраиваемыми. Системные сообщения вынесены в отдельные файлы и доступны для перевода.

Переносимость приложений, разработанных с помощью JAM

JAM, как среда разработки, доступен на нескольких десятках программно-аппаратных платформ, включая Windows, Windows 95, Windows NT, OS/2, Mac, VMS и практически все распространенные UNIX платформы. На этих же платформах, соответственно, доступны и приложения, построенные с использованием JAM. Переносимость JAM-приложений между платформами практически абсолютная.
Реализация переносимости между типами интерфейсов - алфавитно-цифpовой и графический интерфейсы. JAM-приложения могут исполняться как в алфавитно-цифровом, так и в GUI-режиме практически на всех поддерживаемых платформах, где реализованы оба режима. Из GUI поддерживаются MS-Windows, Presentation Manager, X-Windows, Macintosh. Переносимость между типами интерфейса также практически абсолютная за исключением недоступности векторных шрифтов и графических образов в алфавитно-цифровых режимах.
Переносимость локализованных приложений между различными программно-аппаратными платформами с различными кодировками национального алфавита (например, перенос русскоязычных приложений между Windows и UNIX) может иметь минимально возможную трудоемкость. При максимально активном использовании Репозитория JAM достаточно изменить написание только базовых объектов. В ряде случаев JAM дает возможность избежать и этой работы. Это достигается соответствующим переопределением устройств ввода/вывода (клавиатура и терминал).

Заключение

Решения, предлагаемые пакетом JAM, обеспечивают высокую производительность труда разработчиков

Следует отметить, что эти свойства кроме снижения стоимости разработки приложений существенно снижают стоимость сопровождения и модификации приложений, так как изменения вносятся с минимальной трудоемкостью.
Но основной чертой JAM является соответствие инструмента методологии быстрой разработки приложений RAD (Rapid Application Development). При использовании инкрементального прототипирования малое время реализации замечаний, выявленных на предыдущем этапе разработки, делает JAM подходящим инструментом для методологии RAD.
Неограниченная сложность задач
Сложные программные проекты практически всегда реализуются коллективом разработчиков. Наличие интерфейса к системам SCM (SCCS или PVCS) позволяет держать в общем архиве проекта те его части, которые реализуются с помощью JAM. Для несложных проектов достаточно встроенных SCM-механизмов JAM.
Наличие и архитектура модуля JAM/CASEi (особенно двунаправленный обмен между репозиториями JAM и CASE) позволяет реализовать любую методику проектирования и разработки приложений (подходы проектирования "от модели данных", от "функционирующих документов" или комбинированный подход). В результате достигается высокая гибкость и эффективность методики совокупного применения проектных и инструментальных средств.
Переносимость приложений является стратегическим вопросом для ИС среднего и крупного уровней. Несмотря на подавляющее распространение IBM PC совместимых компьютеров под управлением DOS/Windows в качестве рабочих мест конечных пользователей, очень многие задачи более эффективно решаются при использовании на рабочих местах UNIX-терминалов (алфавитно- цифровых или X). Выбор таких решений диктуется или снижением стоимости рабочего места (в том числе и при реализации удаленного доступа), или соображениями защищенности ИС, или инфраструктурой уже существующей ИС. Доступность JAM на многих программно-аппаратных платформах позволяет эффективно решать задачу переноса приложений между программно- аппаратными платформами, типами интерфейсов и СУБД.
Отсутствие run-time систем для приложений, разработанных с использованием JAM, на всех доступных платформах позволяет максимально возможно снизить стоимость развертывания приложений на рабочих местах. Это особенно важно при разработке крупнотиражных систем.
Таким образом, JAM характеризуется следующими чертами:
При использовании в мелких ИС практически не ограничивает выбор путей дальнейшего развития ИС (платформы, СУБД, архитектуры, методологии проектирования и разработки и т.д.).

[Назад] [Содержание]