Разработка системы онлайн-тестирования

Создание онлайн-приложения, которое позволит пользователям создавать тесты, подписываться на аудиторию и просматривать результаты тестов. Проект реализован с использованием фреймворка React.JS и MS SQL Server на локальной машине под управлением Windows.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 23.08.2017
Размер файла 936,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Оглавление

  • Введение
  • Глава I. Теоретические предпосылки исследования
  • Глава II. Инструменты и технологии разработки веб-сайтов и аналитических систем
  • Глава III. Практическая реализация веб-сайта с аналитическими инструментами.
  • Заключение
  • Список использованных источников
  • Введение
  • Процесс тестирования знаний сотрудников или учащихся во многом может быть улучшен за счет разработки автоматизированной онлайн-системы тестирования. Данная работа описывает особенности разработки системы подобного типа, используемые технологии, а также анализирует современные подходы к разработке веб-сайтов и аналитических систем. Объектом исследования, лежащим в основе данной работы, является автоматизация процесса тестирования, а его предметом - разработка системы онлайн-тестирования знаний с аналитическими возможностями.
  • Задача создания такой системы предполагает наличие веб-сайта, который служит местом для создания и проведения тестов. В то же время аналитическая составляющая системы разрабатывается отдельно от сайта и представляет из себя процедуры извлечения, трансформации и загрузки данных из удаленных источников, а также хранилище данных, пригодное для построения OLAP-кубов. Данные для анализа копируются из реляционной БД сайта, которая содержит таблицы для хранения информации о тестах, их вопросах, вариантах ответа, ответов конкретного участника тестирования и т.д. После трансформации эти данные загружаются в хранилище и могут быть использованы для дальнейшего анализа.
  • Задача составления и проведения теста всегда связана с некоторыми затратами, выраженными в материальном или временном выражении. Проведение тестов с печатными бланками связано как с материальными, так и с временными издержками, такими как бумага, чернила принтера, время поиска аудитории, время самого экзамена. Оценка результатов таких тестов также связана с временными издержками по сбору бланков и подсчету результатов. При этом время, затраченное на подведение итогов, растет вместе с числом участников теста. Для учителей, менеджеров и других людей, которые занимаются проведением различных тестов регулярно, минимизация потраченного на тестирование времени и ресурсов может оказаться критически важной.
  • Использование онлайн-системы тестирования с аналитическими возможностями позволит ускорить процесс создания типизированных тестов, осуществить их удаленное проведение и провести анализ их результатов с помощью персонального компьютера. Учитывая распространённость сети Интернет среди учащихся и сотрудников учебных и других организаций, можно сказать, что такая система станет доступна для многих. Разрабатываемая онлайн-система сможет стать решением задачи сокращения общего времени проведения тестов и увеличения качества аналитической оценки их результатов.
  • Разрабатываемая система должна минимизировать время на создание теста и анализ результатов за счет использования современных технологий в сфере веб-разработки и бизнес-аналитики. Выбор архитектуры системы и конкретного набора технологий должен быть осуществлен исходя из требования к максимальной скорости работы системы при взаимодействии с ней пользователей. Аналитическая составляющая системы также должна позволять ответить на наиболее востребованные вопросы пользователей при работе с результатами тестов.
  • Цель данной работы - разработать систему онлайн-тестирования с высокой скоростью работы и аналитическими возможностями. Вся работа может быть разделена на несколько последовательных задач:

· изучение подходов к тестированию в сфере образования и корпоративного среде

· изучение подходов к созданию универсальных онлайн-тестов

· разработка сценария использования проектируемой системы

· выявление требований к проектируемой онлайн-системе

· выявление требований к аналитической составляющей системы

· анализ существующих систем онлайн-тестирования

· разработка архитектуры проектируемой системы

· разработка веб-сайта

· разработка аналитической системы

· интеграция веб-сайта с аналитической системой

· тестирование системы и исправление возможных ошибок

В первой главе данной работы дано описание современным подходам к разработке веб-приложений, предпосылки к проведению тестирования в корпоративной среде и сфере образования.

Вторая глава содержит анализ существующих технологий веб-разработки и различного ПО для бизнес-аналитики. В Этой главе также произведен обоснованный выбор набора технологий для разрабатываемой системы.

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

Глава I. Теоретические предпосылки исследования

Проведение тестирования с использованием бумажных тестов давно является одним из приоритетных способов оценки успеваемости учеников или эффективности сотрудников в учебных заведениях и частных компаниях. В школах и университетах тесты могут быть использованы для промежуточного контроля, а также для оценки поведения, психики, профориентации или мотиваций учащихся. Некоторые государственные экзамены и олимпиады включают в себя тестовую часть с выбором ответа из нескольких вариантов. Проведение таких тестов связано с различными издержками, в первую очередь со временем на проверку, поиск места проведения, оповещения учащихся.

Для решения проблемы долгой проверки тестов в последние несколько десятилетий стали набирать популярность типизированные тесты со специальными типографическими бланками. Такие бланки ускоряют процесс проверки и подведения результатов тестирования, а ответы в них записываются в определенные поля, которые затем распознаются с помощью специального программного обеспечения. Для качественного и объективного анализа результатов используется аналитическая система, которая обрабатывает результаты, полученные в ходе распознавания ответов участников. Такой подход во многом ускоряет процесс проведения тестов, но он не является самым эффективным.

Разрабатываемая система онлайн-тестирования создается с целью совмещения процессов создания, проведения и анализа результатов тестов, тем самым повышая эффективность самого процесса тестирования.

Тестирование в сфере образования. В Европе и США бумажные тесты в образовании используются, в основном, для промежуточной оценки. Тесты на оценку текущей успеваемости отлично подходят для немедленной обратной связи, например, для определения того, насколько ученикам или студентам понятен недавно пройденный материал. В то же время тесты, предназначенные для оценки прогресса учащихся за большой период времени, такие как финальные экзамены, могут дать несоответствующий действительности результат.

В недавнее время проходила большая дискуссия относительно использования тестов на экзаменах по окончании курса и на национальных экзаменах, таких как экзамены GCSE в Англии. Это спорная тема, и она была подвергнута большому количеству обсуждений в средствах массовой информации, с возмутительными претензиями в отношении ее возможного использования. Несмотря на споры, использование тестов в качестве финальных испытаний возрастает, особенно в сфере высшего образования.

