Разработка нового функционала для информационно-аналитической системы Probit
Вводные данные о клиенте
Информационно-аналитическая система Probit — ПО для определения величин пожарного риска на производственных объектах в режиме онлайн. Систему используют в экспертных организациях, научно-исследовательских и проектных институтах, специализирующихся на пожарной безопасности производственных объектов.
Россия
Промышленность
Разработка ПО
2 Backend-разработчика, Frontend-разработчик, QA-инженер, Проектный менеджер


Проблема, с которой пришёл клиент
С Probit мы знакомы очень близко — именно наша компания в 2021 году разработала эту систему. Четыре года проект успешно работал, компания покоряла новые рынки и росла. Поэтому клиент вновь обратился к нам: теперь за расширением. Систему нужно было сделать ещё быстрее, внедрить новый функционал и реализовать дополнительные интеграции.
Кроме того у заказчика появился запрос на новые вычислительные мощности. Раньше логика системы работала на frontend части — это ограничивало в детализации проектов

Задачи
Ускорить работу системы
Чтобы система работала на самом высоком уровне детализации. Для этого мы решили перенести систему с фронтэнда на бэк и упаковать в NPM-пакетыРазработать новый функционал
Чтобы расширить сферы использования продукта, клиент хотел внедрить в систему новый расчетный модуль по определению площади растекания жидкостиИнтегрировать систему с внешним источником
Чтобы автоматизировать процесс моделирования объектов в системе Probit, кроме того эта интеграция позволит отображать результаты расчётов в 3DНазывать внешний источник, с которым клиенту нужна была интеграция, мы не можем, поэтому просто обозначим, что это крупный российский системный интегратор, один из лидеров в сфере моделирования объектов промышленного строительства.
Команда
Требования к специалистам
Проект обещал быть сложным не только технически. Probit — уникальная информационно-аналитическая система, которая основана на объёмных математических формулах и алгоритмах. А значит, для работы с этим проектом нужно больше, чем идеальное знание кода и прикладные технические навыки.
Именно поэтому в команду мы подобрали людей с углублённым пониманием построения алгоритмов и продвинутым математическим образованием.
- Backend-разработчика
- Frontend-разработчик
- QA-инженер
- Проектный менеджер
Как мы работали
по этапам
Шаг 1. Анализ и разработка требований
В этом кейсе мы говорим о задачах, которые перед нами стояли чётко и понятно. Но в моменте было вообще не так. Из-за специфики системы, вникнуть в требования проекта было непросто. Усложнял ситуацию и масштаб предстоящих задач.На первых этапах работы сам заказчик был не уверен, что все его идеи в принципе возможно воплотить в жизнь. И первое,что мы начали делать на этапе разработке требований к системе — декомпозировать масштабные планы клиента на блоки поменьше. Эти блоки мы разбивали на задачи ещё меньше. И так до тех пор, пока мы не получили подробный поэтапный план работ.

Шаг 2. Разработка нового функционала
Клиент пришёл к нам с конкретным запросом: нужно разработать расчетный модуль по определению площади растекания жидкости.Что это такое и зачем?
Это инструмент актуальный для любых производств и компаний, которые работают жидкостями разного формата. Пример:
У нас есть завод по переработке нефти. Там находится 4 резервуара для хранения этой нефти. У резервуара есть параметры: толщина, высота, плотность стен, глубина и плотность жидкости, расстояние друг от друга. Есть и внешние параметры: рельеф, состав почвы, обвалование. Наша система позволяет на основании заданных параметров воссоздать объекты в цифровой среде и посмотреть: что произойдёт, если с резервуаром что-то случится. Предположим, произошла утечка нефти. Наша система позволяет увидеть: куда пойдёт жидкость, какие объекты в теории она может затронуть, какой вообще в теории будет площадь растекания.
- Эта функция будет очень полезна на этапе проектирования подобных объектов, чтобы оценить все риски. Понять: что укрепить, как сделать систему безопасной;
- Модуль подойдёт и для профилактики разных ЧС: чтобы предприятия могли мониторить систему и видеть слабые места, которым стоит уделить внимание.
С этим этапом мы справились быстро: у нас уже был опыт работы над первым модулем программы для расчёта рисков возгорания, поэтому у нас было понимание того, как система должна работать.

