АННОТАЦИЯ 3
Перечень условных обозначений, символов, сокращений, терминов 4
Введение 6
1 Анализ требований 8
1.1 Предпосылки к разработке 8
1.2 Модель предметной области 10
1.3 Варианты использования системы 15
1.4 Нефункциональные требования 19
2 Проектирование 21
2.1 Детализация вариантов использования 21
2.1.1 Создание задачи 21
2.1.2 Верификация задач 32
2.1.3 Версионирование сущностей 33
2.1.4 Отправка решения 35
2.2 Взаимодействие с серверной частью платформы 38
2.3 Архитектура приложения 42
2.4 Обзор используемых библиотек 46
2.4.1 React 46
2.4.2 UI-библиотека Ant Design 48
2.4.3 Mobx 50
2.4.4 React Router 52
2.4.5 i18next 53
2.5 Проектирование макетов 53
2.5.1 UI-кит 53
2.5.2 Объединение экранов просмотра и редактирования сущности 54
2.5.3 Многоступенчатые и вложенные формы 54
2.5.4 Использование Drawer для представления подробной информации 55
2.5.5 Светлая и темная темы 57
2.5.6 Drag’n’Drop 58
3 Реализация 59
3.1 Паттерны 59
3.1.1 Компоненты высшего порядка 59
3.1.2 Context API 61
3.1.3 Хуки 62
3.2 Многоступенчатые вложенные формы 65
3.3 Адаптивность цифровой платформы под разные типы предметов 71
Заключение 74
Список использованных источников и литературы 75
Трудно переоценить важность онлайн-обучения в наши дни. Как показала практика, в некоторых случаях дистанционное обучение предполагает не только комфорт учиться из любой точки мира в удобное время и в удобном темпе, но и жизненную необходимость. Это убедительно доказала пандемия коронавирусной инфекции, которая длилась более 3 лет [2]. Также существует группа лиц с ограниченными возможностями, которым затруднительно посещать занятия очно. Данная цифровая платформа позволяет частично перенести учебные занятия «в цифру», что делает получение знаний более гибким и доступным.
Параллельно существует другая проблема - проблема подготовки квалифицированных практико-ориентированных IT-специалистов в условиях ограниченных ресурсов. Часто обучение происходит в формате «learn by doing»: студентам выдается перечень задач, которые необходимо решить к определенному сроку. Выполняя задания, учащиеся приобретают практические навыки анализа и решения поставленных перед ними проблем. Затем эти решения нужно проверить, что превращается в трудоемкую операцию для преподавателей и ассистентов. Часто контроль сводится к проверке решения на работоспособность, что безусловно можно автоматизировать. Именно эту задачу призвана решать цифровая платформа CodeHedgehog. Она предоставляет образовательному учреждению инфраструктуру для хранения, создания и кастомизации классов, задач и других сущностей, обработки и автоматического тестирования решений. Таким образом, данная платформа позволяет уменьшить нагрузку на преподавателей и обеспечивает бесперебойную и объективную проверку решений студентов, что привносит свой вклад в развитие IT-образования.
Работу с цифровой платформой CodeHedgehog можно разделить на две части: наполнение системы образовательным контентом: классами, задачами и другими сущностями, необходимыми для автоматизации процесса тестирования решений студентов, и непосредственно сам процесс образовательной деятельности, в котором должны участвовать студенты, преподаватели и ассистенты. В связи с этим было принято решение выделить два отдельных клиентских приложений: Банк Задач, с помощью которого методисты будут управлять материалами цифровой платформы, и основное клиентское приложение, унаследовавшее название всей цифровой платформы, в контексте которого студенты будут решать задачи, а преподаватели и ассистенты постмодерировать образовательный процесс. Разработка этих двух клиентских приложений стала целью данной выпускной квалификационной работы.
Для реализации поставленной цели были выделены следующие задачи:
1) провести анализ требований;
2) спроектировать варианты использования и макеты;
3) спроектировать архитектуру;
4) разработать клиентские приложения.
Таким образом, в рамках данной работы были реализованы клиентские приложения CodeHedgehog и TaskBank для цифровой платформы CodeHedgehog. Для этого были решены все поставленные задачи:
1) провести анализ требований;
2) спроектировать варианты использования и макеты;
3) спроектировать архитектуру;
4) разработать клиентские приложения.
В системе, помимо реализации спроектированного функционала, заложена возможность для дальнейшего расширения. Это очень актуально для данной цифровой платформы, ведь она находится на стадии активной разработки и внедрения новых предметных дисциплин.
В процессе работы были как закреплены знания в уже известных технологиях разработки, так и получен опыт использования новых библиотек и архитектурных подходов, что безусловно даст преимущество в дальнейшей профессиональной деятельности.