В России тестирование занимает срединное положение - оно используется одинаково часто как для оценки промежуточных результатов, так и для финальных экзаменов. Выпускные экзамены в школах после 9 и 11 классов (ОГЭ и ЕГЭ) частично основаны на тестах с выбором ответа из нескольких вариантов. Доля заданий подобного рода в контрольно-измерительных материалах (КИМ) зависит от сдаваемого предмета. Так, на ЕГЭ 2013 года в вариантах по математике не было ни одного задания с выбором ответа, а по биологии - не менее трети от общего числа. Использование тестов для промежуточного контроля в российских школах никак не регламентируется, хотя учителя все равно используют тесты по своей инициативе. Так, широко используются тесты по истории, географии, обществоведению и иностранным языкам.

В России проводится множество олимпиад для школьников всех классов по различным предметам или по определенной тематике. Такие тематические олимпиады, как «Русский медвежонок», «English Bulldog» и «Кенгуру» почти полностью основаны на тестах с вариантами ответов или заполнением пропусков в тексте. Несмотря на то, что эффективность оценки с использованием тестирования, а не устного экзамена, подвергается критике, их распространенность в сфере российского образования остается высокой.

Отдельное место занимают международные тесты в различных сферах. К ним относятся экзамены на знание иностранного языка (IELTS, TOEFL, тесты Гёте института), на способность к обучению в бизнес-школах (GMAT), на общий уровень знаний (GRE) и другие. Данные экзамены включают как части с тестом (c выбором ответа), так и части со свободным ответом, таким как сочинение, рисунок или решение задачи.

В целом, тесты в образовании обладают следующими характеристиками:

· Разделение на секции

· Ограниченность по времени

· Различные типы вопросов

· Различные типы вариантов ответа

К наиболее распространенным типам вопросов относятся:

· Текстовые вопросы

· Вопросы с картинками

· Заполнение пропусков в тексте

Наиболее популярные типы ответов к таким вопросам являются:

· Единственный ответ из числа перечисленных

· Множественный выбор из числа перечисленных

· Написание текста

· Сопоставление

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

Тестирование в корпоративной среде. Использование тестов в различных компаниях производится с целью оценки профессиональной подготовки сотрудников или выявления их скрытых талантов. В крупных компаниях процесс тестирования зачастую осуществляется сотрудниками ассессмент-центров (центров оценки). Процесс тестирования в таких центрах включает в себя как письменные тесты, так и упражнения в группах.

За рубежом центры оценки являются эффективным методом выбора высших руководителей государственных и муниципальных должностей, включая начальников полиции и министров. Результаты центров оценки все чаще используются для выявления видов и последовательности деятельности, направленных на подготовку кандидатов к повышению на управленческие и исполнительные должности. Например, многие организации имеют подробные планы преемственности (перехода на более ответственную позицию) и ассессмент-центры являются ключевым компонентом для определения того, каким опытом должен обладать потенциальный будущий руководитель.

Участие в оценке, проводимой ассессмент-центрами, которые могут длиться до нескольких дней, включает как индивидуальное тестирование, так и групповые упражнения. Центры оценки обычно предоставляют информацию о сильных и слабых сторонах каждого человека (например, ассесмент-центры компании AT&T предоставляли рейтинги по 25 отдельным параметрам эффективности и результативности исходя из проведенного ими теста). Также оценочные центры дают обзор различных навыков, связанных с работой (например, планирование, определение приоритетов) и более обобщенные навыки общения с другими людьми (например, устное общение, эмпатия), а также могут предоставлять информацию о ценностях и предпочтениях испытуемых.

Разрабатываемая система позволит облегчить создание тестов для корпоративного использования в ассессмент-центрах. Она станет доступной многим, так как веб-сайт, служащий главным интерфейсом взаимодействия с создателями теста и тестируемыми, может быть открыт на многих устройствах, включая персональные компьютеры, смартфоны и планшеты.

Система онлайн-тестирования. Под системой онлайн-тестирования подразумевается веб-сайт, который предоставляет его посетителям различные функции для успешного осуществления процесса тестирования. Этот сайт, как правило, имеет несколько страниц с динамическим содержимым, хотя может содержать и статичные информационные страницы. Осуществление взаимодействия с пользователями производится за счет веб-страниц с различными элементами управления, такими как ссылки, поля для ввода, кнопки, веб-формы и другие.

Система тестирования с аналитическими возможностями должна обладать следующим набором функций:

· Регистрация и авторизация пользователей

· Просмотр, создание, редактирование тестов различных типов

· Подписка пользователей на тесты по E-Mail

· Удаленное проведение тестирования участников

· Просмотр и анализ результатов

Разрабатываемая в рамках работы система должна соответствовать указанному выше описанию.

Требования к разрабатываемому веб-сайту. Исходя из цели работы, главным требованием к разрабатываемой системе является быстрота использования. В текущий момент известен один подход к разработке веб-сайта, при котором взаимодействие с ним становится наиболее быстрым. Этот подход имеет название SPA (от англ. Single Page Application) и он заключается в том, что веб-приложение находится на одной странице, а интерактивность осуществляется за счет изменения отдельных ее частей. Таким образом, при необходимости изменить отображаемую информацию, веб-браузер не перезагружает страницу полностью, а лишь заменяет содержимое определенных элементов.

Полная перезагрузка страницы веб-браузером связана с высокими временными затратами, так как при каждом обновлении браузер вынужден заново загружать размещенные на странице изображения, подключенные скрипты JavaScript и каскадные таблицы стилей CSS. Более того, при полной перезагрузке браузер заново перерисовывает все элементы на странице, что может сильно сказаться на скорости работы сайта, если количество элементов на странице большое.

Учитывая тот факт, что при создании теста на странице будут генерироваться большое число интерактивных элементов (поля для ввода названия текста, поля для добавления секций, вопросов и ответов, кнопки, выпадающие списки и т.п.), рекомендуется использовать SPA подход в качестве архитектуры клиентской части разрабатываемой системы.

