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