5.1.2. JAM
Средство разработки приложений JAM (JYACC's Application Manager) -
продукт фирмы JYACC (США). В настоящее время поставляется версия JAM 7 и
готовится к выходу JAM 8.
Основной чертой JAM является его соответствие методологии RAD, поскольку он
позволяет достаточно быстро реализовать цикл разработки приложения,
заключающийся в формировании очередной версии прототипа приложения с учетом
требований, выявленных на предыдущем шаге, и предъявить его пользователю.
Структура и функции
JAM имеет модульную структуру и состоит из следующих компонент:
- Ядро системы;
- JAM/DBi - специализированные модули интерфейса к СУБД (JAM/DBi-Oracle,
JAM/DBi-Informix, JAM/DBi-ODBC и т.д.);
- JAM/RW - модуль генератора отчетов;
- JAM/CASEi - специализированные модули интерфейса к CASE-средствам
(JAM/CASE-TeamWork, JAM/CASE-Innovator и т.д.);
- JAM/TPi - специализированные модули интерфейса к менеджерам транзакций
(например, JAM/TPi-Server TUXEDO и т.д.);
- Jterm - специализированный эмулятор X-терминала.
Ядро системы (собственно, сам JAM) является законченным продуктом и может
самостоятельно использоваться для разработки приложений. Все остальные модули
являются дополнительными и самостоятельно использоваться не могут.
Ядро системы включает в себя следующие основные компоненты:
- редактор экранов. В состав редактора экранов входят: среда разработки
экранов, визуальный репозиторий объектов, собственная СУБД JAM - JDB, менеджер
транзакций, отладчик, редактор стилей;
- редактор меню;
- набор вспомогательных утилит;
- средства изготовления промышленной версии приложения.
При использовании JAM разработка внешнего интерфейса приложения представляет
собой визуальное проектирование и сводится к созданию экранных форм путем
размещения на них интерфейсных конструкций и определению экранных полей
ввода/вывода информации. Проектирование интерфейса в JAM осуществляется с
помощью редактора экранов. Приложения, разработанные в JAM, имеют многооконный
интерфейс. Разработка отдельного экрана заключается в размещении на нем
интерфейсных элементов, возможной (но не обязательной) их группировке и
конкретизации различных их свойств, включающих визуальные характеристики
(позиция, размер, цвет, шрифт и т.п.), поведенческие характеристики
(многообразные фильтры, форматы, защита от ввода и т.п.) и ряд свойств,
ориентированных на работу с БД.
Редактор меню позволяет разрабатывать и отлаживать системы меню.
Реализована возможность построения пиктографических меню (так называемые
toolbar). Назначение каждого конкретного меню тому или иному объекту приложения
осуществляется в редакторе экранов.
В ядро JAM встроена однопользовательская реляционная СУБД JDB. Основным
назначением JDB является прототипирование приложений в тех случаях, когда работа
со штатной СУБД невозможна или нецелесообразна. В JDB реализован необходимый
минимум возможностей реляционных СУБД за исключением индексов, хранимых
процедур, триггеров и представлений (view). С помощью JDB можно построить БД,
идентичную целевой БД (с точностью до отсутствующих в JDB возможностей) и
разработать значительную часть приложения.
Отладчик позволяет проводить комплексную отладку разрабатываемого
приложения. Осуществляется трассировка всех событий, возникающих в процессе
исполнения приложения.
Утилиты JAM включают три группы:
- конверторы файлов экранов JAM в текстовые. JAM сохраняет экраны в виде
двоичных файлов собственного формата. В ряде случаев (например для изготовления
программной документации проекта) необходимо текстовое описание экранов;
- конфигурирование устройств ввода/вывода. JAM и приложения, построенные с его
помощью, не работают непосредственно с устройствами ввода/вывода. Вместо этого
JAM обращается к логическим устройствам ввода/вывода (клавиатура, терминал,
отчет). Отображение логических устройств в физические осуществляется с помощью
средств конфигурирования;
- обслуживание библиотек экранов (традиционные операции с библиотеками).
Одним из дополнительных модулей JAM является генератор отчетов. Компоновка
отчета осуществляется в редакторе экранов JAM. Описание работы отчета
осуществляется с помощью специального языка. Генератор отчетов позволяет
определить данные, выводимые в отчет, группировку выводимой информации,
форматирование вывода и др.
Приложения, разработанные с использованием JAM, не требуют так называемых
исполнительных (run-time) систем и могут быть изготовлены в виде исполняемых
модулей. Для этого разработчик должен иметь компилятор C и редактор связей. Для
изготовления промышленной версии в состав JAM входит файл сборки (makefile),
исходные тексты (на языке C) ряда модулей приложения и необходимые библиотеки.
JAM содержит встроенный язык программирования JPL (JAM Procedural Language),
с помощью которого в случае необходимости можно написать модули, реализующие
специфические действия. Данный язык является интерпретируемым, что упрощает
отладку. Существует возможность обмена информацией между средой визуально
построенного приложения и такими модулями. Кроме того, в JAM реализована
возможность подключения внешних модулей, написанных на каком-либо языке,
совместимым по вызовам функций с языком C.
С точки зрения реализации логики приложения JAM является
событийно-ориентированной системой. В JAM определен набор событий, включающий
открытие и закрытие окон, нажатие клавиши клавиатуры, срабатывание системного
таймера, получение и передача управления каждым элементом экрана. Разработчик
реализует логику приложения путем определения обработчика каждого события.
Например, обработчик события "нажатие кнопки на экране" (мышью или с
помощью клавиатуры) может открыть следующее экранное окно. Обработчиками событий
в JAM могут быть как встроенные функции JAM, так и функции, написанные
разработчиком на C или JPL. Набор встроенных функций включает в себя более 200
функций различного назначения. Встроенные функции доступны для вызовов из
функций, написанных как на JPL, так и на C.
Промышленная версия приложения, разработанного с помощью JAM, включает в себя
следующие компоненты:
- исполняемый модуль интерпретатора приложения. В этот модуль могут быть
встроены функции, написанные разработчиками на языках 3-го поколения;
- экраны, составляющие само приложение (могут поставляться в виде отдельных
файлов, в составе библиотек экранов или же быть встроены в тело интерпретатора);
- внешние JPL-модули. Могут поставляться в виде текстовых файлов или в
прекомпилированном виде, причем прекомпилированные внешние JPL-модули могут быть
как в виде отдельных файлов, так и в составе библиотек экранов;
- файлы конфигурации приложения - файлы конфигурации клавиатуры и терминала,
файл системных сообщений, файл общей конфигурации.
Взаимодействие с другими средствами
Непосредственное взаимодействие с СУБД реализуют модули JAM/DBi (Data Base
interface). Способы реализации взаимодействия в JAM разделяются на два класса:
ручные и автоматические. При ручном способе разработчик приложения
самостоятельно пишет запросы на SQL, в которых как источниками, так и адресатами
приема результатов выполнения запроса могут быть как интерфейсные элементы
визуально спроектированного внешнего уровня, так и внутренние, невидимые для
конечного пользователя переменные. Автоматический режим, реализуемый менеджером
транзакций JAM, осуществим для типовых и наиболее распространенных видов
операций с БД, так называемых QBE (Query By Example - запросы по образцу), с
учетом достаточно сложных взаимосвязей между таблицами БД и автоматическим
управлением атрибутами экранных полей ввода/вывода в зависимости от вида
транзакции (чтение, запись и т.д.), в которой участвует сгенерированный запрос.
JAM позволяет строить приложения для работы более чем с 20 СУБД: ORACLE,
Informix, Sybase, Ingres, InterBase, NetWare SQL Server, Rdb, DB2,
ODBC-совместимые СУБД и др.
Отличительной чертой JAM является высокий уровень переносимости приложений
между различными платформами (MS DOS/MS Windows, SunOS, Solaris (i80x86, SPARC),
HP-UX, AIX, VMS/Open VMS и др.). Может потребоваться лишь
"перерисовать" статические текстовые поля на экранах с русским текстом
при переносе между средами DOS-Windows-UNIX. Кроме того, переносимость
облегчается тем, что в JAM приложения разрабатываются для виртуальных устройств
ввода/вывода, а не для физических. Таким образом при переносе приложения с
платформы на платформу, как правило, требуется лишь определить соответствие
между физическими устройствами ввода/вывода и их логическими представлениями для
приложения.
Использование SQL в качестве средства взаимодействия с СУБД также создает
предпосылки для обеспечения переносимости между СУБД. При условии переноса
структуры самой БД в ряде случаев приложения могут не требовать никакой
модификации, за исключением инициализации сеанса работы. Такая ситуация может
сложиться в том случае, если в приложении не использовались специфические для
той или иной СУБД расширения SQL.
При росте нагрузки на систему и сложности решаемых задач (распределенность и
гетерогенность используемых ресурсов, количество одновременно подключенных
пользователей, сложность логики приложения) применяется трехзвенная модель
архитектуры "клиент-сервер" с использованием менеджеров транзакций.
Компоненты JAM/TPi-Client и JAM/TPi-Server позволяют достаточно просто перейти
на трехзвенную модель. При этом ключевую роль играет модуль JAM/TPi-Server, так
как основная трудность внедрения трехзвенной модели заключается в реализации
логики приложения в сервисах менеджеров транзакций.
Интерфейс JAM/CASE подобен интерфейсу к СУБД и позволяет осуществить
обмен информацией между репозиторием объектов JAM и репозиторием CASE-средства
аналогично тому, как структура БД импортируется в репозиторий JAM
непосредственно из БД. Отличие заключается в том, что в случае интерфейса к CASE
этот обмен является двунаправленным. Кроме модулей JAM/CASEi, существует также
модуль JAM/CASEi Developer's Kit. С помощью этого модуля можно самостоятельно
разработать интерфейс (т.е. специализированный модуль JAM/CASEi) для конкретного
CASE-средства, если готового модуля JAM/CASEi для него не существует.
Мост (интерфейс) Silverrun-RDM <-> JAM реализует взаимодействие между
CASE-средством Silverrun и JAM (перенос схемы базы данных и экранных форм
приложения между CASE-средством Silverrun-RDM и JAM версии 7.0). Данный
программный продукт имеет 2 режима работы:
- прямой режим (Silverrun-RDM->JAM) предназначен для создания объектов
CASE-словаря и элементов репозитория JAM на основе представления схем в
Silverrun-RDM. В этом режиме мост позволяет, исходя из представления моделей
данных интерфейса в Silverrun-RDM, производить генерацию экранов и элементов
репозитория JAM. Мост преобразует таблицы и отношения реляционных схем RDM в
последовательность объектов JAM соответствующих типов. Методика построения
моделей данных интерфейса в Silverrun-RDM предполагает применение механизма
подсхем для прототипирования экранов приложения. По описанию каждой из подсхем
RDM мост генерирует экранную форму JAM;
- обратный режим (JAM->Silverrun-RDM) предназначен для переноса модификаций
объектов CASE-словаря в реляционную модель Silverrun-RDM.
Режим реинжиниринга позволяет переносить модификации всех свойств экранов
JAM, импортированных ранее из RDM, в схему Silverrun. На этом этапе для контроля
целостности базы данных не допускаются изменения схемы в виде добавления или
удаления таблиц и полей таблиц.
Групповая работа
Ядро JAM имеет встроенный интерфейс к средствам конфигурационного управления
(PVCS на платформе Windows и SCCS на платформе UNIX). Под управлением этих
систем передаются библиотеки экранов и/или репозитории. При отсутствии таких
систем JAM самостоятельно реализует часть функций поддержки групповой
разработки.
Использование PVCS является
более предпочтительным по сравнению с SCCS, так как позволяет организовать
единый архив модулей проекта для всех платформ. Так как JAM на платформе UNIX не
имеет прямого интерфейса к архивам PVCS, то выборка модулей из архива и возврат
их в архив производятся с использованием PVCS Version Manager. На платформе
MS-Windows JAM имеет встроенный интерфейс к PVCS и действия по выборке/возврату
производятся непосредственно из среды JAM.
Среда функционирования
JAM, как среда разработки, и приложения, построенные с его использованием, не
являются ресурсоемкими системами. Например, на платформе MS-Windows достаточно
иметь 8MB оперативной памяти и 50 MB дискового пространства для среды
разработки. На UNIX-платформах требования к аппаратуре определяются самой
операционной системой.
|