Получение данных сайтом в SPA подходе осуществляется за счет использования асинхронных HTTP-запросов к серверу, которые поддерживаются во всех браузерах по умолчанию. Запрос осуществляется с помощью JavaScript (сокращенно JS) - языка, который используется для манипуляции элементами страницы. Подход к обмену данными между сервером и веб-приложением с помощью асинхронных запросов в среде веб-разработки имеет название AJAX (от англ. Asynchronous Javascript and XML). Хотя в названии и фигурирует XML, в реальности большинство веб-приложений обмениваются данными в формате JSON (от англ. JavaScript Object Notation). Данные, полученные клиентской частью приложения в данном формате не требуют дополнительной обработки, так как по сути они являются десериализованными JS-объектами.

Таким образом, отображение веб-приложения в браузере может быть изменено в реальном времени основываясь на данных, полученных с сервера, без перезагрузки страницы.

Существуют несколько различных библиотек на языке Javascript, которые созданы с целью упростить создание одностраничных веб-приложений. Как правило, они предоставляют необходимую для работы сайта архитектуру и могут быть дополнены различными другими модулями исходя из бизнес-требований приложения. Среди таких библиотек таки известные фреймворки, как React.JS, Angular.JS, Angular 2, Vue.Js, Backbone и другие. Во второй главе будут рассмотрены некоторые из этих библиотек и будет обоснован выбор одной из них в качестве основы клиентской части системы.

Требования к разрабатываемой аналитической системе. В основе аналитической составляющей разрабатываемой системы онлайн-тестирования лежит совокупность различных независимых частей, в целом формирующие эффективное средство для аналитики. К ним относятся хранилище данных, ETL-процедуры и OLAP-кубы. Аналитическая система должна позволить пользователям веб-сайта получить ответы на наиболее популярные вопросы, связанные с анализом результатов. К ним могут относиться такие вопросы как:

Кто получил сколько баллов за тест?

Какая группа оказалась наиболее эффективной?

• Какая секция (или вопрос) оказалась наиболее сложной?

Ответы на эти вопросы можно получить с помощью отдельно составленных SQL-запросов к реляционной БД, лежащей в основе информационного обеспечения веб-сайта. В таком случае, однако, при необходимости добавить какой-либо дополнительный функционал, пришлось бы составлять отдельные SQL-запросы. Известно, что такой подход не является эффективным в связи с высокими издержками на составление запросов и низкой производительностью их выполнения. К тому же, большое число сложных аналитических запросов способно значительно нагрузить сервер, на котором расположена база данных веб-сайта, тем самым делая БД недоступной для запросов из других источников (например, с самого веб-сайта).

В рассматриваемой системе используется технология OLAP, которая предоставляет возможность разрабатывать и выполнять многомерные запросы к хранилищу данных и получать детальную аналитику с минимальными затратами на составление самих запросов. Данная технология подразумевает, что данные периодически выгружаются из БД-источника (база данных веб-сайта) в специально разработанное реляционное хранилище данных с помощью ETL-процедур (от англ. Extract, Transform, Load - извлечение, изменение, загрузка).

Выгрузка данных, обычно, происходит ночью - в момент, когда нагрузка на БД веб-сайта минимальна. Затем данные из хранилища могут быть использованы для пополнения OLAP-куба данными для аналитики. При этом, современное ПО в сфере бизнес-аналитики позволяет создавать несколько кубов под различные цели, которые будут использовать различные данные. Особенностью структуры куба является тот факт, что он хранит данные в нескольких измерениях и может эффективно к ним обращаться во время выполнения многомерных MDX-запросов.

Глава II. Инструменты и технологии разработки веб-сайтов и аналитических систем

За последние 3-5 лет технологическое обеспечение в сфере веб-разработки быстро изменилась. Технологии, которые считались новыми (HTML5, CSS3 и JQuery), были постепенно вытеснены мощными JavaScript-фреймворками, которые позволяют разработчикам создавать интерактивные и удобные в использовании приложения. Некоторые JS-библиотеки предоставляют различные программные методы представления данных, что значительно повышает общую производительность сайта. Есть несколько JS-библиотек, которые стали известными за счет своих преимуществ: React.JS и Angular 2. Одна из них будет использоваться в этом проекте.

Аналитическая система должна иметь хранилище данных, ПО для ETL-процедур, инструменты разработки OLAP-кубов и средства визуализации многомерных MDX-запросов. В качестве основы данной системы будет использован один из двух продуктов для бизнес-аналитики - ПО с открытым исходным кодом Pentaho BI Suite или мощный коммерческий продуктом Microsoft Analysis Services.

React.JS. Этот JavaScript-фреймворк разработан компанией Facebook и направлен на то, чтобы сделать манипулирование данными на веб-странице как можно более быстрым. В основе подхода React лежит разделение всей веб-страницы на более мелкие компоненты. Компоненты могут быть размещены внутри друг друга, но каждый из них будет иметь свой собственный контекст данных. Такой подход упрощает обновление информации на веб-странице путем перерисовки компонента в зависимости от динамически изменяемых данных.

Еще одним преимуществом React является его синтаксис разметки, называемый JSX. Этот язык очень похож на HTML и XML, но имеет некоторые дополнительные возможности. JSX позволяет создавать динамическую компоновку данных в разметке страницы и встраивать компоненты в чистый HTML. Разработчикам может быть удобнее писать сокращенный код компонентов внутри HTML, который затем будут заменён полным кодом встраиваемого компонента. Например, это сочетание HTML и JSX будет выводить заголовок с текстом «Заголовок», а затем код компонента под названием «RootComponent»:

<h1> Заголовок </h1>

<RootComponent title = "Пример" />

Кроме того, JSX позволяет встраивать код JS в макет для вывода динамических данных. Для реализации этого кода код должен быть заключен в фигурные скобки. Например, этот фрагмент кода выдаст текущую дату:

<p> {Date ()} </ p>

Компонентный код хранится в объекте JavaScript, который обязательно наследует класс «React.Component» и имплементирует функцию «render». Эта функция возвращает JSX-код компонента, который описывает, как он должен отображаться в веб-браузере, и какие динамические данные следует вставлять в макет. Свойства, передаваемые компоненту извне, могут быть доступны в коде компонента за счет обращения к свойству this.props.propertyName. Например, свойство, названное «title» в компоненте под названием «RootComponent» из приведенного выше примера, может быть доступно с использованием выражения «this.props.title».

