Таким образом, данные могут получать новые значения только двумя способами: либо в результате ввода пользователем нового значения, либо в результате выполнения обрабатывающего модуля.
2.2.2 Связи
Совокупность данных в модели предметной области, как уже отмечалось, представляет информационную базу пакета. Данные в информационной базе связаны между собой, т.е. образуют некоторую структуру данных. Характер этих связей определяется при разработке информационной базы пакета и обычно не изменяется в процессе функционирования пакета. Будем называть такие связи связями по определению. Таким образом, связи по определению – это связи, устанавливаемые в информационной базе при построении модели предметной области пакета.
Один из типов таких связей, например, образование иерархических структур данных. Связи такого типа известны из изучения языков программирования (запись в Паскале, структура в Си) и представляют собой совокупность данных, возможно разных типов. Такая связь имеет характер «целое – часть» или «состоит из...».
Для данных, входящих в МПО, могут быть установлены и другие типы иерархических связей. В частности, для отдельных групп данных может быть установлена связь подчинения по отношению к сохранению значений данных или связи типа ограничения.
Например, если в модели имеются целое данное n и массивы x и y, размеры которых зависят от n, то можно считать, что x и y подчинены n. Действительно, если значение n не определено, то x и y также имеют неопределенные значения. Если изменяется n, например увеличивается, то значения x и y становятся неопределенными. В то же время изменение любого из массивов x или y, или их отдельных элементов не влияет на размеры массивов и, следовательно, на значение n. В некоторых случаях ограничения на область определения данного удобнее рассматривать не как свойство типа данного, а как связь по определению. Например, если некоторая матрица:
должна состоять из элементов:
а каждая строка матрицы должна удовлетворять условию:
то ограничение (2.2) можно отнести к свойству базового типа, из которого построена матрица А, а условия (2.3) можно рассматривать как связь по определению между элементами матрицы.
Связи типа подчинения, задаваемые уравнениями или неравенствами, можно представить в модели в форме предикатов, т.е. функций, аргументами которых являются имена (значения) данных, а возвращаемыми значениями – «истина» или «ложь» [5].
Если какая-то переменная зависит от других, которые не определены к настоящему моменту, то предикат имеет значение «ложь».
Таким образом, связи по определению, устанавливаемые при разработке модели предметной области и информационной базы пакета, прежде всего, отражают ограничения на совокупности возможных значения обрабатываемых в пакете данных. Данные, не удовлетворяющие условиям связей по определению, должны считаться неопределенными, не имеющими значений. Нарушение связей по определению возможно из-за ошибочных действий пользователя при вводе новых значений данных. При вводе значений данных следует проверять значения предикатов связей по определению, относящихся к вводимому данному, и принимать меры по исключению возможных ошибок и поддержанию всех предусмотренных связей между данными, имеющими значения.
Иной характер носят связи, реализуемые обрабатывающими модулями пакета. Эти связи предопределены и потенциально присутствуют в модели предметной области, но реализуются только по прямому или косвенному указанию пользователя в процессе решения конкретной задачи при работе пакета. Такие связи будем называть функциональными.
Отдельный обрабатывающий модуль можно рассматривать как функцию
В зависимости от состава набора данных
Некоторые обрабатывающие модули используют единственный набор входных данных и вычисляют новые значения всегда одних и тех же выходных данных. Такой модуль отображает единственную функциональную связь, между обрабатывающим модулем и функциональной связью существует взаимно однозначное отношение. Модуль, отображающий единственную функциональную связь, может быть представлен в пакете, подпрограммой без параметров.
Отдельные обрабатывающие модули могут использоваться с различными наборами входных и выходных данных и, следовательно, могут реализовывать различные функциональные связи. Такой обрабатывающий модуль представляется в пакете подпрограммой с параметрами.
Таким образом, функциональная связь в модели предметной области представляется:
· набором входных данных;
· набором выходных данных;
· обрабатывающим модулем (именем модуля), реализующим эту связь.
Назовем функциональную связь реализуемой (а соответствующий обрабатывающий модуль выполнимым), если известны значения входных данных, т.е. среди элементов y нет данных с неопределенными значениями, и совокупность значений х удовлетворяет связям по определению.
Условие реализуемости функциональной связи можно формально определить как предикат
В правильно построенной модели предметной области реализация функциональной связи не должна разрушать связи по определению. В этом состоит условие непротиворечивости совокупности функциональных связей и связей по определению.
Обобщая приведенные выше рассуждения, можно представить модель предметной области как объединение множества данных, связей по определению и функциональных связей:
МПО = {X, R, F},
где X – множество данных; R – множество связей по определению; F – множество функциональных связей.
Если в процессе выполнения пакета множества X, R и F остаются неизменными (меняются только значения данных), то такую модель предметной области можно назвать статической, a соответствующий ей ППП – пакетом со статической моделью предметной области. Если пользователь имеет возможность в сеансе работы с пакетом изменять хотя бы одно из множеств X, R или F, включая или удаляя из них некоторые элементы, модель предметной области будем называть динамической. Например, если в ППП предусмотрены возможность определения новых данных, включение в расчеты новых формул с построением новых обрабатывающих модулей, то такой пакет соответствует динамической модели предметной области.
2.2.3 Вектор состояния модели предметной области
В процессе функционирования ППП происходит изменение состояния модели предметной области: от начального, определяемого вводом данных, до конечного, определяемого поставленной целью. Это изменение происходит за счет выполнения модулей ввода данных и обрабатывающих модулей. Каждый такой модуль может изменять значения данных. Тогда состояние модели предметной области, или состояние вычислительного процесса, можно характеризовать бинарным вектором состояния МПО
Если пользователь вводит значение данного
Таким образом, функционирование пакета отображается на модели предметной области изменением вектора состояния модели. Если в начале работы с пакетом пользователь установил значения некоторых данных и модель оказалась в состоянии