Автор работы: Пользователь скрыл имя, 07 Декабря 2013 в 19:24, дипломная работа
Данный дипломный проект посвящен разработке экспертной системы для автоматизации построения компонентов в системе Moodle. В пояснительной записке представлены анализ предметной области, цели и задачи проекта, обзор существующих аналогов, структурная схема экспертной системы, база знаний экспертной системы и дерево вопросов, на которые пользователь будет отвечать в процессе работы с системой, а так же проведен сравнительный анализ языков программирования и моделей представления знаний.
Введение 5
Основная часть 7
1 Специальная часть 7
1.1 Аналитический обзор системы Moodle 7
1.1.1 О системе Moodle 7
1.1.2 Преимущества Moodle 9
1.1.3 Экспертная система 11
1.2 Обзор существующих экспертных систем в данной предметной области 14
1.3 Постановка задачи на разработку экспертной системы 16
1.4 Анализ программного построения существующих модулей в системе Moodle 17
1.4.1 Содержимое папки базового модуля 18
1.4.2 Описание файлов 19
1.5 Разработка структурной схемы экспертной системы 21
1.6 Выбор программных средств для реализации экспертной системы 25
1.6.1 Perl 26
1.6.2 Delphi 27
1.6.3 Python 28
1.6.4 PHP: Hypertext Preprocessor 29
1.6.5 Сводная таблица сравнения языков программирования 31
1.7 Создание базы знаний экспертной системы 32
1.8 Разработка дерева вопросов 33
1.9 Выбор модели представления знаний 34
1.10 Выбор алгоритма поиска решений 37
1.11 Оценка эффективности системы 39
2 Экономическая часть 40
2.1 Расчет стоимости разработки экспертной системы 41
2.2 Расчет экономического эффекта экспертной системы 45
2.3 Показатели эффективности 50
3 Защита информации 52
3.1 Анализ возможных угроз безопасности информации в экспертной системе 53
3.2 Выбор средств защиты информации 56
Заключение 58
Приложения 59
Список использованной литературы 64
Delphi – это императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями развития языков программирования.
Простота, скорость и эффективность Delphi объясняют его популярность. Delphi имеет один из самых быстрых компиляторов, порождающий, тем не менее, весьма и весьма неплохой объектный код. Есть и другие достоинства: облегчающие жизнь нововведения - вроде свойств; программы, написанные на Delphi, не требуется снабжать дополнительными библиотеками.
Но всё же данный язык программирования имеет ряд недостатков. Главный недостаток - статическое присоединение библиотеки VCL и компонентов к исполняемому файлу. Другой недостаток состоит в том, что в используемой в Delphi парадигме форм вся информация о форме, включая свойства, настройки компонентов, значения по умолчанию, хранится в exe-файле, причем не оптимальным образом. Кроме того, Delphi имеет малое число параметров оптимизации кода[5].
Python является интерпретируемым, изначально объектно-ориентированным языком программирования. Он чрезвычайно прост и содержит небольшое число ключевых слов, вместе с тем очень гибок и выразителен. Это язык более высокого уровня нежели Pascal, C++ и, естественно C, что достигается, в основном, за счет встроенных высокоуровневых структур данных.
Несомненным достоинством является то, что интерпретатор Python реализован практически на всех платформах и операционных системах.
Следующая немаловажная черта - расширяемость языка, этому придается большое значение, и язык был задуман именно как расширяемый.
Следующее достоинство - наличие большого числа подключаемых к программе модулей, обеспечивающих различные дополнительные возможности.
Но немаловажным недостатком данного языка является сравнительно невысокая скорость выполнения Python-программы, что обусловлено ее интерпретируемостью[6].
а) Традиционность. Код РНР очень похож на тот, который встречается в типичных программах на С или Pascal. Это заметно снижает начальные усилия при изучении РНР. PHP — язык, сочетающий достоинства Perl и Си и специально нацеленный на работу в Интернете, язык с универсальным и ясным синтаксисом.
б) Простота. Сценарий РНР может состоять из 10 000 строк или из одной строки — все зависит от специфики задачи. Механизм РНР просто начинает выполнять код после первой экранирующей последовательности (). Если код имеет правильный синтаксис, он исполняется в точности так, как указал программист.
в) Эффективность. Очень важное преимущество PHP заключается в его «движке». «Движок» PHP не является ни компилятором, ни интерпретатором. Он является транслирующим интерпретатором. Такое устройство «движка» PHP позволяет обрабатывать сценарии с достаточно высокой скоростью.
д) Безопасность. РНР предоставляет в распоряжение разработчиков и администраторов гибкие и эффективные средства безопасности, которые условно делятся на две категории: средства системного уровня и средства уровня приложения.
1) Средства безопасности системного уровня
В РНР реализованы механизмы
безопасности, находящиеся под управлением
администраторов; при
2) Средства безопасности уровня приложения
В стандартный набор функций
РНР входит ряд надежных
е) Гибкость. Поскольку РНР не содержит кода, ориентированного на конкретный web-сервер, пользователи не ограничиваются определенными серверами (возможно, незнакомыми для них). Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold и Zeus — РНР работает на всех перечисленных серверах. Поскольку эти серверы работают на разных платформах, РНР в целом является платформенно-независимым языком и существует на таких платформах, как UNIX, Solaris, FreeBSD и Windows 95/98/NT/2000/XP/2003.
ж) Бесплатное распространение. Принятие стратегии Open Source и бесплатное распространение исходных текстов РНР оказало неоценимую услугу пользователям[7].
В таблице 2 приведено сравнение основных характеристик рассмотренных языков программирования.
Таблица 2 – Сравнение языков программирования
Параметры |
Объектно-ориентиро-ванный |
Высокая скорость выполнения программы |
Бесплатная лицензия |
Расширяемость языка |
Простота изучения |
Perl |
- |
+ |
+ |
- |
- |
Delphi |
+ |
- |
- |
- |
+ |
Python |
+ |
- |
+ |
+ |
- |
PHP |
+ |
+ |
+ |
+ |
+ |
После анализа полученных данных был выбран язык программирования PHP, как наиболее удовлетворяющий основным требованиям.
База знаний экспертной системы представлена в виде трех таблиц в базе данных в phpMyAdmin. Таблица «polls» содержит вопросы экспертной системы, в таблице «answers» представлены варианты ответов на вопросы, а результаты выбранных ответов на вопросы, представляющие собой код, и комментарии к ним находятся в таблице «votes».
Все результаты ответов с комментариями
записываются в соответствующие
файлы: «db/install.xml», « db/upgrade.php», «index.php»,
«lang/en_utf8/help/newmodule/
После окончания работы с экспертной системой все эти файлы помещаются в архив.
Схема базы данных представлена на рисунке 4.
Рисунок 4 – база данных экспертной системы
Исходя из проведенного анализа особенностей построения модулей в системе Moodle, было разработано дерево вопросов для экспертной системы.
Всего в системе 35 вопросов. На рисунке 5 представлена часть этого дерева – 16 вопросов. Вопросы сгруппированы таким образом, что ответы на вопросы определенной группы заносятся в соответствующий ей файл.
Рисунок 5 – Дерево вопросов экспертной системы
Существуют три часто
а) Представление знаний в виде семантических сетей.
Семантические сети - способ представления знания, объединяющий в себе свойства функциональных сетей и сценариев. В функциональных сетях дуги отражают свойства вершин, из которых они выходят (вершины – понятия) с использованием вершин (понятий), в которые они входят. Сценарий представляется некоторой сетью, где вершины – понятия, а дуги – связи описывающие отношения специального типа. По сути, семантические сети представляют собой граф.
Данная модель представления знаний наиболее подходит для решения таких задач, где имеется большой объем хорошо структурированных знаний, отражающих причинно-следственные и функциональные отношения между понятиями в терминах функциональных законов, действующих в предметной области.
б) Представление знаний в виде фреймов.
Фреймы – это формализм для описания структурированных занятий, причем такой, что удаление из описания любой его части приводит к потере определяющих суть данного понятия свойств. Также фреймом называется структура данных для представления некоторого концептуального объекта. Фрейм имеет имя, служащее для идентификации описываемого им понятия, и содержит ряд описаний — слотов, с помощью которых определяются основные структурные элементы этого понятия. За слотами следуют шпации, в которые помещают данные, представляющие текущие значения слотов. Слот может содержать не только конкретное значение, но также имя процедуры, позволяющей вычислить это значение по заданному алгоритму.
в) Представление знаний в виде системы продукций.
В этой модели знания представляются в виде совокупности правил типа «ЕСЛИ — ТО». Любое продукционное правило, содержащееся в БЗ, состоит из двух частей: антецедента и консеквента. Антецедент представляет собой посылку правила (условную часть) и состоит из элементарных предложений, соединенных логическими связками И, ИЛИ. Консеквент (заключение) включает одно или несколько предложений, которые выражают либо некоторый факт, либо указание на определенное действие, подлежащее исполнению. Экспертные системы, основанные на продукционной модели, не располагают процедурами, которые могли бы построить в пространстве состояний сразу весь путь решения задачи. Траектория поиска решения полностью определяется данными, получаемыми от пользователя в процессе логического вывода.
В таблице 3 представлено сравнение данных моделей с учетом особенностей предметной области, которые являются критериями сравнения.
Таблица 3 – Сравнение моделей представления знаний
Характеристики предметной области
Модели представления знаний |
Небольшой объем знаний |
Слабо-формализованные знания |
Высокая степень детализации знаний |
Независимость отдельных элементов знаний |
Семантические сети |
- |
- |
- |
+ |
Фреймы |
- |
- |
+ |
- |
Система продукций |
+ |
+ |
+ |
+ |
На основе анализа предметной области
и моделей представления знаний
можно сделать следующие
- для использования модели представления знаний в виде семантических сетей требуется большой объем структурированных данных, чего не хватает в выбранной предметной области;
- для использования фреймового
подхода нужна формализация
- продукционная модель
Основные стратегии поиска решений в продукционных системах:
а) Стратегия поиска в глубину, когда при выборе очередной подцели в процессе обратного вывода предпочтение всегда, когда возможно, отдается той, которая соответствует следующему, более детальному уровню описания задачи.
б) Стратегия поиска в ширину, когда сначала анализируются все факты, находящиеся на одном уровне пространства состояний задачи, даже если они относятся к разным целям (подцелям), и только после этого происходит переход к поиску фактов следующего уровня.
Механизм вывода выполняет две основные функции:
- просмотр существующих в рабочей памяти (РП) фактов и правил из базы правил, а также добавление в РП новых фактов;
Информация о работе Экспертная система для автоматизации построения компонентов системы Moodle