Главная/Портфолио/Решение для автоматизированного проведения тестирования студентов в РГПУ им. Герцена

Решение для автоматизированного проведения тестирования студентов в РГПУ им. Герцена

Клиенту требовалось провести импортозамещение и модернизацию программного обеспечения для проведения тестирования студентов. Мигрировать с системы управления базами данных MS SQL Server на PostgreSQL и значительно переработать legacy-код.

Задача осложнялась тем, что программное обеспечение было разработано несколько лет назад на не слишком популярной сейчас платформе ASP.NET Core.

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

Отрасльобразование
Услугисоздание архитектуры веб-приложения, разработка, QA, написание проектной документации
Технологический стекASP.NET Core, MS SQL, PostgreSQL, Entity Framework, TypeScript, Angular
ПО ПО

О клиенте

РГПУ им. Герцена — одно из ведущих учебных заведений России. Университет занимается подготовкой будущих педагогов, а на его базе работают организации, обучающие мигрантов русскому языку.

В рамках государственных программ поддержки мигрантов, РГПУ им. Герцена также предоставляет курсы и тестирование для сертификации знаний русского языка. Благодаря таким программам, мигрантам проще трудоустроиться в стране.

О задаче

Чтобы создавать тесты, проводить тестирование и анализировать результаты, клиент использовал устаревшее программное обеспечение.

Решение было основано на зарубежной СУБД (системе управления базами данных), поэтому не могло быть включено в реестр российского программного обеспечения. Это ограничивало его использование и распространение.

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

Нас попросили:

  • Провести импортозамещение ПО за счёт миграции баз данных с Microsoft SQL Server в PostgreSQL.
  • Модернизировать пользовательский интерфейс.

 

Вызовы проекта

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

Разберём подробнее:

  • Популярные системы управления базами данных, такие как Microsoft SQL Server и Oracle DB, стали создавать и предлагать пользователям возможности писать программный код, который взаимодействует с базой данных, непосредственно в самой базе данных, а не во внешнем приложении.
  • У каждой СУБД своя логика работы и даже разные языки программирования: например, у Microsoft SQL Server — Transact-SQL, у PostgreSQL — PL/ SQL. Т. е. у системы, из которой нужно было базы данных перенести, логика значительно отличалась от системы, в которую мигрировали.
  • На фоне всего этого складывалась непростая ситуация: если разработчики использовали исходную СУБД одновременно как инструмент для создания кода и инструмент для хранения таблиц, а также извлечения данных оттуда, происходила привязка именно к этой СУБД.
  • Выгрузить таблицы из одной СУБД и загрузить в другую несложно, но перенести код, который разработан в одной системе, в другую — та ещё задача. Еë решение предполагает переписывание кода, полностью или бо́льшую часть. 

Так, с нашей стороны нужно было либо переписать код, имеющийся в Microsoft SQL Server на момент обращения клиента, либо перенести логику этого кода во внешнее приложение. В обоих случаях работа требовала значительных усилий и времязатрат, ведь код был тесно связан с особенностями Microsoft SQL Server — а нам нужно было уйти в PostgreSQL.

Ещё один вызов данного проекта — низкое качество исходного кода. Он был написан давно и не соответствовал современным стандартам разработки: был сложночитаемым, неструктурированным. Это осложняло процесс модернизации и, особенно, тестирования и отладки.

Кроме того, работа с legacy-кодом в принципе специфична: перед тем как в нём что-то менять, необходимо произвести детальный анализ всего, что написано (тысячи строк кода), понять подходы прежнего разработчика. В противном случае при любом крошечном изменении такого кода есть риск «сломать» всю систему: правишь в одном месте, а «падает» функционал в другом.

Наши решения

Переписали код и бесшовно перенесли базы данных

Для реализации импортозамещения мы провели замену Microsoft SQL Server на PostgreSQL. Работы включали не только перенос данных как таковой, но и частичное переписывание кода. Выбрали этот вариант действий как наиболее быстрый и полезный для клиента с учётом его вводных.

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

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

Все задачи потребовали подключения опытных программистов уровня Senior, притом ранее работавших и с Microsoft SQL Server, и с PostgreSQL. У нас в штате такие программисты есть: они традиционно берут на себя сложнейшие проекты и выдают достойные результаты, о которых подробно рассказываем в Портфолио

 

Модернизировали интерфейс

Мы изменили логику расположения элементов интерфейса на экране и, соответственно, визуальное оформление. При выполнении работ ориентировались на гайдлайны по разработке современного UI/UX.

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

Результаты проекта

Система была успешно модернизирована и включена в реестр российского программного обеспечения. РГПУ им. Герцена смог расширить её использование — предложить другим учебным заведениям.

Больше кейсов по модернизации программного обеспечения: 

PepsiCo: система складского учёта для 70+ филиалов

Телекоммуникационная компания (NDA): глубокая кастомизация корпоративного мессенджера