class RootComponent extends React.Component {

render () {

return <p>Заголовок: {this.props.title}</p>;

}

}

Каждый компонент имеет свое собственное состояние, доступ к которому осуществляется вызовом this.state. Состояние может использоваться для хранения различных параметров компонента, в зависимости от которых он будет перерисован веб-браузером заново, например, уровень доступа пользователя или его логин.

Компоненты могут быть вложены друг в друга, создавая древовидную архитектуру приложения, аналогичную дереву DOM (от англ. Document Object Model - объектная модель документа) веб-браузера. В React существует специальная логика для управления деревом компонентов, называемая Virtual DOM. Эта часть функциональности фреймворка React является механизмом хранения данных о том, какие элементы показываются посетителю сайта. Эти данные, подобно DOM, хранятся в виде дерева. Всякий раз, когда состояние компонента изменяется, React вызывает его функцию render() для перерисовки содержимого компонента. Затем он определяет, где именно данные должны быть заменены, и делает выборочные изменения как в Virtual DOM, так и в браузерном DOM-дереве. React делает наименьшее возможное количество манипуляций с DOM, сводя к минимуму использование ЦП и графического процессора, что, в свою очередь, ускоряет взаимодействие с веб-приложением. Таким образом, использование состояния компонента для управления его представлением упрощает создание приложений, зависящих от данных.

React.JS также имеет функции для извлечения пользовательского ввода из веб-форм и привязки входных значений к состояниям компонентов. Функциональность этого фреймворка также может быть легко расширена с использованием сторонних библиотек.

Angular 2

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

Каждое веб-приложение Angular имеет, по крайней мере, один модуль, условно называемый «AppModule». Модули помогают организовать архитектуру приложения в единые функциональные блоки.

Компоненты, подобные React.JS, являются логическими элементами функциональности веб-приложения. Однако в Angular отсутствует функция рендеринга, поскольку разметка HTML хранится в отдельной сущности, называемой Template (шаблон).

Angular имеет расширенный шаблонный синтаксис с множеством логических операторов, встроенных в макет. Эти операторы позволяют разработчикам создавать интерактивные макеты, подобные JSX у React.

В этой структуре компоненты управляются из разных модулей, которые в конечном итоге образуют SPA. Связь между компонентами и модулями выполняется с использованием специальных объектов, называемых метаданными. Они определяют, какой шаблон, селектор, модуль и поставщики присутствуют у каждого компонента.

Angular также имеет двухстороннюю привязку данных, которая автоматически изменяет данные в шаблоне, показываемому пользователю, когда изменяются данные в модуле. Эта привязка работает и в обратном направлении - Angular изменяет данные в модуле, когда пользователь производит ввод данных в поля для ввода или по-иному взаимодействует с интерактивными элементами управления.

Angular известен своей масштабируемостью и архитектурной строгостью. Он используется многими сайтами с высокой нагрузкой и считается одним из самых сложных веб-фреймворков.

Pentaho BI

Это BI-решение представляет собой бесплатное программное обеспечение с открытым исходным кодом для бизнес-аналитики, принадлежащее Hitachi Group. Это пакет небольших утилит для различных аналитических целей.

Pentaho Data Integration (Kettle) позволяет управлять потоками данных. Он использует алгоритмы манипулирования данными для извлечения, преобразования данных из источников и дальнейшей загрузки (ETL) в хранилище данных.

Pentaho Analysis (Mondrian OLAP Server) используется для создания кубов OLAP, заполнения их данными из хранилища данных и обработки многомерных запросов для различных отчетов.

Это решение можно использовать с СУБД MySQL, PostgreSQL и другими СУБД с поддержкой JDBMS. Mondrian OLAP Server требует установки на машине с ОС Linux.

Microsoft Analysis Services

Этот пакет инструментов от Microsoft позволяет аналитикам создавать потоки данных, управлять кубами OLAP и обрабатывать многомерные запросы для целей отчетности.

Единственной доступной СУБД, которую можно использовать для хранилищ данных, является Microsoft SQL Server. Он может быть установлен на машине с ОС Windows. Функциональность MS SQL Server может быть расширена за счет различных отдельных служб, таких как службы SSIS (службы Integration Services), службы SSAS (службы Analysis Services) и службы SSRS (службы отчетов).

Microsoft SSIS (SQL Server Integration Services) используется для управления задачами ETL. Он способен извлекать данные из удаленных источников (например, из БД веб-сайта) в хранилище данных, которое используется для аналитики.

Microsoft SQL Server Analysis Services (MS SSAS) - это инструмент для проектирования многомерных OLAP-кубов, основанных на различных источниках данных, таких как реляционное хранилище данных. Этот продукт также выступает в качестве сервера для обработки MDX-запросов. Результат их выполнения можно получить с помощью специального ПО (например, MS SQL Server Management Studio) или с использованием специальных драйверов подключения к серверу кубов программно (например, из кода веб-сайта).

Службы Reporting Services (MS SSRS) могут также использоваться для интеграции предопределенного набора отчетов в сторонние приложения, такие как веб-сайт.

Обоснование выбора технологий

В ходе прохождения преддипломной практики одной из основных задач практиканта являлась проанализировать существующие технологии веб-разработки и осуществить обоснованный выбор набора используемых программных продуктов, которые максимально поспособствуют достижению поставленных перед разрабатываемой системой задач.

Первичное изучение подходов веб-разработки и анализ аналогичных существующих веб-систем, показал, что с архитектурной точки зрения разрабатываемая система будет состоять из нескольких слабо зависимых частей, каждая из которых будет служить определенной цели, и соответственно, иметь свой набор технологий. К таким частям относят:

• Внешний интерфейс (“Фронтенд” от англ. “Front-end”)

• Серверное API (“Бэкенд” от англ. “Back-end”)

• Аналитическая система

