К нам обратилась крупная международная компания, занимающаяся производством и продажей аппаратного обеспечения для компьютеров, центров обработки данных, коммуникационных систем и других типов оборудования.
У заказчика устарело многофункциональное приложение, предназначенное для помощи менеджерам в составлении заказов на оборудование, направляемых на производство и комплектацию. Программа позволяет сформировать ценовое предложение заказчику, исходя из состава решения, наличия оборудования на складе и другим параметрам.
Команда специалистов ICL Services детально изучила функционал старого приложения заказчика, требования и текущие бизнес-процессы, после чего сформировала предложения, основанные на собственном опыте разработки приложений для бизнеса, и подготовила предложение по разработке новой версии приложения в формате веб-приложения (web-based application).
У заказчика устарело многофункциональное приложение, предназначенное для помощи менеджерам в составлении заказов на оборудование, направляемых на производство и комплектацию. Программа позволяет сформировать ценовое предложение заказчику, исходя из состава решения, наличия оборудования на складе и другим параметрам.
Команда специалистов ICL Services детально изучила функционал старого приложения заказчика, требования и текущие бизнес-процессы, после чего сформировала предложения, основанные на собственном опыте разработки приложений для бизнеса, и подготовила предложение по разработке новой версии приложения в формате веб-приложения (web-based application).
Задачи
- Заменить бизнес-приложение заказчика на новое без потери эффективности.
- Разработать новое приложение в формате веб-версии.
- Реализовать дополнительные функции.
Реализованное нами решение
- Несмотря на существующие недостатки, старая версия приложения имела ряд весомых преимуществ, делая его одним из лучших в своём классе – соответственно, планка качества для нашей работы была высока. Более того, на момент старта проекта приложением пользовались более 20 000 пользователей по всему миру, а потому особенно высокие требования предъявлялись к стабильности работы и удобству для пользователей.
Предыдущее предложение развивалось и дорабатывалось порядка 10 лет – нам же была поставлена задача реализовать ключевой функционал приложения за два года.
Со стороны ICL Services была сформирована команда в составе тридцати человек: аналитики, разработчики, специалисты по тестированию и управлению.
С учётом жестких ограничений по времени нам было важно организовать эффективное взаимодействие с заказчиком. С этой целью мы:
- организовали чёткую структуру управления проектом – со стороны заказчика были выделены ключевые сотрудники, с нашей стороны назначен руководитель проекта;
- выбрали форматы и частоту взаимодействия, после чего определили ключевых стейкхолдеров и назначили ежемесячные встречи.
- По результатам анализа требований для реализации проекта был выбраны стеки технологий. Для реализации серверной части приложения (Back-end) использовались:
- .Net framework версий 4.6 и 4.7.2
- .Net Core 3.1
В качестве планировщика задач использовался Hangfire. - Клиентскую часть приложения (Frontend) специалисты ICL Services реализовали на технологии Angular, новейшей версии 9.0.
Приоритетом было быстродействие системы.
Мы создавали веб-приложение, которое должно было сохранять скорость обработки информации вне зависимости от количества пользователей (одновременно рассматривалась возможность работы десятков тысяч пользователей), сложности и состава обрабатываемых заказов (сотни тысяч позиций в заказах).
В организации разработки активно использовались DevOps практики – были реализованы Continues Integration и Continuous Delivery. - Как это было организовано в проекте:
- Наши специалисты выполнили глубокую автоматизацию как тестирования (Unit-тесты и Coded UI), так и развертывания приложения на серверное окружение.
- Тесты выполнялись каждую ночь и утром разработчики проверяли влияние изменений на сборку приложения. В процессе тестирования также автоматически генерировались и подготавливались тестовые данные. Это позволило разработчикам видеть проблемы заранее: так как сборка выполнялась каждую ночь, на следующий день специалисты видели, какие были выявлены проблемы, и могли их оперативно устранить.
- После развёртывания на окружение также проводились автотесты и специалисты отслеживали возможные сбои, связанные с особенностями окружения.
- Наши специалисты выполнили глубокую автоматизацию как тестирования (Unit-тесты и Coded UI), так и развертывания приложения на серверное окружение.
- Такая организация процесса разработки, тестирования и развертывания позволила нам ощутимо сократить время разработки и сэкономить деньги заказчика.
В ходе проекта наши специалисты:
- разработали детальную систему нефункциональных требований, где были описаны все ограничения, которые необходимо было учитывать;
- полностью автоматизировали тестирование в том числе в части производительности;
- вместе с заказчиком сформулировали жесткие KPI, которые мы отслеживаем и по сей день;
- учили не самое лучшее качество каналов связи у европейских пользователей нашего продукта, проведя отдельное тестирование и моделирование различных ситуаций;
- обеспечили максимальную наследственность элементов интерфейса благодаря привлечению UX специалистов.
- Результат работы нашей команды полностью устроил заказчика: нам удалось обеспечить миграцию пользователей с минимальным обучением и без потери эффективности специалистов, которая часто сопутствует переходу с одного ключевого приложения на другое.
В дальнейшем планируется интеграция с внутренними системами заказчика. Это позволит существенно повысить эффективность работы всех подразделений компании.
Результаты
- За первые полгода работы над проектом была разработана первая версия приложения и начато ее распространение с базовым функционалом.
- В начале 2020 года был реализован полный функционал в соответствии с требованиями заказчика и стартовал массовый переход пользователей на новую версию.
- По просьбе заказчика было разработано API и выполнена интеграция со сторонними системами электронной коммерции для работы в режиме реального времени.