Анализ аналогов
Порталы с тестами являются популярным способом проведения онлайн-тестирования и оценки знаний. Анализ аналогов таких порталов может помочь выявить их основные преимущества и недостатки, а также определить, какие функциональные возможности являются наиболее востребованными у пользователей.
Основные характеристики и функционал порталов с тестами:
Разнообразие категорий для разных групп интересов. Хороший портал с тестами должен предлагать широкий выбор тем и предметов для тестирования, чтобы удовлетворить потребности как школьников и студентов, так и профессионалов.
Удобный интерфейс и навигация. Пользователь должен легко находить нужные тесты, проходить их, просматривать результаты и анализировать свои ошибки.
Возможность создания собственных тестов. Некоторые порталы предоставляют возможность пользователям создавать собственные тесты и делиться ими с другими участниками.
Обратная связь и статистика результатов. Пользователи должны иметь возможность получить детальную обратную связь по результатам тестирования, а также просматривать статистику своей активности на портале.
Адаптивный дизайн. Порталы с тестами должны быть доступны для использования на различных устройствах, включая смартфоны и планшеты.
Примеры популярных порталов с тестами и их основные особенности:
Testmoz - платформа для создания и прохождения тестов, предоставляющая возможность добавления изображений и звуковых файлов к вопросам.
Quizlet - портал для изучения иностранных языков с помощью интерактивных карточек, аудио-тестов и других учебных материалов.
Kahoot - сервис для проведения интерактивных викторин и опросов в реальном времени с возможностью участия нескольких игроков.
Анализ аналогов порталов с тестами позволяет выделить идеи для улучшения существующих проектов и разработки новых функциональных возможностей, которые могут привлечь больше пользователей и повысить качество образовательного процесса.
Выбор стека используемых технологий
Веб-сервис будет состоять из двух отдельных приложений.
Для написания FrontEnd’a будет использоваться язык программирования JavaScript, но не в чистом виде. Angular — это фреймворк для frontend-разработчиков, который использует язык JavaScript и имеет открытый исходный код.
Он предоставляет возможность полноценной работы по созданию приложений и включает в себя:
полноценную платформу для программирования;
набор библиотек, интегрированных друг с другом и имеющих множество готовых решений для реализации обширного функционала;
комплект дополнительных инструментов для программистов, помогающих писать, собирать, проводить тестирование, оптимизировать и обновлять программный код.
Главным отличием Angular от предшественников стала возможность работы с инструментами HTML и CSS. Это позволило даже неквалифицированным программистам разрабатывать и внедрять достаточно сложные приложения в разных форматах — для браузера, для мобильных устройств или в десктопном варианте.
Для разработки BackEnd части будет использоваться язык программирования Java.
Java – это многоплатформенный, объектно-ориентированный и сетецентрический язык, который сам по себе может использоваться как платформа. Это быстрый, безопасный и надежный язык программирования для всего: от мобильных приложений и корпоративного ПО до приложений для работы с большими данными и серверных технологий. Поскольку Java является бесплатным и универсальным языком, на нем создаются локализованные и распространяемые программы.
Список используемых фреймворков будет включать:
Spring Framework - универсальный фреймворк с открытым исходным кодом для Java-платформы. Также существует форк для платформы .NET Framework, названный Spring.NET. Первая версия была написана Родом Джонсоном, который впервые опубликовал её вместе с изданием своей книги «Expert One-on-One Java EE Design and Development». Фреймворк Java Spring предоставляет разработчикам инструменты для создания сложных систем, например многопользовательских корпоративных веб-приложений со множеством функций для бизнеса. Он позволяет быстро создавать приложения, которые умеют работать с базами данных и облаками, состоят из разных модулей, обмениваются данными с пользователями через интернет по защищённым каналам.
Jjwt - это библиотека Java, обеспечивающая сквозное создание и проверку веб-токена JSON. Навсегда бесплатный и с открытым исходным кодом (лицензия Apache, версия 2.0), он был разработан с ориентированным на сборщика интерфейсом, скрывающим большую часть его сложности.
commons-lang3 - библиотека Apache Commons Lang 3 представляет собой популярный, полнофункциональный пакет служебных классов, направленный на расширение функциональности Java API. Репертуар библиотеки довольно богат, начиная от манипуляций со строками, массивами и числами, отражения и параллелизма и заканчивая реализациями нескольких упорядоченных структур данных, таких как пары и тройки (обычно известные как кортежи).
Lombok - это библиотека для сокращения кода в классах и расширения функциональности языка Java. Она подключается к среде разработки (IDE) или инструменту сборки приложений Maven, Gradle в качестве плагина. Принцип работы библиотеки основан на использовании аннотаций, которые:
многократно сокращают шаблонный код;
экономят время разработчиков;
улучшают читаемость кода.
Использование Lombok позволяет автоматически преобразовать объёмный Java-код в оптимизированную и лаконичную структуру. Также плагин избавляет разработчика от ручного набора однотипных фрагментов кода и предотвращает появление ошибок.
Mapstruct - это библиотека для Java, которая генерирует код для передачи данных между разными сущностями в программе. Она помогает сопоставлять объекты из одной сущности с другой. Этот процесс называется маппингом данных, а инструмент для передачи — маппером, или Java mapper. Маппер в широком смысле — подсистема для преобразования и передачи данных.
Flyway - это фреймворк, который обновляет версии баз данных с помощью миграций. Миграции можно писать на SQL (с синтаксисом, специфичным для конкретной СУБД) или на Java. Миграции могут быть версионными или повторяющимися. Первые имеют уникальную версию и применяются ровно один раз. У вторых номера версии нет, и они применяются, когда у них изменяется контрольная сумма. Повторяющиеся миграции в рамках одного запуска всегда применяются после выполнения версионных миграций.
Hibernate - Библиотека для языка программирования Java, предназначенная для решения задач объектно-реляционного отображения (ORM). Является самой популярной реализацией спецификации JPA.
Junit - фреймворк для автоматического юнит-тестирования приложений. Он содержит специальные функции и правила, которые позволяют легко писать и запускать тесты, то есть проверять, что каждый блок кода, или модуль, ответственный за определённую функцию программы, работает как надо. Такой вид тестирования называют модульным, или юнит-тестированием.
В качестве базы данных будет использоваться PostgreSQL. PostgreSQL — это свободно распространяемая объектно-реляционная система управления базами данных (СУБД) с открытым исходным кодом, написанном на языке C. «Объектно-реляционная» означает, что PostgreSQL поддерживает концепции, присущие как реляционным базам данных, так и объектно-ориентированным языкам программирования (объекты, классы, наследование и другие).
В качестве системы сборки будет использоваться Maven. Фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах POM, на языке XML. Проект Maven издаётся сообществом Apache Software Foundation, где формально является частью Jakarta Project.
В качестве системы контроля версий будет использоваться Git. Git — это распределённая система контроля версий. Она позволяет разработчикам отслеживать изменения в исходном коде и сотрудничать с другими разработчиками над одним проектом.
Основные понятия Git:
Репозиторий — хранилище, содержащее все файлы и историю изменений проекта.
Коммит — фиксация изменений в репозитории с описанием внесенных изменений.
Ветка (branch) — отдельный поток разработки, который позволяет создавать и тестировать новые функции, не затрагивая основной код.
Слияние (merge) — объединение изменений из одной ветки в другую.