Проведенный анализ различных веб-систем показал, что технологии для фронтенда следует выбирать в первую очередь, так как они играют роль первого впечатления для посетителя сайта и их выбор во многом влияет на то, будет ли очередной посетитель постоянным пользователем системы. От набора (“стэка” от англ. “stack”) технологий для фронтенда в некоторой степени зависит выбор серверного языка программирования и типа БД. Однако, при наличии особого требования к веб-сайту, заключающегося в его интеграции со сторонней системой (например, аналитической системой), необходимо сначала отфильтровать список возможных языков серверного программирования по фактору совместимости с интегрируемой системой бизнес-аналитики. Анализ аналитических систем стоит производить по качественным оценкам их производительности, а также по возможности легкого их использования с офисным ПО, таким как MS Office.

Фронтенд. Интерфейсное решение для этого проекта должно обеспечивать высокую скорость работы и иметь возможность отрисовывать множество элементов на странице, основываясь на данных.

Поскольку основным фактором успеха для этого проекта с точки зрения веб-приложения является скорость, то основными кандидатами являются JavaScript-фреймворки React.JS и Angular 2. Эти библиотеки оказываются наиболее эффективными для одностраничных приложений (SPA). Для реализации этого проекта удобнее использовать React.JS, так как он имеет несколько особых преимуществ.

Во-первых, React.JS обеспечивает удобную архитектуру, управляемую компонентами, которая упростит рендеринг сложных тестов со многими разделами и различными типами вопросов.

Во-вторых, эта структура повышает производительность веб-сайта с использованием JSX и Virtual DOM. Для проекта более удобно использовать встраивание компонентов JSX, предлагаемое React, поскольку модульная система, используемая в Angular, кажется слишком сложной для такого проекта, как онлайновая система тестирования.

React - это легкая библиотека, и это идеальное решение для нужд этого проекта, в то время как функциональность Angular кажется чрезмерной.

Аналитическая система. Наиболее распространенными вариантами ПО для аналитических систем являются Microsoft BI Tools и Pentaho BI. Предпочтительно, аналитическая система должна быть совместима с современным программным обеспечением ПК для просмотра отчетов, таких как MS Excel.

Первое ПО позволяет выгружать данные из источников в хранилище данных с помощью Microsoft SSIS и выполнять многомерные аналитические запросы с помощью Microsoft SSAS. Продукты для бизнес-аналитики от компании Microsoft могут быть использованы только совместно с СУБД Microsoft SQL Server, которая, в свою очередь, может быть установлена только на компьютер с операционной системой Windows.

ПО от Pentaho имеет несколько инструментов для организации выгрузки данных из источников и составления OLAP-кубов. Данное ПО поддерживает СУБД MySQL и PostgreSQL. Однако, данная система имеет несколько минусов - во-первых, она не имеет подробной документации, во-вторых - разработка кубов и интеграций производится исключительно через использование JDBMS-драйверов, а не через графический интерфейс.

Выбор аналитической системы определяет, какая ОС будет использоваться для машины с OLAP-сервером. Он также определяет, какие технологии и языки программирования могут быть выбраны в качестве серверного решения для веб-сайта.

Для этого проекта аналитическая система будет разрабатываться с использованием MS SQL Server и Analysis Services. На сервере для хранилища данных должна быть установлена ??ОС Windows.

Бэкенд. Логика веб-сайта должна основываться на веб-сервере, совместимом с Windows. Он также должен быть способен отправлять запросы в аналитическую систему и получать результаты запроса.

Для разрабатываемой системы будет использоваться ASP.NET MVC 5 в качестве инструмента для разработки серверного API. Он использует язык программирования C#, что позволяет создавать сложную внутреннюю логику с использованием базы данных. Он также имеет может быть расширен за счет библиотеки для интеграции с MS SQL Server Analysis Services.

Обзор существующих решений

Задача оптимизации времени, затраченного на тестирование уже была осуществлена некоторыми командами разработчиков. В сети Интернет присутствуют веб-сайты, схожие по замыслу и решаемым задачам с проектируемым приложением.

QuizWorks Online Exam Builder

Данный англоязычный веб-сервис предоставляет пользователям возможности по созданию онлайн-экзаменов различных типов. К типам относятся:

· Экзамен (Exam)

· Викторина (Quiz)

· Лабораторная работа (Assessment)

Интерфейс создания тестов на этом веб-сайте позволяет добавлять неограниченное количество вопросов. Разбиение вопросов на категории (секции) не допускается. При этом один вопрос может иметь не более четырех вариантов ответа и единственный верный вариант. Функционал сайта обеспечивает поддержку подсказок и пояснений к вопросам во время прохождения теста.

Возможности по аналитике ограничиваются следующими отчетами:

· Статистика по тесту

· Статистика по вопросу

· Итоговые результаты

Архитектура клиентской части приложения основана на статичной отрисовке элементов на стороне веб-сервера. Это означает, что веб-сайт работает дольше одностраничных сайтов за счет траты времени на обновление страницы в веб-браузере. Разрабатываемая в ходе работы система должна превосходить рассматриваемый сайт по скорости взаимодействия с пользователем за счет использования современных веб-технологий.

Адрес веб-сайта: https://www.onlineexambuilder.com/

ClassMaker

Эта англоязычная система онлайн-тестирования позволяет создавать тесты и наполнять их интерактивным содержимым. Данный сайт также предоставляет широкие возможности по аналитике результатов тестов.

Интерфейс создания тестов интуитивен для пользователя, а набор возможных типов вопросов для добавления довольно велик. Система поддерживает следующие типы вопросов:

· С несколькими вариантами ответа

· «Правда или ложь»

· Сопоставление

· Короткий ответ

· Эссе

· Заполнение пропусков

· Аудиовопрос

Допускается разбиение вопросов на категории, добавление подписка предопределенных групп тестируемых людей на приватные тесты и создание публичных тестов. Пользователи с премиум-подпиской могут также выдавать электронные сертификаты участникам теста, подтверждающие их результаты.

Аналитическая составляющая системы обладает следующими функциями:

· Вывод результатов

· Ранжирование по шкале оценок

· Отправка персонализированных E-Mail с анализом работы

Недостатком данной системы является невысокая гибкость аналитических инструментов, и как следствие, недостаточный уровень качества анализа результатов. Разрабатываемая система должна обеспечивать высокую гибкость аналитической составляющей тестирования за счет использования BI-технологий.

Адрес веб-сайта: https://www.classmarker.com/

MasterTest

