Отчёт о практике

Автор работы: Пользователь скрыл имя, 01 Декабря 2013 в 19:13, отчет по практике

Краткое описание

Система дистанционного обучения (СДО) JoomlaLMS — высокотехнологичное программное обеспечение для организации дистанционного обучения в учреждениях образования и на предприятиях, для тестирования и оценки персонала. Возможности и функционал системы обновляются в соответствии с современным требованиям к программному обеспечению для образования.
Система управления обучением JoomlaLMS — это совокупность мощных инструментов для организации онлайн обучения и тестирования, основанная на системе управления контентом с открытым кодом Joomla! CMS. Это комплексная система дистанционного обучения (CДО) с инновационными приложениями для создания курсов, учебного материала, контроля успеваемости и проведения онлайн вебинаров и конференций.

Прикрепленные файлы: 1 файл

Soderzhanie.docx

— 450.45 Кб (Скачать документ)

 

Для передачи пакетов по сети (например, для загрузки в систему управления обучением) спецификация SCORM CAM предписывает помещать содержимое пакета в zip-архив. Файл imsmanifest.xml должен располагаться в корне архива. Остальные файлы пакета должны располагаться так, как указано их расположение в элементах file в содержимом манифеста. Например, в случае приведённого ранее кода манифеста файл sco.htm должен располагаться на том же уровне, где и imsmanifest.xml, то есть в корне архива. А если бы в манифесте было прописано <file href="folder1\sco.htm" />, файл sco.htm должен был бы располагаться в папке folder1 в архиве.

Вторая модель, которая реализуется для поддержки стандарта SCORM, это среда выполнения (Run-Time Environment, RTE).

Эта часть стандарта описывает  взаимодействие SCO и системы управления обучением (англ. Learning Management System, LMS) через программный интерфейс приложения (Application Program Interface, API). Требования SCORM RTE позволяют обеспечить совместимость SCO и LMS, чтобы каждая система дистанционного обучения могла взаимодействовать со SCO таким же образом, как и любая другая, соответствующая стандарту SCORM. LMS должна обеспечивать доставку требуемых ресурсов пользователю, запуск SCO, отслеживание и обработку информации о действиях учащегося, передачу SCO-объекту запрашиваемых данных и сохранение получаемых.

Взаимодействие осуществляется через  объект API_1484_11, располагающийся в  одном из родительских окон браузера по отношению к окну учебного объекта. Учебный объект должен быть запущен  либо во фрейме (iframe) на странице системы управления обучением, либо во всплывающем окне (посредством javascript-вызова window.open). В начале своей работы SCO-объект должен найти объект API_1484_11 в одном из родительских окон, применив для этого алгоритм перебора родительских окон (SCORM API Discovery Algorithm), а затем вызвать метод Initialize("") этого объекта.

После успешной инициализации SCO может  запрашивать у системы данные посредством метода GetValue(«название_элемента_данных») или посылать данные в систему посредством метода SetValue(«название_элемента_данных», «значение»). Возможные элементы данных и их допустимые значения перечислены в спецификации. Для принудительного сохранения данных, отправленных в систему, SCO-объект должен вызвать метод Commit("").

Также API позволяет отслеживать SCO-объекту  возможные ошибки, возникающие в  процессе взаимодействия, посредством  методов GetLastError, GetErrorString и GetDiagnostic.

В конце своей работы SCO должен вызвать  метод Terminate(""), тем самым сообщив системе, что работа с ним закончена и его можно закрывать (или переходить к следующему объекту).

Пример простейшего SCO: (данная html-страница запрашивает у системы управления обучением имя учащегося, который её открыл).

Третья модель - упорядочение и навигация (Sequencing and Navigation, SN).

Эта часть стандарта  описывает, как должна быть организована навигация и предоставление компонентов  учебного материала в зависимости  от действий учащегося. Требования SCORM SN позволяют преподносить учащемуся  материал в соответствии с индивидуальными  особенностями.

Четвёртая модель - Требования соответствия (Conformance Requirements). Эта часть содержит полный список требований на соответствие стандарту SCORM, проверяемых ADL. Система управления обучением или редактор учебных материалов может получить от ADL сертификат о соответствии требованиям SCORM, если он функционирует в соответствии с этими указаниями.

Для того, чтобы иметь возможность загрузить созданный по стандарту SCORM курс в СДО была разработана форма загрузки, представленная на рисунке 3.1. Данная форма позволяет также настраивать рахличные параметры для загружаемого курса, такие как режим отображения, размер отображения и прочее

Рисунок 3.1 – Форма загрузки SCORM-пакета

 

