3.1.2. Физическая (файловая) структура системы "Консультант"
Файловую структуру системы можно условно разделить на следующие
части:
- собственно ЭС (файлы, входящие в комплект поставки);
- вспомогательные программы (не входящие в комплект ЭС);
- исходные файлы программ (тексты программ на языке Паскаль);
- файлы пользователя (возникающие в ходе работы).
В состав ЭС входят следующие файлы:
1) START.BAT - запускающий файл системы. Вначале вызывает файл
SERVE.EXE, производящий начальные установки системы, затем запускает
EXPERT.EXE;
2) SERVE.EXE - производит установку запускающих ключей в файл
SERVE.KEY;
3) SERVE.KEY - установочный файл системы;
4) EXPERT.EXE - главный файл системы "Консультант". Содержит про-
цедуры вызова видимых компонентов системы из файла ресурсов EXPERT.
AIR, процедуры динамической подзагрузки библиотечных переменных, конс-
тант, типов данных и функций из стандартных и созданных вспомогатель-
ных библиотек (модулей), содержащихся в упакованном виде в файле
EXPERT.OVR;
5) EXPERT.AIR - файл ресурсов системы. Содержит все видимые компо-
ненты системы в собственном внутреннем представлении. Компоненты рас-
паковываются и извлекаются из файла по командам основной программы
(файла EXPERT.EXE);
6) EXPERT.OVR - оверлейный файл системы. Содержит библиотеки
объектов, команд, регистрационных записей объектов, процедур и функ-
ций, переменных и констант в упакованном виде. Служит для экономии
оперативной памяти;
7) EXPERT.BLC - содержит список имен баз знаний (банк знаний).
Вспомогательные файлы выполняют свои функции в процессе создания
ЭС. После они обычно уничтожаются. При создании "Консультанта" были
созданы следующие вспомогательные файлы:
1) MAIN.TPU - библиотечный модуль. Содержит основные компоненты
системы; при компиляции упаковывается в expert.ovr вместе с другими
стандартными (такими, как SYSTEM.TPU, APP.TPU, COLORSEL.TPU, OBJECTS.
TPU и другими) и демонстрационными (например, CALENDAR.TPU, CALC.TPU,
GAUGES.TPU и другими) модулями;
2) M_VISUAL.EXE - файл, создающий видимые объекты системы (окна,
меню, строку статуса, полосы скроллинга и другие) и записывающий их
указатели в файл EXPERT.AIR;
3) M_LIST.EXE - создает пустой список имен БЗ и помещает его в
файл EXPERT.BLC.
Следующие файлы - тексты программ и модулей на языке Паскаль:
1) EXPERT.PAS - текст основной управляющей программы системы. При
компиляции из него образуется два файла: EXPERT.EXE и EXPERT.OVR;
2) SERVE.PAS - текст установочной программы. Компилируется в файл
SERVE.EXE;
3) MAIN.PAS - текст модуля, описывающего созданные для нужд систе-
мы библиотеки. Компилируется в файл MAIN.TPU;
4) M_VISUAL.PAS - текст программы создания ресурсов. При компиля-
ции образует файл M_VISUAL.EXE;
5) M_LIST.PAS - текст программы, создающей файл EXPERT.BLC и поме-
щающей в нее список банка знаний. При компиляции создает файл M_
LIST.EXE.
При работе пользователь может, не выходя из системы, создавать
два вида файлов:
1) *.PRO - файлы, содержащие базы знаний в виде ресурсов. Первый
ресурс в файле - база фактов (данных), записывается под ключом 'Дан-
ные '+ <имя базы>. Второй ресурс - база правил, записывается в тот же
файл под ключом 'Правила '+ <имя базы>. Имена файлов присваиваются
системой автоматически по принципу 'base'+ <номер базы в банке> +'.
pro' и привязываются к реальным именам БЗ в списке баз файла expert.
blc;
2) *.REP - файлы, содержащие протоколы проведения консультаций.
После проведения консультации система, по просьбе пользователя, может
создать протокол и затем сохранить его на диске, записав его в файл,
которому автоматически присвоит имя <число> + <месяц> + <год> + поряд-
ковый номер протокола на данные сутки.
3.2. Информация, обрабатываемая в системе
3.2.1. Математическая модель информации в ЭС
База знаний представляет собой два множества: множество фактов {
f} и множество правил {r }, где n - общее количество фактов, m - об-
щее количество правил. Множество {f} можно представить в виде:
{f }={a ,q ,{v }}
где a - объект i-го факта, q - вопрос i-го факта, {v } - множество
значений i-го факта, l - количество значений в i-м факте. Множество
правил формируется таким образом:
так как v ={s,m,c }, где m,c Е{0,1} и для j-го правила имеем
следующую цепь преобразований:
если m =1, то s =l и если c =1, то c =1.
Таким образом, имеем сформированное множество правил.
3.2.2. Программная модель информации в "Консультанте"
База фактов и база правил представляют собой указатели на объекты
-потомки, порожденные от стандартного объекта - коллекции из библиоте-
ки Turbo-Vision:
TCOLLECTION───┬───TDATABASE
└───TRULEBASE
В коллекцию базы данных записываются факты, представляющие собой
также объекты-потомки от коллекции Turbo-Vision:
TCOLLECTION────────TFACT
Объект-потомок отличается от родителя наличием двух полей:
ATRIBUT - объект и QUESTION - вопрос. В коллекцию факта записываются
указатели на значения объекта. В объекте TFACT также перекрываются
два метода: конструктор LOAD и процедура STORE, позволяющие теперь
сохранить в потоке, кроме коллекции значений, еще и новые поля.
В свою очередь, значение - это потомок от базового объекта всей
иерархии стандартных объектов Turbo-Vision:
TOBJECT───────TVALUE
Этот потомок отличается от своего родителя тремя новыми полями:
SLOT - собственно значение (в виде строки), MARK - служебное поле,
применяющееся при создании базы правил и CON - поле-признак того, что
данное значение является заключением.
Такова структура базы фактов. В базу правил же записываются прави-
ла, каждое из которых представляет собой коллекцию, в свою очередь
каждый элемент которой - элемент правила. Элемент правила порожден от
TOBJECT и имеет следующие поля и методы:
- поле SLOT - номер помеченного в поле MARK значения;
- поле CON - поле-метка для определения предпосылки или заключе-
ния;
- метод LOAD - конструктор для загрузки данного объекта из потока;
- метод STORE - процедура для сохранения объекта в потоке.
Следует отметить, что каждый из этих объектов имеет методы LOAD и
STORE, поскольку предполагается, что БЗ будет сохранена в файле ресур-
сов, который представляет собой индексированный поток (поток с произ-
вольным доступом к объектам по ключам).
3.3. Программная реализация составных частей системы
3.3.1. Реализация интерфейса системы и СУБЗ
Интерфейс системы создается следующим образом. Объявляется объект
TEXPERT - потомок от стандартного объекта из библиотеки Turbo-Vision
TAPPLICATION, в котором уже содержатся такие необходимые компоненты
любой программы (приложения), как вывод строк меню и статуса, рабочей
поверхности, поддержка мыши и команды "Выход". Потомок перекрывает та-
кие методы TAPPLICATION, как INITSTATUSLINE для создания собственной
строки статуса, INITMENUBAR - для создания собственной строки "выпада-
ющих" меню, RUN - для вывода на рабочую поверхность окна банка знаний
и установки новой палитры, INIT - для подключения к системе ресурсов
(то есть инициализации файлов EXPERT.AIR и EXPERT.BLC) и регистрации
объектов в этих ресурсах, HANDLEEVENT - для обработки нестандартных
команд.
Главное (верхнее) меню системы имеет следующую структуру (см.рис.
1).
СИСТЕМА БАЗА
┌─────────────┐ ┌──────────────┐
│ ПАУЗА │ │ ОТКРЫТЬ │
│ MS-DOS │ │ НОВАЯ │
│ О ПРОГРАММЕ │ │ ПЕРЕИМЕНОВАТЬ│
│ ВЫХОД │ │ РЕДАКТИРОВАТЬ│
└─────────────┘ │ УДАЛИТЬ │
└──────────────┘
ОКНА СЕРВИС
┌────────────┐ ┌─────────────┐
│ РАСПАХНУТЬ │ │ ПАРОЛЬ │
│ ДВИЖЕНИЕ │ │ КАЛЕНДАРЬ │
│ ЗАКРЫТЬ │ │ КАЛЬКУЛЯТОР │
│ СЛЕДУЮЩЕЕ │ │ ИГРА │
│ ПРЕДЫДУЩЕЕ │ └─────────────┘
└────────────┘
Рисунок 1. Структура меню "Консультанта"
Меню СИСТЕМА содержит наиболее общие опции работы в системе, БАЗА
- операции управления базами знаний, ОКНА - операции над окнами, нахо-
дящимися на рабочей поверхности, СЕРВИС - некоторые инструментальные
средства, упрощающие работу пользователя в системе. Каждая операция
меню программно связана с командой, которая затем обрабатывается в ме-
тоде HANDLEEVENT. Так, например, операция НОВАЯ связана с командой
CMNEW. Процедура - обработчик событий HANDLEEVENT содержит строку:
... CMNEW:NEWBASE ... ,
которая означает, что при поступлении этой команды (событие - вы-
бор операции подсвеченной полосой или двойной щелчок "мышью") обработ-
чик запускает процедуру с именем NEWBASE, которая вызывает из файла
ресурсов окно создания базы (объект TNEWWINDOW), считывает из строки
ввода введенное имя базы, записывает его в файл EXPERT.BLC, создает
на диске новый файл с расширением "PRO", связывает его имя с именем
базы и затем уничтожает окно TNEWWINDOW на экране.
Ниже приводится список всех операций, и, минуя команды, процеду-
ры, с которыми связаны эти операции через обработчик событий:
- ПАУЗА, процедура PAUSE (осуществляет гашение экрана на время от-
лучения пользователя);
- MS-DOS, процедура DOSCALL (осуществляет временный выход в DOS и
возврат в систему по команде EXIT);
- О ПРОГРАММЕ, процедура ABOUT (вызывает из файла ресурсов окно с
краткими сведениями о данной программе);
- ВЫХОД, стандартная команда Turbo-Vision;
- ОТКРЫТЬ, процедура OPENBASE (ищет на диске файл, связанный с
именем выбранной для открытия (работы) базы, извлекает из файла базу
знаний и вызывает основную процедуру машины вывода OUTPUTMACHINE из