Данная система разработана группой российских разработчиков и направлена на распространение в коммерческих образовательных учреждениях. Каждому пользователю системы предоставляется возможность создавать учебные программы по различным предметам и настраивать периодические экзамены для проверки текущей результативности учеников на основе онлайн-тестов. Анализ результатов тесты возможна за счет использования стороннего ПО.

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

· Создание тестов

· Подписка на тесты по E-Mail и SMS

· Вывод данных в формате электронной таблицы

· Выставление оценок

· Генерация сертификатов

Система хорошо интегрируется со сторонним ПО для анализа данных, таким как MS Excel. С помощью специального инструмента в интерфейсе веб-сайта можно выгрузить информацию о результатах конкретного теста в текстовом формате.

Несмотря на наличие у этой системы возможности по выгрузке данных, качество анализа результатов снижается с необходимостью использования стороннего ПО. Разрабатываемая в ходе работы система должна обеспечивать возможности по встраиванию аналитических отчетов в веб-сайт.

Ссылка на сайт: http://master-test.net/

Глава III. Практическая реализация веб-сайта с аналитическими инструментами.

Архитектура системы

В основе разрабатываемой системы онлайн-тестирования лежат три составляющие - фронтенд, бэкенд и аналитическая система. Взаимодействие между ними схематично описано на рис. 1.

Рисунок 1 "Схема архитектуры системы"

Фронтенд, состоящий из одной HTML-страницы, включает в себя начальную разметку страницы, ссылки на таблицы стилей, метаинформацию о веб-документе, а также главный исполняемый JavaScript-файл “bundle.js”. Именно этот файл содержит код, компилированный из React-синтаксиса JSX в стандартный JS, поддерживающийся большинством веб-браузеров. В этом файле предусмотрены различные API-запросы, с помощью которых клиентский код получает или модифицирует данные из удаленного источника (REST API бэкенда). Пример архитектуры JSX компонентов, лежащих в основе исполняемого файла, будет представлен позже.

Бэкенд - это веб-приложение на платформе ASP.NET MVC 5, использующий язык C#. Его архитектура соответствует паттерну разработки под названием MVC (от англ. “Model-View-Controller” - “Модель, представление, контроллер”). Для взаимодействия с БД используется Entity Framework.

Аналитическая система содержит реляционное хранилище данных (на схеме “РХД”), процессы ETL с использованием MS SSIS и средство разработки кубов MS SSAS с отдельно созданным для веб-приложения кубом.

Получение данных для аналитики осуществляется за счет применения драйвера ADOMD.NET, который позволяет программно обращаться к удаленному кубу и осуществлять MDX-запросы.

Фронтенд на React

Используемый в системе тестирования фреймворк позволяет создавать сложные приложения за счет использования компонентов, которые можно встраивать друг в друга. Отрисовка страницы происходит после того, как браузер загрузит страницу, то есть изначально на странице не присутствует ничего кроме одного пустого блока, в который затем будет вставлено содержимое приложения. То, что именно будет вставлено в блок, описано в исполняемом файле “bundle.js”. Этот файл является результатом компиляции другого файла, написанного с использованием специального синтаксиса JSX, а также различных новых возможностей языка JavaScript, которые еще не в полной мере поддерживаются браузерами. Входной файл до компиляции содержит логику по вставке какого-то компонента в пустой блок на странице. Встраиваемый компонент может включать в себя другие компоненты, вызывая соответствующие методы по отрисовке данных.

Во входном файле “index.js” происходит вставка определенного компонента в пустой блок:

let layout = <Router history={browserHistory}>

<Route path="/exam" component={ExamPageContainer} />

<Route path="/" component={RootComponent}>

<Route path="/home" component={Home} />

<Route path="*" component={NotFoundComponent} />

</Route>

</Router>;

const app = document.getElementById("app");

ReactDOM.render(<Provider store={store}>

{layout}

</Provider>, app);

В этом фрагменте кода в блок с id “app” производится вставка компонента Provider, который включает в себя компонент, лежащий в переменной layout, то есть Router. Router также содержит несколько компонентов внутри - Route с различными атрибутами.

Provider - это компонент-оболочка, служащий для того, чтобы передавать данные во все дочерние компоненты из глобального объекта store - глобального состояния приложения. Это состояние осуществляется за счет библиотеки redux, которая предназначена для легкой манипуляции состоянием приложения из дочерних компонентов.

Router служит для того, чтобы при переходе по ссылкам в браузере изменялся URL подменялся и сохранялась история посещения с возможностью последующего возврата назад без перезагрузки страницы. Каждый отдельный путь в приложении описывается компонентом Route, задающим правило пути и конкретный компонент, который будет загружен при переходе по пути.

В случае, если пользователь не авторизовался, ему показывается форма ввода логина и пароля (рис. 2).

Рисунок 2 "Форма авторизации"

Регистрация доступна на промо-странице приложения, на которой расположена основная информация о системе и регистрационная форма (рис. 3)

Рисунок 3 "Регистрационная форма"

Главная страница находится по адресу “/home” начиная от корня веб-приложения и открывается автоматически при попытке перейти в корень сайта. На этой странице расположена информация о последних тестах и результативности групп (рис. 4).

Рисунок 4 "Домашняя страница"

Как видно из горизонтального меню приложения, существуют 4 раздела сайта: Домашняя страница (“Home”), открываемая по умолчанию, Тесты (“Tests”), Группы (“Audience”) и Аналитика (“Analytics”). В каждом из этих разделов могут быть подразделы - в случае со страницей «Тесты» существует 2 поддиректории: корневая «/» и директория «/add» с формой добавления теста (рис. 5).

Рисунок 5 "Форма создания теста"

На этой странице можно наглядно продемонстрировать глобальное состояние (глобальный store из компонента Provider). На основании объекта состояния, представленного на рис. 6, производится отрисовка элементов на странице. Изменение данных в полях для ввода вызывает изменение состояния, а затем уже страница перерисовывается. Такой подход является фундаментальным для React, так как позволяет на уровне веб-приложения манипулировать только данными и событиями по их изменению.

Рисунок 6 "Древовидное представление глобального состояния приложения"

