Автор работы: Пользователь скрыл имя, 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
Под угрозой обычно понимают потенциально возможное событие, процесс или явление, которое может привести к нанесению ущерба чьим-либо интересам.
Угроза интересам субъектов информационных отношений означает потенциально возможное событие, процесс или явление, которое посредством воздействия на информацию, ее носители и процессы обработки может прямо или косвенно привести к нанесению ущерба интересам данных субъектов.
Нарушением безопасности является реализация угрозы безопасности.
Существует значительное число различных видов угроз безопасности субъектов информационных отношений.
Все множество потенциальных угроз по природе их возникновения разделяется на два класса: естественные (объективные) и искусственные (субъективные).
Естественные угрозы – угрозы, вызванные воздействиями на экспертные системы и ее элементы объективных физических процессов или стихийных природных явлений, независящих от человека.
Искусственные угрозы – угрозы экспертным системам, вызванные деятельностью человека. Среди них, исходя из мотивации действий, можно выделить:
непреднамеренные (неумышленные, случайные) угрозы, вызванные ошибками в проектировании системы и ее элементов, ошибками в программном обеспечении, ошибками в действиях персонала и т.п.;
преднамеренные (умышленные) угрозы, связанные с корыстными, идейными или иными устремлениями людей (злоумышленников).
Источники угроз по отношению к экспертной системе могут быть внешними или внутренними. Основными источниками угроз безопасности экспертных систем и информации являются:
- стихийные бедствия и аварии (наводнение, ураган, землетрясение, пожар и т.п.);
- сбои и отказы оборудования (технических средств) систем;
- ошибки проектирования и разработки компонентов экспертных систем (аппаратных средств, технологии обработки информации, программ, структур данных и т.п.);
- ошибки эксплуатации (пользователей, операторов и другого персонала);
- преднамеренные действия нарушителей и злоумышленников (обиженных лиц из числа персонала, преступников, шпионов, диверсантов и т.п.).
Для выбора средств защиты информации был проведен анализ источников угроз, в результате которого определена вероятность наступления угроз. Анализ вероятности возникновения угроз представлен в таблице 10.
Таблица 10 – Анализ вероятности возникновения угроз
Источник угроз |
Вероятность возникновения |
Опасность реализации угрозы |
Сбои и отказы оборудования |
низкая |
средняя |
Ошибки проектирования и разработки компонентов экспертной системы |
средняя |
низкая |
Стихийные бедствия и аварии |
маловероятно |
высокая |
Несанкционированный доступ |
высокая |
средняя |
Ошибки эксплуатации |
средняя |
низкая |
Исходя из анализа вероятности
возникновения угроз и
Одной из важных задах обеспечения информационной безопасности при взаимодействии пользователей является использование методов и средств, позволяющих одной стороне убедится в подлинности другой стороны. Обычно для решения данной проблемы применяются специальные приемы, дающие возможность проверить подлинность проверяемой стороны. К этим приемам относятся идентификация и аутентификация.
Идентификация – процедура распознавания пользователя по его идентификатору. Эта функция выполняется, когда пользователь делает попытку войти в программу. Пользователь сообщает программе по ее запросу свой идентификатор, и система проверяет в своей базе данных его наличие.
Аутентификация – процедура проверки подлинности пользователя, процесса или устройства. Эта проверка позволяет достоверно убедиться, что пользователь является именно тем, кем себя объявляет. При проведении аутентификации проверяющая сторона убеждается в подлинности проверяемой стороны, при этом проверяемая сторона тоже активно участвует в процессе обмена информацией. Обычно пользователь подтверждает свою идентификацию, вводя в систему уникальную, не известную другим пользователям информацию о себе.
Идентификация и аутентификация являются взаимосвязанными процессами распознавания и проверки подлинности субъектов. Именно от них зависит последующее решение системы: можно ли разрешить доступ к ресурсам системы конкретному пользователю или процессу. После идентификации и аутентификации субъекта выполняется его авторизация.
Процедуру аутентификации пользователя можно представить следующим образом. Пользователь при попытке логического входа в сеть набирает свой идентификатор и пароль. Эти данные поступают для обработки на сервер аутентификации, по идентификатору пользователя находится соответствующая запись. Из нее извлекается пароль и сравнивается с тем паролем, который ввел пользователь. Если они совпали, то аутентификация прошла успешно – пользователь получает легальный статус и получает те права и ресурсы сети, которые определены для его статуса системой авторизации.
Существует три основных типа аутентификации:
Сравнение данных типов аутентификации приводится в таблице 11.
Таблица 11 – Сравнение типов аутентификации
Критерии сравнения
Типы аутентификации |
Небольшая стоимость |
Применение без дополнительных устройств |
Простота использования |
Парольная |
+ |
+ |
+ |
Электронный ключ |
+ |
- |
- |
Биометрическая |
- |
- |
+ |
Сравнение типов аутентификации показало,
что парольная аутентификация является
недорогим и простым в
При реализации дипломного проекта были выполнены следующие задачи:
В результате была достигнута цель проекта: уменьшились временные затраты на создание компонентов засчет сокращения трудовых затрат на создание модуля в системе Moodle на 67%.
Экспертная система содержит в себе знания, необходимые для построения типового модуля системы Moodle, интерфейс системы построен для специалиста, плохо знакомого с особенностями построения модулей, а результатом работы системы является архив файлов, необходимых для работы модуля.
Исходный код программы
<?php
require_once "config.php";
@mysql_connect ($server, $user,$pswd) or
die("Не могу подключиться к БД");
@mysql_select_db($db) or die ("Не могу выбрать БД");
if (!$_GET['end']){
if (!$_GET['go']){
$q = "SELECT polls.question, answers.answer, answers.answer_ID
FROM polls, answers
WHERE polls.ID = 1
AND answers.ID = polls.ID";
$r = mysql_query($q) or die(mysql_error());
$questions = "";
while($row = mysql_fetch_array($r)) {
$question = $row['question'];
$questions .= ' <input name="answer" type="radio" value="'
.
$row['answer_ID'] . '"> ' . $row['answer'];
}
$poll = 2;
echo"<table width=50% height=50% border=1 align= center><tr>";
echo"<td><img src= moodle.jpg align=center width=250 height=100>";
echo "<h1><center>$question<center>
echo "<form action method=get>";
echo "<p><center><ul style=\"list-style-type: none;\">
$questions</center></ul>";
echo "<input name=poll type=hidden value=$poll>
<center><input type=submit value=\"Далее\" name='go'></center>
</form>";
echo"</td></tr></table>";
}else{
$poll = $_GET['poll'];
$answer = $_GET['answer'];
$check_otv = $poll -1 ;
$q = "SELECT otv
FROM answers
where ID=$check_otv AND answer_ID=$answer";
$r = @mysql_query($q) or die (mysql_error());
$myrow = mysql_fetch_array($r);
$otv = $myrow["otv"];
if ($otv == 1){
$ques = "SELECT otvet,com
FROM votes
WHERE votes.ID = $check_otv AND answer_ID = $answer";
$res = @mysql_query($ques) or die (mysql_error());
$row = mysql_fetch_array($res);
$otvet = $row["otvet"];
$com=$row["com"];
if($poll<=3){
$file = "db/access.php";
file_put_contents($file, $otvet."\n",FILE_APPEND);
file_put_contents($file, $com."\n",FILE_APPEND);
}elseif($poll>=3 && $poll<=6){
$file = "db/install.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=6 && $poll<=7){
$file = "db/install.xml";
file_put_contents($file, $otvet."\n",FILE_APPEND);
file_put_contents($file, $com."\n",FILE_APPEND);
}elseif($poll>=7 && $poll<=8){
$file = "db/log.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=8 && $poll<=10){
$file = "db/uninstall.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=10 && $poll<=15){
$file = "db/upgrade.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=15 && $poll<=16){
$file = "lang/en/newmodule.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=16 && $poll<=17){
$file = "README.txt";
file_put_contents($file, $otvet."\n",FILE_APPEND);
file_put_contents($file, $com."\n",FILE_APPEND);
}elseif($poll>=17 && $poll<=18){
$file = "index.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=18 && $poll<=31){
$file = "lib.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=31 && $poll<=32){
$file = "locallib.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=32 && $poll<=33){
$file = "mod_form.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=33 && $poll<=34){
$file = "version.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}elseif($poll>=34 && $poll<=35){
$file = "view.php";
file_put_contents($file, $com."\n",FILE_APPEND);
file_put_contents($file, $otvet."\n",FILE_APPEND);
}
$q = "SELECT polls.question, answers.answer, answers.answer_ID
FROM polls, answers
WHERE polls.ID = $poll
AND answers.ID = polls.ID";
$r = mysql_query($q) or die(mysql_error());
$questions = "";
while($row = mysql_fetch_array($r)) {
$question = $row['question'];
$questions .= ' <input name="answer" type="radio" value="'
.
$row['answer_ID'] . '"> ' . $row['answer'];
}
$poll = $poll + 1;
echo"<table width=50% height=50% border=1 align= center><tr>";
echo"<td><img src= moodle.jpg align=center width=250 height=100>";
echo "<h1><center>$question<center>
echo "<form action method=get>";
echo "<p><center><ul style=\"list-style-type: none;\">
$questions</center></ul>";
$q = "SELECT polls.question, answers.answer, answers.answer_ID
FROM polls, answers
WHERE polls.ID = $poll
AND answers.ID = polls.ID";
$r = mysql_query($q) or die(mysql_error());
$number = mysql_num_rows($r);
if ($number == 0){
echo "<input name=poll type=hidden value=$poll>
<center><input type=submit value=\"Готово\" name ='end'></center>
</form>";
echo "<form action=add.php method=post>
<center><input type=submit value =\"Добавить вопрос\" name='adds'></center>
</form>";
echo"</td></tr></table>";
}else{
echo "<input name=poll type=hidden value=$poll>
<center><input type=submit value=\"Далее\" name='go'></center>
</form>";
echo"</td></tr></table>";
}
}
else{
$ques = "SELECT otvet, com
FROM votes
WHERE votes.ID = $poll AND answer_ID = $answer";
$res = @mysql_query($ques) or die (mysql_error());
$row = mysql_fetch_array($res);
$otvet = $row["otvet"];
$com=$row["com"];
$q = "SELECT polls.question, answers.answer, answers.answer_ID
FROM polls, answers
WHERE polls.ID = $poll
AND answers.ID = polls.ID";
$r = mysql_query($q) or die(mysql_error());
$questions = "";
while($row = mysql_fetch_array($r)) {
$question = $row['question'];
$questions .= ' <input name="answer" type="radio" value="'
.
$row['answer_ID'] . '"> ' . $row['answer'];
}
$poll = $poll + 1;
echo"<table width=50% height=50% border=1 align= center><tr>";
Информация о работе Экспертная система для автоматизации построения компонентов системы Moodle