Решение для автоматизированного проведения тестирования студентов в РГПУ им. Герцена
Клиенту требовалось провести импортозамещение и модернизацию программного обеспечения для проведения тестирования студентов. Мигрировать с системы управления базами данных MS SQL Server на PostgreSQL и значительно переработать legacy-код.
Задача осложнялась тем, что программное обеспечение было разработано несколько лет назад на не слишком популярной сейчас платформе ASP.NET Core.
Как мы решали поставленные задачи, с какими вызовами столкнулись и как их преодолели, делимся в материале.
О клиенте
РГПУ им. Герцена — одно из ведущих учебных заведений России. Университет занимается подготовкой будущих педагогов, а на его базе работают организации, обучающие мигрантов русскому языку.
В рамках государственных программ поддержки мигрантов, РГПУ им. Герцена также предоставляет курсы и тестирование для сертификации знаний русского языка. Благодаря таким программам, мигрантам проще трудоустроиться в стране.
О задаче
Чтобы создавать тесты, проводить тестирование и анализировать результаты, клиент использовал устаревшее программное обеспечение.
Решение было основано на зарубежной СУБД (системе управления базами данных), поэтому не могло быть включено в реестр российского программного обеспечения. Это ограничивало его использование и распространение.
Интерфейс системы не соответствовал современным стандартам пользовательского опыта. И преподаватели, и студенты отмечали, что он неудобен и замедляет их работу.
Нас попросили:
- Провести импортозамещение ПО за счёт миграции баз данных с 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): глубокая кастомизация корпоративного мессенджера