Архитектура компонентов клиентской части приложения сложна и насчитывает множество файлов. Для демонстрации можно рассмотреть структуру страницы, используемой для сдачи теста. Она содержит название теста, его секции, вопросы и варианты ответа, а также кнопку отправки результатов в конце страницы. Для этой страницы предусмотрен путь “/exam”, который подставляет в пустое место страницы компонент ExamPageContainer.

Рисунок 7 "Схема компонентов страницы прохождения теста"

На рис. 7 визуально представлено деление веб-страницы на компоненты. Корневым компонентом в данном случае является ExamPageContainer. Он отвечает за загрузку данных о тесте с сервера и не имеет никакой отрисовки. После получение теста с сервера, дочерний компонент ExamPage начинает дальнейшую отрисовку элементов - заголовка теста (h2), секций теста (ExamSection). Каждый компонент секции затем инициирует отображение дочерних компонентов - название секции (h3), вопросы (ExamQuestion) и так далее.

На деле, компонентов на этой странице больше и некоторые из них были опущены для наглядности. Например, визуальное представление обьектов на странице осуществляется за счет использования компонентов Row и Col - строка и колонка, а в варианте ответа также присутствует элемент управления (checkbox или radiobutton).

Запросы к серверу из браузера посетителя веб-страницы осуществляются за счет библиотеки fetch. Она легко интегрируется в React-приложение и предоставляет широкие возможности для работы с HTTP-запросами. Эта библиотека представляет из себя функцию, первым параметром которой является URL запроса, а вторым - объект с параметрами запроса (такими как метод запроса - GET, POST, PUT, авторизационные данные - заголовок Authentication и т.п.). Данная функция возвращает результат отправленного HTTP-запроса, который используется для получения данных или обработки ошибки. Например, при запросе теста для прохождения экзамена используется следующий запрос:

GET http://api.tetatest.ru/Exam/getTest/vOvwl2avjhOUXwWVldxeoKOoUGea9dPs

В результате его выполнения следует ответ в формате JSON - данные о тесте, найденному по переданному токену или ошибка:

"success":true,

"test":