Шаг 3. Перенос расчетных модулей в отдельный npm-пакет
Сегодня в системе Probit фактически есть два направления: расчет рисков возгорания и растекания жидкости. Оба этих модуля по своей сути — это огромные связки формул. Для того, чтобы:- Перенести систему с фронта на бэк (и тем самым ускорить её)
- В перспективе клиент мог использовать эти сложные блоки, а мы смогли интегрировать систему с внешними источниками

Как только мы закончили этот этап работы, мы были уверены, что основной блок работы позади: новый функционал разработан, npm-пакеты написаны, программа работает на бэке. Релиз близко! Осталось только получить данные из внешнего источника и внести их в наши формулы для интеграции систем.
На этом этапе к работе подключился внешний источник, который и должен был отправить нам данные для работы системы.
Шаг 4. Получение данных из внешнего источника, интеграция систем


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

Так в наш проект добавился ещё один блок работы: преобразовать данные внешнего источника, чтобы из хаотичного набора точек сделать последовательность.
Как мы решили эту задачу:
- Для расчёта стандартных объектов вроде резервуаров мы написали алгоритм на графах.
- Для расчёта задвижек в системе резервных трубопроводов мы использовали алгоритм Флойда.
Шаг 5. Расчёт рисков
Наконец, когда мы получили все данные и преобразовали их, мы передали их в наши формулы и получили итоговые значения. Проект Done — ✔
Стек технологий
Бэк проекта мы писали на Node.js. В двух словах что это за технология и почему мы выбрали именно её.
Node.js – это среда с открытым исходным кодом, в которой используется язык программирования JavaScript. На этом фреймворке мы остановились, т.к. он идеально подходит для создания высокопроизводительных серверов и проектов с большим количеством динамических данных.В основе работы Node.js лежит асинхронность. В дополнение к неблокирующему вводу-выводу это позволяет серверному приложению на Node.js обрабатывать в разы больше клиентских запросов в единицу времени, чем такому же приложению, разработанному на большинстве других технологий серверной разработки.
Что это значит для клиента?
- Система выполняет операции быстро, что особенно важно для высокопроизводительных серверных приложений, таких как Probit
- Благодаря своей масштабируемости и скорости реагирования на изменения в слое данных, Node.js идеален для создания масштабных приложений. Так что в перспективе Probit легко сможет внедрять ещё больше новых функций, расти и расширяться
- Vue js
- HTML5
- CSS3
- PHP
- MySQL
- Git
- Laravel
- Nginx
- Vuex
- Vue Router
- ChartJS
- Canvas
- Axios
- RestAPI
- Sass
Что в итоге?
В итоге у нас получилась сложная, нагруженная система, у которой нет аналогов в мире. В ходе работы мы закрыли все проблемы, с которыми к нам пришёл клиент:
- Ускорили работу системы в несколько раз
- Разработали новый сложный функционал, который позволит нашему клиенту выйти на новые рынки
- Для автоматизации некоторых рабочих процессов интегрировали систему с внешним источником
- Оптимизировали код, подключили модуль gpu, провели огромную работу с написанием алгоритмов
Этим проектом мы действительно гордимся и очень рады, что у нас есть возможность работать над такими нестандартными задачами. Клиент со своей стороны остался на 100% доволен результатами нашей работы. Глубокое погружение в специфику проекта, полная вовлечённость каждого члена команды, оптимальные решения — все это про нас клиент знал ещё из прошлого опыта работы с iMedia. Но он был абсолютно не уверен, что реализовать некоторые идеи в принципе возможно. Зато мы точно знали, что всё получится и всё действительно получилось.
-
Давайте знакомиться! Расскажите о своём проектеНе знаете, что рассказать нам о проекте?Тогда скачайте подготовленные нами вопросы, которые помогут нам лучше узнать Ваши требования к проекту.Скачать бриф-анкету на разработку сайта
-
Хотите больше узнать о нас? С радостью всё расскажем!