Генератор меню - диалогового взаимодействия
ИНСТРУМЕНТАЛЬНЫЕ ДИАЛОГОВЫЕ ПРОГРАММНЫЕ СРЕДСТВА ДЛЯ СОЗДАНИЯ ИНФОРМАЦИОННО-РАСЧЕТНЫХ ПРИЛОЖЕНИЙ.
В статье предлагается программный инструментарий для разработки так называемых информационно-расчетных приложений, ориентированных на автоматизацию решения задач компьютерной бухгалтерии, делопроизводства, банковской деятельности, статистики, информационного поиска и т.п. Программный инструментарий включает в себя шаблоны интерфейса, формульный интерпретатор, генераторы экранных форм и меню- диалога.
Ключевые слова:инструментальные средства, диалоговые системы, технология программирования, информационно-расчетные задачи
Введение.
Одной из характерных особенностей развития средств проектирования и разработки программных комплексов на современном этапе является появление разнообразных эффективно используемых средств автоматизации создания программных приложений. Среди них можно выделить работы по созданию CASE технологий [2], паттернов проектирования [3], и работы по объектно-ориентированным средствам описания моделей программных систем [4,5]. Большая часть этих работ имеет универсальную направленность и как правило не учитывает или недостаточно учитывает специфику предметной области, приводя к
использованию громоздких и неадекватных инструментальными средств. С другой стороны слишком узкая специализация инструментальных средств находит в большинстве случаев одноразовое применение. Следовательно более целесообразным является использование подходов, предусматривающих гибкое сочетание универсальности со специализацией на основе выбора классов, объединяющих множество подобных специализированных задач, с последующим созданием специализированной интегрированной среды разработки соответствующих приложений.
В предлагаемой статье рассматривается один из таких подходов, ориентированный на создание специализированных инструментальных средств, обеспечивающих автоматизацию проектирования и разработки
так называемых информационно-расчетных задач. К информационно –
- расчетным задачам относятся задачи компьютерной бухгалтерии, банковской деятельности, статистики, информационного поиска и т.п. Основной особенностью упомянутого класса задач является относительно простые структуры данных, адекватно представляемые аппаратом реляционной алгебры.
Специализированная интегрированная среда разработки.
Понятие интегрированной среды разработки определяется как совокупность средств и методов, предназначенных для автоматизации процессов проектирования и разработки программных приложений. Понятие интегрированной среды, появившееся еще в процедурных системах программирования, впоследствии оказалось очень важным и неотъемлемым атрибутом технологии объектно-ориентированного программирования. Интегрированная среда разработки традиционно включает в себя средства описания и реализации многоуровневых моделей программных систем, различные библиотеки классов, инструментальные средства программирования и генераторы программ. В этом разделе предлагается подход к конструированию специализированной интегрированной среды разработки для информационно-расчетных приложений. В качестве основных компонент упомянутой среды разработки рассматриваются формульный интерпретатор, генераторы экранных форм и меню- диалога, а также специализированная библиотека классов. Реализация всех этих компонент выполнена на основе СУБД Visual FoxPro [1,6] и прошла практическую апробацию на серии коммерческих приложений по автоматизации задач бухгалтерского учета.
Формульный интерпретатор.
Характерной особенностью большинства информационно-расчетных задач является довольно частое изменение методик расчета (например, изменение налоговых ставок, индексация заработной платы, изменение статистических показателей и т.п.). В связи с этим возникает необходимость параметризации формул расчета путем их отделения от программной части, обеспечивающей инвариантность программ по отношению к упомянутым изменениям. Таким образом, при изменении методик расчета достаточно только изменения формул расчета, представляющих параметрическую среду для так называемого формульного интерпретатора. Реализация формульного интерпретатора в СУБД Visual FoxPro основывается на представлении множества формул F в виде таблицы, структура которой определяется кортежем (списком полей): < P_ORDER(N,5), P_COND(С,60) , P_OBJ(C,10), P_FORM(C,60) , P_COMM(C,80) > , где P_ORDER -порядковый номер формулы, P_COND - логическое выражение, определяющее условие применимости формулы, P_OBJ -наименование объекта присваивания (левая часть формулы - имя поля или имя локальной переменной), P_FORM - выражение, определяющее правую часть формулы, P_COMM- комментарий . Предлагаемая ниже программная конструкция реализует алгоритм формульного интерпретатора (реализация представлена с использованием языка Visual FoxPro ).
select T
go top
DO WHILE !eof()
select F
go top
DO WHILE !eof()
vcond=alltrim(P_COND)
vobj=alltrim(P_OBJ)
vform=alltrim(P_FORM)
select T
IF &vcond && Проверка условия применимости формулы
IF UPPER(substr(vobj,1,1))='X'
&vobj=&vform && Если объект-переменная
ELSE
replace &vobj with &vform && Если объект-поле памяти
ENDIF
ENDIF
select F
skip
ENDDO
select T
skip
ENDDO
Приведенная выше программа построена с учетом следующих особенностей:
- вместо множества таблиц в качестве объекта интерпретации
в целях простоты описания алгоритма выбрана только одна таблица в предположении, что выбор двух или более интерпретируемых таблиц не приведет к существенному изменению алгоритма интерпретации;
- операция присваивания результата вычисления формульного
выражения реализуется по разному в зависимости от того, что из себя представляет объект присваивания (переменную или поле таблицы), поэтому в приведенной выше программе идентификаторы, начинающиеся с буквы x ( x1, x2, и т.п.) рассматриваются как переменные, а все остальные - как имена полей интерпретируемой таблицы;
- выполнение программы предусматривает предварительную упорядоченность таблицы формул F по полю P_ORDER.
Генератор экранных форм.
Основой создания генератора экранных форм является спецификация
экранной формы, представляющая из себя множество спецификаций структур таблиц, связанных с соответствующей экранной формой. Спецификация экранной формы определяется как SPEC = {ST1, ST2,…, STn},
где множество T1,T2,…, Tn составлено из всех таблиц, связанных с соответствующей экранной формой, а ST – это спецификация структуры таблицы T. В СУБД Visual FoxPro спецификация структуры таблицы определяется в виде таблицы со следующей структурой:
Field_name(C,10) - имя поля ;
Field_type (C,1) - тип поля ;
Field_len (N,3) -длина поля ;
Field_dec (N,3) -количество цифр после десятичной
точки (если поле имеет тип NUMERIC)
Field_recv (C,80) - имя реквизита
Field_dom (C,80) - область определения поля
Суть действия генератора экранных форм сводится к автоматической модификации таблиц при изменении соответствующих спецификаций структур таблиц, а также к адекватному изменению структур соответствующих экранных форм.
Генератор меню - диалогового взаимодействия.
Генератор меню – диалога позволяет автоматизировать создание различных меню - диалоговых приложений на основе сценария меню – диалога. Сценарий меню – диалога представляет из себя множество записей S={s1, s2, …,sn}. Каждая запись si = < t, l1, l2,…, lk, m1, m2,…, mk > ,(i=1..n), где t – текст меню – диалога, li (i=1..k) – номер записи для меню, отображаемого после выбора i-ого элемента меню, mi (i=1..k) – ссылка на модуль(метод), запускаемый после выбора i-ого элемента меню. В СУБД Visual FoxPro сценарий меню-диалога представляется в виде таблицы со следующей структурой:
TMENU (MEMO) – текст меню;
Link1(N,5),Link2(N,5),Link3(N,5), Link4(N,5),Link5(N,5), Link6(N,5),
Link7(N,5),Link8(N,5),Link9(N,5),Link10(N,5) – номера записей меню, отображаемых после выбора соответствующего элемента меню;
Meth1(MEMO),Meth2(MEMO),Meth3(MEMO),Meth4(MEMO),Meth5(MEMO), Meth6(MEMO),Meth7(MEMO),Meth8(MEMO), Meth9(MEMO), Meth10(MEMO) – ссылки на модули, запускаемые после выбора соответствующего элемента меню.
В данной реализации размер меню ограничен 10-ю элементами. Для эффективного управления сеансом меню – диалога реализованы следующие функции:
stop - функция для завершения сеанса меню-диалога;
reset - функция, позволяющие возвратиться к начальному меню;
back – функция для возврата к предыдущим шагам выполнения
процесса меню- диалога