{

"id":2,

"name":"Тест про всё",

"token":null,

"sections":

{

"2":

{

"id":2,

"name":"Математика",

"questions":

{

"3":

{

"id":3,

"text": "Два маляра красят дом за 4 дня. \nСтаршему маляру нужно всего 6 дней, чтобы сделать работу самостоятельно. \nСколько дней нужно молодому маляру чтобы покрасить дом?",

"type":"single",

"answers": …

Результат запроса затем может быть использован программно в компонентах React.

Бэкенд

Логика веб-приложения основана на паттерне разработки “MVC” и написана на языке программирования C#. На сервере предусмотрены несколько контроллеров и связанные с ними действия:

• MainController - контроллер для основной логики взаимодействия с веб-сайтом (авторизация, регистрация и т.п.)

• ExamController - контроллер для взаимодействия с тестами (просмотр, создание, удаление и т.п.)

• TestsController - контроллер для действий, связанных с проведением экзамена (получение теста по “токену”, публикация результатов)

• AudiencesController - контроллер для взаимодействия с группами приглашаемых на тесты людей (добавление, удаление группы, добавление, удаление тестируемых)

• AnalyticsController - контроллер для получения аналитических данных

В качестве Модели выступает набор классов предметной области:

• Test.cs - тест

• Section.cs - секция

• Question.cs - вопрос

• Option.cs - вариант ответа

• TestTaker.cs - тестируемый

• и т.д.

Рисунок 8 "Схема данных сайта"

Для хранения данных используется программная прослойка между БД и веб-сервером, называемая Entity Framework. Данный фреймворк позволяет обращаться к объектам базы данных как объектам классов модели. Процессы добавления, редактирования и удаления сущностей из БД осуществляются путем вызова соответствующих методов объекта базы данных (Add, Update, Delete, AddRange и т.п.). Выборка данных производится с использованием языка запросов LINQ, поддерживаемым C#.

Создаваемая классами модели информационная среда представляет из себя реляционную схему данных, диаграмма которой представлена на рис. 8.

Логическая модель связей между сущностями модели данных представлена на рис. 9.

Рисунок 9 "Логическая модель данных"

В табл. 1 представлены все поля таблиц БД разрабатываемой системы, их тип данных и описание.

Таблица 1 "Описание полей таблиц БД"

Название поля

Тип данных

Описание

Таблица Accounts - аккаунты пользователей

AccountId

int

ID аккаунта

Login

nvarchar

Логин

HashedPassword

nvarchar

Зашифрованный пароль

FullName

nvarchar

Полное имя

FieldOfUse

nvarchar

Сфера применения

Таблица Audiences - группы участников

AudienceId

int

ID группы

Name

nvarchar

Название

AccountId

int

ID создавшего аккаунта (внешний ключ)

Таблица TestTakers - участники тестов

TestTakerId

int

ID тестируемого

AudienceId

int

ID принадлежащей группы (внешний ключ)

CreatedDate

datetime

Дата создания

UpdatedDate

datetime

Дата обновления

EMail

nvarchar

Адрес эл.почты

Таблица ContactInfoes - контактные данные участников

FirstName

nvarchar

Имя

LastName

nvarchar

Фамилия

Gender

nvarchar

Пол

DateOfBirth

datetime

Дата рождения

CompanyName

nvarchar

Название компании

DepartmentName

nvarchar

Название отдела

PositionName

nvarchar

Название должности

Location

nvarchar

Место жительства

CreatedDate

datetime

Дата создания

UpdatedDate

datetime

Дата обновления

TestTakerId

int

ID принадлжащего тестируемого (внешний ключ)

Таблица Tests - тесты

TestId

int

ID теста

Name

nvarchar

Название

CreatedDate

datetime

Дата создания

UpdatedDate

datetime

Дата обновления

AccountId

int

ID создавшего аккаунта (внешний ключ)

Таблица Sections - секции теста

SectionId

int

ID секции

TestId

int

ID теста

Name

nvarchar

Название

Таблица Questions - вопросы секции

QuestionId

int

ID вопроса

SectionId

int

ID секции

Score

int

Балл за правильный ответ

LoseScore

int

Вычет баллов за неправильный овтет

Text

nvarchar

Текст

Type

nvarchar

Тип

Таблица Options - варианты ответа

OptionId

int

ID варианта ответа

QuestionId

int

ID вопроса (внешний ключ)

Text

nvarchar

Текст

ImageUrl

nvarchar

Ссылка на картинку

IsRight

bit

Является правильным

Таблица TestParticipations - участие в тесте

TestParticipationID

int

ID участия в тесте

TestId

int

ID теста (внешний ключ)

TestTakerId

int

ID тестируемого (внешний ключ)

AuthToken

nvarchar

Авторизационный токен

DateInvited

datetime

Дата приглашения

Canceled

bit

Флаг отмены

DateCanceled

datetime

Дата отмены

Passed

bit

Флаг сдачи

DatePassed

datetime

Дата сдачи

Result

int

Результатм чм

Таблица TestParticipationAnswers - ответ на вопрос

TestParticipationAnswerId

int

ID ответа на вопрос

TestParticipationId

int

ID участия в тесте (внешний ключ)

OptionId

int

ID варианта ответа (внешний ключ)

QuestionId

int

ID вопроса (внешний ключ)

IsWrongAnswer

bit

Флаг неправильного ответа

Пример LINQ-запроса, выполняемого для получения всех групп и тестируемых:

var audiences = db.Audiences

.Where(a => a.AccountId == account.AccountId)

.Include(a => a.TestTakers.Select(tt => tt.ContactInfo))

.ToList()

.Select(a => new JsonAudience

{

id = a.AudienceId,

name = a.Name,

testTakers = a.TestTakers.ToDictionary(tt => tt.TestTakerId.ToString(), tt => new JsonAudienceTestTaker

{

id = tt.TestTakerId,

email = tt.EMail,

contactInfo = new JsonAudienceTestTakerContactInfo

{

id = tt.TestTakerId,

firstName = tt.ContactInfo.FirstName,

lastName = tt.ContactInfo.LastName,

gender = tt.ContactInfo.Gender,

dateOfBirth = tt.ContactInfo.DateOfBirth.ToString("dd.MM.yy"),

companyName = tt.ContactInfo.CompanyName,

departmentName = tt.ContactInfo.DepartmentName,

positionName = tt.ContactInfo.PositionName,

location = tt.ContactInfo.Location

}

})

});

Аналитическая система

В качестве хранилища данных аналитической системы выступает реляционная БД с типом схемы “снежинка”. Ее схема представлена на рис. 10.

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

Первое измерение DimTestTaker - данные о тестируемом. Второе измерение - цепочка от варианта ответа до теста (DimOption - DimQuestions - DimTest) хранит данные, соответственно, о варианте ответа, вопросе и тесте.

Рисунок 10 "Схема РХД"

Потоки данных из БД источника в РХД реализованы с использованием ПО MS SSIS. Порядок загрузки сущностей представлен на схеме потока управления пакета Integration Services (рис. 11).

Рисунок 11 "Схема потока управления пакета загрузки MS SSIS"

Сначала загружаются тестируемые (TestTakers) в три этапа (рис. 12):

• Выгрузка данных из БД в нужном формате (SQL-запрос к источнику)

• Проверка на уже существующие вхождения (уточняющий запрос к РХД)

• Вставка новых строк (SQL-запрос к РХД)

Рисунок 12 "Схема загрузки данных об участниках теста"


Подобные документы

  • Создание простой в использовании онлайн записной книжки, позволяющей вести записи, хранить файлы и создавать напоминания. Характеристика пользователей. Требования к системе. Проектная команда, система управления проектом. Реализация логики работы системы.

    курсовая работа [391,8 K], добавлен 16.02.2016

  • Проект локальной вычислительной сети организации ТРЦ "Синема" под управлением операционной системы Windows 2000 Advanced Server. Проблема окупаемости и рентабельности внедрения корпоративной локальной сети. Управление ресурсами и пользователями сети.

    дипломная работа [633,3 K], добавлен 26.02.2017

  • Разработка сайта, обеспечивающего функции по приему и обработке онлайн-заказов обоев. Перечень бизнес-процессов, включенных в разработку информационной системы. Инфраструктура разрабатываемой информационной системы. Тестирование программного обеспечения.

    курсовая работа [74,3 K], добавлен 25.05.2015

  • Анализ современных концепций построения сайтов онлайн-тестирования. Разработка автоматизированного тестирующего комплекса – обучающего Web-приложения, позволяющего проводить контроль уровня знаний математики с применением языка программирования Php.

    дипломная работа [865,8 K], добавлен 24.06.2013

  • Проектирование службы Windows и приложения для управления этой службой, которое позволит контролировать данные приложения - запускать и завершать определенные процессы по желанию пользователя через определенные промежутки времени. Инструкция по установке.

    курсовая работа [2,8 M], добавлен 05.01.2013

  • Знакомство с особенностями и основными этапами разработки онлайн-сервиса, облегчающего потребителям процесс подбора спортивного снаряжения. Анализ оборудования для вейкбординга. Общая характеристика клиент-серверной архитектуры реализации веб-приложения.

    дипломная работа [4,1 M], добавлен 30.09.2016

  • Обзор веб-приложений для реализации онлайн фитнес-системы поддержания физической формы человека. Диаграммы вариантов использования. Построение логической модели данных. Способы идентификации классов анализа. Разработка сценариев и макетов экранных форм.

    дипломная работа [1,2 M], добавлен 02.08.2016

  • Разработка клиент-серверного приложения под управлением Windows на языке программирования Delphi, реализующего функции дистанционного обучения (тесты). Основная форма программы, которая состоит из меню, панели активации пользователя и панели чата.

    курсовая работа [4,3 M], добавлен 15.04.2019

  • Общая характеристика Microsoft Windows Server 2008: особенности, гибкость, защита, контроль. Усовершенствования операционной системы: Server Core, службы терминалов, Windows PowerShell, самовосстанавливающаяся NTFS, Server Manager, улучшение надежности.

    реферат [452,3 K], добавлен 15.12.2009

  • Разработка приложения, которое будет выполнять функции показа точного времени и точной даты. Определение дополнительных функций разработанного приложения. Рассмотрение основных этапов создания программного продукта. Результаты тестирования приложения.

    курсовая работа [2,2 M], добавлен 14.04.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.