После успешной загрузки SCORM-пакета, должен отображаться список всех загруженных пакетов с указанием в виде иконки их типа, как представлено на рисунке 3.2.

Рисунок 3.2 – Список всех загруженных SCORM – пакетов

 

При запуске  и выполнении SCORM-пакета, он должен корректно отображаться в зависимости от выбранного реэима отображения. Пример выполнения SCORM-пакета представлен на рисунке 3.3.

Рисунок 3.3 – Пример выполнения SCORM-пакета

 

В администраторской  части сайта должна быть возможность  конфигурировать работу загрузчика SCORM-пакетов, в частности, указывать путь для загрузки файлов, расширения и прочее. Форма для такого конфигурирования на рисунке 3.4.

Рисунок 3.4 – Форма конфигурирования SCORM загрузчика

 

3.3 Размещение изменений в репозитории

При разработке поддержки стандарта SCORM для отслеживания версий и сохранения изменений использовалась распределённая система управления версиями GIT.

 

 

Имеется удалённый Git-репозиторий и рабочая копия файлов для проекта. Каждый файл в рабочем каталоге может находиться в одном из двух состояний: под версионным контролем (отслеживаемые) и нет (неотслеживаемые). Отслеживаемые файлы — это те файлы, которые были в последнем слепке состояния проекта; они могут быть неизменёнными, изменёнными или подготовленными к коммиту. Неотслеживаемые файлы — это всё остальное, любые файлы в рабочем каталоге, которые не входили в последний слепок состояния и не подготовлены к коммиту. Когда впервые клонируется репозиторий, все файлы будут отслеживаемыми и неизменёнными, потому что только были взяты из хранилища и изменения ещё не вносились.

Как только будут отредактированы файлы, Git будет рассматривать их как изменённые, т.к. были внесены изменения с момента последнего коммита. Сначала индексируются эти изменения и фиксируются все индексированные изменения, а затем цикл повторяется. Этот жизненный цикл изображён на рисунке 3.5.

Рисунок 3.5 - Жизненный цикл состояний файлов.

 

Для того, чтобы внести изменения на локале в репозиторий, необходимо выполнить несколько действий. Сначала необходимо. Проиндексировать изменения командой Git Commit, как это показано на рисунке 3.6.

 

Рисунок 3.6 – Индексирование изменений

 

Далее необходимо перенести эти изменения на серверное хранилище проекта. Это выполняется с помощью Git Push как показано на рисунке 3.7

Рисунок 3.7 – Перенос изменений на серверное  хранилище

 

ЗАКЛЮЧЕНИЕ

В результате прохождения практики были решены задачи, поставленные руководителем практики от предприятия СООО «Белитсофт Интернешнл»: разработка нового и доработка имеющегося функционала системы дистанционного обучения Joomla LMS. Разработанный функционал был спроектирован согласно техническому заданию, разработан, протестирован и размещён на сервере, а также серверном хранилище.

В ходе производственной практики были получены навыки по специальности  «Программное обеспечение информационных технологий» был повышен уровень как разработчика благодаря хорошим и ответственным руководителям на предприятии. Дружественная и тёплая атмосфера помогла быстро освоится на рабочем месте.

 

СПИСОК  ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

[1] Joomla.com [Электронный ресурс]. – Электронные данные. – Режим доступа: http://joomla.com

[2] Joomlalms.com [Электронный ресурс]. – Электронные данные. – Режим доступа: http://joomlalms.com

[3] Php.net [Электронный ресурс]. – Электронные данные. – Режим доступа: http://php.net

[4] Scorm.com [Электронный ресурс]. – Электронные данные. – Режим доступа: http://scorm.com

 

 

Приложение  А.

Исходный  код модуля загрузчика SCORM-пакетов

 

?php

require_once('../../config.php');

require_once($CFG->dirroot.'/mod/scorm/locallib.php');

 

$id    = optional_param('id', '', PARAM_INT);    // Course Module ID, or

$a     = optional_param('a', '', PARAM_INT);     // scorm ID

$scoid = required_param('scoid', PARAM_INT);     // sco ID

 

$delayseconds = 2;  // Delay time before sco launch, used to give time to browser to define API

 

