Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Новые лекции по 1С.doc
Скачиваний:
48
Добавлен:
19.04.2019
Размер:
2.19 Mб
Скачать

2. Адаптируемость пакетов программ

 

         Законченное задание на решение задачи или на выполнение отдельного этапа вычислений обычно называют программой на входном языке (ПВЯ).

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

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

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

         В языках командного типа управляющие предложения строятся по типу машинных команд или команд ОС, т.е. состоят из кода команды (операции) и операндов. Если количество кодов команд невелико, правила записи операндов достаточно простые, такой язык может быть удобным для пользователя.

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

 

         Можно выделить два способа внешнего управления ППП: процедурно-ориентированный и проблемно-ориентированный.

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

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

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

         Обрабатывающий модуль и соответствующую ему функциональную связь можно рассматривать как функцию y=fi(x), где х есть входные (исходные) данные модуля, у - выходные данные (результаты выполнения модуля). В общем случае х и у могут быть векторами, составленными из элементов X.

         В текущем состоянии S обрабатывающий модуль fi будем называть выполнимым, если значения всех компонентов х известны. Выполнимый модуль будем называть эффективным в состоянии S, если его вызов переводит модель предметной области в новое состояние S' <> S.

         Совокупность функциональных связей в модели предметной области пакета можно представить матрицами Т и R, имеющими по m строк (m - число функциональных связей) и по п столбцов (п - число данных). Элемент матрицы Т   tij равен:

  • 1, если j-e данное является входным для i-го модуля;

  • 0 в остальных случаях.

Аналогично элементами матрицы R будут rij:

  • 1, если j-e данное является результатом i-го модуля;

  • 0 в остальных случаях.

         Если рассматривать S как вектор-строку с элементами 1 и 0 и операции & (конъюнкцию–логическое умножение), V (дизъюнкцию–логическое сложение ) и ~ (отрицание - инверсия) интерпретировать как поэлементные булевские операции над битовыми строками, то условие выполнимости модуля fi можно записать так:

Ti & S=Ti ,

где Ti - строка матрица T, соответствующая модулю fi.

Выполнимый модуль будет эффективным, если Ri & (~S)<>0, т.е. результатом вычисления выражения Ri & (~ S) будет битовая строка, содержащая хотя бы одну единицу.

         Если обозначить вектор исходного состояния S0, а требования к конечному состоянию определить вектором Z, и принимая, что компоненты этих векторов равны единице для известных данных и равны нулю для данных с неопределенными значениями, то конечное состояние - это любое состояние Sk, удовлетворяющее условию

Sk & Z=Z.

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

         Один из возможных алгоритмов планирования вычислений основан на так называемом методе "прямой волны". Сущность этого метода состоит в том, чтобы последовательно (в цикле по строкам матриц Т и R) включать в управляющий вектор все модули, эффективные в каждом текущем состоянии модели предметной области, и повторять этот процесс до тех пор, пока не будет получено одно из конечных состояний.

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

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

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]