ДжазТим — надежный технологический партнер

Agile разработка ПО на Java

Система управления игровыми компьютерными клубами

Бизнес составляющая проекта

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

Данное решение является масштабируемым и в состоянии поддержать обслуживание как одного клуба, так и сети компьютерных клубов.

Краткое описание проекта

Система управления игровыми компьютерными клубами, разработанная нашей компанией, включает в себя следующие компоненты:

  • серверную часть, которая хранит данные пользователей, тарифы, историю сессий, отвечает за авторизацию;
  • приложение кассира, которое представлено в виде web-приложения и позволяет администратору клуба управлять учетными данными посетителей, пополнять баланс, удаленно управлять блокировкой рабочих станций;
  • оболочку для клиентских машин, которая отвечает за управление оплаченным сеансом работы клиента клуба и блокировку станции по истечению оплаченного времени;
  • Windows-службу, написанную на Java, которая отлавливает и пресекает попытки недобросовестных пользователей несанкционированно завершить процесс оболочки;
  • инсталлятор: оболочка и Windows-служба передаются в виде исполняемого файла, который производит установку на пользовательскую машину необходимого программного обеспечения и дополнительную настройку системы. Установщик реализован с помощью инструмента Inno Setup.

Техническое описание проекта

Оболочка представляет собой desktop-приложение и реализована при помощи фреймворка Electron. Клиентская оболочка и Windows-служба работают в тесной связке и образуют в паре “приложение клиента”. Служба следит за процессом оболочки и перезапускает его каждый раз, когда он аварийно завершается либо несанкционированно закрыт через диспетчер задач. Также в службе реализовано слежение за продолжительностью сеанса. Когда оплаченное время пользователя заканчивается, служба сообщает оболочке, что нужно заблокировать доступ пользователя к Windows.

Служба устанавливается автоматически, во время инсталляции оболочки. Одновременно в системе Windows создается пользователь с ограниченными правами, который устанавливается в качестве “пользователя по умолчанию”. В качестве shell для новой учетной записи прописывается оболочка.

Для сохранения возможности проведения профилактических или других администраторских работ созданная Windows-служба будет пытаться восстановить процесс оболочки только в созданной во время установки учетной записи.
Связь между компонентами кассира, клиента и серверной части реализована в архитектуре REST.

Оператор клуба со своего рабочего места может заблокировать любую пользовательскую машину. Для этого приложение кассира пошлет запрос о блокировке на сервер, а сервер по webSocket передаст сообщение приложению клиента.

Компьютеры в приложении кассира идентифицируются по ip-адресу и идентификационному номеру, который формируется путем хэширования mac-адреса компьютера.

Данные о всех сессиях пользователей хранятся в базе данных MySQL и отображаются в приложении кассира.

Технологии

Stack:Apache Maven, Apache Tomcat, Tyrus, ReactJS, Redux, JNA
Programming languages: Java 11, JavaScript, Node.js
Frameworks: Electron, Spring Boot, Spring Data, Spring Security
Infrastructure: Gerrit, IntelliJ IDEA, Jira, Inno Setup, VM VirtualBox, JetBrains WebStorm
DB: MySQL
Test libraries: Junit, DBunit.
Other libraries: Lombok, JsonWebToken, Log4j2.
Protocols: WebSocket, REST.

Скриншоты

Особенности проекта

  • разработка системы с нуля: от бизнес анализа до тестирования решения;
  • четкое разделение работ на этапы, начиная с исследования имеющегося решения у заказчика до разработки прототипа и его тестирования;
  • системное программирование: разработка Windows-службы на java;
  • слежение и управление процессами операционной системы Windows;
  • разработка desktop-приложения в “режиме киоска”. То есть приложение должно занимать всю площадь экрана, закрывая панель задач, в том числе, иметь максимальный приоритет перед другими приложениями. Приложение нельзя закрыть, свернуть, подвинуть;
  • минимальная потребность в участии персонала клуба для установки и настройки приложения для пользовательских машин;
  • еженедельные поставки заказчику промежуточных версий прототипа на протяжении всего времени разработки для проведения тестирования,
    каждую неделю продукт демонстрировался заказчику, что позволяло ему быть в курсе хода работ и видеть, как на его глазах создается система.

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

За три месяца был выполнен большой объем работ и решение передано заказчику:

  • создано техническое задание на систему управления компьютерным клубом;
  • спроектирована архитектура и подготовлено описание всего будущего решения;
  • подготовлено описание прототипа — минимального набора работающих компонентов, демонстрирующего возможность решения;
  • разработаны прототипы всех компонентов системы и инсталлятор десктопного приложения для клиентских машин;
  • написан и внедрен в работу тест план с более 100 тест кейсами;
    разработан и и полностью протестирован прототип.

Достижения компании на проекте

  • успешно был решен ряд нетривиальных задач, связанных с Windows-службой;
  • выполнялось сопровождение проекта на всех этапах работ: исследование имеющегося решения у заказчика, выявление потребностей, проведение бизнес анализа, написание технического задания, проектирование архитектурного решения, прототипирование будущей системы, непосредственная разработка прототипа, тестирование;
  • поступающие к нам требования и комментарии заказчика, возникающие в процессе ознакомления с промежуточной версией прототипа или демонстрацией, быстро обрабатывались, обсуждались и, при необходимости, внедрялись.

Что делали на проекте, наши обязанности

В ходе работы над приложением команда выполняла следующие работы:

  • исследование имеющегося решения у заказчика, выявление его потребностей, их обработка, анализ и фиксация;
  • составление технического задания по обработанным требованиям;
  • исследование существующих решений;
  • проработка архитектуры и описание решения;
  • разработка всех компонентов;
  • разработка инсталлятора системы на машинах в клубах;
  • интеграция компонентов;
  • написание подробного тест плана, более чем 100 кейсов обработаны и внесены в план, для их прогона на постоянной основе;
  • непрерывный процесс тестирования, в том числе на оборудовании заказчика,
  • еженедельная демонстрация работ заказчикам;
  • еженедельные поставки решения заказчику.

Свяжитесь с нами, чтобы обсудить Ваш IT-проект

    Имя *

    Название компании

    Email *

    Телефон

    Чем мы можем Вам помочь? *

    * – Обязательные поля для заполнения