if (!empty($id)) {

    if (! $cm = get_coursemodule_from_id('scorm', $id)) {

        print_error('invalidcoursemodule');

    }

    if (! $course = $DB->get_record('course', array('id'=>$cm->course))) {

        print_error('coursemisconf');

    }

    if (! $scorm = $DB->get_record('scorm', array('id'=>$cm->instance))) {

        print_error('invalidcoursemodule');

    }

} else if (!empty($a)) {

    if (! $scorm = $DB->get_record('scorm', array('id'=>$a))) {

        print_error('coursemisconf');

    }

    if (! $course = $DB->get_record('course', array('id'=>$scorm->course))) {

        print_error('coursemisconf');

    }

    if (! $cm = get_coursemodule_from_instance('scorm', $scorm->id, $course->id)) {

        print_error('invalidcoursemodule');

    }

} else {

    print_error('missingparameter');

}

 

$PAGE->set_url('/mod/scorm/loadSCO.php', array('scoid'=>$scoid, 'id'=>$cm->id));

 

if (!isloggedin()) { // Prevent login page from being shown in iframe.

    // Using simple html instead of exceptions here as shown inside iframe/object.

    echo html_writer::start_tag('html');

    echo html_writer::tag('head', '');

    echo html_writer::tag('body', get_string('loggedinnot'));

    echo html_writer::end_tag('html');

    exit;

}

 

require_login($course, false, $cm, false); // Call require_login anyway to set up globals correctly.

 

//check if scorm closed

$timenow = time();

if ($scorm->timeclose !=0) {

    if ($scorm->timeopen > $timenow) {

        print_error('notopenyet', 'scorm', null, userdate($scorm->timeopen));

    } else if ($timenow > $scorm->timeclose) {

        print_error('expired', 'scorm', null, userdate($scorm->timeclose));

    }

}

 

$context = context_module::instance($cm->id);

 

if (!empty($scoid)) {

    //

    // Direct SCO request

    //

    if ($sco = scorm_get_sco($scoid)) {

        if ($sco->launch == '') {

            // Search for the next launchable sco

            if ($scoes = $DB->get_records_select(

                    'scorm_scoes',

                    'scorm = ? AND '.$DB->sql_isnotempty('scorm_scoes', 'launch', false, true).' AND id > ?',

                    array($scorm->id, $sco->id),

                    'id ASC')) {

                $sco = current($scoes);

            }

        }

    }

}

//

// If no sco was found get the first of SCORM package

//

if (!isset($sco)) {

    $scoes = $DB->get_records_select(

        'scorm_scoes',

        'scorm = ? AND '.$DB->sql_isnotempty('scorm_scoes', 'launch', false, true),

        array($scorm->id),

        'id ASC'

    );

    $sco = current($scoes);

}

 

if ($sco->scormtype == 'asset') {

    $attempt = scorm_get_last_attempt($scorm->id, $USER->id);

    $element = (scorm_version_check($scorm->version, SCORM_13)) ? 'cmi.completion_status':'cmi.core.lesson_status';

    $value = 'completed';

    $result = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, $element, $value);

}

 

//

// Forge SCO URL

//

$connector = '';

$version = substr($scorm->version, 0, 4);

if ((isset($sco->parameters) && (!empty($sco->parameters))) || ($version == 'AICC')) {

    if (stripos($sco->launch, '?') !== false) {

        $connector = '&';

    } else {

        $connector = '?';

    }

    if ((isset($sco->parameters) && (!empty($sco->parameters))) && ($sco->parameters[0] == '?')) {

        $sco->parameters = substr($sco->parameters, 1);

    }

}

 

if ($version == 'AICC') {

    require_once("$CFG->dirroot/mod/scorm/datamodels/aicclib.php");

    $aicc_sid = scorm_aicc_get_hacp_session($scorm->id);

    if (empty($aicc_sid)) {

        $aicc_sid = sesskey();

    }

    $sco_params = '';

    if (isset($sco->parameters) && (!empty($sco->parameters))) {

        $sco_params = '&'. $sco->parameters;

    }

    $launcher = $sco->launch.$connector.'aicc_sid='.$aicc_sid.'&aicc_url='.$CFG->wwwroot.'/mod/scorm/aicc.php'.$sco_params;

} else {

    if (isset($sco->parameters) && (!empty($sco->parameters))) {

        $launcher = $sco->launch.$connector.$sco->parameters;

    } else {

        $launcher = $sco->launch;

    }

}

 

if (scorm_external_link($sco->launch)) {

    //TODO: does this happen?

    $result = $launcher;

} else if ($scorm->scormtype === SCORM_TYPE_EXTERNAL) {

    // Remote learning activity

    $result = dirname($scorm->reference).'/'.$launcher;

} else if ($scorm->scormtype === SCORM_TYPE_IMSREPOSITORY) {

    // Repository

    $result = $CFG->repositorywebroot.substr($scorm->reference, 1).'/'.$sco->launch;

Информация о работе Отчёт о практике