Разработка экспертной системы для автоматизации построения компонентов в системе Moodle
Первую экспертную систему, которую назвали Dendral, разработали в Стэнфорде в конце 1960;х г. г. Эта была экспертная система, определяющая строение органических молекул по химическим формулам и спектрографическим данным о химических связях в молекулах. Ценность Dendral заключалась в следующем. Органические молекулы, как правило, очень велики и поэтому число возможных структур этих молекул также… Читать ещё >
Разработка экспертной системы для автоматизации построения компонентов в системе Moodle (реферат, курсовая, диплом, контрольная)
Аннотация
Данный дипломный проект посвящен разработке экспертной системы для автоматизации построения компонентов в системе Moodle. В пояснительной записке представлены анализ предметной области, цели и задачи проекта, обзор существующих аналогов, структурная схема экспертной системы, база знаний экспертной системы и дерево вопросов, на которые пользователь будет отвечать в процессе работы с системой, а так же проведен сравнительный анализ языков программирования и моделей представления знаний.
Дипломный проект содержит 57 листа формата А4, 10 таблиц, 6 рисунков и 12 литературных источников.
Оглавление
- Введение
- 1. Специальная часть
- 1.1 Аналитический обзор системы Moodle
- 1.1.1 О системе Moodle
- 1.1.2 Преимущества Moodle
- 1.1.3 Экспертная система
- 1.2 Обзор существующих экспертных систем в данной предметной области
- 1.3 Постановка задачи на разработку экспертной системы
- 1.4 Анализ программного построения существующих модулей в системе Moodle
- 1.4.1 Содержимое папки базового модуля
- 1.4.2 Описание файлов
- 1.5 Разработка структурной схемы экспертной системы
- 1.6 Выбор программных средств для реализации экспертной системы
- 1.6.1 Perl
- 1.6.2 Delphi
- 1.6.3 Python
- 1.6.4 PHP: Hypertext Preprocessor
- 1.6.5 Сводная таблица сравнения языков программирования
- 1.7 Создание базы знаний экспертной системы
- 1.8 Разработка дерева вопросов
- 1.9 Выбор модели представления знаний
- 1.10 Выбор алгоритма поиска решений
- 1.11 Оценка эффективности системы
- 2. Экономическая часть
- 2.1 Расчет стоимости разработки экспертной системы
- 2.2 Расчет экономического эффекта экспертной системы
- 2.3 Показатели эффективности
- 2.4 Вывод
- 3. Защита информации
- 3.1 Анализ возможных угроз безопасности информации в экспертной системе
- 3.2 Выбор средств защиты информации
- Заключение
- Список использованной литературы
- Приложение
Введение
Дистанционным обучением может считаться любая форма обучения, в которой преподаватель и студенты разделены во времени и пространстве. Появление Интернета и Web-технологий дало новые возможности в развитии дистанционного обучения.
Систему дистанционного обучения посредством Интернета можно определить как комплекс программно-технических средств, методик и организационных мероприятий, которые позволяют обеспечить доставку образовательной информации учащимся по компьютерным сетям общего пользования, а также проверку знаний, полученных в рамках курса обучения конкретным слушателем, студентом, учащимся.
Использование систем дистанционного обучения несет определенные выгоды: такие системы позволяют вовлечь в процесс обучения большее количество учащихся и сделать его более доступным как с точки зрения стоимости обучения, так и с точки зрения территориальной удаленности преподавателей и обучаемых.
Среди основных преимуществ таких систем можно отметить следующие:
— возможность выбора обучаемым удобного места и времени для обучения;
— возможность получения доступа к учебным курсам лицам, которые не могут получить этот доступ непосредственно в силу определенных причин;
— сокращение расходов на обучение — нет необходимости совершать дальние поездки для частных лиц, и для организаций — направлять сотрудников в командировки.
Возможность создавать сайты для онлайн-обучения предоставляют ряд средств, среди которых система управления курсами Moodle. Данная система имеет модульный принцип построения и открытый исходный код. Благодаря этому система постоянно модернизируется, дополняется новыми модулями, позволяющими усовершенствовать процесс обучения. Однако перед начинающими разработчиками возникает проблема отсутствия знаний для дальнейшей разработки модулей в системе Moodle. Эти знания в разрозненном состоянии можно получить из разных интернет-источников, но это лишь усложнит задачу программистов: они будут вынуждены затратить много времени на их поиск, изучение.
Выходом из данной ситуации может являться объединение знаний в одном ресурсе. Это можно сделать, создав какой-либо источник с правилами написания компонентов в системе Moodle. Но на изучение этих правил потребуется какое-то количество времени, и не всегда получится в результате этого изучения создание корректного модуля системы. Поэтому для решения данной задачи целесообразно создать экспертную систему для автоматизации построения компонентов системы Moodle, которая позволит разработчику получить возможность написания корректного модуля, не теряя времени на поиск знаний и изучение специфики системы.
1. Специальная часть
1.1 Аналитический обзор системы Moodle
1.1.1 О системе Moodle
Moodle — это система управления курсами (CMS) с открытым исходным кодом, также известная как система управления обучением (LMS) или виртуальная обучающая среда (VLE). Она стала очень популярной среди преподавателей во всем мире как средство для создания динамических веб-сайтов для учащихся. Для обеспечения работы она должна быть установлена на веб-сервере, либо на собственный компьютер, либо у хостинговой компании.
Целью проекта Moodle является предоставление преподавателям всегда самых лучших средств для управления и способствования процессу обучения. Есть несколько путей использования Moodle:
— Moodle имеет возможности для масштабирования вплоть до нескольких сотен тысяч учащихся, а может использоваться даже для начальной школы или самостоятельного обучения.
— Многие организации используют Moodle в качестве платформы для создания полностью онлайновых курсов (известное как смешанное обучение).
— Многим пользователям нравятся модули элементов курса (такие как форумы, базы данных и вики) за возможность создания удобной среды для обмена информацией по изучаемым темам (в традициях социального конструктивизма), в то время как другие предпочитают использовать Moodle как способ предоставления информации для студентов (например, стандарт пакетов SCORM) и оценки обучения с использованием заданий или тестов.
Moodle относится к классу LMS (Learning Management System) — систем управления обучением. В нашей стране подобное программное обеспечение чаще называют системами дистанционного обучения (СДО), так как именно при помощи подобных систем во многих вузах организовано дистанционное обучение. Moodle — это свободное программное обеспечение с лицензией GPL, что дает возможность бесплатного использования системы, а также ее безболезненного изменения в соответствии с нуждами образовательного учреждения и интеграции с другими продуктами. Moodle — аббревиатура от Modular Object-Oriented Dynamic Learning Environment (модульная объектно-ориентированная динамическая обучающая среда). Благодаря своим функциональным возможностям система приобрела большую популярность и успешно конкурирует с коммерческими LMS. Moodle используется более чем в 30 000 учебных заведений по всему миру и переведена почти на 80 языков, в том числе и на русский. 1].
1.1.2 Преимущества Moodle
Open Source СДО Moodle широко известна в мире, используется более чем в 100 странах.
По уровню предоставляемых возможностей Moodle выдерживает сравнение с известными коммерческими СДО, в то же время выгодно отличается от них тем, что распространяется в открытом исходном коде — это дает возможность «заточить» систему под особенности конкретного образовательного проекта, а при необходимости и встроить в нее новые модули.
Moodle ориентирована на коллаборативные технологии обучения — позволяет организовать обучение в процессе совместного решения учебных задач, осуществлять взаимообмен знаниями.
Широкие возможности для коммуникации — одна из самых сильных сторон Moodle. Система поддерживает обмен файлами любых форматов — как между преподавателем и студентом, так и между самими студентами. Сервис рассылки позволяет оперативно информировать всех участников курса или отдельные группы о текущих событиях. Форум дает возможность организовать учебное обсуждение проблем, при этом обсуждение можно проводить по группам. К сообщениям в форуме можно прикреплять файлы любых форматов. Есть функция оценки сообщений — как преподавателями, так и студентами. Чат позволяет организовать учебное обсуждение проблем в режиме реального времени. Сервисы «Обмен сообщениями», «Комментарий» предназначены для индивидуальной коммуникации преподавателя и студента: рецензирования работ, обсуждения индивидуальных учебных проблем. Сервис «Учительский форум» дает педагогам возможность обсуждать профессиональные проблемы.
Важной особенностью Moodle является то, что система создает и хранит портфолио каждого обучающегося: все сданные им работы, все оценки и комментарии преподавателя к работам, все сообщения в форуме.
Преподаватель может создавать и использовать в рамках курса любую систему оценивания. Все отметки по каждому курсу хранятся в сводной ведомости.
Moodle позволяет контролировать «посещаемость», активность студентов, время их учебной работы в сети. 2].
1.1.3 Экспертная система
Искусственный интеллект, как научная дисциплина, состоит из нескольких крупных течений. Одно из них — экспертные системы.
Экспертные системы — это направление исследований в области искусственного интеллекта по созданию вычислительных систем, умеющих принимать решения, схожие с решениями экспертов в заданной предметной области.
Как правило, экспертные системы создаются для решения практических задач в некоторых узкоспециализированных областях, где большую роль играют знания «бывалых» специалистов. Экспертные системы были первыми разработками, которые смогли привлечь большое внимание к результатам исследований в области искусственного интеллекта.
Экспертные системы имеют одно большое отличие от других систем искусственного интеллекта: они не предназначены для решения каких-то универсальных задач. Экспертные системы предназначены для качественного решения задач в определенной разработчиками области, в редких случаях — областях.
Экспертное знание — это сочетание теоретического понимания проблемы и практических навыков ее решения, эффективность которых доказана в результате практической деятельности экспертов в данной области. Фундаментом экспертной системы любого типа является база знаний, которая составляется на основе экспертных знаний специалистов. Правильно выбранный эксперт и удачная формализация его знаний позволяет наделить экспертную систему уникальными и ценными знаниями. Поэтому ценность всей экспертной системы как законченного продукта на 90% определяется качеством созданной базы знаний.
Экспертная система — это не простая программа, которая пишется одним или несколькими программистами.
Экспертная система является плодом совместной работы экспертов в данной предметной области, инженеров по знаниям и программистов.
Но стоит отметить, что встречаются случаи, когда программы пишутся самими экспертами в данной области.
Эксперт предоставляет необходимые знания о тщательно отобранных примерах проблем и путей их решения. Например, при создании экспертной системы диагностики заболеваний врач рассказывает инженеру по знаниям об известных ему заболеваниях. Далее эксперт раскрывает список симптомов, которые сопровождают каждое заболевание и в заключение рассказывает об известных ему методах лечения. Инженер по знаниям, формализует всю полученную информацию в виде базы знаний и помогает программисту в написании экспертной системы.
Первую экспертную систему, которую назвали Dendral, разработали в Стэнфорде в конце 1960;х г. г. Эта была экспертная система, определяющая строение органических молекул по химическим формулам и спектрографическим данным о химических связях в молекулах. Ценность Dendral заключалась в следующем. Органические молекулы, как правило, очень велики и поэтому число возможных структур этих молекул также велико. Благодаря эвристическим знаниям экспертов-химиков, заложенных в экспертную систему, правильное решение из миллиона возможных находилось всего за несколько попыток. Принципы и идеи, заложенные в Dendral оказались настолько эффективными, что они до сих пор применяются в химических и фармацевтических лабораториях по всему миру.
Экспертная система Dendral одной из первых использовала эвристические знания специалистов для достижения уровня эксперта в решении задач, однако методика современных экспертных систем связана с другой разработкой — Myсin. В ней использовались знания экспертов медицины для диагностики и лечения специального менингита и бактериальных инфекций крови.
Экспертная система Mycin, разработанная в том же Стэнфорде в середине 1970;х г. г., одной из первых обратилась к проблеме принятия решений на основе ненадежной или недостаточной информации. Все рассуждения экспертной системы Mycin были основаны на принципах управляющей логики, соответствующих специфике предметной области. Многие методики разработки экспертных систем, использующиеся сегодня, были впервые разработаны в рамках проекта Mycin.
На сегодняшний день создано уже большое количество экспертных систем. С помощью них решается широкий круг задач, но исключительно в узкоспециализированных предметных областях. Как правило, эти области хорошо изучены и располагают более менее четкими стратегиями принятия решений. 3].
1.2 Обзор существующих экспертных систем в данной предметной области
Существуют экспертные системы, которые в результате своей деятельности тоже получают программный продукт. Они имеют ряд особенностей в построении, которые можно применить и для разрабатываемой экспертной системы. Например, система CLIPS является наиболее широко используемой экспертной системой благодаря своей скорости, эффективности и бесплатности. В ее основе лежит продукционная модель представления знаний, а результаты работы определяются с помощью прямого логического вывода. Кроме того, пополнение знаний в этой системе происходит автоматически.
Другая система G2 Gensym представляет собой объектно-ориентированную интегрированную среду для разработки и сопровождения приложений реального времени, использующих базы знаний. Она тоже основана на продукционной модели представления знаний, поиск решения происходит методом «в глубину», а логический вывод имеет как прямой, так и обратный.
Система ЭКО используется как комплекс средств для создания статических экспертных систем. Имеет метод поиска решений «в ширину» и обратный логический вывод.
В таблице 1 представлено сравнение особенностей в построении существующих экспертных систем.
Таблица 1 — Обзор аналогов.
Критерии сравнения Программные продукты. | Продукционная модель представления знаний. | Использование MySQL для управления знаниями. | Метод поиска решений «в ширину». | Прямой логический вывод. | Автоматическое пополнение базы знаний. | |
CLIPS. | ; | ; | ||||
G2 Gensym. | ; | ; | ; | |||
ЭКО. | ; | ; | ; | ; | ||
Разрабатываемая. | ||||||
1.3 Постановка задачи на разработку экспертной системы
Развитие и совершенствование дистанционных систем обучения обычно производится разработчиками данных систем. Дистанционная система обучения Moodle имеет открытый исходный код, благодаря чему разработчиком, создателем новых компонентов системы может стать любой человек, обладающий знаниями, правилами построения модуля. Поэтому перед начинающими разработчиками возникает проблема отсутствия знаний в области специфики системы Moodle. Их можно получить, изучив разные интернет-источники, на что потребуется большое количество времени.
Поэтому необходимо уменьшить временные затраты на разработку программных компонентов и получить оптимизированный код нового модуля в системе Moodle с помощью разработки экспертной системы. Для этого нужно проанализировать программное построение существующих модулей системы, разработать структурную схему экспертной системы, выбрать программные средства для ее реализации, создать базу знаний, дерево вопросов, а также выбрать модель представления знаний и алгоритм поиска решений. Таким образом, система должна содержать знания, необходимые для построения типового модуля системы Moodle, интерфейс системы должен быть построен для специалиста, плохо знакомого с особенностями построения модулей и результатом работы системы должен быть корректно написанный программный код.
1.4 Анализ программного построения существующих модулей в системе Moodle
" Moodle" - это акроним слов «Modular Object-Oriented Dynamic Learning Environment» (Модульная объектно-ориентированная динамическая обучающая среда). Само название уже говорит о том, что система состоит из набора функциональных элементов, называемых модулями. Каждый модуль отвечает за выполнение определенных функций, например модуль Форум позволяет в онлайн-курсе создавать форумы и обмениваться сообщениями, а модуль Тест позволяет создавать и выполнять тесты. Модульная структура системы позволяет легко ее настраивать под нужды любого учебного процесса.
В базе модулей и расширений Moodle представлено более чем 360 модулей, стандартных и дополнительных. Стандартными модулями являются модули Ресурс, Форум, Задание, Тест, Тест HotPotatoes, Лекция, Глоссарий, Wiki, База данных, Чат, пакет Scorm, Семинар и др. Наиболее интересными из дополнительных модулей являются дополнения OpenID, Podcast activity for Moodle, OpenMeetings (кроссплатформенное приложение и для проведения видео и аудио-конференций), различные модули для записи голосовых ответов и публикации их как ответы на задания, модуль аутентификации Google Apps, Google Apps for Moodle, фильтр «Скрытый текст», индивидуальный учебный план студента, Moodle for Mobiles, модуль создания ресурсов для совместного доступа, модуль для управления проектами.
1.4.1 Содержимое папки базового модуля
Каждый модуль в системе Moodle содержит в себе определенный набор папок и файлов, необходимых для корректной работы в системе.
Основные файлы модулей:
— db/install.xml.
— db/upgrade.php.
— icon.gif.
— index.php.
— lang/en_utf8/help/newmodule/index.html.
— lang/en_utf8/help/newmodule/mods.html.
— lang/en_utf8/newmodule.php.
— lib.php.
— mod_form.php.
— README.txt.
— version.php.
— view.php.
1.4.2 Описание файлов
db/install.xml — это файл с XML-описанием таблиц, необходимых для работы модуля. Их минимум две: название первой соответствует названию модуля, вторая называется «log_display». Они имеют строгий синтаксис. Очень важно соблюдать связи между таблицами и полями. Это обязательный файл, в котором должна быть написана структура таблиц, которую модуль будет использовать. В таблице «log_display» нужно перечислить все «действия», которые будут добавлены в журналы модуля.
db/upgrade.php — это файл, который необходимо редактировать каждый раз, когда нужно изменить структуру таблицы модуля.
icon.gif — это значок размером 16px на 16px для идентификации каждого экземпляра модуля в рамках курса.
index.php — это страница, в которой перечислены все функциональные возможности модуля для обеспечения работы курса.
lang представляет собой папку, содержащую языковые пакеты.
Языковой пакет модуля представляет собой папку с именем «xx_utf8», содержащую, в свою очередь, папку с именем «help» и название языкового файла. Первые два символа «хх» обозначают сокращенное название языка, например, EN, DE, ES, IT, FR и так далее. Каждый языковой файл предназначен для определенного языка. Папка lang может содержать столько языковых пакетов, сколько предусмотрено переводчиком.
Папка Lang/xx_utf8/help / содержит файлы справки, которые необходимы для модуля.
lib.php является предварительно заполненным файлом с «ядром» функций, необходимых модулю.
Здесь находятся почти все функции. Каждая из них должна иметь имя, которое начинается с названия модуля. Этот файл должен иметь две отличающиеся друг от друга части:
· Все основные функции Moodle, необходимые для работы модуля в системе Moodle.
· Все функции, специфичные для конкретного модуля, используемые для осуществления логики модуля.
Если из-за большого количества функций модуль становится сложным, то рекомендуется переместить все эти специфические функции модуля в новый файл «locallib.php». Это помогает сэкономить память при выполнении действий системой Moodle.
mod_form.php — это файл, описывающий форму модуля.
README.txt — это файл, где описано, для чего нужен данный модуль.
version.php — это простой, но очень важный файл.
Он необходим потому, что Moodle выполняет большое количество действий в процессе установки модуля. Например, редактирование таблиц базы данных и загрузка возможностей. Если в процессе развития модуля необходимо изменить структуру таблиц модуля или нужно редактировать возможности, имеющиеся у модуля, необходимо обновить версию Moodle.
view.php — это первый исполняемый код модуля. При выборе ссылки на данный модуль, выполняется код / view.php.
1.5 Разработка структурной схемы экспертной системы
В системах, основанных на знаниях, правила (или эвристики), по которым решаются проблемы в конкретной предметной области, хранятся в базе знаний. Проблемы ставятся перед системой в виде совокупности фактов, описывающих некоторую ситуацию, и система с помощью базы знаний пытается вывести заключение из этих фактов.
Эвристики представляют собой правила вывода, которые позволяют находить решения по известным фактам. Обобщенная схема функционирования системы, основанной на знаниях, представлена на рисунке 1.
Рисунок 1 — Обобщенная схема функционирования системы, основанной на знаниях В общем случае знания в такой системе разделяются на три типа:
1. Декларативные знания (факты). Этот вид знаний представляет собой факты о конкретных ситуациях. Такие факты могут быть описаны заранее и включены в базу знаний на этапе создания экспертной системы. К декларативным знаниям можно отнести факты, которые собираются в процессе диалога с пользователем непосредственно во время работы экспертной системы. Структура представления данного вида информации, а также способы ее обработки (считывание, модификация) имеет важное значение для организации всех модулей экспертной системы.
2. Процедурные знания (правила). Обычно эти знания собираются заранее путем опроса экспертов в конкретной предметной области и составляют ядро базы знаний. На их основе строится механизм логического вывода. Процедурные знания непосредственно связаны с декларативными, позволяют обрабатывать имеющиеся в базе знаний факты, а при необходимости генерировать новые факты.
3. Управляющие знания. В экспертной системе должен быть предусмотрен некоторый набор стратегий, чтобы можно было рассматривать альтернативные возможности получения вывода во время работы, то есть переходить при неудаче от одной стратегии к другой. Управляющие знания определяют, какие из процедурных правил следует использовать для получения вывода. По существу данные знания составляют основу механизма логического вывода.
Структура экспертной системы представлена на рисунке 2.
Рисунок 2 — Структура экспертной системы Механизм логического вывода (МЛВ) выполняет следующие функции:
— формирование и обработка активных фактов конкретной ситуации;
— определение порядка выбора и применения фактов и правил.
МЛВ можно представить в виде четырех последовательных процессов:
— выбор активных правил и фактов;
— сопоставление (определяется какие правила выполнять в первую очередь);
— разрешение конфликтов;
— выполнение выбранного означенного правила (действие).
Интерфейс с пользователем отвечает за обмен информацией между пользователем и экспертной системой.
Экспертная система может быть ориентирована на разные типы пользователей. Но независимо от того, является ли пользователь специалистом или нет, всех их объединяет следующее: языком общения является ограниченный естественный язык, а не формальный язык программирования.
Экспертная система должна уметь объяснять свое поведение и свои решения пользователю так же, как это делает эксперт-человек. Без механизма объяснений пользователь не доверяет полученным результатам, и экспертная система не будет иметь спроса.
Назначение модуля объяснений — сделать экспертную систему «прозрачной» для пользователя, то есть предоставить пользователю возможность понимать логику действий экспертной системы, дать надежную гарантию правильности полученных результатов.
Модуль накопления (МН) является сервисным модулем, выполняющим различные вспомогательные функции. Как правило, добавление знаний осуществляется в дискретные интервалы времени в процессе эксплуатации системы. Естественно, что добавление знаний предполагает добавление «новых» знаний. К ним относятся знания, полученные на основе сообщений по особенностям эксплуатации системы.
На начальных этапах эксплуатации системы такие знания отсутствуют. Кроме того, новые знания представляются как результат развития данного научного направления. Постоянное пополнение новыми знаниями делают систему стабильной.
В противном случае, знания, которыми обладает система, устаревают, теряется их актуальность и система не способна решать новые задачи.
На рисунке 3 представлена структура разрабатываемой экспертной системы.
Рисунок 3 — Структура экспертной системы для построения компонентов в системе Moodle.
В базе знаний построения компонентов будут представлены правила программирования модулей для системы Moodle.
База знаний фактов и правил будет представлять собой структуру, где каждому ответу будет соответствовать фрагмент кода будущего модуля.
Модуль накопления позволит модифицировать знания во время создания и последующей эксплуатации экспертной системы.
Механизм логического вывода на основе ответов о будущем модуле сможет вывести структуру будущего кода.
1.6 Выбор программных средств для реализации экспертной системы
Для установки системы Moodle необходим веб-сервер, а также сервер баз данных. Наиболее популярным веб-сервером является Apache, а MySQL, в свою очередь, одним из распространенных серверов баз данных.
MySQL характеризуется большой скоростью, устойчивостью и лёгкостью в использовании, является решением для малых и средних приложений. Это одна из самых быстрых СУБД на сегодняшний день. Высокая скорость обработки запросов привела к тому, что эта база данных стала стандартом в услугах сетевого хостинга. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Поэтому управление знаниями, необходимыми для построения компонентов в системе Moodle, будет осуществляться с помощью базы данных в MySQL.
MySQL имеет API для языков Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и Tcl.
Для разработки экспертной системы необходим такой язык программирования, который поможет быстро и эффективно решить поставленные задачи.
1.6.1 Perl
Perl — это высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию. Название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language — «практический язык для извлечения данных и составления отчётов». Основной особенностью языка считаются его богатые возможности для работы с текстом, в том числе работа с регулярными выражениями, встроенная в синтаксис. Перл унаследовал много свойств от языков Си, AWK, скриптовых языков командных оболочек UNIX.
Perl также знаменит огромной коллекцией дополнительных модулей CPAN.
Основной недостаток Perl — в том же, что составляет его достоинства. Он предоставляет полную свободу стиля и многовариантность реализации, а сложнейшие команды обработки текста записываются в одну строку, похожую на набор символов. Поэтому код, написанный одним программистом, трудно читаем или совершенно непонятен другим. В результате затруднена корпоративная разработка проектов и техническая поддержка кода.
Другим существенным недостатком является отсутствие синтаксиса для объектно-ориентированного программирования. Реализация инкапсуляции (скрытия данных и методов), наследования и полиморфизма (перегрузки) осуществляется на уровне модулей, однако это ограничивает гибкость применения объектно-ориентированного подхода[4].
1.6.2 Delphi
Delphi — это императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями развития языков программирования.
Простота, скорость и эффективность Delphi объясняют его популярность. Delphi имеет один из самых быстрых компиляторов, порождающий, тем не менее, весьма и весьма неплохой объектный код. Есть и другие достоинства: облегчающие жизнь нововведения — вроде свойств; программы, написанные на Delphi, не требуется снабжать дополнительными библиотеками.
Но всё же данный язык программирования имеет ряд недостатков. Главный недостаток — статическое присоединение библиотеки VCL и компонентов к исполняемому файлу. Другой недостаток состоит в том, что в используемой в Delphi парадигме форм вся информация о форме, включая свойства, настройки компонентов, значения по умолчанию, хранится в exe-файле, причем не оптимальным образом. Кроме того, Delphi имеет малое число параметров оптимизации кода[5].
1.6.3 Python
Python является интерпретируемым, изначально объектно-ориентированным языком программирования. Он чрезвычайно прост и содержит небольшое число ключевых слов, вместе с тем очень гибок и выразителен. Это язык более высокого уровня нежели Pascal, C++ и, естественно C, что достигается, в основном, за счет встроенных высокоуровневых структур данных.
Несомненным достоинством является то, что интерпретатор Python реализован практически на всех платформах и операционных системах.
Следующая немаловажная черта — расширяемость языка, этому придается большое значение, и язык был задуман именно как расширяемый.
Следующее достоинство — наличие большого числа подключаемых к программе модулей, обеспечивающих различные дополнительные возможности.
Но немаловажным недостатком данного языка является сравнительно невысокая скорость выполнения Python-программы, что обусловлено ее интерпретируемостью[6].
1.6.4 PHP: Hypertext Preprocessor
а) Традиционность. Код РНР очень похож на тот, который встречается в типичных программах на С или 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].
1.6.5 Сводная таблица сравнения языков программирования
В таблице 2 приведено сравнение основных характеристик рассмотренных языков программирования.
Таблица 2 — Сравнение языков программирования.
Параметры Язык. | Объектно-ориентированный. | Высокая скорость выполнения программы. | Бесплатная лицензия. | Расширяемость языка. | Простота изучения. | |
Perl. | ; | ; | ; | |||
Delphi. | ; | ; | ; | |||
Python. | ; | ; | ||||
PHP. | ||||||
После анализа полученных данных был выбран язык программирования PHP, как наиболее удовлетворяющий основным требованиям.
1.7 Создание базы знаний экспертной системы
База знаний экспертной системы представлена в виде трех таблиц в базе данных в phpMyAdmin. Таблица «polls» содержит вопросы экспертной системы, в таблице «answers» представлены варианты ответов на вопросы, а результаты выбранных ответов на вопросы, представляющие собой код, и комментарии к ним находятся в таблице «votes».
Все результаты ответов с комментариями записываются в соответствующие файлы: «db/install.xml», «db/upgrade.php», «index.php», «lang/en_utf8/help/newmodule/index.html», «lang/en_utf8/help/newmodule/mods.html», «lang/en_utf8/newmodule.php», «lib.php», «mod_form.php», «README.txt», «version.php», «view.php».
После окончания работы с экспертной системой все эти файлы помещаются в архив.
Схема базы данных представлена на рисунке 4.
Рисунок 4 — База данных экспертной системы.
1.8 Разработка дерева вопросов
Исходя из проведенного анализа особенностей построения модулей в системе Moodle, было разработано дерево вопросов для экспертной системы.
Всего в системе 35 вопросов. На рисунке 5 представлена часть этого дерева — 16 вопросов. Вопросы сгруппированы таким образом, что ответы на вопросы определенной группы заносятся в соответствующий ей файл.
Рисунок 5 — Дерево вопросов экспертной системы.
1.9 Выбор модели представления знаний
Существуют три часто используемых моделей представления знаний.
а) Представление знаний в виде семантических сетей.
Семантические сети — способ представления знания, объединяющий в себе свойства функциональных сетей и сценариев. В функциональных сетях дуги отражают свойства вершин, из которых они выходят (вершины — понятия) с использованием вершин (понятий), в которые они входят. Сценарий представляется некоторой сетью, где вершины — понятия, а дуги — связи описывающие отношения специального типа. По сути, семантические сети представляют собой граф.
Данная модель представления знаний наиболее подходит для решения таких задач, где имеется большой объем хорошо структурированных знаний, отражающих причинно-следственные и функциональные отношения между понятиями в терминах функциональных законов, действующих в предметной области.
б) Представление знаний в виде фреймов.
Фреймы — это формализм для описания структурированных занятий, причем такой, что удаление из описания любой его части приводит к потере определяющих суть данного понятия свойств. Также фреймом называется структура данных для представления некоторого концептуального объекта. Фрейм имеет имя, служащее для идентификации описываемого им понятия, и содержит ряд описаний — слотов, с помощью которых определяются основные структурные элементы этого понятия. За слотами следуют шпации, в которые помещают данные, представляющие текущие значения слотов. Слот может содержать не только конкретное значение, но также имя процедуры, позволяющей вычислить это значение по заданному алгоритму.
в) Представление знаний в виде системы продукций.
В этой модели знания представляются в виде совокупности правил типа «ЕСЛИ — ТО». Любое продукционное правило, содержащееся в БЗ, состоит из двух частей: антецедента и консеквента. Антецедент представляет собой посылку правила (условную часть) и состоит из элементарных предложений, соединенных логическими связками И, ИЛИ. Консеквент (заключение) включает одно или несколько предложений, которые выражают либо некоторый факт, либо указание на определенное действие, подлежащее исполнению. Экспертные системы, основанные на продукционной модели, не располагают процедурами, которые могли бы построить в пространстве состояний сразу весь путь решения задачи. Траектория поиска решения полностью определяется данными, получаемыми от пользователя в процессе логического вывода.
В таблице 3 представлено сравнение данных моделей с учетом особенностей предметной области, которые являются критериями сравнения.
Таблица 3 — Сравнение моделей представления знаний.
Характеристики предметной области Модели представления знаний. | Небольшой объем знаний. | Слабо-формализованные знания. | Высокая степень детализации знаний. | Независимость отдельных элементов знаний. | |
Семантические сети. | ; | ; | ; | ||
Фреймы. | ; | ; | ; | ||
Система продукций. | |||||
На основе анализа предметной области и моделей представления знаний можно сделать следующие выводы:
— для использования модели представления знаний в виде семантических сетей требуется большой объем структурированных данных, чего не хватает в выбранной предметной области;
— для использования фреймового подхода нужна формализация знаний большого объема, в котором достаточно четко выделена и систематизирована понятийная структура, что не содержится в предметной области;
— продукционная модель предусматривает высокую степень детализации знаний, независимость отдельных элементов знаний друг от друга, а также данная модель применяется в областях со слабоформализованными знаниями, поэтому она наибольшим образом подходит для реализации экспертной системы для автоматизации построения компонентов в системе Moodle.
1.10 Выбор алгоритма поиска решений
Основные стратегии поиска решений в продукционных системах:
а) Стратегия поиска в глубину, когда при выборе очередной подцели в процессе обратного вывода предпочтение всегда, когда возможно, отдается той, которая соответствует следующему, более детальному уровню описания задачи.
б) Стратегия поиска в ширину, когда сначала анализируются все факты, находящиеся на одном уровне пространства состояний задачи, даже если они относятся к разным целям (подцелям), и только после этого происходит переход к поиску фактов следующего уровня.
Механизм вывода выполняет две основные функции:
— просмотр существующих в рабочей памяти (РП) фактов и правил из базы правил, а также добавление в РП новых фактов;
— определение порядка просмотра и применения правил.
Различают прямой и обратный порядок вывода.
Прямой поиск осуществляется от фактов к заключениям. В экспертных системах с прямыми выводами по известным фактам отыскивается заключение, которое из этих фактов следует. Если такое заключение удается найти, оно заносится в рабочую память. Прямые выводы часто применяются в системах диагностики, их называют выводами, управляемыми данными.
Обратный порядок вывода осуществляется от заключений к фактам. В системах с обратным выводом вначале выдвигается некоторая гипотеза о конечном суждении, а затем механизм вывода пытается найти в рабочей памяти факты, которые могли бы подтвердить или опровергнуть выдвинутую гипотезу. Процесс отыскания необходимых фактов может включать достаточно большое число шагов, при этом возможно выдвижение новых гипотез.
Для решения поставленной задачи выбрана стратегия поиска в ширину с прямым порядком вывода, чтобы можно было обеспечить наиболее полное представление о создаваемом модуле и на основе этого вывести соответствующий код.
1.11 Оценка эффективности системы
moodle база знание экспертный.
До разработки экспертной системы процесс создания модуля для системы Moodle был не автоматизирован. Перед начинающими разработчиками возникала проблема отсутствия знаний для дальнейшей разработки модулей в системе Moodle. Поэтому на поиск, изучение правил построения компонентов модуля разработчику требовалось большое количество времени.
Разработанная система для автоматизации построения компонентов позволяет сократить время на создание нового модуля, сохраняя полученные в процессе работы экспертной системы необходимые файлы в архиве.
На этапе исследования предметной области среди разработчиков Moodle был проведен опрос на тему «Стали бы Вы использовать экспертную систему для автоматизации построения компонентов в системе Moodle?».
Всего были опрошены сто человек. Результат опроса представлен на рисунке 6.
Рисунок 6 — Опрос об использовании экспертной системы.
Как показал опрос, большинству разработчиков пригодилась бы экспертная система для создания модуля.
2. Экономическая часть.
В разработке проекта участвуют разработчик и руководитель. Весь проект начинается с исследования предметной области. После исследования предметной области и установки необходимого программного обеспечения начинается работа над базой знаний. На следующем этапе разрабатывается экспертная система, которая позволит извлекать нужные знания из базы знаний. Вся эта работа исполняется разработчиком. Окончанием всего проекта является этап приемо-сдаточных работ, где задействован только руководитель проекта. При этом в обязанности руководителя проекта так же входит контроль протекания процесса разработки системы.
В таблице 4 приведен календарный план работ всего проекта: начало проекта — март 2012 года, расчетный период — 3 месяца, шаг временной шкалы — 1 день/клетку.
Таблица 4 — Календарный план.
2.1 Расчет стоимости разработки экспертной системы
Расчет расходов на оплату труда проектной группы по формуле (1):
Зот пр = ?Qi * Ki * (1 + Kнч) (1),.
где i — индекс профессиональной группы, занятой в разработке проекта.
Разработку экспертной системы осуществляет разработчик. Руководитель проекта контролирует выполнение работ на каждом этапе.
i = 2;
Qi — суммарная трудоемкость работ, выполняемых исполнителями i-ой профессиональной группы, чел.-дни;
рассчитывается по формуле (2):
Qi = Ki * ?Ti (2),.
где К — количество людей в профессиональной группе, чел.;
Т — время, которое работает профессиональная группа, дни.
Q1 (Разработчик) = 1 * (7 + 3 + 30 + 36 + 3) = 79 (чел.-дней);
Q2 (Руководитель) = 1 * (5 + 3) = 8 (чел.-дней);
Ki — стоимость оплаты одного рабочего дня, руб.
К1 = 1000 руб.;
К2 = 1500 руб.;
Kнч — коэффициент отчислений по страховым взносам в соответствии с нормативом, определенным действующим федеральным законом Российской Федерации от 24 июля 2009 г. N 212-ФЗ «О страховых взносах в Пенсионный фонд Российской Федерации, Фонд социального страхования Российской Федерации, Федеральный фонд обязательного медицинского страхования и территориальные фонды обязательного медицинского страхования». Страховые отчисления составляют 30,2%;
Kнч = 0, 302.
Для расчета Зот пр удобно использовать таблицу 5.
Таблица 5 — Расчет затрат на оплату труда проектной группы Для данного дипломного проекта единовременные затраты будут складываться из затрат по оплате труда проектной группы, аренды компьютера, оплаты коммунальных услуг и интернета, и будут рассчитываться по формуле (3).
Кд = Зот пр + Ак + Зк + Зи + Зб + Пр (3),.
где Зот пр - затраты по оплате труда проектной группы;
Ак — стоимость аренды компьютера;
Зк — расходы на оплату коммунальных услуг;
Зи — оплата интернета;
Зб — затраты по оплате труда бухгалтера;
Пр — прочие расходы.
Для разработки экспертной системы из оборудования потребуется персональный компьютер, имеющий выход в интернет. Сама разработка системы занимает приблизительно 3 месяца.
Для экономии денежных средств было решено взять оборудование в аренду. Мониторинг информации о стоимости аренды данного оборудования показал, что средняя стоимость аренды компьютера составляет 3300 рублей в месяц.
Затраты на коммунальные услуги составляют 1500 рублей в месяц, а на интернет — 1000 рублей.
Для начисления заработной платы проектной группе и перечисления страховых взносов, необходимо воспользоваться услугами бухгалтера. Заработная плата бухгалтера составляет 18 000 руб. в месяц, т. е. приблизительно 900 руб. в день. Услуги бухгалтера понадобятся лишь в последние 5 дней каждого месяца, исходя из этого можно рассчитать затраты на бухгалтерские услуги, которые приведены в таблице 6.
Таблица 6 — Затраты на услуги бухгалтера Таким образом, Зб = 17 577 руб.
Для удобства расчетов все единовременные затраты за 3 месяца приведены в таблице 7.
Таблица 7 — Единовременные затраты Таким образом, сумма всех затрат по формуле (3):
Кд = 156 459 руб.
Процесс внедрения разработки является очень сложной задачей. На этом этапе неминуемы риски связанные с развертыванием разработки, поэтому всегда следует закладывать процент на их ликвидацию или минимизацию. Общая практика показывает, что оптимальной ставкой выделяемой на сглаживание рисков является 20% от общей стоимости проекта.
Общая стоимость проекта составляет 156 459 рублей, с учетом 20% - 187 751 рубль.
2.2 Расчет экономического эффекта экспертной системы
Главной целью разработанной экспертной системы является сокращение временных затрат на построение программных компонентов.
Экономический эффект экспертной системы состоит в уменьшении времени на разработку модуля системы Moodle. Если раньше на выполнение поставленной задачи программист затрачивал до 6 часов в день, то с применением данной программы время сократится до 2 часов. По этим данным далее будут сравниваться два подхода — базисный и предлагаемый.
При базисном подходе программист разрабатывает будущий модуль без помощи экспертной системы. Т. е. при необходимости ищет в интернет-ресурсах правила написания программных компонентов. При предлагаемом подходе разработка будет происходить с использованием экспертной системы.
Расчет годовой трудоемкости при базисном подходе по формуле (4):
Tб = ?Qi * Bi * Ki * 12 (4),.
где i — индекс профессиональной группы, занятой в разработке будущего модуля,.
i = 1.
Qi — численность персонала i-ой профессиональной группы. Численность составляет 5 человек;
Q1 = 5 чел.;
Bi — месячный фонд рабочего времени работника i-ой группы в часах;
B1 = 160 часов (8 часов * 5 дней * 4 недели = 160 часов — четыре недели по 5 рабочих дней в неделю и восемь часов работы в день).
Ki — доля рабочего времени в годовом фонде рабочего времени, затрачиваемая работником i-ой профессиональной группы;
K1 = 0, 75 (четыре недели по 5 рабочих дней в неделю и 6 часов работы в день; 120 часов / 160 часов = 0, 75).
Tб = 5 * 160 * 0, 75 * 12 = 7 200 чел. — часов.
Годовая трудоемкость при предлагаемом подходе так же будет рассчитана по формуле (5):
Tп = ?Qi * Bi * Ki * 12 (5),.
где i = 1 проф. группа;
Q1 = 5 чел.;
B1 = 160 часов;
K1 = 0,25 (четыре недели по 5 рабочих дней в неделю и 2 часа работы в день; 40 часов / 160 часов = 0,25).
Тп = 5* 160 * 0,25 * 12 = 2 400 чел. — часов.
Себестоимость построения программных компонентов без экспертной системы за год рассчитывается по формуле (6):
Cб = ?Qi * Oкп i * (1 + Кнч) * Кi * 12 (6),.
где i — индекс профессиональной группы, занятой в построении компонентов;
i = 1;
Qi — численность персонала i-ой профессиональной группы;
Q1 = 5 чел.;
Кi — доля рабочего времени, затрачиваемая работником i-ой профессиональной группы на построение компонентов модуля;
K1 = 0,75 (четыре недели по 5 рабочих дней в неделю и 6 часов работы в день; 120 часов / 160 часов = 0,75);
О кп i — месячный оклад персонала i-ой профессиональной группы в рублях;
О кп 1 = 15 000 руб.;
Кнч — коэффициент отчислений по страховым взносам в соответствии с нормативом, определенным действующим законодательством;
Кнч = 0,302.
Cб = 5 * 15 000 * (1 + 0,302) * 0,75 * 12 = 878 850 руб.
Себестоимость автоматизированного построения программных компонентов за год рассчитывается по формуле (7):
Cп = ?Qi * Oкп i * (1 + Кнч) * Кi * 12 (7),.
где i = 1;
Q1 = 5 чел.;
K1 = 0,25;
О кп 1 = 15 000 руб.;
Кнч = 0,302.
Cп = 5 * 15 000 * (1 + 0,302) * 0,25 * 12 = 292 950 руб.
Абсолютный показатель изменения годовой трудоемкости в результате внедрения проекта рассчитывается по формуле (8):
?Т = Тб — Тп (8),.
где Тб — годовая трудоемкость при базисной технологии;
Тп — годовая трудоемкость при предлагаемой автоматизированной технологии разработки программных компонентов.
?Т = 7 200 — 2 400 = 4 800 часов.
Абсолютный показатель изменения годовых затрат в результате внедрения проекта рассчитывается по формуле (9):
?С = Сб — Сп (9),.
где Сб — годовые затраты по базисной технологии;
Сп — годовые затраты по предлагаемой автоматизированной технологии разработки программных компонентов.
?С = 878 850 руб. — 292 950 руб. = 585 900 руб.
Коэффициент изменения трудовых затрат рассчитывается по формуле (10):
Кт = (?Т/ Тб) * 100% (10).
Кт = 4 800 / 7 200 * 100% = 67%.
Коэффициент изменения стоимостных затрат рассчитывается по формуле (11):
Кс = (?С/Сб) * 100% (11).
Кс = 585 900 / 878 850 * 100% = 67%.
Индекс изменения трудовых затрат характеризует рост производительности труда за счет применения экспертной системы, его можно определить по формуле (12):
Iт = Тб/Тп (12).
Iт = 7 200 / 2 400 = 3.
Индекс изменения стоимостных затрат рассчитывается по формуле (13):
Iс = Сб/ Сп (13).
Iс = 878 850 / 292 950 = 3.
Расчетный коэффициент эффективности единовременных затрат на разработку и внедрение проекта выводится из формулы (14):
Ер = ?С / Кд (14).
Ер = 585 900 руб. / 156 459 руб. = 3,7.
Срок окупаемости единовременных затрат на разработку и внедрение проекта рассчитывается по формуле (15):
Ток = Кд / ?С (15).
Ток = 156 459 руб. / 585 900 руб. = 0,3.