3.1 Функции управляющих модулей пакета
С учетом анализа модели предметной области теперь можно назвать управляющими модули, выполняющие действия по изменению состояния МПО, поддержанию и реализации функциональных связей и связей по определению, а также преобразованию самой модели предметной области. Управляющая часть пакета должна обеспечить выполнение четырех основных функций:
1) формирование начального состояния МПО;
2) формирование очередных состояний МПО;
3) управление вызовом и выполнением обрабатывающих модулей;
4) преобразование модели предметной области, если используется динамическая модель.
Первая функция выполняется однократно при запуске пакета, ее часто называют инициализацией пакета. Остальные функции могут выполняться многократно в соответствии с требованиями пользователя. Функции управления различаются объектом управления. Для первой, второй и четвертой функций объектом управления является представление модели предметной области в памяти ЭВМ. Вторая функция распадается на ряд подфункций, к которым относятся:
а) определение модуля, подлежащего выполнению, и проверка его выполнимости;
б) определение последовательности вызовов модулей, ведущей к цели, установленной пользователем;
в) подготовка входных данных (размещение в памяти, формирование списков параметров) для очередного вызываемого модуля;
г) вызов обрабатывающего модуля;
д) анализ и регистрация в МПО результатов вызова обрабатывающего модуля;
е) управление памятью для размещения значений данных.
Не следует рассматривать перечисленные функции как список управляющих модулей пакета. В конкретном ППП отдельные функции могут не потребоваться, а для реализации других функций необходимо будет разработать несколько модулей. Например, если для фиксированного списка входных данных вычисляются все остальные данные, то отпадает необходимость в выполнении функций а) и б). Если все обрабатываемые данные одновременно размещены в основной памяти, то не требуются функции в) и е) и т.д.
Целью каждого применения ППП (сеанса работы с пакетом), предназначенного для решения расчетных задач, является вычисление значений некоторых данных при условии, что значения других данных известны. Для этого нужно привести модель в некоторое исходное состояние
(ввести или указать другим способом значения части данных), а затем выполнить переход в одно из состояний , в которых значения искомых данных будут определены. Управление пакетом со стороны пользователя (внешнее управление) должно обеспечить выполнение описанного процесса.Пользователь формирует задание на выполнение расчетов на входном языке пакета. Это задание может быть весьма различным как по содержанию, так и по форме.
Если ППП используется в режиме диалога, что характерно для большинства современных пакетов, то под входным языком следует понимать средства общения «пользователь–ППП», используемые в процессе диалога.
Входной язык ППП, независимо от конкретной формы представления предложений этого языка, должен обеспечивать передачу управляющим модулям пакета сведений:
· о входных данных, значения которых задаются пользователем:
· о задачах, которые надлежит решить;
· о выходных данных, которые должны быть представлены пользователю в результате решения задачи.
В процессе диалога пользователь должен иметь возможность запрашивать информацию о текущем состоянии пакета и допустимых действиях в этом состоянии.
В современных ППП, ориентированных на пользователей-непрограммистов чаще всего применяются языки табличного типа, командного типа, языки типа меню, а также их гибриды.
В языке табличного типа вводимая пользователем информация представляется в виде одной или нескольких таблиц. Форма таблицы, возможно с заполненными отдельными графами или позициями, выводится на экран, и пользователь должен занести необходимую информацию в клетки таблицы. Такая форма представления информации может оказаться удобной для ввода значений данных. Вариантом табличного подхода является предоставление пользователю списка вопросов, на которые он должен ответить (заполнить предложенную анкету).
В языках командного типа управляющие предложения строятся по типу машинных команд или команд операционной системы, т.е. состоят из кода команды (операции) и операндов. Если количество кодов команд невелико и правила записи операндов достаточно простые, то такой язык может быть удобным для пользователя.
Для упрощения и ускорения работы пользователя часто используют упрощенную форму командного языка, в которой каждая команда задается нажатием одной, двух, трех клавиш на клавиатуре или «горячих» кнопок на панелях инструментов. Это целесообразно, когда работа с пакетом состоит из ограниченного набора действий, выполняемых за доли секунды, а большинство команд не требует явного задания операндов. Типичным примером таких пакетов являются текстовые редакторы.
При входном языке типа меню инициатива диалога полностью принадлежит управляющей программе пакета. Допустимые действия с пакетом разбиваются на отдельные группы по принципу общности выполняемых функций. Запуск пакета приводит к выводу на экран главного меню – списка допустимых действий. Пользователь должен выбрать одну из перечисленных в меню возможностей, вводя ее номер или устанавливая соответствующим образом курсор. При получении ответа пользователя сразу выполняется выбранная операция или предоставляется меню следующего уровня, пункты которого позволяют выполнить дальнейшую детализацию выбранной операции. Совокупность заранее подготовленных меню часто образует древовидную иерархическую структуру. Чтобы избежать тупиковых ситуаций («зависаний пакета»), в меню каждого уровня предусматривается возможность возвращения к меню предыдущего уровня или к главному меню.
В каждый момент времени пользователь работает с одним из возможных наборов пунктов меню. Поэтому можно считать, что каждое меню как список возможных выборов пользователя определяет конкретное состояние процесса управления. Связи между этими состояниями могут быть представлены графом состояний. Для иерархической системы меню, если не учитывать возвраты в предыдущие состояния, этот граф будет «деревом», т.е. графом специального вида, в котором имеется единственный путь из начальной вершины («корень») в любую из конечных вершин («листья»). Собственно управляющие действия выполняются при достижении конечных вершин графа и реализуются вызовом обрабатывающих модулей или обслуживающих модулей для ввода-вывода данных.
Во многих ППП входной язык строится как объединение различных типов языков.
Например, в MS Word сочетание клавиш CTRL+S и кнопка Сохранить на панели инструментов Стандартная соответствует команде Сохранить меню Файл, сочетание клавиш CTRL+A соответствует команде Выделить все меню Правка и т.д.
Три выделенных типа входных языков можно сравнить по объему информации, содержащейся в законченных синтаксических единицах языка. В языке типа меню такой синтаксической единицей будет список пунктов меню. Пользователь выбирает одну из предложенных ему возможностей, т.е. делает один из возможных выборов. В языке командного типа при построении команды пользователь выбирает одну из команд и значения операндов. Если операндами являются имена данных или решаемых задач, число возможных выборов может быть очень большим, хотя и конечным. Для числовых операндов команд количество возможных значений (выбор) зависит от диапазона значений операнда и, по крайней мере, теоретически может быть бесконечным. Следовательно, информационная мощность командного входного языка в общем случае значительно выше, чем языка типа меню.
Чем выше информативность конструкций входного языка, тем более гибкое управление пакетом обеспечивает этот язык, но, с другой стороны, чем ниже информативность входного языка, тем проще его изучать и тем ниже требования к квалификации пользователя.
Отметим также, что при командном входном языке инициатива в управлении принадлежит пользователю, а при использовании меню ведущая роль в диалоге принадлежит пакету.
Но независимо от типа используемого языка на основе анализа синтаксических конструкций этого входного языка должны быть установлены тип (код, номер) и операнды выполняемой операции, с целью вызова соответствующего обслуживающего или обрабатывающего модуля. Иными словами, текст на входном языке пакета должен быть преобразован во внутренний управляющий код, используемый управляющей программой пакета.
3.3 Особенности организации управления ППП с входным языком командного типа
В зависимости от предполагаемого способа применения ППП, в основу внешнего управления может быть положен метод пооператорной интерпретации программы на входном языке или метод компиляции.
В методе интерпретации после ввода очередной команды организуется ее выполнение. Следующая команда вводится после завершения выполнения предыдущей команды.
При методе компиляции вводится вся программа на входном языке, проверяется ее правильность, а затем организуется выполнение этой программы.
Если ППП будет использоваться только в пакетном режиме, методы интерпретации и компиляции внешне не различимы для пользователя.
При диалоговом режиме, особенно в случаях когда решения пользователя зависят от результатов его предыдущих действий, предпочтительнее метод интерпретации.
Программный модуль, находящийся на верхнем уровне иерархии в управляющей части пакета, обычно называют ведущим модулем. В простых пакетах все функции управления могут сосредоточиваться в ведущем модуле. Ведущий модуль первым получает управление при вызове пакета операционной системой.